{
  "version": "2.0.0",
  "generatedAt": "2026-04-30T04:53:32.180Z",
  "totalCount": 88,
  "bubbles": [
    {
      "name": "hello-world",
      "alias": "hello",
      "type": "service",
      "shortDescription": "Simple hello world bubble for testing purposes",
      "useCase": "- Testing the bubble execution system",
      "outputSchema": "{\n  greeting: string // The generated greeting message,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Name to include in the greeting message"
          },
          "message": {
            "type": "string",
            "default": "Hello from NodeX!",
            "description": "Custom greeting message"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "greeting": {
            "type": "string",
            "description": "The generated greeting message"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "greeting",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of hello-world bubble\nconst helloWorld = new HelloWorldBubble({\n  name: \"example string\", // Name to include in the greeting message,\n  message: \"Hello from NodeX!\" // default, // Custom greeting message,\n});\n\nconst result = await helloWorld.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   greeting: string // The generated greeting message,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "ai-agent",
      "alias": "agent",
      "type": "service",
      "shortDescription": "AI agent with LangGraph for tool-enabled conversations, multimodal support, and JSON mode",
      "useCase": "- Add tools to enhance the AI agent's capabilities (web-search-tool, web-scrape-tool)",
      "outputSchema": "{\n  response: string // The AI agents final response to the user message. For text responses, returns plain text. If JSON mode is enabled, returns a JSON string. For image generation models (like gemini-2.5-flash-image-preview), returns base64-encoded image data with data URI format (data:image/png;base64,...),\n  reasoning: string | null | undefined // The reasoning/thinking tokens from the model (if available). Present for deep research models and reasoning models.,\n  toolCalls: { tool: string // Name of the tool that was called, input: unknown // Input parameters passed to the tool, output: unknown // Output returned by the tool }[] // Array of tool calls made during the conversation,\n  iterations: number // Number of back-and-forth iterations in the agent workflow,\n  totalCost: number | undefined // Total cost in USD for this request (includes tokens + web search for deep research models),\n  error: string // Error message of the run, undefined if successful,\n  success: boolean // Whether the agent execution completed successfully\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "minLength": 1,
            "description": "The message or question to send to the AI agent"
          },
          "images": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "base64"
                      ],
                      "default": "base64"
                    },
                    "data": {
                      "type": "string",
                      "description": "Base64 encoded image data (without data:image/... prefix)"
                    },
                    "mimeType": {
                      "type": "string",
                      "default": "image/png",
                      "description": "MIME type of the image (e.g., image/png, image/jpeg)"
                    },
                    "description": {
                      "type": "string",
                      "description": "Optional description or context for the image"
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "url"
                      ]
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL to the image (http/https)"
                    },
                    "description": {
                      "type": "string",
                      "description": "Optional description or context for the image"
                    }
                  },
                  "required": [
                    "type",
                    "url"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "default": [],
            "description": "Array of base64 encoded images to include with the message (for multimodal AI models). Example: [{type: \"base64\", data: \"base64...\", mimeType: \"image/png\", description: \"A beautiful image of a cat\"}] or [{type: \"url\", url: \"https://example.com/image.png\", description: \"A beautiful image of a cat\"}]"
          },
          "conversationHistory": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "role": {
                  "type": "string",
                  "enum": [
                    "user",
                    "assistant",
                    "tool"
                  ],
                  "description": "The role of the message sender"
                },
                "content": {
                  "type": "string",
                  "description": "The message content"
                },
                "toolCallId": {
                  "type": "string",
                  "description": "Tool call ID for tool messages"
                },
                "name": {
                  "type": "string",
                  "description": "Tool name for tool messages"
                },
                "toolCalls": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "args": {
                        "type": "object",
                        "additionalProperties": {}
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "args"
                    ],
                    "additionalProperties": false
                  },
                  "description": "Tool calls made by the assistant in this turn. When present, corresponding tool-role messages with matching toolCallId should follow."
                }
              },
              "required": [
                "role",
                "content"
              ],
              "additionalProperties": false
            },
            "description": "Previous conversation messages for multi-turn conversations. When provided, messages are sent as separate turns to enable KV cache optimization. Format: [{role: \"user\", content: \"...\"}, {role: \"assistant\", content: \"...\"}, ...]"
          },
          "systemPrompt": {
            "type": "string",
            "default": "You are a helpful AI assistant",
            "description": "System prompt that defines the AI agents behavior and personality"
          },
          "name": {
            "type": "string",
            "default": "AI Agent",
            "description": "A friendly name for the AI agent"
          },
          "model": {
            "type": "object",
            "properties": {
              "model": {
                "type": "string",
                "enum": [
                  "openai/gpt-5",
                  "openai/gpt-5-mini",
                  "openai/gpt-5.1",
                  "openai/gpt-5.2",
                  "google/gemini-2.5-pro",
                  "google/gemini-2.5-flash",
                  "google/gemini-2.5-flash-lite",
                  "google/gemini-2.5-flash-image-preview",
                  "google/gemini-3-pro-preview",
                  "google/gemini-3-pro-image-preview",
                  "google/gemini-3-flash-preview",
                  "google/gemini-3.1-pro-preview",
                  "google/gemini-3.1-flash-lite-preview",
                  "anthropic/claude-sonnet-4-5",
                  "anthropic/claude-sonnet-4-6",
                  "anthropic/claude-opus-4-5",
                  "anthropic/claude-opus-4-6",
                  "anthropic/claude-haiku-4-5",
                  "openrouter/x-ai/grok-code-fast-1",
                  "openrouter/z-ai/glm-4.6",
                  "openrouter/z-ai/glm-4.7",
                  "openrouter/anthropic/claude-sonnet-4.5",
                  "openrouter/anthropic/claude-sonnet-4.6",
                  "openrouter/anthropic/claude-opus-4.5",
                  "openrouter/anthropic/claude-opus-4.6",
                  "openrouter/google/gemini-3-pro-preview",
                  "openrouter/morph/morph-v3-large",
                  "openrouter/openai/gpt-oss-120b",
                  "openrouter/openai/o3-deep-research",
                  "openrouter/openai/o4-mini-deep-research",
                  "fireworks/accounts/fireworks/models/kimi-k2p6"
                ],
                "description": "AI model to use (format: provider/model-name)."
              },
              "temperature": {
                "type": "number",
                "minimum": 0,
                "maximum": 2,
                "default": 1,
                "description": "Temperature for response randomness (0 = deterministic, 2 = very random)"
              },
              "maxTokens": {
                "type": "number",
                "exclusiveMinimum": true,
                "minimum": 0,
                "default": 64000,
                "description": "Maximum number of tokens to generate in response, keep at default of 40000 unless the response is expected to be certain length"
              },
              "reasoningEffort": {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ],
                "description": "Reasoning effort for model. If not specified, uses primary model reasoningEffort."
              },
              "maxRetries": {
                "type": "integer",
                "minimum": 0,
                "maximum": 10,
                "default": 3,
                "description": "Maximum number of retries for API calls (default: 3). Useful for handling transient errors like 503 Service Unavailable."
              },
              "provider": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Providers for ai agent (open router only)."
              },
              "jsonMode": {
                "type": "boolean",
                "default": false,
                "description": "When true, returns clean JSON response, you must provide the exact JSON schema in the system prompt"
              },
              "backupModel": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "enum": [
                      "openai/gpt-5",
                      "openai/gpt-5-mini",
                      "openai/gpt-5.1",
                      "openai/gpt-5.2",
                      "google/gemini-2.5-pro",
                      "google/gemini-2.5-flash",
                      "google/gemini-2.5-flash-lite",
                      "google/gemini-2.5-flash-image-preview",
                      "google/gemini-3-pro-preview",
                      "google/gemini-3-pro-image-preview",
                      "google/gemini-3-flash-preview",
                      "google/gemini-3.1-pro-preview",
                      "google/gemini-3.1-flash-lite-preview",
                      "anthropic/claude-sonnet-4-5",
                      "anthropic/claude-sonnet-4-6",
                      "anthropic/claude-opus-4-5",
                      "anthropic/claude-opus-4-6",
                      "anthropic/claude-haiku-4-5",
                      "openrouter/x-ai/grok-code-fast-1",
                      "openrouter/z-ai/glm-4.6",
                      "openrouter/z-ai/glm-4.7",
                      "openrouter/anthropic/claude-sonnet-4.5",
                      "openrouter/anthropic/claude-sonnet-4.6",
                      "openrouter/anthropic/claude-opus-4.5",
                      "openrouter/anthropic/claude-opus-4.6",
                      "openrouter/google/gemini-3-pro-preview",
                      "openrouter/morph/morph-v3-large",
                      "openrouter/openai/gpt-oss-120b",
                      "openrouter/openai/o3-deep-research",
                      "openrouter/openai/o4-mini-deep-research",
                      "fireworks/accounts/fireworks/models/kimi-k2p6"
                    ],
                    "description": "Backup AI model to use if the primary model fails (format: provider/model-name)."
                  },
                  "temperature": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 2,
                    "description": "Temperature for backup model. If not specified, uses primary model temperature."
                  },
                  "maxTokens": {
                    "type": "number",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "description": "Max tokens for backup model. If not specified, uses primary model maxTokens."
                  },
                  "reasoningEffort": {
                    "type": "string",
                    "enum": [
                      "low",
                      "medium",
                      "high"
                    ],
                    "description": "Reasoning effort for backup model. If not specified, uses primary model reasoningEffort."
                  },
                  "maxRetries": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10,
                    "description": "Max retries for backup model. If not specified, uses primary model maxRetries."
                  }
                },
                "required": [
                  "model"
                ],
                "additionalProperties": false,
                "default": {
                  "model": "google/gemini-3-flash-preview"
                },
                "description": "Backup model if the primary fails. Defaults to GOOGLE_FLAGSHIP (Gemini 3 Flash) when omitted."
              }
            },
            "required": [
              "model"
            ],
            "additionalProperties": false,
            "default": {
              "model": "google/gemini-3-flash-preview",
              "temperature": 1,
              "maxTokens": 65536,
              "maxRetries": 3,
              "jsonMode": false
            },
            "description": "AI model configuration including provider, temperature, and tokens, retries, and json mode. Always include this."
          },
          "tools": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "enum": [
                    "web-search-tool",
                    "web-scrape-tool",
                    "web-crawl-tool",
                    "web-extract-tool",
                    "research-agent-tool",
                    "reddit-scrape-tool",
                    "instagram-tool",
                    "list-bubbles-tool",
                    "list-capabilities-tool",
                    "get-bubble-details-tool",
                    "get-trigger-detail-tool",
                    "bubbleflow-validation-tool",
                    "code-edit-tool",
                    "chart-js-tool",
                    "amazon-shopping-tool",
                    "linkedin-tool",
                    "tiktok-tool",
                    "twitter-tool",
                    "google-maps-tool",
                    "app-rankings-tool",
                    "youtube-tool",
                    "people-search-tool",
                    "sql-query-tool"
                  ],
                  "description": "Name of the tool type or tool bubble to enable for the AI agent"
                },
                "credentials": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  },
                  "default": {},
                  "description": "Credential types to use for the tool bubble (injected at runtime)"
                },
                "config": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "Configuration for the tool or tool bubble"
                }
              },
              "required": [
                "name"
              ],
              "additionalProperties": false
            },
            "default": [],
            "description": "Array of tool config objects: [{ name: \"web-search-tool\" }, { name: \"web-scrape-tool\" }]. Each object requires a \"name\" field. Available tool names: web-search-tool, web-scrape-tool, web-crawl-tool, web-extract-tool, instagram-tool. If using image models, set tools to []"
          },
          "customTools": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Unique name for your custom tool (e.g., \"calculate-tax\")"
                },
                "description": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Description of what the tool does - helps the AI know when to use it"
                },
                "schema": {
                  "anyOf": [
                    {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    {}
                  ],
                  "description": "Zod schema object defining the tool parameters. Can be either a plain object (e.g., { amount: z.number() }) or a Zod object directly (e.g., z.object({ amount: z.number() }))."
                }
              },
              "required": [
                "name",
                "description",
                "schema"
              ],
              "additionalProperties": false
            },
            "default": [],
            "description": "Array of custom runtime-defined tools with their own schemas and functions. Use this to add domain-specific tools without pre-registration. Example: [{ name: \"calculate-tax\", description: \"Calculates sales tax\", schema: { amount: z.number() }, func: async (input) => {...} }]"
          },
          "maxIterations": {
            "type": "number",
            "exclusiveMinimum": true,
            "minimum": 4,
            "default": 80,
            "description": "Maximum number of iterations for the agent workflow, 5 iterations per turn of conversation"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          },
          "credentialPool": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number"
                  },
                  "name": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  },
                  "isDefault": {
                    "type": "boolean"
                  },
                  "attributes": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "id",
                  "name",
                  "value"
                ],
                "additionalProperties": false
              }
            },
            "description": "All available credentials per type with metadata. Used by master agent for delegation credential selection."
          },
          "streaming": {
            "type": "boolean",
            "default": false,
            "description": "Enable real-time streaming of tokens, tool calls, and iteration progress"
          },
          "capabilities": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Capability ID (e.g., \"google-doc-knowledge-base\")"
                },
                "inputs": {
                  "type": "object",
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "default": {},
                  "description": "Input parameter values for this capability"
                },
                "credentials": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  },
                  "default": {},
                  "description": "Capability-specific credentials (injected at runtime)"
                },
                "context": {
                  "type": "string",
                  "description": "Free-text context injected into this capability subagent system prompt (e.g., workspace-specific details, naming conventions, project prefixes)"
                }
              },
              "required": [
                "id"
              ],
              "additionalProperties": false
            },
            "default": [],
            "description": "Capabilities that extend the agent with bundled tools, prompts, and credentials. Example: [{ id: \"google-doc-knowledge-base\", inputs: { docId: \"your-doc-id\" } }]"
          },
          "expectedOutputSchema": {
            "anyOf": [
              {},
              {
                "type": "string"
              }
            ],
            "description": "Zod schema or JSON schema string that defines the expected structure of the AI response. When provided, automatically enables JSON mode and instructs the AI to output in the exact format. Example: z.object({ summary: z.string(), items: z.array(z.object({ name: z.string(), score: z.number() })) })"
          },
          "memoryEnabled": {
            "type": "boolean",
            "default": true,
            "description": "Enable persistent memory across conversations. When true, the agent can recall and save information about people, topics, and events between conversations."
          },
          "enableSlackHistory": {
            "type": "boolean",
            "default": false,
            "description": "Enable Slack thread history injection. When true, the agent receives full conversation history from Slack threads including user names, timezones, and images."
          }
        },
        "required": [
          "message"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "response": {
            "type": "string",
            "description": "The AI agents final response to the user message. For text responses, returns plain text. If JSON mode is enabled, returns a JSON string. For image generation models (like gemini-2.5-flash-image-preview), returns base64-encoded image data with data URI format (data:image/png;base64,...)"
          },
          "reasoning": {
            "type": "string",
            "nullable": true,
            "description": "The reasoning/thinking tokens from the model (if available). Present for deep research models and reasoning models."
          },
          "toolCalls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tool": {
                  "type": "string",
                  "description": "Name of the tool that was called"
                },
                "input": {
                  "description": "Input parameters passed to the tool"
                },
                "output": {
                  "description": "Output returned by the tool"
                }
              },
              "required": [
                "tool"
              ],
              "additionalProperties": false
            },
            "description": "Array of tool calls made during the conversation"
          },
          "iterations": {
            "type": "number",
            "description": "Number of back-and-forth iterations in the agent workflow"
          },
          "totalCost": {
            "type": "number",
            "description": "Total cost in USD for this request (includes tokens + web search for deep research models)"
          },
          "error": {
            "type": "string",
            "description": "Error message of the run, undefined if successful"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the agent execution completed successfully"
          }
        },
        "required": [
          "response",
          "toolCalls",
          "iterations",
          "error",
          "success"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of ai-agent bubble\nconst aiAgent = new AIAgentBubble({\n  message: \"example string\", // The message or question to send to the AI agent,\n  images: [{ type: \"base64\" // default, data: \"example string\", mimeType: \"image/png\" // default, description: \"example string\" }] // example for array, // Array of base64 encoded images to include with the message (for multimodal AI models). Example: [{type: \"base64\", data: \"base64...\", mimeType: \"image/png\", description: \"A beautiful image of a cat\"}] or [{type: \"url\", url: \"https://example.com/image.png\", description: \"A beautiful image of a cat\"}],\n  conversationHistory: [{ role: \"user\" // options: \"user\", \"assistant\", \"tool\" // The role of the message sender, content: \"example string\" // The message content, toolCallId: \"example string\" // Tool call ID for tool messages, name: \"example string\" // Tool name for tool messages, toolCalls: [{ id: \"example string\", name: \"example string\", args: {} }] // Tool calls made by the assistant in this turn. When present, corresponding tool-role messages with matching toolCallId should follow. }], // Previous conversation messages for multi-turn conversations. When provided, messages are sent as separate turns to enable KV cache optimization. Format: [{role: \"user\", content: \"...\"}, {role: \"assistant\", content: \"...\"}, ...],\n  systemPrompt: \"You are a helpful AI assistant\" // default, // System prompt that defines the AI agents behavior and personality,\n  name: \"AI Agent\" // default, // A friendly name for the AI agent,\n  model: { model: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\" // AI model to use (format: provider/model-name)., temperature: 1 // default // Temperature for response randomness (0 = deterministic, 2 = very random), maxTokens: 64000 // default // Maximum number of tokens to generate in response, keep at default of 40000 unless the response is expected to be certain length, reasoningEffort: \"low\" // options: \"low\", \"medium\", \"high\" // Reasoning effort for model. If not specified, uses primary model reasoningEffort., maxRetries: 3 // default // Maximum number of retries for API calls (default: 3). Useful for handling transient errors like 503 Service Unavailable., provider: [\"example string\"] // Providers for ai agent (open router only)., jsonMode: false // default // When true, returns clean JSON response, you must provide the exact JSON schema in the system prompt, backupModel: { model: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\" // Backup AI model to use if the primary model fails (format: provider/model-name)., temperature: 42 // Temperature for backup model. If not specified, uses primary model temperature., maxTokens: 42 // Max tokens for backup model. If not specified, uses primary model maxTokens., reasoningEffort: \"low\" // options: \"low\", \"medium\", \"high\" // Reasoning effort for backup model. If not specified, uses primary model reasoningEffort., maxRetries: 42 // Max retries for backup model. If not specified, uses primary model maxRetries. } // structure // Backup model if the primary fails. Defaults to GOOGLE_FLAGSHIP (Gemini 3 Flash) when omitted. } // structure, // AI model configuration including provider, temperature, and tokens, retries, and json mode. Always include this.,\n  tools: [{ name: \"web-search-tool\" // options: \"web-search-tool\", \"web-scrape-tool\", \"web-crawl-tool\", \"web-extract-tool\", \"research-agent-tool\", \"reddit-scrape-tool\", \"instagram-tool\", \"list-bubbles-tool\", \"list-capabilities-tool\", \"get-bubble-details-tool\", \"get-trigger-detail-tool\", \"bubbleflow-validation-tool\", \"code-edit-tool\", \"chart-js-tool\", \"amazon-shopping-tool\", \"linkedin-tool\", \"tiktok-tool\", \"twitter-tool\", \"google-maps-tool\", \"app-rankings-tool\", \"youtube-tool\", \"people-search-tool\", \"sql-query-tool\" // Name of the tool type or tool bubble to enable for the AI agent, config: {} // Configuration for the tool or tool bubble }] // example for array, // Array of tool config objects: [{ name: \"web-search-tool\" }, { name: \"web-scrape-tool\" }]. Each object requires a \"name\" field. Available tool names: web-search-tool, web-scrape-tool, web-crawl-tool, web-extract-tool, instagram-tool. If using image models, set tools to [],\n  customTools: [{ name: \"example string\" // Unique name for your custom tool (e.g., \"calculate-tax\"), description: \"example string\" // Description of what the tool does - helps the AI know when to use it, schema: {} // Zod schema object defining the tool parameters. Can be either a plain object (e.g., { amount: z.number() }) or a Zod object directly (e.g., z.object({ amount: z.number() })). }] // example for array, // Array of custom runtime-defined tools with their own schemas and functions. Use this to add domain-specific tools without pre-registration. Example: [{ name: \"calculate-tax\", description: \"Calculates sales tax\", schema: { amount: z.number() }, func: async (input) => {...} }],\n  maxIterations: 80 // default, // Maximum number of iterations for the agent workflow, 5 iterations per turn of conversation,\n  credentialPool: { \"example_key\": [{ id: 42, name: \"example string\", value: \"example string\", isDefault: true, attributes: { \"example_key\": \"example string\" } }] }, // All available credentials per type with metadata. Used by master agent for delegation credential selection.,\n  streaming: false // default, // Enable real-time streaming of tokens, tool calls, and iteration progress,\n  capabilities: [{ id: \"example string\" // Capability ID (e.g., \"google-doc-knowledge-base\"), inputs: { \"example_key\": [\"example string\"] } // structure // Input parameter values for this capability, context: \"example string\" // Free-text context injected into this capability subagent system prompt (e.g., workspace-specific details, naming conventions, project prefixes) }] // example for array, // Capabilities that extend the agent with bundled tools, prompts, and credentials. Example: [{ id: \"google-doc-knowledge-base\", inputs: { docId: \"your-doc-id\" } }],\n  expectedOutputSchema: \"example string\", // Zod schema or JSON schema string that defines the expected structure of the AI response. When provided, automatically enables JSON mode and instructs the AI to output in the exact format. Example: z.object({ summary: z.string(), items: z.array(z.object({ name: z.string(), score: z.number() })) }),\n  memoryEnabled: true // default, // Enable persistent memory across conversations. When true, the agent can recall and save information about people, topics, and events between conversations.,\n  enableSlackHistory: false // default, // Enable Slack thread history injection. When true, the agent receives full conversation history from Slack threads including user names, timezones, and images.,\n});\n\nconst result = await aiAgent.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   response: string // The AI agents final response to the user message. For text responses, returns plain text. If JSON mode is enabled, returns a JSON string. For image generation models (like gemini-2.5-flash-image-preview), returns base64-encoded image data with data URI format (data:image/png;base64,...),\n//   reasoning: string | null | undefined // The reasoning/thinking tokens from the model (if available). Present for deep research models and reasoning models.,\n//   toolCalls: { tool: string // Name of the tool that was called, input: unknown // Input parameters passed to the tool, output: unknown // Output returned by the tool }[] // Array of tool calls made during the conversation,\n//   iterations: number // Number of back-and-forth iterations in the agent workflow,\n//   totalCost: number | undefined // Total cost in USD for this request (includes tokens + web search for deep research models),\n//   error: string // Error message of the run, undefined if successful,\n//   success: boolean // Whether the agent execution completed successfully\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "OPENAI_CRED",
        "GOOGLE_GEMINI_CRED",
        "ANTHROPIC_CRED",
        "FIRECRAWL_API_KEY",
        "OPENROUTER_CRED",
        "FIREWORKS_CRED"
      ]
    },
    {
      "name": "postgresql",
      "alias": "pg",
      "type": "service",
      "shortDescription": "Execute PostgreSQL queries with operation validation",
      "useCase": "- Data retrieval with SELECT queries",
      "outputSchema": "{\n  rows: Record<string, unknown>[] // Array of result rows, each row is an object with column names as keys,\n  rowCount: number | null // Number of rows affected by the query (null for SELECT queries),\n  command: string // SQL command that was executed (SELECT, INSERT, UPDATE, DELETE),\n  fields: { name: string // Column name, dataTypeID: number // PostgreSQL data type identifier }[] | undefined // Metadata about the columns returned by the query,\n  executionTime: number // Query execution time in milliseconds,\n  success: boolean // Whether the query executed successfully,\n  error: string // Error message if query execution failed (empty string if successful),\n  cleanedJSONString: string // Clean JSON string representation of the row data, suitable for AI prompts and integrations\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "ignoreSSL": {
            "type": "boolean",
            "default": true,
            "description": "Ignore SSL certificate errors when connecting to the database"
          },
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "SQL query to execute against the PostgreSQL database (use parameterized queries with $1, $2, etc.)"
          },
          "allowedOperations": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "SELECT",
                "INSERT",
                "UPDATE",
                "DELETE",
                "WITH",
                "EXPLAIN",
                "ANALYZE",
                "SHOW",
                "DESCRIBE",
                "DESC",
                "CREATE"
              ]
            },
            "default": [
              "SELECT",
              "WITH",
              "EXPLAIN",
              "ANALYZE",
              "SHOW",
              "DESCRIBE",
              "DESC"
            ],
            "description": "List of allowed SQL operations for security (defaults to read-only operations)"
          },
          "parameters": {
            "type": "array",
            "items": {},
            "default": [],
            "description": "Parameters for parameterized queries (e.g., [value1, value2] for $1, $2)"
          },
          "timeout": {
            "type": "number",
            "exclusiveMinimum": true,
            "minimum": 0,
            "default": 30000,
            "description": "Query timeout in milliseconds (default: 30 seconds, max recommended: 300000)"
          },
          "maxRows": {
            "type": "number",
            "exclusiveMinimum": true,
            "minimum": 0,
            "default": 1000,
            "description": "Maximum number of rows to return to prevent large result sets (default: 1000)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "description": "Array of result rows, each row is an object with column names as keys"
          },
          "rowCount": {
            "type": "number",
            "nullable": true,
            "description": "Number of rows affected by the query (null for SELECT queries)"
          },
          "command": {
            "type": "string",
            "description": "SQL command that was executed (SELECT, INSERT, UPDATE, DELETE)"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Column name"
                },
                "dataTypeID": {
                  "type": "number",
                  "description": "PostgreSQL data type identifier"
                }
              },
              "required": [
                "name",
                "dataTypeID"
              ],
              "additionalProperties": false
            },
            "description": "Metadata about the columns returned by the query"
          },
          "executionTime": {
            "type": "number",
            "description": "Query execution time in milliseconds"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the query executed successfully"
          },
          "error": {
            "type": "string",
            "description": "Error message if query execution failed (empty string if successful)"
          },
          "cleanedJSONString": {
            "type": "string",
            "description": "Clean JSON string representation of the row data, suitable for AI prompts and integrations"
          }
        },
        "required": [
          "rows",
          "rowCount",
          "command",
          "executionTime",
          "success",
          "error",
          "cleanedJSONString"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of postgresql bubble\nconst postgresql = new PostgreSQLBubble({\n  ignoreSSL: true // default, // Ignore SSL certificate errors when connecting to the database,\n  allowedOperations: [\"SELECT\",\"WITH\",\"EXPLAIN\",\"ANALYZE\",\"SHOW\",\"DESCRIBE\",\"DESC\"] // default, // List of allowed SQL operations for security (defaults to read-only operations),\n  parameters: [] // default, // Parameters for parameterized queries (e.g., [value1, value2] for $1, $2),\n  timeout: 30000 // default, // Query timeout in milliseconds (default: 30 seconds, max recommended: 300000),\n  maxRows: 1000 // default, // Maximum number of rows to return to prevent large result sets (default: 1000),\n});\n\nconst result = await postgresql.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   rows: Record<string, unknown>[] // Array of result rows, each row is an object with column names as keys,\n//   rowCount: number | null // Number of rows affected by the query (null for SELECT queries),\n//   command: string // SQL command that was executed (SELECT, INSERT, UPDATE, DELETE),\n//   fields: { name: string // Column name, dataTypeID: number // PostgreSQL data type identifier }[] | undefined // Metadata about the columns returned by the query,\n//   executionTime: number // Query execution time in milliseconds,\n//   success: boolean // Whether the query executed successfully,\n//   error: string // Error message if query execution failed (empty string if successful),\n//   cleanedJSONString: string // Clean JSON string representation of the row data, suitable for AI prompts and integrations\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "DATABASE_CRED"
      ]
    },
    {
      "name": "slack",
      "alias": "slack",
      "type": "service",
      "shortDescription": "Slack integration for messaging and workspace management",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ],
                "description": "Send a message to a Slack channel or DM. Required scopes: chat:write, chat:write.public (public channels bot has not joined), im:write (DMs to users). If a scope is missing, ask a workspace admin to reinstall the Bubble Lab Slack app with the required permissions, then contact the Bubble Lab team to relink your credential."
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM (e.g., U1234567890)"
              },
              "text": {
                "type": "string",
                "minLength": 1,
                "description": "Message text content"
              },
              "username": {
                "type": "string",
                "description": "Override bot username for this message"
              },
              "icon_emoji": {
                "type": "string",
                "description": "Override bot icon with emoji (e.g., :robot_face:)"
              },
              "icon_url": {
                "type": "string",
                "format": "uri",
                "description": "Override bot icon with custom image URL"
              },
              "attachments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "type": "string",
                      "description": "Color bar accent (hex color or good/warning/danger)"
                    },
                    "pretext": {
                      "type": "string",
                      "description": "Text that appears before the main attachment content"
                    },
                    "author_name": {
                      "type": "string",
                      "description": "Author name displayed at the top"
                    },
                    "author_link": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL to link the author name"
                    },
                    "author_icon": {
                      "type": "string",
                      "format": "uri",
                      "description": "Author icon image URL"
                    },
                    "title": {
                      "type": "string",
                      "description": "Attachment title text"
                    },
                    "title_link": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL to link the title"
                    },
                    "text": {
                      "type": "string",
                      "description": "Main attachment text content"
                    },
                    "fields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "description": "Field title"
                          },
                          "value": {
                            "type": "string",
                            "description": "Field value"
                          },
                          "short": {
                            "type": "boolean",
                            "description": "Whether field should be displayed side-by-side"
                          }
                        },
                        "required": [
                          "title",
                          "value"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of field objects for structured data"
                    },
                    "image_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL of image to display"
                    },
                    "thumb_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL of thumbnail image"
                    },
                    "footer": {
                      "type": "string",
                      "description": "Footer text"
                    },
                    "footer_icon": {
                      "type": "string",
                      "format": "uri",
                      "description": "Footer icon URL"
                    },
                    "ts": {
                      "type": "number",
                      "description": "Timestamp for the attachment"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "Legacy message attachments"
              },
              "blocks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "Block element type (section, divider, button, etc.)"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "plain_text",
                            "mrkdwn"
                          ],
                          "description": "Text formatting type"
                        },
                        "text": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "emoji": {
                          "type": "boolean"
                        },
                        "verbatim": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "type",
                        "text"
                      ],
                      "additionalProperties": false,
                      "description": "Text object for the block element"
                    },
                    "elements": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "plain_text",
                              "mrkdwn",
                              "image"
                            ],
                            "description": "Element type"
                          },
                          "text": {
                            "type": "string",
                            "description": "Text content"
                          },
                          "image_url": {
                            "type": "string",
                            "description": "Image URL for image elements"
                          },
                          "alt_text": {
                            "type": "string",
                            "description": "Alt text for image elements"
                          },
                          "emoji": {
                            "type": "boolean"
                          },
                          "verbatim": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Elements array for context blocks"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": true,
                  "description": "Block Kit element for rich message formatting"
                },
                "description": "Block Kit structured message blocks"
              },
              "thread_ts": {
                "type": "string",
                "description": "Timestamp of parent message to reply in thread"
              },
              "reply_broadcast": {
                "type": "boolean",
                "default": false,
                "description": "Broadcast thread reply to channel"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              },
              "unfurl_links": {
                "type": "boolean",
                "default": true,
                "description": "Enable automatic link unfurling"
              },
              "unfurl_media": {
                "type": "boolean",
                "default": true,
                "description": "Enable automatic media unfurling"
              },
              "as_user": {
                "type": "boolean",
                "default": false,
                "description": "Post as the installing user (xoxp) instead of as the bot. Default false. Requires user-scope chat:write on the install. `username`/`icon_url`/`icon_emoji` are ignored when true."
              },
              "footer_mode": {
                "type": "string",
                "enum": [
                  "auto",
                  "always",
                  "never"
                ],
                "default": "auto",
                "description": "Controls the Bubble Lab attribution footer. auto shows it for bot posts and hides it for as_user posts; always forces it on; never hides it."
              }
            },
            "required": [
              "operation",
              "channel",
              "text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_channels"
                ],
                "description": "List all channels in the Slack workspace. Each channel includes `is_member` — filter to true for channels the bot can read without joining. Required scopes: channels:read (public), groups:read (private), im:read (DMs), mpim:read (group DMs)"
              },
              "types": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "public_channel",
                    "private_channel",
                    "mpim",
                    "im"
                  ],
                  "description": "Types of Slack channels: public_channel, private_channel, mpim (multi-person direct message), im (direct message)"
                },
                "default": [
                  "public_channel",
                  "private_channel"
                ],
                "description": "Types of channels to include in results"
              },
              "exclude_archived": {
                "type": "boolean",
                "default": true,
                "description": "Exclude archived channels from results"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 1000,
                "default": 50,
                "description": "Maximum number of channels to return (1-1000)"
              },
              "cursor": {
                "type": "string",
                "description": "Cursor for pagination to get next set of results"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_channel_info"
                ],
                "description": "Get detailed information about a specific channel. Required scopes: channels:read (public), groups:read (private), im:read (DMs), mpim:read (group DMs)"
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890) or channel name (e.g., general or #general)"
              },
              "include_locale": {
                "type": "boolean",
                "default": false,
                "description": "Include locale information in the response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user_info"
                ],
                "description": "Get detailed information about a specific user. Required scopes: users:read (add users:read.email to access email field)"
              },
              "user": {
                "type": "string",
                "minLength": 1,
                "description": "User ID to get information about"
              },
              "include_locale": {
                "type": "boolean",
                "default": false,
                "description": "Include locale information in the response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ],
                "description": "List all users in the Slack workspace. Required scopes: users:read (add users:read.email to access email field)"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 1000,
                "default": 50,
                "description": "Maximum number of users to return (1-1000)"
              },
              "cursor": {
                "type": "string",
                "description": "Cursor for pagination to get next set of results"
              },
              "include_locale": {
                "type": "boolean",
                "default": false,
                "description": "Include locale information in the response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_conversation_history"
                ],
                "description": "Retrieve message history from a channel or direct message. Tries the installing user token (xoxp) first and falls back to the bot token (xoxb), so reads work for any channel the user OR the bot can see — no need to invite the bot just to read. Required scopes: channels:history (public), groups:history (private), im:history (DMs), mpim:history (group DMs); same scopes on whichever token is used."
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890) or channel name (e.g., general or #general)"
              },
              "latest": {
                "type": "string",
                "description": "End of time range of messages to include (timestamp)"
              },
              "oldest": {
                "type": "string",
                "description": "Start of time range of messages to include (timestamp)"
              },
              "inclusive": {
                "type": "boolean",
                "default": false,
                "description": "Include messages with latest or oldest timestamps in results"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 1000,
                "default": 20,
                "description": "Maximum number of messages to return (1-1000)"
              },
              "cursor": {
                "type": "string",
                "description": "Cursor for pagination to get next set of results"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_thread_replies"
                ],
                "description": "Retrieve all replies to a thread in a channel. Required scopes: channels:history (public), groups:history (private), im:history (DMs), mpim:history (group DMs)"
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID where the thread exists"
              },
              "ts": {
                "type": "string",
                "minLength": 1,
                "description": "Timestamp of the parent message to get replies for"
              },
              "latest": {
                "type": "string",
                "description": "End of time range of messages to include (timestamp)"
              },
              "oldest": {
                "type": "string",
                "description": "Start of time range of messages to include (timestamp)"
              },
              "inclusive": {
                "type": "boolean",
                "default": false,
                "description": "Include messages with latest or oldest timestamps in results"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 1000,
                "default": 100,
                "description": "Maximum number of messages to return (1-1000)"
              },
              "cursor": {
                "type": "string",
                "description": "Cursor for pagination to get next set of results"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel",
              "ts"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_message"
                ],
                "description": "Update an existing message in a channel. Required scopes: chat:write"
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located"
              },
              "ts": {
                "type": "string",
                "minLength": 1,
                "description": "Timestamp of the message to update"
              },
              "text": {
                "type": "string",
                "description": "New text content for the message"
              },
              "attachments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "type": "string",
                      "description": "Color bar accent (hex color or good/warning/danger)"
                    },
                    "pretext": {
                      "type": "string",
                      "description": "Text that appears before the main attachment content"
                    },
                    "author_name": {
                      "type": "string",
                      "description": "Author name displayed at the top"
                    },
                    "author_link": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL to link the author name"
                    },
                    "author_icon": {
                      "type": "string",
                      "format": "uri",
                      "description": "Author icon image URL"
                    },
                    "title": {
                      "type": "string",
                      "description": "Attachment title text"
                    },
                    "title_link": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL to link the title"
                    },
                    "text": {
                      "type": "string",
                      "description": "Main attachment text content"
                    },
                    "fields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "description": "Field title"
                          },
                          "value": {
                            "type": "string",
                            "description": "Field value"
                          },
                          "short": {
                            "type": "boolean",
                            "description": "Whether field should be displayed side-by-side"
                          }
                        },
                        "required": [
                          "title",
                          "value"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of field objects for structured data"
                    },
                    "image_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL of image to display"
                    },
                    "thumb_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL of thumbnail image"
                    },
                    "footer": {
                      "type": "string",
                      "description": "Footer text"
                    },
                    "footer_icon": {
                      "type": "string",
                      "format": "uri",
                      "description": "Footer icon URL"
                    },
                    "ts": {
                      "type": "number",
                      "description": "Timestamp for the attachment"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "New legacy message attachments"
              },
              "blocks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "Block element type (section, divider, button, etc.)"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "plain_text",
                            "mrkdwn"
                          ],
                          "description": "Text formatting type"
                        },
                        "text": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "emoji": {
                          "type": "boolean"
                        },
                        "verbatim": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "type",
                        "text"
                      ],
                      "additionalProperties": false,
                      "description": "Text object for the block element"
                    },
                    "elements": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "plain_text",
                              "mrkdwn",
                              "image"
                            ],
                            "description": "Element type"
                          },
                          "text": {
                            "type": "string",
                            "description": "Text content"
                          },
                          "image_url": {
                            "type": "string",
                            "description": "Image URL for image elements"
                          },
                          "alt_text": {
                            "type": "string",
                            "description": "Alt text for image elements"
                          },
                          "emoji": {
                            "type": "boolean"
                          },
                          "verbatim": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Elements array for context blocks"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": true,
                  "description": "Block Kit element for rich message formatting"
                },
                "description": "New Block Kit structured message blocks"
              },
              "as_user": {
                "type": "boolean",
                "default": false,
                "description": "Edit the message as the installing user (using xoxp) instead of as the bot. Bot tokens can only update messages posted by the bot; user tokens can only update messages posted by that user. Requires user-scope chat:write."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel",
              "ts"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_message"
                ],
                "description": "Delete a message from a channel. Required scopes: chat:write. Note: Bot tokens can only delete messages posted by the bot; user tokens can delete any message the user has permission to delete"
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located"
              },
              "ts": {
                "type": "string",
                "minLength": 1,
                "description": "Timestamp of the message to delete"
              },
              "as_user": {
                "type": "boolean",
                "default": false,
                "description": "Delete as the installing user (using xoxp) instead of as the bot. Bot tokens can only delete messages posted by the bot; user tokens can delete any message the user has permission to delete. Requires user-scope chat:write."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel",
              "ts"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_reaction"
                ],
                "description": "Add an emoji reaction to a message. Required scopes: reactions:write"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Emoji name without colons (e.g., thumbsup, heart)"
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located"
              },
              "timestamp": {
                "type": "string",
                "minLength": 1,
                "description": "Timestamp of the message to react to"
              },
              "as_user": {
                "type": "boolean",
                "default": false,
                "description": "React as the installing user (using xoxp) instead of as the bot. Requires user-scope reactions:write."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name",
              "channel",
              "timestamp"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_reaction"
                ],
                "description": "Remove an emoji reaction from a message. Required scopes: reactions:write"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Emoji name without colons (e.g., thumbsup, heart)"
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located"
              },
              "timestamp": {
                "type": "string",
                "minLength": 1,
                "description": "Timestamp of the message to remove reaction from"
              },
              "as_user": {
                "type": "boolean",
                "default": false,
                "description": "Remove the reaction as the installing user (using xoxp) instead of as the bot. A reaction can only be removed by whoever added it. Requires user-scope reactions:write."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name",
              "channel",
              "timestamp"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "join_channel"
                ],
                "description": "Join a public Slack channel. Required scopes: channels:join (bot token) or channels:write (user token)"
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) to join"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "upload_file"
                ],
                "description": "Upload a file to a Slack channel. Required scopes: files:write"
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM"
              },
              "file_path": {
                "type": "string",
                "description": "Local file path to upload (provide either file_path or content)"
              },
              "content": {
                "type": "string",
                "description": "Base64-encoded file content to upload (provide either file_path or content)"
              },
              "filename": {
                "type": "string",
                "description": "Override filename for the upload"
              },
              "title": {
                "type": "string",
                "description": "Title for the file"
              },
              "initial_comment": {
                "type": "string",
                "description": "Initial comment to post with the file"
              },
              "thread_ts": {
                "type": "string",
                "description": "Timestamp of parent message to upload file in thread"
              },
              "as_user": {
                "type": "boolean",
                "default": false,
                "description": "Upload the file as the installing user (using xoxp) instead of as the bot. Requires user-scope files:write."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "schedule_message"
                ],
                "description": "Schedule a message to be sent at a future time. Required scopes: chat:write. Max 120 days in advance."
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM"
              },
              "text": {
                "type": "string",
                "minLength": 1,
                "description": "Message text content"
              },
              "post_at": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0,
                "description": "Unix timestamp (seconds) for when to send the message. Must be within 120 days from now."
              },
              "username": {
                "type": "string",
                "description": "Override bot username for this message"
              },
              "icon_emoji": {
                "type": "string",
                "description": "Override bot icon with emoji (e.g., :robot_face:)"
              },
              "icon_url": {
                "type": "string",
                "format": "uri",
                "description": "Override bot icon with custom image URL"
              },
              "thread_ts": {
                "type": "string",
                "description": "Timestamp of parent message to reply in thread"
              },
              "blocks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "Block element type (section, divider, button, etc.)"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "plain_text",
                            "mrkdwn"
                          ],
                          "description": "Text formatting type"
                        },
                        "text": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "emoji": {
                          "type": "boolean"
                        },
                        "verbatim": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "type",
                        "text"
                      ],
                      "additionalProperties": false,
                      "description": "Text object for the block element"
                    },
                    "elements": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "plain_text",
                              "mrkdwn",
                              "image"
                            ],
                            "description": "Element type"
                          },
                          "text": {
                            "type": "string",
                            "description": "Text content"
                          },
                          "image_url": {
                            "type": "string",
                            "description": "Image URL for image elements"
                          },
                          "alt_text": {
                            "type": "string",
                            "description": "Alt text for image elements"
                          },
                          "emoji": {
                            "type": "boolean"
                          },
                          "verbatim": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Elements array for context blocks"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": true,
                  "description": "Block Kit element for rich message formatting"
                },
                "description": "Block Kit structured message blocks"
              },
              "unfurl_links": {
                "type": "boolean",
                "default": true,
                "description": "Enable automatic link unfurling"
              },
              "unfurl_media": {
                "type": "boolean",
                "default": true,
                "description": "Enable automatic media unfurling"
              },
              "as_user": {
                "type": "boolean",
                "default": false,
                "description": "Schedule the message as the installing user (using xoxp) instead of as the bot. When true, `username`/`icon_url`/`icon_emoji` are ignored (bot-only). Requires user-scope chat:write."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel",
              "text",
              "post_at"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_file_info"
                ],
                "description": "Get detailed information about a file. Required scopes: files:read. Use this to get file URLs from a file_id (e.g., from file_shared events)."
              },
              "file_id": {
                "type": "string",
                "minLength": 1,
                "description": "The file ID to get information about (e.g., F1234567890)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "file_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "download_file"
                ],
                "description": "Download a file from Slack. Required scopes: files:read. Returns the file content as base64 encoded string."
              },
              "file_url": {
                "type": "string",
                "description": "The url_private or url_private_download URL to download (e.g., https://files.slack.com/files-pri/...)"
              },
              "file_id": {
                "type": "string",
                "description": "The file ID to download. If provided without file_url, will first fetch file info to get the URL."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_messages"
                ],
                "description": "Search messages across the workspace using Slack search syntax (in:#channel, from:@user, before:YYYY-MM-DD, has:link, \"exact phrase\"). Requires a user token (xoxp-) — the install must have granted `search:read`."
              },
              "query": {
                "type": "string",
                "minLength": 1,
                "description": "Search query, supports Slack search modifiers."
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 50,
                "description": "Max results per page (default 20, max 50)."
              },
              "sort": {
                "type": "string",
                "enum": [
                  "score",
                  "timestamp"
                ],
                "description": "Sort by relevance (score) or time. Default: score."
              },
              "page": {
                "type": "integer",
                "minimum": 1,
                "description": "1-indexed page number. Default: 1."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "query"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_dms"
                ],
                "description": "List the installing user's direct-message channels (1:1 IM + group MPIM). Requires user token (xoxp-) with im:read / mpim:read."
              },
              "types": {
                "type": "string",
                "enum": [
                  "im",
                  "mpim",
                  "im,mpim"
                ],
                "description": "Filter: 'im' (1:1), 'mpim' (group DM), or 'im,mpim' (both). Default: both."
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1000,
                "description": "Max channels to return (default 100, max 1000)."
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor from response_metadata.next_cursor."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "read_dm_history"
                ],
                "description": "Read messages in a DM channel (IM or MPIM). Use a channel id from `list_dms`. Requires user token (xoxp-) with im:history / mpim:history."
              },
              "channel": {
                "type": "string",
                "minLength": 1,
                "description": "DM channel id (starts with D…)."
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 200,
                "description": "Max messages to return (default 50, max 200)."
              },
              "oldest": {
                "type": "string",
                "description": "Only messages newer than this Slack ts (inclusive)."
              },
              "latest": {
                "type": "string",
                "description": "Only messages older than this Slack ts (inclusive)."
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor from response_metadata.next_cursor."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ],
                "description": "Send a message to a Slack channel or DM"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "channel": {
                "type": "string",
                "description": "Channel ID where the message was sent"
              },
              "ts": {
                "type": "string",
                "description": "Timestamp of the sent message"
              },
              "message": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "description": "Message type (usually \"message\")"
                  },
                  "ts": {
                    "type": "string",
                    "description": "Message timestamp (unique identifier)"
                  },
                  "user": {
                    "type": "string",
                    "description": "User ID who sent the message"
                  },
                  "bot_id": {
                    "type": "string",
                    "description": "Bot ID if message was sent by a bot"
                  },
                  "bot_profile": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Bot display name"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Bot profile information if message was sent by a bot"
                  },
                  "username": {
                    "type": "string",
                    "description": "Username of the bot or user who sent the message"
                  },
                  "text": {
                    "type": "string",
                    "description": "Message text content"
                  },
                  "thread_ts": {
                    "type": "string",
                    "description": "Timestamp of parent message if this is a thread reply"
                  },
                  "parent_user_id": {
                    "type": "string",
                    "description": "User ID of thread parent message author"
                  },
                  "reply_count": {
                    "type": "number",
                    "description": "Number of replies in this thread"
                  },
                  "reply_users_count": {
                    "type": "number",
                    "description": "Number of unique users who replied in thread"
                  },
                  "latest_reply": {
                    "type": "string",
                    "description": "Timestamp of most recent reply in thread"
                  },
                  "reply_users": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Array of user IDs who replied in thread"
                  },
                  "is_locked": {
                    "type": "boolean",
                    "description": "True if thread is locked"
                  },
                  "subscribed": {
                    "type": "boolean",
                    "description": "True if current user is subscribed to thread"
                  },
                  "attachments": {
                    "type": "array",
                    "items": {},
                    "description": "Legacy message attachments"
                  },
                  "blocks": {
                    "type": "array",
                    "items": {},
                    "description": "Block Kit structured content"
                  },
                  "reactions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Emoji name without colons"
                        },
                        "users": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "User IDs who reacted with this emoji"
                        },
                        "count": {
                          "type": "number",
                          "description": "Total count of this reaction"
                        }
                      },
                      "required": [
                        "name",
                        "users",
                        "count"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Array of emoji reactions on this message"
                  },
                  "files": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Unique file identifier"
                        },
                        "name": {
                          "type": "string",
                          "description": "Filename"
                        },
                        "title": {
                          "type": "string",
                          "description": "File title"
                        },
                        "mimetype": {
                          "type": "string",
                          "description": "MIME type of the file"
                        },
                        "filetype": {
                          "type": "string",
                          "description": "File type extension"
                        },
                        "size": {
                          "type": "number",
                          "description": "File size in bytes"
                        },
                        "user": {
                          "type": "string",
                          "description": "User ID who uploaded the file"
                        },
                        "url_private": {
                          "type": "string",
                          "description": "Private URL to access file"
                        },
                        "url_private_download": {
                          "type": "string",
                          "description": "Private download URL"
                        },
                        "thumb_64": {
                          "type": "string",
                          "description": "64px thumbnail URL"
                        },
                        "thumb_360": {
                          "type": "string",
                          "description": "360px thumbnail URL"
                        },
                        "thumb_480": {
                          "type": "string",
                          "description": "480px thumbnail URL"
                        },
                        "original_w": {
                          "type": "number",
                          "description": "Original image width"
                        },
                        "original_h": {
                          "type": "number",
                          "description": "Original image height"
                        },
                        "permalink": {
                          "type": "string",
                          "description": "Permanent link to file"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Array of files attached to this message"
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false,
                "description": "Details of the sent message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_channels"
                ],
                "description": "List all channels in the Slack workspace"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "channels": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique channel identifier"
                    },
                    "name": {
                      "type": "string",
                      "description": "Channel name without # prefix"
                    },
                    "is_channel": {
                      "type": "boolean",
                      "description": "True if this is a public channel"
                    },
                    "is_group": {
                      "type": "boolean",
                      "description": "True if this is a private channel"
                    },
                    "is_im": {
                      "type": "boolean",
                      "description": "True if this is a direct message"
                    },
                    "is_mpim": {
                      "type": "boolean",
                      "description": "True if this is a multi-person direct message"
                    },
                    "is_private": {
                      "type": "boolean",
                      "description": "True if this is a private channel"
                    },
                    "created": {
                      "type": "number",
                      "description": "Unix timestamp when channel was created"
                    },
                    "is_archived": {
                      "type": "boolean",
                      "description": "True if channel is archived"
                    },
                    "is_general": {
                      "type": "boolean",
                      "description": "True if this is the #general channel"
                    },
                    "unlinked": {
                      "type": "number",
                      "description": "Unix timestamp when channel was unlinked"
                    },
                    "name_normalized": {
                      "type": "string",
                      "description": "Normalized channel name"
                    },
                    "is_shared": {
                      "type": "boolean",
                      "description": "True if channel is shared with other workspaces"
                    },
                    "is_ext_shared": {
                      "type": "boolean",
                      "description": "True if channel is shared externally"
                    },
                    "is_org_shared": {
                      "type": "boolean",
                      "description": "True if channel is shared across organization"
                    },
                    "shared_team_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "IDs of teams this channel is shared with"
                    },
                    "pending_shared": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Pending shared connections"
                    },
                    "pending_connected_team_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Pending team connection IDs"
                    },
                    "is_pending_ext_shared": {
                      "type": "boolean",
                      "description": "True if external sharing is pending"
                    },
                    "is_member": {
                      "type": "boolean",
                      "description": "True if the bot is a member of this channel. Filter on this before calling get_conversation_history."
                    },
                    "is_open": {
                      "type": "boolean",
                      "description": "True if the channel is open"
                    },
                    "topic": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string",
                          "description": "Topic text"
                        },
                        "creator": {
                          "type": "string",
                          "description": "User ID who set the topic"
                        },
                        "last_set": {
                          "type": "number",
                          "description": "Unix timestamp when topic was last set"
                        }
                      },
                      "required": [
                        "value",
                        "creator",
                        "last_set"
                      ],
                      "additionalProperties": false,
                      "description": "Channel topic information"
                    },
                    "purpose": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string",
                          "description": "Purpose text"
                        },
                        "creator": {
                          "type": "string",
                          "description": "User ID who set the purpose"
                        },
                        "last_set": {
                          "type": "number",
                          "description": "Unix timestamp when purpose was last set"
                        }
                      },
                      "required": [
                        "value",
                        "creator",
                        "last_set"
                      ],
                      "additionalProperties": false,
                      "description": "Channel purpose information"
                    },
                    "num_members": {
                      "type": "number",
                      "description": "Number of members in the channel"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "created",
                    "is_archived"
                  ],
                  "additionalProperties": false,
                  "description": "Slack channel object with metadata"
                },
                "description": "Array of channel objects"
              },
              "response_metadata": {
                "type": "object",
                "properties": {
                  "next_cursor": {
                    "type": "string",
                    "description": "Cursor for pagination to get next set of results"
                  }
                },
                "required": [
                  "next_cursor"
                ],
                "additionalProperties": false,
                "description": "Metadata for pagination"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_channel_info"
                ],
                "description": "Get detailed information about a specific channel"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "channel": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique channel identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Channel name without # prefix"
                  },
                  "is_channel": {
                    "type": "boolean",
                    "description": "True if this is a public channel"
                  },
                  "is_group": {
                    "type": "boolean",
                    "description": "True if this is a private channel"
                  },
                  "is_im": {
                    "type": "boolean",
                    "description": "True if this is a direct message"
                  },
                  "is_mpim": {
                    "type": "boolean",
                    "description": "True if this is a multi-person direct message"
                  },
                  "is_private": {
                    "type": "boolean",
                    "description": "True if this is a private channel"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp when channel was created"
                  },
                  "is_archived": {
                    "type": "boolean",
                    "description": "True if channel is archived"
                  },
                  "is_general": {
                    "type": "boolean",
                    "description": "True if this is the #general channel"
                  },
                  "unlinked": {
                    "type": "number",
                    "description": "Unix timestamp when channel was unlinked"
                  },
                  "name_normalized": {
                    "type": "string",
                    "description": "Normalized channel name"
                  },
                  "is_shared": {
                    "type": "boolean",
                    "description": "True if channel is shared with other workspaces"
                  },
                  "is_ext_shared": {
                    "type": "boolean",
                    "description": "True if channel is shared externally"
                  },
                  "is_org_shared": {
                    "type": "boolean",
                    "description": "True if channel is shared across organization"
                  },
                  "shared_team_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "IDs of teams this channel is shared with"
                  },
                  "pending_shared": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Pending shared connections"
                  },
                  "pending_connected_team_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Pending team connection IDs"
                  },
                  "is_pending_ext_shared": {
                    "type": "boolean",
                    "description": "True if external sharing is pending"
                  },
                  "is_member": {
                    "type": "boolean",
                    "description": "True if the bot is a member of this channel. Filter on this before calling get_conversation_history."
                  },
                  "is_open": {
                    "type": "boolean",
                    "description": "True if the channel is open"
                  },
                  "topic": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Topic text"
                      },
                      "creator": {
                        "type": "string",
                        "description": "User ID who set the topic"
                      },
                      "last_set": {
                        "type": "number",
                        "description": "Unix timestamp when topic was last set"
                      }
                    },
                    "required": [
                      "value",
                      "creator",
                      "last_set"
                    ],
                    "additionalProperties": false,
                    "description": "Channel topic information"
                  },
                  "purpose": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Purpose text"
                      },
                      "creator": {
                        "type": "string",
                        "description": "User ID who set the purpose"
                      },
                      "last_set": {
                        "type": "number",
                        "description": "Unix timestamp when purpose was last set"
                      }
                    },
                    "required": [
                      "value",
                      "creator",
                      "last_set"
                    ],
                    "additionalProperties": false,
                    "description": "Channel purpose information"
                  },
                  "num_members": {
                    "type": "number",
                    "description": "Number of members in the channel"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "created",
                  "is_archived"
                ],
                "additionalProperties": false,
                "description": "Channel information object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user_info"
                ],
                "description": "Get detailed information about a specific user"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "user": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique user identifier"
                  },
                  "team_id": {
                    "type": "string",
                    "description": "Team/workspace ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Username (handle without @)"
                  },
                  "deleted": {
                    "type": "boolean",
                    "description": "True if user account is deleted"
                  },
                  "color": {
                    "type": "string",
                    "description": "Color code for user in UI"
                  },
                  "real_name": {
                    "type": "string",
                    "description": "Users real name"
                  },
                  "tz": {
                    "type": "string",
                    "description": "Timezone identifier"
                  },
                  "tz_label": {
                    "type": "string",
                    "description": "Human-readable timezone label"
                  },
                  "tz_offset": {
                    "type": "number",
                    "description": "Timezone offset from UTC in seconds"
                  },
                  "profile": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Job title"
                      },
                      "phone": {
                        "type": "string",
                        "description": "Phone number"
                      },
                      "skype": {
                        "type": "string",
                        "description": "Skype username"
                      },
                      "real_name": {
                        "type": "string",
                        "description": "Real name from profile"
                      },
                      "real_name_normalized": {
                        "type": "string",
                        "description": "Normalized real name"
                      },
                      "display_name": {
                        "type": "string",
                        "description": "Display name"
                      },
                      "display_name_normalized": {
                        "type": "string",
                        "description": "Normalized display name"
                      },
                      "fields": {
                        "type": "object",
                        "additionalProperties": {},
                        "description": "Custom profile fields"
                      },
                      "status_text": {
                        "type": "string",
                        "description": "Current status text"
                      },
                      "status_emoji": {
                        "type": "string",
                        "description": "Current status emoji"
                      },
                      "status_expiration": {
                        "type": "number",
                        "description": "Unix timestamp when status expires"
                      },
                      "avatar_hash": {
                        "type": "string",
                        "description": "Hash for avatar image"
                      },
                      "image_original": {
                        "type": "string",
                        "description": "URL of original avatar image"
                      },
                      "is_custom_image": {
                        "type": "boolean",
                        "description": "True if using custom avatar"
                      },
                      "email": {
                        "type": "string",
                        "description": "Email address"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "First name"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "Last name"
                      },
                      "image_24": {
                        "type": "string",
                        "description": "24x24 pixel avatar URL"
                      },
                      "image_32": {
                        "type": "string",
                        "description": "32x32 pixel avatar URL"
                      },
                      "image_48": {
                        "type": "string",
                        "description": "48x48 pixel avatar URL"
                      },
                      "image_72": {
                        "type": "string",
                        "description": "72x72 pixel avatar URL"
                      },
                      "image_192": {
                        "type": "string",
                        "description": "192x192 pixel avatar URL"
                      },
                      "image_512": {
                        "type": "string",
                        "description": "512x512 pixel avatar URL"
                      },
                      "image_1024": {
                        "type": "string",
                        "description": "1024x1024 pixel avatar URL"
                      }
                    },
                    "additionalProperties": false,
                    "description": "User profile information"
                  },
                  "is_admin": {
                    "type": "boolean",
                    "description": "True if user is workspace admin"
                  },
                  "is_owner": {
                    "type": "boolean",
                    "description": "True if user is workspace owner"
                  },
                  "is_primary_owner": {
                    "type": "boolean",
                    "description": "True if user is primary workspace owner"
                  },
                  "is_restricted": {
                    "type": "boolean",
                    "description": "True if user is restricted (single-channel guest)"
                  },
                  "is_ultra_restricted": {
                    "type": "boolean",
                    "description": "True if user is ultra restricted (multi-channel guest)"
                  },
                  "is_bot": {
                    "type": "boolean",
                    "description": "True if this is a bot user"
                  },
                  "is_app_user": {
                    "type": "boolean",
                    "description": "True if this is an app user"
                  },
                  "updated": {
                    "type": "number",
                    "description": "Unix timestamp when user was last updated"
                  },
                  "has_2fa": {
                    "type": "boolean",
                    "description": "True if user has two-factor authentication enabled"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "User information object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ],
                "description": "List all users in the Slack workspace"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "members": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique user identifier"
                    },
                    "team_id": {
                      "type": "string",
                      "description": "Team/workspace ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Username (handle without @)"
                    },
                    "deleted": {
                      "type": "boolean",
                      "description": "True if user account is deleted"
                    },
                    "color": {
                      "type": "string",
                      "description": "Color code for user in UI"
                    },
                    "real_name": {
                      "type": "string",
                      "description": "Users real name"
                    },
                    "tz": {
                      "type": "string",
                      "description": "Timezone identifier"
                    },
                    "tz_label": {
                      "type": "string",
                      "description": "Human-readable timezone label"
                    },
                    "tz_offset": {
                      "type": "number",
                      "description": "Timezone offset from UTC in seconds"
                    },
                    "profile": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "description": "Job title"
                        },
                        "phone": {
                          "type": "string",
                          "description": "Phone number"
                        },
                        "skype": {
                          "type": "string",
                          "description": "Skype username"
                        },
                        "real_name": {
                          "type": "string",
                          "description": "Real name from profile"
                        },
                        "real_name_normalized": {
                          "type": "string",
                          "description": "Normalized real name"
                        },
                        "display_name": {
                          "type": "string",
                          "description": "Display name"
                        },
                        "display_name_normalized": {
                          "type": "string",
                          "description": "Normalized display name"
                        },
                        "fields": {
                          "type": "object",
                          "additionalProperties": {},
                          "description": "Custom profile fields"
                        },
                        "status_text": {
                          "type": "string",
                          "description": "Current status text"
                        },
                        "status_emoji": {
                          "type": "string",
                          "description": "Current status emoji"
                        },
                        "status_expiration": {
                          "type": "number",
                          "description": "Unix timestamp when status expires"
                        },
                        "avatar_hash": {
                          "type": "string",
                          "description": "Hash for avatar image"
                        },
                        "image_original": {
                          "type": "string",
                          "description": "URL of original avatar image"
                        },
                        "is_custom_image": {
                          "type": "boolean",
                          "description": "True if using custom avatar"
                        },
                        "email": {
                          "type": "string",
                          "description": "Email address"
                        },
                        "first_name": {
                          "type": "string",
                          "description": "First name"
                        },
                        "last_name": {
                          "type": "string",
                          "description": "Last name"
                        },
                        "image_24": {
                          "type": "string",
                          "description": "24x24 pixel avatar URL"
                        },
                        "image_32": {
                          "type": "string",
                          "description": "32x32 pixel avatar URL"
                        },
                        "image_48": {
                          "type": "string",
                          "description": "48x48 pixel avatar URL"
                        },
                        "image_72": {
                          "type": "string",
                          "description": "72x72 pixel avatar URL"
                        },
                        "image_192": {
                          "type": "string",
                          "description": "192x192 pixel avatar URL"
                        },
                        "image_512": {
                          "type": "string",
                          "description": "512x512 pixel avatar URL"
                        },
                        "image_1024": {
                          "type": "string",
                          "description": "1024x1024 pixel avatar URL"
                        }
                      },
                      "additionalProperties": false,
                      "description": "User profile information"
                    },
                    "is_admin": {
                      "type": "boolean",
                      "description": "True if user is workspace admin"
                    },
                    "is_owner": {
                      "type": "boolean",
                      "description": "True if user is workspace owner"
                    },
                    "is_primary_owner": {
                      "type": "boolean",
                      "description": "True if user is primary workspace owner"
                    },
                    "is_restricted": {
                      "type": "boolean",
                      "description": "True if user is restricted (single-channel guest)"
                    },
                    "is_ultra_restricted": {
                      "type": "boolean",
                      "description": "True if user is ultra restricted (multi-channel guest)"
                    },
                    "is_bot": {
                      "type": "boolean",
                      "description": "True if this is a bot user"
                    },
                    "is_app_user": {
                      "type": "boolean",
                      "description": "True if this is an app user"
                    },
                    "updated": {
                      "type": "number",
                      "description": "Unix timestamp when user was last updated"
                    },
                    "has_2fa": {
                      "type": "boolean",
                      "description": "True if user has two-factor authentication enabled"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": false,
                  "description": "Slack user object with profile and permissions"
                },
                "description": "Array of user objects"
              },
              "response_metadata": {
                "type": "object",
                "properties": {
                  "next_cursor": {
                    "type": "string",
                    "description": "Cursor for pagination to get next set of results"
                  }
                },
                "required": [
                  "next_cursor"
                ],
                "additionalProperties": false,
                "description": "Metadata for pagination"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_conversation_history"
                ],
                "description": "Retrieve message history from a channel or direct message"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "messages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "Message type (usually \"message\")"
                    },
                    "ts": {
                      "type": "string",
                      "description": "Message timestamp (unique identifier)"
                    },
                    "user": {
                      "type": "string",
                      "description": "User ID who sent the message"
                    },
                    "bot_id": {
                      "type": "string",
                      "description": "Bot ID if message was sent by a bot"
                    },
                    "bot_profile": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Bot display name"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Bot profile information if message was sent by a bot"
                    },
                    "username": {
                      "type": "string",
                      "description": "Username of the bot or user who sent the message"
                    },
                    "text": {
                      "type": "string",
                      "description": "Message text content"
                    },
                    "thread_ts": {
                      "type": "string",
                      "description": "Timestamp of parent message if this is a thread reply"
                    },
                    "parent_user_id": {
                      "type": "string",
                      "description": "User ID of thread parent message author"
                    },
                    "reply_count": {
                      "type": "number",
                      "description": "Number of replies in this thread"
                    },
                    "reply_users_count": {
                      "type": "number",
                      "description": "Number of unique users who replied in thread"
                    },
                    "latest_reply": {
                      "type": "string",
                      "description": "Timestamp of most recent reply in thread"
                    },
                    "reply_users": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Array of user IDs who replied in thread"
                    },
                    "is_locked": {
                      "type": "boolean",
                      "description": "True if thread is locked"
                    },
                    "subscribed": {
                      "type": "boolean",
                      "description": "True if current user is subscribed to thread"
                    },
                    "attachments": {
                      "type": "array",
                      "items": {},
                      "description": "Legacy message attachments"
                    },
                    "blocks": {
                      "type": "array",
                      "items": {},
                      "description": "Block Kit structured content"
                    },
                    "reactions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Emoji name without colons"
                          },
                          "users": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "User IDs who reacted with this emoji"
                          },
                          "count": {
                            "type": "number",
                            "description": "Total count of this reaction"
                          }
                        },
                        "required": [
                          "name",
                          "users",
                          "count"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of emoji reactions on this message"
                    },
                    "files": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Unique file identifier"
                          },
                          "name": {
                            "type": "string",
                            "description": "Filename"
                          },
                          "title": {
                            "type": "string",
                            "description": "File title"
                          },
                          "mimetype": {
                            "type": "string",
                            "description": "MIME type of the file"
                          },
                          "filetype": {
                            "type": "string",
                            "description": "File type extension"
                          },
                          "size": {
                            "type": "number",
                            "description": "File size in bytes"
                          },
                          "user": {
                            "type": "string",
                            "description": "User ID who uploaded the file"
                          },
                          "url_private": {
                            "type": "string",
                            "description": "Private URL to access file"
                          },
                          "url_private_download": {
                            "type": "string",
                            "description": "Private download URL"
                          },
                          "thumb_64": {
                            "type": "string",
                            "description": "64px thumbnail URL"
                          },
                          "thumb_360": {
                            "type": "string",
                            "description": "360px thumbnail URL"
                          },
                          "thumb_480": {
                            "type": "string",
                            "description": "480px thumbnail URL"
                          },
                          "original_w": {
                            "type": "number",
                            "description": "Original image width"
                          },
                          "original_h": {
                            "type": "number",
                            "description": "Original image height"
                          },
                          "permalink": {
                            "type": "string",
                            "description": "Permanent link to file"
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of files attached to this message"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false,
                  "description": "Slack message object with content and metadata"
                },
                "description": "Array of message objects"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more messages to retrieve"
              },
              "response_metadata": {
                "type": "object",
                "properties": {
                  "next_cursor": {
                    "type": "string",
                    "description": "Cursor for pagination to get next set of results"
                  }
                },
                "required": [
                  "next_cursor"
                ],
                "additionalProperties": false,
                "description": "Metadata for pagination"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_thread_replies"
                ],
                "description": "Retrieve all replies to a thread in a channel"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "messages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "Message type (usually \"message\")"
                    },
                    "ts": {
                      "type": "string",
                      "description": "Message timestamp (unique identifier)"
                    },
                    "user": {
                      "type": "string",
                      "description": "User ID who sent the message"
                    },
                    "bot_id": {
                      "type": "string",
                      "description": "Bot ID if message was sent by a bot"
                    },
                    "bot_profile": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Bot display name"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Bot profile information if message was sent by a bot"
                    },
                    "username": {
                      "type": "string",
                      "description": "Username of the bot or user who sent the message"
                    },
                    "text": {
                      "type": "string",
                      "description": "Message text content"
                    },
                    "thread_ts": {
                      "type": "string",
                      "description": "Timestamp of parent message if this is a thread reply"
                    },
                    "parent_user_id": {
                      "type": "string",
                      "description": "User ID of thread parent message author"
                    },
                    "reply_count": {
                      "type": "number",
                      "description": "Number of replies in this thread"
                    },
                    "reply_users_count": {
                      "type": "number",
                      "description": "Number of unique users who replied in thread"
                    },
                    "latest_reply": {
                      "type": "string",
                      "description": "Timestamp of most recent reply in thread"
                    },
                    "reply_users": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Array of user IDs who replied in thread"
                    },
                    "is_locked": {
                      "type": "boolean",
                      "description": "True if thread is locked"
                    },
                    "subscribed": {
                      "type": "boolean",
                      "description": "True if current user is subscribed to thread"
                    },
                    "attachments": {
                      "type": "array",
                      "items": {},
                      "description": "Legacy message attachments"
                    },
                    "blocks": {
                      "type": "array",
                      "items": {},
                      "description": "Block Kit structured content"
                    },
                    "reactions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Emoji name without colons"
                          },
                          "users": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "User IDs who reacted with this emoji"
                          },
                          "count": {
                            "type": "number",
                            "description": "Total count of this reaction"
                          }
                        },
                        "required": [
                          "name",
                          "users",
                          "count"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of emoji reactions on this message"
                    },
                    "files": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Unique file identifier"
                          },
                          "name": {
                            "type": "string",
                            "description": "Filename"
                          },
                          "title": {
                            "type": "string",
                            "description": "File title"
                          },
                          "mimetype": {
                            "type": "string",
                            "description": "MIME type of the file"
                          },
                          "filetype": {
                            "type": "string",
                            "description": "File type extension"
                          },
                          "size": {
                            "type": "number",
                            "description": "File size in bytes"
                          },
                          "user": {
                            "type": "string",
                            "description": "User ID who uploaded the file"
                          },
                          "url_private": {
                            "type": "string",
                            "description": "Private URL to access file"
                          },
                          "url_private_download": {
                            "type": "string",
                            "description": "Private download URL"
                          },
                          "thumb_64": {
                            "type": "string",
                            "description": "64px thumbnail URL"
                          },
                          "thumb_360": {
                            "type": "string",
                            "description": "360px thumbnail URL"
                          },
                          "thumb_480": {
                            "type": "string",
                            "description": "480px thumbnail URL"
                          },
                          "original_w": {
                            "type": "number",
                            "description": "Original image width"
                          },
                          "original_h": {
                            "type": "number",
                            "description": "Original image height"
                          },
                          "permalink": {
                            "type": "string",
                            "description": "Permanent link to file"
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of files attached to this message"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false,
                  "description": "Slack message object with content and metadata"
                },
                "description": "Array of message objects in the thread"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more messages to retrieve"
              },
              "response_metadata": {
                "type": "object",
                "properties": {
                  "next_cursor": {
                    "type": "string",
                    "description": "Cursor for pagination to get next set of results"
                  }
                },
                "required": [
                  "next_cursor"
                ],
                "additionalProperties": false,
                "description": "Metadata for pagination"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_message"
                ],
                "description": "Update an existing message in a channel"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "channel": {
                "type": "string",
                "description": "Channel ID where the message was updated"
              },
              "ts": {
                "type": "string",
                "description": "Timestamp of the updated message"
              },
              "text": {
                "type": "string",
                "description": "Updated text content of the message"
              },
              "message": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "description": "Message type (usually \"message\")"
                  },
                  "ts": {
                    "type": "string",
                    "description": "Message timestamp (unique identifier)"
                  },
                  "user": {
                    "type": "string",
                    "description": "User ID who sent the message"
                  },
                  "bot_id": {
                    "type": "string",
                    "description": "Bot ID if message was sent by a bot"
                  },
                  "bot_profile": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Bot display name"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Bot profile information if message was sent by a bot"
                  },
                  "username": {
                    "type": "string",
                    "description": "Username of the bot or user who sent the message"
                  },
                  "text": {
                    "type": "string",
                    "description": "Message text content"
                  },
                  "thread_ts": {
                    "type": "string",
                    "description": "Timestamp of parent message if this is a thread reply"
                  },
                  "parent_user_id": {
                    "type": "string",
                    "description": "User ID of thread parent message author"
                  },
                  "reply_count": {
                    "type": "number",
                    "description": "Number of replies in this thread"
                  },
                  "reply_users_count": {
                    "type": "number",
                    "description": "Number of unique users who replied in thread"
                  },
                  "latest_reply": {
                    "type": "string",
                    "description": "Timestamp of most recent reply in thread"
                  },
                  "reply_users": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Array of user IDs who replied in thread"
                  },
                  "is_locked": {
                    "type": "boolean",
                    "description": "True if thread is locked"
                  },
                  "subscribed": {
                    "type": "boolean",
                    "description": "True if current user is subscribed to thread"
                  },
                  "attachments": {
                    "type": "array",
                    "items": {},
                    "description": "Legacy message attachments"
                  },
                  "blocks": {
                    "type": "array",
                    "items": {},
                    "description": "Block Kit structured content"
                  },
                  "reactions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Emoji name without colons"
                        },
                        "users": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "User IDs who reacted with this emoji"
                        },
                        "count": {
                          "type": "number",
                          "description": "Total count of this reaction"
                        }
                      },
                      "required": [
                        "name",
                        "users",
                        "count"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Array of emoji reactions on this message"
                  },
                  "files": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Unique file identifier"
                        },
                        "name": {
                          "type": "string",
                          "description": "Filename"
                        },
                        "title": {
                          "type": "string",
                          "description": "File title"
                        },
                        "mimetype": {
                          "type": "string",
                          "description": "MIME type of the file"
                        },
                        "filetype": {
                          "type": "string",
                          "description": "File type extension"
                        },
                        "size": {
                          "type": "number",
                          "description": "File size in bytes"
                        },
                        "user": {
                          "type": "string",
                          "description": "User ID who uploaded the file"
                        },
                        "url_private": {
                          "type": "string",
                          "description": "Private URL to access file"
                        },
                        "url_private_download": {
                          "type": "string",
                          "description": "Private download URL"
                        },
                        "thumb_64": {
                          "type": "string",
                          "description": "64px thumbnail URL"
                        },
                        "thumb_360": {
                          "type": "string",
                          "description": "360px thumbnail URL"
                        },
                        "thumb_480": {
                          "type": "string",
                          "description": "480px thumbnail URL"
                        },
                        "original_w": {
                          "type": "number",
                          "description": "Original image width"
                        },
                        "original_h": {
                          "type": "number",
                          "description": "Original image height"
                        },
                        "permalink": {
                          "type": "string",
                          "description": "Permanent link to file"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Array of files attached to this message"
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false,
                "description": "Details of the updated message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_message"
                ],
                "description": "Delete a message from a channel"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "channel": {
                "type": "string",
                "description": "Channel ID where the message was deleted"
              },
              "ts": {
                "type": "string",
                "description": "Timestamp of the deleted message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_reaction"
                ],
                "description": "Add an emoji reaction to a message"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_reaction"
                ],
                "description": "Remove an emoji reaction from a message"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "join_channel"
                ],
                "description": "Join a public Slack channel"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "channel": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique channel identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Channel name without # prefix"
                  },
                  "is_channel": {
                    "type": "boolean",
                    "description": "True if this is a public channel"
                  },
                  "is_group": {
                    "type": "boolean",
                    "description": "True if this is a private channel"
                  },
                  "is_im": {
                    "type": "boolean",
                    "description": "True if this is a direct message"
                  },
                  "is_mpim": {
                    "type": "boolean",
                    "description": "True if this is a multi-person direct message"
                  },
                  "is_private": {
                    "type": "boolean",
                    "description": "True if this is a private channel"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp when channel was created"
                  },
                  "is_archived": {
                    "type": "boolean",
                    "description": "True if channel is archived"
                  },
                  "is_general": {
                    "type": "boolean",
                    "description": "True if this is the #general channel"
                  },
                  "unlinked": {
                    "type": "number",
                    "description": "Unix timestamp when channel was unlinked"
                  },
                  "name_normalized": {
                    "type": "string",
                    "description": "Normalized channel name"
                  },
                  "is_shared": {
                    "type": "boolean",
                    "description": "True if channel is shared with other workspaces"
                  },
                  "is_ext_shared": {
                    "type": "boolean",
                    "description": "True if channel is shared externally"
                  },
                  "is_org_shared": {
                    "type": "boolean",
                    "description": "True if channel is shared across organization"
                  },
                  "shared_team_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "IDs of teams this channel is shared with"
                  },
                  "pending_shared": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Pending shared connections"
                  },
                  "pending_connected_team_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Pending team connection IDs"
                  },
                  "is_pending_ext_shared": {
                    "type": "boolean",
                    "description": "True if external sharing is pending"
                  },
                  "is_member": {
                    "type": "boolean",
                    "description": "True if the bot is a member of this channel. Filter on this before calling get_conversation_history."
                  },
                  "is_open": {
                    "type": "boolean",
                    "description": "True if the channel is open"
                  },
                  "topic": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Topic text"
                      },
                      "creator": {
                        "type": "string",
                        "description": "User ID who set the topic"
                      },
                      "last_set": {
                        "type": "number",
                        "description": "Unix timestamp when topic was last set"
                      }
                    },
                    "required": [
                      "value",
                      "creator",
                      "last_set"
                    ],
                    "additionalProperties": false,
                    "description": "Channel topic information"
                  },
                  "purpose": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Purpose text"
                      },
                      "creator": {
                        "type": "string",
                        "description": "User ID who set the purpose"
                      },
                      "last_set": {
                        "type": "number",
                        "description": "Unix timestamp when purpose was last set"
                      }
                    },
                    "required": [
                      "value",
                      "creator",
                      "last_set"
                    ],
                    "additionalProperties": false,
                    "description": "Channel purpose information"
                  },
                  "num_members": {
                    "type": "number",
                    "description": "Number of members in the channel"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "created",
                  "is_archived"
                ],
                "additionalProperties": false,
                "description": "Channel information object after joining"
              },
              "already_in_channel": {
                "type": "boolean",
                "description": "Whether the bot was already a member of the channel"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "upload_file"
                ],
                "description": "Upload a file to a Slack channel"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "file": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique file identifier"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp when file was created"
                  },
                  "timestamp": {
                    "type": "number",
                    "description": "Unix timestamp when file was uploaded"
                  },
                  "name": {
                    "type": "string",
                    "description": "Original filename"
                  },
                  "title": {
                    "type": "string",
                    "description": "File title"
                  },
                  "mimetype": {
                    "type": "string",
                    "description": "MIME type of the file"
                  },
                  "filetype": {
                    "type": "string",
                    "description": "File type extension"
                  },
                  "pretty_type": {
                    "type": "string",
                    "description": "Human-readable file type"
                  },
                  "user": {
                    "type": "string",
                    "description": "User ID who uploaded the file"
                  },
                  "editable": {
                    "type": "boolean",
                    "description": "Whether the file is editable"
                  },
                  "size": {
                    "type": "number",
                    "description": "File size in bytes"
                  },
                  "mode": {
                    "type": "string",
                    "description": "File sharing mode"
                  },
                  "is_external": {
                    "type": "boolean",
                    "description": "Whether file is from external source"
                  },
                  "external_type": {
                    "type": "string",
                    "description": "External file type if applicable"
                  },
                  "is_public": {
                    "type": "boolean",
                    "description": "Whether file is publicly accessible"
                  },
                  "public_url_shared": {
                    "type": "boolean",
                    "description": "Whether public URL is shared"
                  },
                  "display_as_bot": {
                    "type": "boolean",
                    "description": "Whether file is displayed as uploaded by bot"
                  },
                  "username": {
                    "type": "string",
                    "description": "Username of uploader"
                  },
                  "url_private": {
                    "type": "string",
                    "description": "Private URL to access file"
                  },
                  "url_private_download": {
                    "type": "string",
                    "description": "Private download URL"
                  },
                  "permalink": {
                    "type": "string",
                    "description": "Permanent link to file"
                  },
                  "permalink_public": {
                    "type": "string",
                    "description": "Public permanent link"
                  },
                  "shares": {
                    "type": "object",
                    "properties": {
                      "public": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "reply_users": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "User IDs who replied"
                              },
                              "reply_users_count": {
                                "type": "number",
                                "description": "Number of unique users who replied"
                              },
                              "reply_count": {
                                "type": "number",
                                "description": "Total number of replies"
                              },
                              "ts": {
                                "type": "string",
                                "description": "Timestamp of the share"
                              },
                              "channel_name": {
                                "type": "string",
                                "description": "Name of the channel"
                              },
                              "team_id": {
                                "type": "string",
                                "description": "Team ID"
                              }
                            },
                            "required": [
                              "reply_users",
                              "reply_users_count",
                              "reply_count",
                              "ts",
                              "channel_name",
                              "team_id"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "description": "Public channel shares"
                      },
                      "private": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "reply_users": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "User IDs who replied"
                              },
                              "reply_users_count": {
                                "type": "number",
                                "description": "Number of unique users who replied"
                              },
                              "reply_count": {
                                "type": "number",
                                "description": "Total number of replies"
                              },
                              "ts": {
                                "type": "string",
                                "description": "Timestamp of the share"
                              },
                              "channel_name": {
                                "type": "string",
                                "description": "Name of the channel"
                              },
                              "team_id": {
                                "type": "string",
                                "description": "Team ID"
                              }
                            },
                            "required": [
                              "reply_users",
                              "reply_users_count",
                              "reply_count",
                              "ts",
                              "channel_name",
                              "team_id"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "description": "Private channel shares"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Information about where file is shared"
                  },
                  "channels": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Channel IDs where file is shared"
                  },
                  "groups": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Private group IDs where file is shared"
                  },
                  "ims": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Direct message IDs where file is shared"
                  },
                  "has_rich_preview": {
                    "type": "boolean",
                    "description": "Whether file has rich preview"
                  }
                },
                "required": [
                  "id",
                  "created",
                  "timestamp",
                  "name",
                  "mimetype",
                  "filetype",
                  "pretty_type",
                  "user",
                  "editable",
                  "size",
                  "mode",
                  "is_external",
                  "external_type",
                  "is_public",
                  "public_url_shared",
                  "display_as_bot",
                  "username",
                  "url_private",
                  "url_private_download",
                  "permalink"
                ],
                "additionalProperties": false,
                "description": "File information object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "schedule_message"
                ],
                "description": "Schedule a message to be sent at a future time"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "channel": {
                "type": "string",
                "description": "Channel ID where message will be posted"
              },
              "scheduled_message_id": {
                "type": "string",
                "description": "Unique identifier for the scheduled message"
              },
              "post_at": {
                "type": "number",
                "description": "Unix timestamp when message will be posted"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_file_info"
                ],
                "description": "Get detailed information about a file"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Slack API call was successful"
              },
              "file": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique file identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Filename"
                  },
                  "title": {
                    "type": "string",
                    "description": "File title"
                  },
                  "mimetype": {
                    "type": "string",
                    "description": "MIME type of the file"
                  },
                  "filetype": {
                    "type": "string",
                    "description": "File type extension"
                  },
                  "size": {
                    "type": "number",
                    "description": "File size in bytes"
                  },
                  "user": {
                    "type": "string",
                    "description": "User ID who uploaded the file"
                  },
                  "url_private": {
                    "type": "string",
                    "description": "Private URL to access file"
                  },
                  "url_private_download": {
                    "type": "string",
                    "description": "Private download URL"
                  },
                  "thumb_64": {
                    "type": "string",
                    "description": "64px thumbnail URL"
                  },
                  "thumb_360": {
                    "type": "string",
                    "description": "360px thumbnail URL"
                  },
                  "thumb_480": {
                    "type": "string",
                    "description": "480px thumbnail URL"
                  },
                  "original_w": {
                    "type": "number",
                    "description": "Original image width"
                  },
                  "original_h": {
                    "type": "number",
                    "description": "Original image height"
                  },
                  "permalink": {
                    "type": "string",
                    "description": "Permanent link to file"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "mimetype",
                  "filetype",
                  "size"
                ],
                "additionalProperties": false,
                "description": "File information object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "download_file"
                ],
                "description": "Download a file from Slack"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the download was successful"
              },
              "content": {
                "type": "string",
                "description": "Base64 encoded file content"
              },
              "filename": {
                "type": "string",
                "description": "Original filename"
              },
              "mimetype": {
                "type": "string",
                "description": "MIME type of the file"
              },
              "size": {
                "type": "number",
                "description": "File size in bytes"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_messages"
                ]
              },
              "ok": {
                "type": "boolean"
              },
              "matches": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "ts": {
                      "type": "string"
                    },
                    "channel_id": {
                      "type": "string"
                    },
                    "channel_name": {
                      "type": "string"
                    },
                    "user_id": {
                      "type": "string"
                    },
                    "username": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    },
                    "permalink": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "ts",
                    "text"
                  ],
                  "additionalProperties": false
                }
              },
              "pagination": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "number"
                  },
                  "total_count": {
                    "type": "number"
                  },
                  "page_count": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              },
              "success": {
                "type": "boolean"
              },
              "code": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_dms"
                ]
              },
              "ok": {
                "type": "boolean"
              },
              "channels": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "is_im": {
                      "type": "boolean"
                    },
                    "is_mpim": {
                      "type": "boolean"
                    },
                    "user": {
                      "type": "string"
                    },
                    "num_members": {
                      "type": "number"
                    },
                    "is_archived": {
                      "type": "boolean"
                    },
                    "created": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "type": "string"
              },
              "error": {
                "type": "string"
              },
              "success": {
                "type": "boolean"
              },
              "code": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "read_dm_history"
                ]
              },
              "ok": {
                "type": "boolean"
              },
              "messages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "ts": {
                      "type": "string"
                    },
                    "user": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    },
                    "thread_ts": {
                      "type": "string"
                    },
                    "reply_count": {
                      "type": "number"
                    },
                    "type": {
                      "type": "string"
                    },
                    "subtype": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "ts",
                    "text"
                  ],
                  "additionalProperties": false
                }
              },
              "has_more": {
                "type": "boolean"
              },
              "next_cursor": {
                "type": "string"
              },
              "error": {
                "type": "string"
              },
              "success": {
                "type": "boolean"
              },
              "code": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Send Message example\nconst slack_send_message = new SlackBubble({\n  operation: \"send_message\", // Send a message to a Slack channel or DM. Required scopes: chat:write, chat:write.public (public channels bot has not joined), im:write (DMs to users). If a scope is missing, ask a workspace admin to reinstall the Bubble Lab Slack app with the required permissions, then contact the Bubble Lab team to relink your credential.\n  channel: \"example string\", // Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM (e.g., U1234567890)\n  text: \"example string\", // Message text content\n  username: \"example string\", // Override bot username for this message\n  icon_emoji: \"example string\", // Override bot icon with emoji (e.g., :robot_face:)\n  icon_url: \"example string\", // Override bot icon with custom image URL\n  attachments: [{ color: \"example string\" // Color bar accent (hex color or good/warning/danger), pretext: \"example string\" // Text that appears before the main attachment content, author_name: \"example string\" // Author name displayed at the top, author_link: \"example string\" // URL to link the author name, author_icon: \"example string\" // Author icon image URL, title: \"example string\" // Attachment title text, title_link: \"example string\" // URL to link the title, text: \"example string\" // Main attachment text content, fields: [{ title: \"example string\" // Field title, value: \"example string\" // Field value, short: true // Whether field should be displayed side-by-side }] // Array of field objects for structured data, image_url: \"example string\" // URL of image to display, thumb_url: \"example string\" // URL of thumbnail image, footer: \"example string\" // Footer text, footer_icon: \"example string\" // Footer icon URL, ts: 42 // Timestamp for the attachment }], // Legacy message attachments\n  blocks: [{ type: \"example string\" // Block element type (section, divider, button, etc.), text: { type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\" // Text formatting type, text: \"example string\" // The actual text content, emoji: true, verbatim: true } // Text object for the block element, elements: [{ type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\", \"image\" // Element type, text: \"example string\" // Text content, image_url: \"example string\" // Image URL for image elements, alt_text: \"example string\" // Alt text for image elements, emoji: true, verbatim: true }] // Elements array for context blocks }], // Block Kit structured message blocks\n  thread_ts: \"example string\", // Timestamp of parent message to reply in thread\n  reply_broadcast: false // default, // Broadcast thread reply to channel\n  unfurl_links: true // default, // Enable automatic link unfurling\n  unfurl_media: true // default, // Enable automatic media unfurling\n  as_user: false // default, // Post as the installing user (xoxp) instead of as the bot. Default false. Requires user-scope chat:write on the install. `username`/`icon_url`/`icon_emoji` are ignored when true.\n  footer_mode: \"auto\" // options: \"auto\", \"always\", \"never\", // Controls the Bubble Lab attribution footer. auto shows it for bot posts and hides it for as_user posts; always forces it on; never hides it.\n});\n\nconst result = await slack_send_message.action();\n// outputSchema for result.data when operation === 'send_message':\n// {\n//   operation: \"send_message\" // Send a message to a Slack channel or DM,\n//   ok: boolean // Whether the Slack API call was successful,\n//   channel: string | undefined // Channel ID where the message was sent,\n//   ts: string | undefined // Timestamp of the sent message,\n//   message: { type: string // Message type (usually \"message\"), ts: string | undefined // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message, files: { id: string // Unique file identifier, name: string | undefined // Filename, title: string | undefined // File title, mimetype: string | undefined // MIME type of the file, filetype: string | undefined // File type extension, size: number | undefined // File size in bytes, user: string | undefined // User ID who uploaded the file, url_private: string | undefined // Private URL to access file, url_private_download: string | undefined // Private download URL, thumb_64: string | undefined // 64px thumbnail URL, thumb_360: string | undefined // 360px thumbnail URL, thumb_480: string | undefined // 480px thumbnail URL, original_w: number | undefined // Original image width, original_h: number | undefined // Original image height, permalink: string | undefined // Permanent link to file }[] | undefined // Array of files attached to this message } | undefined // Details of the sent message,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// List Channels example\nconst slack_list_channels = new SlackBubble({\n  operation: \"list_channels\", // List all channels in the Slack workspace. Each channel includes `is_member` — filter to true for channels the bot can read without joining. Required scopes: channels:read (public), groups:read (private), im:read (DMs), mpim:read (group DMs)\n  types: [\"public_channel\",\"private_channel\"] // default, // Types of channels to include in results\n  exclude_archived: true // default, // Exclude archived channels from results\n  limit: 50 // default, // Maximum number of channels to return (1-1000)\n  cursor: \"example string\", // Cursor for pagination to get next set of results\n});\n\nconst result = await slack_list_channels.action();\n// outputSchema for result.data when operation === 'list_channels':\n// {\n//   operation: \"list_channels\" // List all channels in the Slack workspace,\n//   ok: boolean // Whether the Slack API call was successful,\n//   channels: { id: string // Unique channel identifier, name: string // Channel name without # prefix, is_channel: boolean | undefined // True if this is a public channel, is_group: boolean | undefined // True if this is a private channel, is_im: boolean | undefined // True if this is a direct message, is_mpim: boolean | undefined // True if this is a multi-person direct message, is_private: boolean | undefined // True if this is a private channel, created: number // Unix timestamp when channel was created, is_archived: boolean // True if channel is archived, is_general: boolean | undefined // True if this is the #general channel, unlinked: number | undefined // Unix timestamp when channel was unlinked, name_normalized: string | undefined // Normalized channel name, is_shared: boolean | undefined // True if channel is shared with other workspaces, is_ext_shared: boolean | undefined // True if channel is shared externally, is_org_shared: boolean | undefined // True if channel is shared across organization, shared_team_ids: string[] | undefined // IDs of teams this channel is shared with, pending_shared: string[] | undefined // Pending shared connections, pending_connected_team_ids: string[] | undefined // Pending team connection IDs, is_pending_ext_shared: boolean | undefined // True if external sharing is pending, is_member: boolean | undefined // True if the bot is a member of this channel. Filter on this before calling get_conversation_history., is_open: boolean | undefined // True if the channel is open, topic: { value: string // Topic text, creator: string // User ID who set the topic, last_set: number // Unix timestamp when topic was last set } | undefined // Channel topic information, purpose: { value: string // Purpose text, creator: string // User ID who set the purpose, last_set: number // Unix timestamp when purpose was last set } | undefined // Channel purpose information, num_members: number | undefined // Number of members in the channel }[] | undefined // Array of channel objects,\n//   response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Channel Info example\nconst slack_get_channel_info = new SlackBubble({\n  operation: \"get_channel_info\", // Get detailed information about a specific channel. Required scopes: channels:read (public), groups:read (private), im:read (DMs), mpim:read (group DMs)\n  channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general)\n  include_locale: false // default, // Include locale information in the response\n});\n\nconst result = await slack_get_channel_info.action();\n// outputSchema for result.data when operation === 'get_channel_info':\n// {\n//   operation: \"get_channel_info\" // Get detailed information about a specific channel,\n//   ok: boolean // Whether the Slack API call was successful,\n//   channel: { id: string // Unique channel identifier, name: string // Channel name without # prefix, is_channel: boolean | undefined // True if this is a public channel, is_group: boolean | undefined // True if this is a private channel, is_im: boolean | undefined // True if this is a direct message, is_mpim: boolean | undefined // True if this is a multi-person direct message, is_private: boolean | undefined // True if this is a private channel, created: number // Unix timestamp when channel was created, is_archived: boolean // True if channel is archived, is_general: boolean | undefined // True if this is the #general channel, unlinked: number | undefined // Unix timestamp when channel was unlinked, name_normalized: string | undefined // Normalized channel name, is_shared: boolean | undefined // True if channel is shared with other workspaces, is_ext_shared: boolean | undefined // True if channel is shared externally, is_org_shared: boolean | undefined // True if channel is shared across organization, shared_team_ids: string[] | undefined // IDs of teams this channel is shared with, pending_shared: string[] | undefined // Pending shared connections, pending_connected_team_ids: string[] | undefined // Pending team connection IDs, is_pending_ext_shared: boolean | undefined // True if external sharing is pending, is_member: boolean | undefined // True if the bot is a member of this channel. Filter on this before calling get_conversation_history., is_open: boolean | undefined // True if the channel is open, topic: { value: string // Topic text, creator: string // User ID who set the topic, last_set: number // Unix timestamp when topic was last set } | undefined // Channel topic information, purpose: { value: string // Purpose text, creator: string // User ID who set the purpose, last_set: number // Unix timestamp when purpose was last set } | undefined // Channel purpose information, num_members: number | undefined // Number of members in the channel } | undefined // Channel information object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get User Info example\nconst slack_get_user_info = new SlackBubble({\n  operation: \"get_user_info\", // Get detailed information about a specific user. Required scopes: users:read (add users:read.email to access email field)\n  user: \"example string\", // User ID to get information about\n  include_locale: false // default, // Include locale information in the response\n});\n\nconst result = await slack_get_user_info.action();\n// outputSchema for result.data when operation === 'get_user_info':\n// {\n//   operation: \"get_user_info\" // Get detailed information about a specific user,\n//   ok: boolean // Whether the Slack API call was successful,\n//   user: { id: string // Unique user identifier, team_id: string | undefined // Team/workspace ID, name: string // Username (handle without @), deleted: boolean | undefined // True if user account is deleted, color: string | undefined // Color code for user in UI, real_name: string | undefined // Users real name, tz: string | undefined // Timezone identifier, tz_label: string | undefined // Human-readable timezone label, tz_offset: number | undefined // Timezone offset from UTC in seconds, profile: { title: string | undefined // Job title, phone: string | undefined // Phone number, skype: string | undefined // Skype username, real_name: string | undefined // Real name from profile, real_name_normalized: string | undefined // Normalized real name, display_name: string | undefined // Display name, display_name_normalized: string | undefined // Normalized display name, fields: Record<string, unknown> | undefined // Custom profile fields, status_text: string | undefined // Current status text, status_emoji: string | undefined // Current status emoji, status_expiration: number | undefined // Unix timestamp when status expires, avatar_hash: string | undefined // Hash for avatar image, image_original: string | undefined // URL of original avatar image, is_custom_image: boolean | undefined // True if using custom avatar, email: string | undefined // Email address, first_name: string | undefined // First name, last_name: string | undefined // Last name, image_24: string | undefined // 24x24 pixel avatar URL, image_32: string | undefined // 32x32 pixel avatar URL, image_48: string | undefined // 48x48 pixel avatar URL, image_72: string | undefined // 72x72 pixel avatar URL, image_192: string | undefined // 192x192 pixel avatar URL, image_512: string | undefined // 512x512 pixel avatar URL, image_1024: string | undefined // 1024x1024 pixel avatar URL } | undefined // User profile information, is_admin: boolean | undefined // True if user is workspace admin, is_owner: boolean | undefined // True if user is workspace owner, is_primary_owner: boolean | undefined // True if user is primary workspace owner, is_restricted: boolean | undefined // True if user is restricted (single-channel guest), is_ultra_restricted: boolean | undefined // True if user is ultra restricted (multi-channel guest), is_bot: boolean | undefined // True if this is a bot user, is_app_user: boolean | undefined // True if this is an app user, updated: number | undefined // Unix timestamp when user was last updated, has_2fa: boolean | undefined // True if user has two-factor authentication enabled } | undefined // User information object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// List Users example\nconst slack_list_users = new SlackBubble({\n  operation: \"list_users\", // List all users in the Slack workspace. Required scopes: users:read (add users:read.email to access email field)\n  limit: 50 // default, // Maximum number of users to return (1-1000)\n  cursor: \"example string\", // Cursor for pagination to get next set of results\n  include_locale: false // default, // Include locale information in the response\n});\n\nconst result = await slack_list_users.action();\n// outputSchema for result.data when operation === 'list_users':\n// {\n//   operation: \"list_users\" // List all users in the Slack workspace,\n//   ok: boolean // Whether the Slack API call was successful,\n//   members: { id: string // Unique user identifier, team_id: string | undefined // Team/workspace ID, name: string // Username (handle without @), deleted: boolean | undefined // True if user account is deleted, color: string | undefined // Color code for user in UI, real_name: string | undefined // Users real name, tz: string | undefined // Timezone identifier, tz_label: string | undefined // Human-readable timezone label, tz_offset: number | undefined // Timezone offset from UTC in seconds, profile: { title: string | undefined // Job title, phone: string | undefined // Phone number, skype: string | undefined // Skype username, real_name: string | undefined // Real name from profile, real_name_normalized: string | undefined // Normalized real name, display_name: string | undefined // Display name, display_name_normalized: string | undefined // Normalized display name, fields: Record<string, unknown> | undefined // Custom profile fields, status_text: string | undefined // Current status text, status_emoji: string | undefined // Current status emoji, status_expiration: number | undefined // Unix timestamp when status expires, avatar_hash: string | undefined // Hash for avatar image, image_original: string | undefined // URL of original avatar image, is_custom_image: boolean | undefined // True if using custom avatar, email: string | undefined // Email address, first_name: string | undefined // First name, last_name: string | undefined // Last name, image_24: string | undefined // 24x24 pixel avatar URL, image_32: string | undefined // 32x32 pixel avatar URL, image_48: string | undefined // 48x48 pixel avatar URL, image_72: string | undefined // 72x72 pixel avatar URL, image_192: string | undefined // 192x192 pixel avatar URL, image_512: string | undefined // 512x512 pixel avatar URL, image_1024: string | undefined // 1024x1024 pixel avatar URL } | undefined // User profile information, is_admin: boolean | undefined // True if user is workspace admin, is_owner: boolean | undefined // True if user is workspace owner, is_primary_owner: boolean | undefined // True if user is primary workspace owner, is_restricted: boolean | undefined // True if user is restricted (single-channel guest), is_ultra_restricted: boolean | undefined // True if user is ultra restricted (multi-channel guest), is_bot: boolean | undefined // True if this is a bot user, is_app_user: boolean | undefined // True if this is an app user, updated: number | undefined // Unix timestamp when user was last updated, has_2fa: boolean | undefined // True if user has two-factor authentication enabled }[] | undefined // Array of user objects,\n//   response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Conversation History example\nconst slack_get_conversation_history = new SlackBubble({\n  operation: \"get_conversation_history\", // Retrieve message history from a channel or direct message. Tries the installing user token (xoxp) first and falls back to the bot token (xoxb), so reads work for any channel the user OR the bot can see — no need to invite the bot just to read. Required scopes: channels:history (public), groups:history (private), im:history (DMs), mpim:history (group DMs); same scopes on whichever token is used.\n  channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general)\n  latest: \"example string\", // End of time range of messages to include (timestamp)\n  oldest: \"example string\", // Start of time range of messages to include (timestamp)\n  inclusive: false // default, // Include messages with latest or oldest timestamps in results\n  limit: 20 // default, // Maximum number of messages to return (1-1000)\n  cursor: \"example string\", // Cursor for pagination to get next set of results\n});\n\nconst result = await slack_get_conversation_history.action();\n// outputSchema for result.data when operation === 'get_conversation_history':\n// {\n//   operation: \"get_conversation_history\" // Retrieve message history from a channel or direct message,\n//   ok: boolean // Whether the Slack API call was successful,\n//   messages: { type: string // Message type (usually \"message\"), ts: string | undefined // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message, files: { id: string // Unique file identifier, name: string | undefined // Filename, title: string | undefined // File title, mimetype: string | undefined // MIME type of the file, filetype: string | undefined // File type extension, size: number | undefined // File size in bytes, user: string | undefined // User ID who uploaded the file, url_private: string | undefined // Private URL to access file, url_private_download: string | undefined // Private download URL, thumb_64: string | undefined // 64px thumbnail URL, thumb_360: string | undefined // 360px thumbnail URL, thumb_480: string | undefined // 480px thumbnail URL, original_w: number | undefined // Original image width, original_h: number | undefined // Original image height, permalink: string | undefined // Permanent link to file }[] | undefined // Array of files attached to this message }[] | undefined // Array of message objects,\n//   has_more: boolean | undefined // Whether there are more messages to retrieve,\n//   response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Thread Replies example\nconst slack_get_thread_replies = new SlackBubble({\n  operation: \"get_thread_replies\", // Retrieve all replies to a thread in a channel. Required scopes: channels:history (public), groups:history (private), im:history (DMs), mpim:history (group DMs)\n  channel: \"example string\", // Channel ID where the thread exists\n  ts: \"example string\", // Timestamp of the parent message to get replies for\n  latest: \"example string\", // End of time range of messages to include (timestamp)\n  oldest: \"example string\", // Start of time range of messages to include (timestamp)\n  inclusive: false // default, // Include messages with latest or oldest timestamps in results\n  limit: 100 // default, // Maximum number of messages to return (1-1000)\n  cursor: \"example string\", // Cursor for pagination to get next set of results\n});\n\nconst result = await slack_get_thread_replies.action();\n// outputSchema for result.data when operation === 'get_thread_replies':\n// {\n//   operation: \"get_thread_replies\" // Retrieve all replies to a thread in a channel,\n//   ok: boolean // Whether the Slack API call was successful,\n//   messages: { type: string // Message type (usually \"message\"), ts: string | undefined // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message, files: { id: string // Unique file identifier, name: string | undefined // Filename, title: string | undefined // File title, mimetype: string | undefined // MIME type of the file, filetype: string | undefined // File type extension, size: number | undefined // File size in bytes, user: string | undefined // User ID who uploaded the file, url_private: string | undefined // Private URL to access file, url_private_download: string | undefined // Private download URL, thumb_64: string | undefined // 64px thumbnail URL, thumb_360: string | undefined // 360px thumbnail URL, thumb_480: string | undefined // 480px thumbnail URL, original_w: number | undefined // Original image width, original_h: number | undefined // Original image height, permalink: string | undefined // Permanent link to file }[] | undefined // Array of files attached to this message }[] | undefined // Array of message objects in the thread,\n//   has_more: boolean | undefined // Whether there are more messages to retrieve,\n//   response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Update Message example\nconst slack_update_message = new SlackBubble({\n  operation: \"update_message\", // Update an existing message in a channel. Required scopes: chat:write\n  channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n  ts: \"example string\", // Timestamp of the message to update\n  text: \"example string\", // New text content for the message\n  attachments: [{ color: \"example string\" // Color bar accent (hex color or good/warning/danger), pretext: \"example string\" // Text that appears before the main attachment content, author_name: \"example string\" // Author name displayed at the top, author_link: \"example string\" // URL to link the author name, author_icon: \"example string\" // Author icon image URL, title: \"example string\" // Attachment title text, title_link: \"example string\" // URL to link the title, text: \"example string\" // Main attachment text content, fields: [{ title: \"example string\" // Field title, value: \"example string\" // Field value, short: true // Whether field should be displayed side-by-side }] // Array of field objects for structured data, image_url: \"example string\" // URL of image to display, thumb_url: \"example string\" // URL of thumbnail image, footer: \"example string\" // Footer text, footer_icon: \"example string\" // Footer icon URL, ts: 42 // Timestamp for the attachment }], // New legacy message attachments\n  blocks: [{ type: \"example string\" // Block element type (section, divider, button, etc.), text: { type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\" // Text formatting type, text: \"example string\" // The actual text content, emoji: true, verbatim: true } // Text object for the block element, elements: [{ type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\", \"image\" // Element type, text: \"example string\" // Text content, image_url: \"example string\" // Image URL for image elements, alt_text: \"example string\" // Alt text for image elements, emoji: true, verbatim: true }] // Elements array for context blocks }], // New Block Kit structured message blocks\n  as_user: false // default, // Edit the message as the installing user (using xoxp) instead of as the bot. Bot tokens can only update messages posted by the bot; user tokens can only update messages posted by that user. Requires user-scope chat:write.\n});\n\nconst result = await slack_update_message.action();\n// outputSchema for result.data when operation === 'update_message':\n// {\n//   operation: \"update_message\" // Update an existing message in a channel,\n//   ok: boolean // Whether the Slack API call was successful,\n//   channel: string | undefined // Channel ID where the message was updated,\n//   ts: string | undefined // Timestamp of the updated message,\n//   text: string | undefined // Updated text content of the message,\n//   message: { type: string // Message type (usually \"message\"), ts: string | undefined // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message, files: { id: string // Unique file identifier, name: string | undefined // Filename, title: string | undefined // File title, mimetype: string | undefined // MIME type of the file, filetype: string | undefined // File type extension, size: number | undefined // File size in bytes, user: string | undefined // User ID who uploaded the file, url_private: string | undefined // Private URL to access file, url_private_download: string | undefined // Private download URL, thumb_64: string | undefined // 64px thumbnail URL, thumb_360: string | undefined // 360px thumbnail URL, thumb_480: string | undefined // 480px thumbnail URL, original_w: number | undefined // Original image width, original_h: number | undefined // Original image height, permalink: string | undefined // Permanent link to file }[] | undefined // Array of files attached to this message } | undefined // Details of the updated message,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Delete Message example\nconst slack_delete_message = new SlackBubble({\n  operation: \"delete_message\", // Delete a message from a channel. Required scopes: chat:write. Note: Bot tokens can only delete messages posted by the bot; user tokens can delete any message the user has permission to delete\n  channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n  ts: \"example string\", // Timestamp of the message to delete\n  as_user: false // default, // Delete as the installing user (using xoxp) instead of as the bot. Bot tokens can only delete messages posted by the bot; user tokens can delete any message the user has permission to delete. Requires user-scope chat:write.\n});\n\nconst result = await slack_delete_message.action();\n// outputSchema for result.data when operation === 'delete_message':\n// {\n//   operation: \"delete_message\" // Delete a message from a channel,\n//   ok: boolean // Whether the Slack API call was successful,\n//   channel: string | undefined // Channel ID where the message was deleted,\n//   ts: string | undefined // Timestamp of the deleted message,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Add Reaction example\nconst slack_add_reaction = new SlackBubble({\n  operation: \"add_reaction\", // Add an emoji reaction to a message. Required scopes: reactions:write\n  name: \"example string\", // Emoji name without colons (e.g., thumbsup, heart)\n  channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n  timestamp: \"example string\", // Timestamp of the message to react to\n  as_user: false // default, // React as the installing user (using xoxp) instead of as the bot. Requires user-scope reactions:write.\n});\n\nconst result = await slack_add_reaction.action();\n// outputSchema for result.data when operation === 'add_reaction':\n// {\n//   operation: \"add_reaction\" // Add an emoji reaction to a message,\n//   ok: boolean // Whether the Slack API call was successful,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Remove Reaction example\nconst slack_remove_reaction = new SlackBubble({\n  operation: \"remove_reaction\", // Remove an emoji reaction from a message. Required scopes: reactions:write\n  name: \"example string\", // Emoji name without colons (e.g., thumbsup, heart)\n  channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n  timestamp: \"example string\", // Timestamp of the message to remove reaction from\n  as_user: false // default, // Remove the reaction as the installing user (using xoxp) instead of as the bot. A reaction can only be removed by whoever added it. Requires user-scope reactions:write.\n});\n\nconst result = await slack_remove_reaction.action();\n// outputSchema for result.data when operation === 'remove_reaction':\n// {\n//   operation: \"remove_reaction\" // Remove an emoji reaction from a message,\n//   ok: boolean // Whether the Slack API call was successful,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Join Channel example\nconst slack_join_channel = new SlackBubble({\n  operation: \"join_channel\", // Join a public Slack channel. Required scopes: channels:join (bot token) or channels:write (user token)\n  channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) to join\n});\n\nconst result = await slack_join_channel.action();\n// outputSchema for result.data when operation === 'join_channel':\n// {\n//   operation: \"join_channel\" // Join a public Slack channel,\n//   ok: boolean // Whether the Slack API call was successful,\n//   channel: { id: string // Unique channel identifier, name: string // Channel name without # prefix, is_channel: boolean | undefined // True if this is a public channel, is_group: boolean | undefined // True if this is a private channel, is_im: boolean | undefined // True if this is a direct message, is_mpim: boolean | undefined // True if this is a multi-person direct message, is_private: boolean | undefined // True if this is a private channel, created: number // Unix timestamp when channel was created, is_archived: boolean // True if channel is archived, is_general: boolean | undefined // True if this is the #general channel, unlinked: number | undefined // Unix timestamp when channel was unlinked, name_normalized: string | undefined // Normalized channel name, is_shared: boolean | undefined // True if channel is shared with other workspaces, is_ext_shared: boolean | undefined // True if channel is shared externally, is_org_shared: boolean | undefined // True if channel is shared across organization, shared_team_ids: string[] | undefined // IDs of teams this channel is shared with, pending_shared: string[] | undefined // Pending shared connections, pending_connected_team_ids: string[] | undefined // Pending team connection IDs, is_pending_ext_shared: boolean | undefined // True if external sharing is pending, is_member: boolean | undefined // True if the bot is a member of this channel. Filter on this before calling get_conversation_history., is_open: boolean | undefined // True if the channel is open, topic: { value: string // Topic text, creator: string // User ID who set the topic, last_set: number // Unix timestamp when topic was last set } | undefined // Channel topic information, purpose: { value: string // Purpose text, creator: string // User ID who set the purpose, last_set: number // Unix timestamp when purpose was last set } | undefined // Channel purpose information, num_members: number | undefined // Number of members in the channel } | undefined // Channel information object after joining,\n//   already_in_channel: boolean | undefined // Whether the bot was already a member of the channel,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Upload File example\nconst slack_upload_file = new SlackBubble({\n  operation: \"upload_file\", // Upload a file to a Slack channel. Required scopes: files:write\n  channel: \"example string\", // Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM\n  file_path: \"example string\", // Local file path to upload (provide either file_path or content)\n  content: \"example string\", // Base64-encoded file content to upload (provide either file_path or content)\n  filename: \"example string\", // Override filename for the upload\n  title: \"example string\", // Title for the file\n  initial_comment: \"example string\", // Initial comment to post with the file\n  thread_ts: \"example string\", // Timestamp of parent message to upload file in thread\n  as_user: false // default, // Upload the file as the installing user (using xoxp) instead of as the bot. Requires user-scope files:write.\n});\n\nconst result = await slack_upload_file.action();\n// outputSchema for result.data when operation === 'upload_file':\n// {\n//   operation: \"upload_file\" // Upload a file to a Slack channel,\n//   ok: boolean // Whether the Slack API call was successful,\n//   file: { id: string // Unique file identifier, created: number // Unix timestamp when file was created, timestamp: number // Unix timestamp when file was uploaded, name: string // Original filename, title: string | undefined // File title, mimetype: string // MIME type of the file, filetype: string // File type extension, pretty_type: string // Human-readable file type, user: string // User ID who uploaded the file, editable: boolean // Whether the file is editable, size: number // File size in bytes, mode: string // File sharing mode, is_external: boolean // Whether file is from external source, external_type: string // External file type if applicable, is_public: boolean // Whether file is publicly accessible, public_url_shared: boolean // Whether public URL is shared, display_as_bot: boolean // Whether file is displayed as uploaded by bot, username: string // Username of uploader, url_private: string // Private URL to access file, url_private_download: string // Private download URL, permalink: string // Permanent link to file, permalink_public: string | undefined // Public permanent link, shares: { public: Record<string, { reply_users: string[] // User IDs who replied, reply_users_count: number // Number of unique users who replied, reply_count: number // Total number of replies, ts: string // Timestamp of the share, channel_name: string // Name of the channel, team_id: string // Team ID }[]> | undefined // Public channel shares, private: Record<string, { reply_users: string[] // User IDs who replied, reply_users_count: number // Number of unique users who replied, reply_count: number // Total number of replies, ts: string // Timestamp of the share, channel_name: string // Name of the channel, team_id: string // Team ID }[]> | undefined // Private channel shares } | undefined // Information about where file is shared, channels: string[] | undefined // Channel IDs where file is shared, groups: string[] | undefined // Private group IDs where file is shared, ims: string[] | undefined // Direct message IDs where file is shared, has_rich_preview: boolean | undefined // Whether file has rich preview } | undefined // File information object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Schedule Message example\nconst slack_schedule_message = new SlackBubble({\n  operation: \"schedule_message\", // Schedule a message to be sent at a future time. Required scopes: chat:write. Max 120 days in advance.\n  channel: \"example string\", // Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM\n  text: \"example string\", // Message text content\n  post_at: 42, // Unix timestamp (seconds) for when to send the message. Must be within 120 days from now.\n  username: \"example string\", // Override bot username for this message\n  icon_emoji: \"example string\", // Override bot icon with emoji (e.g., :robot_face:)\n  icon_url: \"example string\", // Override bot icon with custom image URL\n  thread_ts: \"example string\", // Timestamp of parent message to reply in thread\n  blocks: [{ type: \"example string\" // Block element type (section, divider, button, etc.), text: { type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\" // Text formatting type, text: \"example string\" // The actual text content, emoji: true, verbatim: true } // Text object for the block element, elements: [{ type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\", \"image\" // Element type, text: \"example string\" // Text content, image_url: \"example string\" // Image URL for image elements, alt_text: \"example string\" // Alt text for image elements, emoji: true, verbatim: true }] // Elements array for context blocks }], // Block Kit structured message blocks\n  unfurl_links: true // default, // Enable automatic link unfurling\n  unfurl_media: true // default, // Enable automatic media unfurling\n  as_user: false // default, // Schedule the message as the installing user (using xoxp) instead of as the bot. When true, `username`/`icon_url`/`icon_emoji` are ignored (bot-only). Requires user-scope chat:write.\n});\n\nconst result = await slack_schedule_message.action();\n// outputSchema for result.data when operation === 'schedule_message':\n// {\n//   operation: \"schedule_message\" // Schedule a message to be sent at a future time,\n//   ok: boolean // Whether the Slack API call was successful,\n//   channel: string | undefined // Channel ID where message will be posted,\n//   scheduled_message_id: string | undefined // Unique identifier for the scheduled message,\n//   post_at: number | undefined // Unix timestamp when message will be posted,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get File Info example\nconst slack_get_file_info = new SlackBubble({\n  operation: \"get_file_info\", // Get detailed information about a file. Required scopes: files:read. Use this to get file URLs from a file_id (e.g., from file_shared events).\n  file_id: \"example string\", // The file ID to get information about (e.g., F1234567890)\n});\n\nconst result = await slack_get_file_info.action();\n// outputSchema for result.data when operation === 'get_file_info':\n// {\n//   operation: \"get_file_info\" // Get detailed information about a file,\n//   ok: boolean // Whether the Slack API call was successful,\n//   file: { id: string // Unique file identifier, name: string // Filename, title: string | undefined // File title, mimetype: string // MIME type of the file, filetype: string // File type extension, size: number // File size in bytes, user: string | undefined // User ID who uploaded the file, url_private: string | undefined // Private URL to access file, url_private_download: string | undefined // Private download URL, thumb_64: string | undefined // 64px thumbnail URL, thumb_360: string | undefined // 360px thumbnail URL, thumb_480: string | undefined // 480px thumbnail URL, original_w: number | undefined // Original image width, original_h: number | undefined // Original image height, permalink: string | undefined // Permanent link to file } | undefined // File information object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Download File example\nconst slack_download_file = new SlackBubble({\n  operation: \"download_file\", // Download a file from Slack. Required scopes: files:read. Returns the file content as base64 encoded string.\n  file_url: \"example string\", // The url_private or url_private_download URL to download (e.g., https://files.slack.com/files-pri/...)\n  file_id: \"example string\", // The file ID to download. If provided without file_url, will first fetch file info to get the URL.\n});\n\nconst result = await slack_download_file.action();\n// outputSchema for result.data when operation === 'download_file':\n// {\n//   operation: \"download_file\" // Download a file from Slack,\n//   ok: boolean // Whether the download was successful,\n//   content: string | undefined // Base64 encoded file content,\n//   filename: string | undefined // Original filename,\n//   mimetype: string | undefined // MIME type of the file,\n//   size: number | undefined // File size in bytes,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Search Messages example\nconst slack_search_messages = new SlackBubble({\n  operation: \"search_messages\", // Search messages across the workspace using Slack search syntax (in:#channel, from:@user, before:YYYY-MM-DD, has:link, \"exact phrase\"). Requires a user token (xoxp-) — the install must have granted `search:read`.\n  query: \"example string\", // Search query, supports Slack search modifiers.\n  count: 42, // Max results per page (default 20, max 50).\n  sort: \"score\" // options: \"score\", \"timestamp\", // Sort by relevance (score) or time. Default: score.\n  page: 42, // 1-indexed page number. Default: 1.\n});\n\nconst result = await slack_search_messages.action();\n// outputSchema for result.data when operation === 'search_messages':\n// {\n//   operation: \"search_messages\",\n//   ok: boolean,\n//   matches: { ts: string, channel_id: string | undefined, channel_name: string | undefined, user_id: string | undefined, username: string | undefined, text: string, permalink: string | undefined }[] | undefined,\n//   pagination: { page: number | undefined, total_count: number | undefined, page_count: number | undefined } | undefined,\n//   error: string,\n//   success: boolean,\n//   code: string | undefined\n// }\n\n\n// List Dms example\nconst slack_list_dms = new SlackBubble({\n  operation: \"list_dms\", // List the installing user's direct-message channels (1:1 IM + group MPIM). Requires user token (xoxp-) with im:read / mpim:read.\n  types: \"im\" // options: \"im\", \"mpim\", \"im,mpim\", // Filter: 'im' (1:1), 'mpim' (group DM), or 'im,mpim' (both). Default: both.\n  limit: 42, // Max channels to return (default 100, max 1000).\n  cursor: \"example string\", // Pagination cursor from response_metadata.next_cursor.\n});\n\nconst result = await slack_list_dms.action();\n// outputSchema for result.data when operation === 'list_dms':\n// {\n//   operation: \"list_dms\",\n//   ok: boolean,\n//   channels: { id: string, is_im: boolean | undefined, is_mpim: boolean | undefined, user: string | undefined, num_members: number | undefined, is_archived: boolean | undefined, created: number | undefined }[] | undefined,\n//   next_cursor: string | undefined,\n//   error: string,\n//   success: boolean,\n//   code: string | undefined\n// }\n\n\n// Read Dm History example\nconst slack_read_dm_history = new SlackBubble({\n  operation: \"read_dm_history\", // Read messages in a DM channel (IM or MPIM). Use a channel id from `list_dms`. Requires user token (xoxp-) with im:history / mpim:history.\n  channel: \"example string\", // DM channel id (starts with D…).\n  limit: 42, // Max messages to return (default 50, max 200).\n  oldest: \"example string\", // Only messages newer than this Slack ts (inclusive).\n  latest: \"example string\", // Only messages older than this Slack ts (inclusive).\n  cursor: \"example string\", // Pagination cursor from response_metadata.next_cursor.\n});\n\nconst result = await slack_read_dm_history.action();\n// outputSchema for result.data when operation === 'read_dm_history':\n// {\n//   operation: \"read_dm_history\",\n//   ok: boolean,\n//   messages: { ts: string, user: string | undefined, text: string, thread_ts: string | undefined, reply_count: number | undefined, type: string | undefined, subtype: string | undefined }[] | undefined,\n//   has_more: boolean | undefined,\n//   next_cursor: string | undefined,\n//   error: string,\n//   success: boolean,\n//   code: string | undefined\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`slack failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "SLACK_CRED",
        "SLACK_API"
      ]
    },
    {
      "name": "telegram",
      "alias": "telegram",
      "type": "service",
      "shortDescription": "Telegram Bot API integration for messaging and bot management",
      "useCase": "- Send text messages, photos, and documents to chats",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ],
                "description": "Send a text message to a Telegram chat"
              },
              "chat_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ],
                "description": "Unique identifier for the target chat or username (e.g., @channelusername)"
              },
              "text": {
                "type": "string",
                "minLength": 1,
                "description": "Text of the message to be sent"
              },
              "parse_mode": {
                "type": "string",
                "enum": [
                  "HTML",
                  "Markdown",
                  "MarkdownV2"
                ],
                "description": "Text formatting mode (HTML, Markdown, or MarkdownV2)"
              },
              "entities": {
                "type": "array",
                "items": {},
                "description": "List of special entities in the message text"
              },
              "disable_web_page_preview": {
                "type": "boolean",
                "description": "Disable link previews for links in this message"
              },
              "disable_notification": {
                "type": "boolean",
                "description": "Sends the message silently"
              },
              "protect_content": {
                "type": "boolean",
                "description": "Protects the content from forwarding and saving"
              },
              "reply_to_message_id": {
                "type": "number",
                "description": "If the message is a reply, ID of the original message"
              },
              "allow_sending_without_reply": {
                "type": "boolean",
                "description": "Allow sending message even if the replied message is not found"
              },
              "reply_markup": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "inline_keyboard": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "text": {
                                "type": "string",
                                "description": "Button text"
                              },
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "HTTP or tg:// URL to open"
                              },
                              "callback_data": {
                                "type": "string",
                                "maxLength": 64,
                                "description": "Callback data (max 64 bytes)"
                              },
                              "web_app": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Web App information"
                              },
                              "login_url": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Login URL information"
                              },
                              "switch_inline_query": {
                                "type": "string",
                                "description": "Switch to inline query"
                              },
                              "switch_inline_query_current_chat": {
                                "type": "string",
                                "description": "Switch to inline query in current chat"
                              },
                              "callback_game": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Callback game"
                              },
                              "pay": {
                                "type": "boolean",
                                "description": "Pay button"
                              }
                            },
                            "required": [
                              "text"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "description": "Array of button rows"
                      }
                    },
                    "required": [
                      "inline_keyboard"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "keyboard": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "text": {
                                "type": "string",
                                "description": "Button text"
                              },
                              "request_contact": {
                                "type": "boolean",
                                "description": "Request user contact"
                              },
                              "request_location": {
                                "type": "boolean",
                                "description": "Request user location"
                              },
                              "request_poll": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "quiz",
                                      "regular"
                                    ]
                                  }
                                },
                                "additionalProperties": false,
                                "description": "Request poll"
                              },
                              "web_app": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Web App information"
                              }
                            },
                            "required": [
                              "text"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "description": "Array of button rows"
                      },
                      "is_persistent": {
                        "type": "boolean",
                        "description": "Show keyboard to all users"
                      },
                      "resize_keyboard": {
                        "type": "boolean",
                        "description": "Resize keyboard to fit buttons"
                      },
                      "one_time_keyboard": {
                        "type": "boolean",
                        "description": "Hide keyboard after use"
                      },
                      "input_field_placeholder": {
                        "type": "string",
                        "description": "Placeholder for input field"
                      },
                      "selective": {
                        "type": "boolean",
                        "description": "Show keyboard to specific users only"
                      }
                    },
                    "required": [
                      "keyboard"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Inline keyboard or reply keyboard markup"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "chat_id",
              "text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_photo"
                ],
                "description": "Send a photo to a Telegram chat"
              },
              "chat_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ],
                "description": "Unique identifier for the target chat or username"
              },
              "photo": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uri"
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "Photo to send (file_id, HTTP URL, or file path)"
              },
              "caption": {
                "type": "string",
                "description": "Photo caption"
              },
              "parse_mode": {
                "type": "string",
                "enum": [
                  "HTML",
                  "Markdown",
                  "MarkdownV2"
                ],
                "description": "Text formatting mode (HTML, Markdown, or MarkdownV2)"
              },
              "caption_entities": {
                "type": "array",
                "items": {},
                "description": "List of special entities in the caption"
              },
              "has_spoiler": {
                "type": "boolean",
                "description": "Mark photo as spoiler"
              },
              "disable_notification": {
                "type": "boolean",
                "description": "Sends the message silently"
              },
              "protect_content": {
                "type": "boolean",
                "description": "Protects the content from forwarding and saving"
              },
              "reply_to_message_id": {
                "type": "number",
                "description": "If the message is a reply, ID of the original message"
              },
              "allow_sending_without_reply": {
                "type": "boolean",
                "description": "Allow sending message even if the replied message is not found"
              },
              "reply_markup": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "inline_keyboard": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "text": {
                                "type": "string",
                                "description": "Button text"
                              },
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "HTTP or tg:// URL to open"
                              },
                              "callback_data": {
                                "type": "string",
                                "maxLength": 64,
                                "description": "Callback data (max 64 bytes)"
                              },
                              "web_app": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Web App information"
                              },
                              "login_url": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Login URL information"
                              },
                              "switch_inline_query": {
                                "type": "string",
                                "description": "Switch to inline query"
                              },
                              "switch_inline_query_current_chat": {
                                "type": "string",
                                "description": "Switch to inline query in current chat"
                              },
                              "callback_game": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Callback game"
                              },
                              "pay": {
                                "type": "boolean",
                                "description": "Pay button"
                              }
                            },
                            "required": [
                              "text"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "description": "Array of button rows"
                      }
                    },
                    "required": [
                      "inline_keyboard"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "keyboard": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "text": {
                                "type": "string",
                                "description": "Button text"
                              },
                              "request_contact": {
                                "type": "boolean",
                                "description": "Request user contact"
                              },
                              "request_location": {
                                "type": "boolean",
                                "description": "Request user location"
                              },
                              "request_poll": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "quiz",
                                      "regular"
                                    ]
                                  }
                                },
                                "additionalProperties": false,
                                "description": "Request poll"
                              },
                              "web_app": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Web App information"
                              }
                            },
                            "required": [
                              "text"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "description": "Array of button rows"
                      },
                      "is_persistent": {
                        "type": "boolean",
                        "description": "Show keyboard to all users"
                      },
                      "resize_keyboard": {
                        "type": "boolean",
                        "description": "Resize keyboard to fit buttons"
                      },
                      "one_time_keyboard": {
                        "type": "boolean",
                        "description": "Hide keyboard after use"
                      },
                      "input_field_placeholder": {
                        "type": "string",
                        "description": "Placeholder for input field"
                      },
                      "selective": {
                        "type": "boolean",
                        "description": "Show keyboard to specific users only"
                      }
                    },
                    "required": [
                      "keyboard"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Inline keyboard or reply keyboard markup"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "chat_id",
              "photo"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_document"
                ],
                "description": "Send a document to a Telegram chat"
              },
              "chat_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ],
                "description": "Unique identifier for the target chat or username"
              },
              "document": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uri"
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "File to send (file_id, HTTP URL, or file path)"
              },
              "thumbnail": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uri"
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "Thumbnail of the file"
              },
              "caption": {
                "type": "string",
                "description": "Document caption"
              },
              "parse_mode": {
                "type": "string",
                "enum": [
                  "HTML",
                  "Markdown",
                  "MarkdownV2"
                ],
                "description": "Text formatting mode (HTML, Markdown, or MarkdownV2)"
              },
              "caption_entities": {
                "type": "array",
                "items": {},
                "description": "List of special entities in the caption"
              },
              "disable_content_type_detection": {
                "type": "boolean",
                "description": "Disable automatic file type detection"
              },
              "disable_notification": {
                "type": "boolean",
                "description": "Sends the message silently"
              },
              "protect_content": {
                "type": "boolean",
                "description": "Protects the content from forwarding and saving"
              },
              "reply_to_message_id": {
                "type": "number",
                "description": "If the message is a reply, ID of the original message"
              },
              "allow_sending_without_reply": {
                "type": "boolean",
                "description": "Allow sending message even if the replied message is not found"
              },
              "reply_markup": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "inline_keyboard": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "text": {
                                "type": "string",
                                "description": "Button text"
                              },
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "HTTP or tg:// URL to open"
                              },
                              "callback_data": {
                                "type": "string",
                                "maxLength": 64,
                                "description": "Callback data (max 64 bytes)"
                              },
                              "web_app": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Web App information"
                              },
                              "login_url": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Login URL information"
                              },
                              "switch_inline_query": {
                                "type": "string",
                                "description": "Switch to inline query"
                              },
                              "switch_inline_query_current_chat": {
                                "type": "string",
                                "description": "Switch to inline query in current chat"
                              },
                              "callback_game": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Callback game"
                              },
                              "pay": {
                                "type": "boolean",
                                "description": "Pay button"
                              }
                            },
                            "required": [
                              "text"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "description": "Array of button rows"
                      }
                    },
                    "required": [
                      "inline_keyboard"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "keyboard": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "text": {
                                "type": "string",
                                "description": "Button text"
                              },
                              "request_contact": {
                                "type": "boolean",
                                "description": "Request user contact"
                              },
                              "request_location": {
                                "type": "boolean",
                                "description": "Request user location"
                              },
                              "request_poll": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "quiz",
                                      "regular"
                                    ]
                                  }
                                },
                                "additionalProperties": false,
                                "description": "Request poll"
                              },
                              "web_app": {
                                "type": "object",
                                "additionalProperties": {},
                                "description": "Web App information"
                              }
                            },
                            "required": [
                              "text"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "description": "Array of button rows"
                      },
                      "is_persistent": {
                        "type": "boolean",
                        "description": "Show keyboard to all users"
                      },
                      "resize_keyboard": {
                        "type": "boolean",
                        "description": "Resize keyboard to fit buttons"
                      },
                      "one_time_keyboard": {
                        "type": "boolean",
                        "description": "Hide keyboard after use"
                      },
                      "input_field_placeholder": {
                        "type": "string",
                        "description": "Placeholder for input field"
                      },
                      "selective": {
                        "type": "boolean",
                        "description": "Show keyboard to specific users only"
                      }
                    },
                    "required": [
                      "keyboard"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Inline keyboard or reply keyboard markup"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "chat_id",
              "document"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "edit_message"
                ],
                "description": "Edit a previously sent message"
              },
              "chat_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ],
                "description": "Unique identifier for the target chat or username"
              },
              "message_id": {
                "type": "number",
                "description": "Identifier of the message to edit"
              },
              "inline_message_id": {
                "type": "string",
                "description": "Identifier of the inline message to edit"
              },
              "text": {
                "type": "string",
                "minLength": 1,
                "description": "New text of the message"
              },
              "parse_mode": {
                "type": "string",
                "enum": [
                  "HTML",
                  "Markdown",
                  "MarkdownV2"
                ],
                "description": "Text formatting mode (HTML, Markdown, or MarkdownV2)"
              },
              "entities": {
                "type": "array",
                "items": {},
                "description": "List of special entities in the message text"
              },
              "disable_web_page_preview": {
                "type": "boolean",
                "description": "Disable link previews for links in this message"
              },
              "reply_markup": {
                "type": "object",
                "properties": {
                  "inline_keyboard": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "text": {
                            "type": "string",
                            "description": "Button text"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "HTTP or tg:// URL to open"
                          },
                          "callback_data": {
                            "type": "string",
                            "maxLength": 64,
                            "description": "Callback data (max 64 bytes)"
                          },
                          "web_app": {
                            "type": "object",
                            "additionalProperties": {},
                            "description": "Web App information"
                          },
                          "login_url": {
                            "type": "object",
                            "additionalProperties": {},
                            "description": "Login URL information"
                          },
                          "switch_inline_query": {
                            "type": "string",
                            "description": "Switch to inline query"
                          },
                          "switch_inline_query_current_chat": {
                            "type": "string",
                            "description": "Switch to inline query in current chat"
                          },
                          "callback_game": {
                            "type": "object",
                            "additionalProperties": {},
                            "description": "Callback game"
                          },
                          "pay": {
                            "type": "boolean",
                            "description": "Pay button"
                          }
                        },
                        "required": [
                          "text"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "description": "Array of button rows"
                  }
                },
                "required": [
                  "inline_keyboard"
                ],
                "additionalProperties": false
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_message"
                ],
                "description": "Delete a message"
              },
              "chat_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ],
                "description": "Unique identifier for the target chat or username"
              },
              "message_id": {
                "type": "number",
                "description": "Identifier of the message to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "chat_id",
              "message_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_me"
                ],
                "description": "Get bot information"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_chat"
                ],
                "description": "Get information about a chat"
              },
              "chat_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ],
                "description": "Unique identifier for the target chat or username"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "chat_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_updates"
                ],
                "description": "Receive incoming updates using long polling"
              },
              "offset": {
                "type": "number",
                "description": "Identifier of the first update to be returned"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Limits the number of updates to be retrieved (1-100)"
              },
              "timeout": {
                "type": "number",
                "description": "Timeout in seconds for long polling"
              },
              "allowed_updates": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of update types to receive"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_chat_action"
                ],
                "description": "Tell the user that something is happening on the bot's side (typing, uploading photo, etc.)"
              },
              "chat_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ],
                "description": "Unique identifier for the target chat or username"
              },
              "action": {
                "type": "string",
                "enum": [
                  "typing",
                  "upload_photo",
                  "record_video",
                  "upload_video",
                  "record_voice",
                  "upload_voice",
                  "upload_document",
                  "find_location",
                  "record_video_note",
                  "upload_video_note",
                  "choose_sticker"
                ],
                "description": "Type of action to broadcast"
              },
              "message_thread_id": {
                "type": "number",
                "description": "Unique identifier for the target message thread (for forum topics)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "chat_id",
              "action"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "set_message_reaction"
                ],
                "description": "Add a reaction to a message"
              },
              "chat_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ],
                "description": "Unique identifier for the target chat or username"
              },
              "message_id": {
                "type": "number",
                "description": "Identifier of the message to react to"
              },
              "reaction": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "emoji"
                          ]
                        },
                        "emoji": {
                          "type": "string",
                          "description": "Emoji reaction (e.g., \"👍\", \"❤️\")"
                        }
                      },
                      "required": [
                        "type",
                        "emoji"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "custom_emoji"
                          ]
                        },
                        "custom_emoji_id": {
                          "type": "string",
                          "description": "Custom emoji identifier"
                        }
                      },
                      "required": [
                        "type",
                        "custom_emoji_id"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "description": "Array of reactions to set (empty array to remove reactions)"
              },
              "is_big": {
                "type": "boolean",
                "description": "Pass True to set the reaction with a bigger animation"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "chat_id",
              "message_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "set_webhook"
                ],
                "description": "Specify a URL to receive incoming updates via webhook"
              },
              "url": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      ""
                    ]
                  },
                  {
                    "type": "string",
                    "format": "uri"
                  }
                ],
                "description": "HTTPS URL to send updates to. Use an empty string to remove webhook integration"
              },
              "ip_address": {
                "type": "string",
                "description": "The fixed IP address which will be used to send webhook requests instead of the IP address resolved through DNS"
              },
              "max_connections": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "description": "Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery (1-100). Defaults to 40"
              },
              "allowed_updates": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "A list of update types you want your bot to receive (e.g., [\"message\", \"callback_query\"])"
              },
              "drop_pending_updates": {
                "type": "boolean",
                "description": "Pass True to drop all pending updates"
              },
              "secret_token": {
                "type": "string",
                "minLength": 1,
                "maxLength": 256,
                "pattern": "^[A-Za-z0-9_-]+$",
                "description": "A secret token to be sent in the X-Telegram-Bot-Api-Secret-Token header (1-256 characters, A-Z, a-z, 0-9, _, -)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_webhook"
                ],
                "description": "Remove webhook integration to switch back to getUpdates"
              },
              "drop_pending_updates": {
                "type": "boolean",
                "description": "Pass True to drop all pending updates"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_webhook_info"
                ],
                "description": "Get current webhook status and information"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ],
                "description": "Send a text message to a Telegram chat"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "message": {
                "type": "object",
                "properties": {
                  "message_id": {
                    "type": "number",
                    "description": "Unique message identifier"
                  },
                  "from": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "User identifier"
                      },
                      "is_bot": {
                        "type": "boolean",
                        "description": "True if user is a bot"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "User first name"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "User last name"
                      },
                      "username": {
                        "type": "string",
                        "description": "User username"
                      },
                      "language_code": {
                        "type": "string",
                        "description": "User language code"
                      }
                    },
                    "required": [
                      "id",
                      "is_bot",
                      "first_name"
                    ],
                    "additionalProperties": false,
                    "description": "Sender information"
                  },
                  "date": {
                    "type": "number",
                    "description": "Date the message was sent (Unix time)"
                  },
                  "chat": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Chat identifier"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "private",
                          "group",
                          "supergroup",
                          "channel"
                        ],
                        "description": "Chat type"
                      },
                      "title": {
                        "type": "string",
                        "description": "Chat title"
                      },
                      "username": {
                        "type": "string",
                        "description": "Chat username"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "First name (for private chats)"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "Last name (for private chats)"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "additionalProperties": false,
                    "description": "Chat information"
                  },
                  "text": {
                    "type": "string",
                    "description": "Message text"
                  },
                  "photo": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "file_id": {
                          "type": "string",
                          "description": "File identifier"
                        },
                        "file_unique_id": {
                          "type": "string",
                          "description": "Unique file identifier"
                        },
                        "width": {
                          "type": "number",
                          "description": "Photo width"
                        },
                        "height": {
                          "type": "number",
                          "description": "Photo height"
                        },
                        "file_size": {
                          "type": "number",
                          "description": "File size in bytes"
                        }
                      },
                      "required": [
                        "file_id",
                        "file_unique_id",
                        "width",
                        "height"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Message photo"
                  },
                  "document": {
                    "type": "object",
                    "properties": {
                      "file_id": {
                        "type": "string",
                        "description": "File identifier"
                      },
                      "file_unique_id": {
                        "type": "string",
                        "description": "Unique file identifier"
                      },
                      "file_name": {
                        "type": "string",
                        "description": "Original filename"
                      },
                      "mime_type": {
                        "type": "string",
                        "description": "MIME type"
                      },
                      "file_size": {
                        "type": "number",
                        "description": "File size in bytes"
                      }
                    },
                    "required": [
                      "file_id",
                      "file_unique_id"
                    ],
                    "additionalProperties": false,
                    "description": "Message document"
                  }
                },
                "required": [
                  "message_id",
                  "date",
                  "chat"
                ],
                "additionalProperties": false,
                "description": "Sent message object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_photo"
                ],
                "description": "Send a photo to a Telegram chat"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "message": {
                "type": "object",
                "properties": {
                  "message_id": {
                    "type": "number",
                    "description": "Unique message identifier"
                  },
                  "from": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "User identifier"
                      },
                      "is_bot": {
                        "type": "boolean",
                        "description": "True if user is a bot"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "User first name"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "User last name"
                      },
                      "username": {
                        "type": "string",
                        "description": "User username"
                      },
                      "language_code": {
                        "type": "string",
                        "description": "User language code"
                      }
                    },
                    "required": [
                      "id",
                      "is_bot",
                      "first_name"
                    ],
                    "additionalProperties": false,
                    "description": "Sender information"
                  },
                  "date": {
                    "type": "number",
                    "description": "Date the message was sent (Unix time)"
                  },
                  "chat": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Chat identifier"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "private",
                          "group",
                          "supergroup",
                          "channel"
                        ],
                        "description": "Chat type"
                      },
                      "title": {
                        "type": "string",
                        "description": "Chat title"
                      },
                      "username": {
                        "type": "string",
                        "description": "Chat username"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "First name (for private chats)"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "Last name (for private chats)"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "additionalProperties": false,
                    "description": "Chat information"
                  },
                  "text": {
                    "type": "string",
                    "description": "Message text"
                  },
                  "photo": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "file_id": {
                          "type": "string",
                          "description": "File identifier"
                        },
                        "file_unique_id": {
                          "type": "string",
                          "description": "Unique file identifier"
                        },
                        "width": {
                          "type": "number",
                          "description": "Photo width"
                        },
                        "height": {
                          "type": "number",
                          "description": "Photo height"
                        },
                        "file_size": {
                          "type": "number",
                          "description": "File size in bytes"
                        }
                      },
                      "required": [
                        "file_id",
                        "file_unique_id",
                        "width",
                        "height"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Message photo"
                  },
                  "document": {
                    "type": "object",
                    "properties": {
                      "file_id": {
                        "type": "string",
                        "description": "File identifier"
                      },
                      "file_unique_id": {
                        "type": "string",
                        "description": "Unique file identifier"
                      },
                      "file_name": {
                        "type": "string",
                        "description": "Original filename"
                      },
                      "mime_type": {
                        "type": "string",
                        "description": "MIME type"
                      },
                      "file_size": {
                        "type": "number",
                        "description": "File size in bytes"
                      }
                    },
                    "required": [
                      "file_id",
                      "file_unique_id"
                    ],
                    "additionalProperties": false,
                    "description": "Message document"
                  }
                },
                "required": [
                  "message_id",
                  "date",
                  "chat"
                ],
                "additionalProperties": false,
                "description": "Sent message object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_document"
                ],
                "description": "Send a document to a Telegram chat"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "message": {
                "type": "object",
                "properties": {
                  "message_id": {
                    "type": "number",
                    "description": "Unique message identifier"
                  },
                  "from": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "User identifier"
                      },
                      "is_bot": {
                        "type": "boolean",
                        "description": "True if user is a bot"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "User first name"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "User last name"
                      },
                      "username": {
                        "type": "string",
                        "description": "User username"
                      },
                      "language_code": {
                        "type": "string",
                        "description": "User language code"
                      }
                    },
                    "required": [
                      "id",
                      "is_bot",
                      "first_name"
                    ],
                    "additionalProperties": false,
                    "description": "Sender information"
                  },
                  "date": {
                    "type": "number",
                    "description": "Date the message was sent (Unix time)"
                  },
                  "chat": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Chat identifier"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "private",
                          "group",
                          "supergroup",
                          "channel"
                        ],
                        "description": "Chat type"
                      },
                      "title": {
                        "type": "string",
                        "description": "Chat title"
                      },
                      "username": {
                        "type": "string",
                        "description": "Chat username"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "First name (for private chats)"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "Last name (for private chats)"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "additionalProperties": false,
                    "description": "Chat information"
                  },
                  "text": {
                    "type": "string",
                    "description": "Message text"
                  },
                  "photo": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "file_id": {
                          "type": "string",
                          "description": "File identifier"
                        },
                        "file_unique_id": {
                          "type": "string",
                          "description": "Unique file identifier"
                        },
                        "width": {
                          "type": "number",
                          "description": "Photo width"
                        },
                        "height": {
                          "type": "number",
                          "description": "Photo height"
                        },
                        "file_size": {
                          "type": "number",
                          "description": "File size in bytes"
                        }
                      },
                      "required": [
                        "file_id",
                        "file_unique_id",
                        "width",
                        "height"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Message photo"
                  },
                  "document": {
                    "type": "object",
                    "properties": {
                      "file_id": {
                        "type": "string",
                        "description": "File identifier"
                      },
                      "file_unique_id": {
                        "type": "string",
                        "description": "Unique file identifier"
                      },
                      "file_name": {
                        "type": "string",
                        "description": "Original filename"
                      },
                      "mime_type": {
                        "type": "string",
                        "description": "MIME type"
                      },
                      "file_size": {
                        "type": "number",
                        "description": "File size in bytes"
                      }
                    },
                    "required": [
                      "file_id",
                      "file_unique_id"
                    ],
                    "additionalProperties": false,
                    "description": "Message document"
                  }
                },
                "required": [
                  "message_id",
                  "date",
                  "chat"
                ],
                "additionalProperties": false,
                "description": "Sent message object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "edit_message"
                ],
                "description": "Edit a previously sent message"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "message": {
                "type": "object",
                "properties": {
                  "message_id": {
                    "type": "number",
                    "description": "Unique message identifier"
                  },
                  "from": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "User identifier"
                      },
                      "is_bot": {
                        "type": "boolean",
                        "description": "True if user is a bot"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "User first name"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "User last name"
                      },
                      "username": {
                        "type": "string",
                        "description": "User username"
                      },
                      "language_code": {
                        "type": "string",
                        "description": "User language code"
                      }
                    },
                    "required": [
                      "id",
                      "is_bot",
                      "first_name"
                    ],
                    "additionalProperties": false,
                    "description": "Sender information"
                  },
                  "date": {
                    "type": "number",
                    "description": "Date the message was sent (Unix time)"
                  },
                  "chat": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Chat identifier"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "private",
                          "group",
                          "supergroup",
                          "channel"
                        ],
                        "description": "Chat type"
                      },
                      "title": {
                        "type": "string",
                        "description": "Chat title"
                      },
                      "username": {
                        "type": "string",
                        "description": "Chat username"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "First name (for private chats)"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "Last name (for private chats)"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "additionalProperties": false,
                    "description": "Chat information"
                  },
                  "text": {
                    "type": "string",
                    "description": "Message text"
                  },
                  "photo": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "file_id": {
                          "type": "string",
                          "description": "File identifier"
                        },
                        "file_unique_id": {
                          "type": "string",
                          "description": "Unique file identifier"
                        },
                        "width": {
                          "type": "number",
                          "description": "Photo width"
                        },
                        "height": {
                          "type": "number",
                          "description": "Photo height"
                        },
                        "file_size": {
                          "type": "number",
                          "description": "File size in bytes"
                        }
                      },
                      "required": [
                        "file_id",
                        "file_unique_id",
                        "width",
                        "height"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Message photo"
                  },
                  "document": {
                    "type": "object",
                    "properties": {
                      "file_id": {
                        "type": "string",
                        "description": "File identifier"
                      },
                      "file_unique_id": {
                        "type": "string",
                        "description": "Unique file identifier"
                      },
                      "file_name": {
                        "type": "string",
                        "description": "Original filename"
                      },
                      "mime_type": {
                        "type": "string",
                        "description": "MIME type"
                      },
                      "file_size": {
                        "type": "number",
                        "description": "File size in bytes"
                      }
                    },
                    "required": [
                      "file_id",
                      "file_unique_id"
                    ],
                    "additionalProperties": false,
                    "description": "Message document"
                  }
                },
                "required": [
                  "message_id",
                  "date",
                  "chat"
                ],
                "additionalProperties": false,
                "description": "Edited message object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_message"
                ],
                "description": "Delete a message"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_me"
                ],
                "description": "Get bot information"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "user": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "User identifier"
                  },
                  "is_bot": {
                    "type": "boolean",
                    "description": "True if user is a bot"
                  },
                  "first_name": {
                    "type": "string",
                    "description": "User first name"
                  },
                  "last_name": {
                    "type": "string",
                    "description": "User last name"
                  },
                  "username": {
                    "type": "string",
                    "description": "User username"
                  },
                  "language_code": {
                    "type": "string",
                    "description": "User language code"
                  }
                },
                "required": [
                  "id",
                  "is_bot",
                  "first_name"
                ],
                "additionalProperties": false,
                "description": "Bot user object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_chat"
                ],
                "description": "Get information about a chat"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "chat": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Chat identifier"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "private",
                      "group",
                      "supergroup",
                      "channel"
                    ],
                    "description": "Chat type"
                  },
                  "title": {
                    "type": "string",
                    "description": "Chat title"
                  },
                  "username": {
                    "type": "string",
                    "description": "Chat username"
                  },
                  "first_name": {
                    "type": "string",
                    "description": "First name (for private chats)"
                  },
                  "last_name": {
                    "type": "string",
                    "description": "Last name (for private chats)"
                  },
                  "description": {
                    "type": "string",
                    "description": "Chat description"
                  },
                  "invite_link": {
                    "type": "string",
                    "description": "Chat invite link"
                  }
                },
                "required": [
                  "id",
                  "type"
                ],
                "additionalProperties": false,
                "description": "Chat object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_updates"
                ],
                "description": "Receive incoming updates using long polling"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "updates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "update_id": {
                      "type": "number",
                      "description": "Update identifier"
                    },
                    "message": {
                      "type": "object",
                      "properties": {
                        "message_id": {
                          "type": "number",
                          "description": "Unique message identifier"
                        },
                        "from": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "description": "User identifier"
                            },
                            "is_bot": {
                              "type": "boolean",
                              "description": "True if user is a bot"
                            },
                            "first_name": {
                              "type": "string",
                              "description": "User first name"
                            },
                            "last_name": {
                              "type": "string",
                              "description": "User last name"
                            },
                            "username": {
                              "type": "string",
                              "description": "User username"
                            },
                            "language_code": {
                              "type": "string",
                              "description": "User language code"
                            }
                          },
                          "required": [
                            "id",
                            "is_bot",
                            "first_name"
                          ],
                          "additionalProperties": false,
                          "description": "Sender information"
                        },
                        "date": {
                          "type": "number",
                          "description": "Date the message was sent (Unix time)"
                        },
                        "chat": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "description": "Chat identifier"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "private",
                                "group",
                                "supergroup",
                                "channel"
                              ],
                              "description": "Chat type"
                            },
                            "title": {
                              "type": "string",
                              "description": "Chat title"
                            },
                            "username": {
                              "type": "string",
                              "description": "Chat username"
                            },
                            "first_name": {
                              "type": "string",
                              "description": "First name (for private chats)"
                            },
                            "last_name": {
                              "type": "string",
                              "description": "Last name (for private chats)"
                            }
                          },
                          "required": [
                            "id",
                            "type"
                          ],
                          "additionalProperties": false,
                          "description": "Chat information"
                        },
                        "text": {
                          "type": "string",
                          "description": "Message text"
                        },
                        "photo": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "file_id": {
                                "type": "string",
                                "description": "File identifier"
                              },
                              "file_unique_id": {
                                "type": "string",
                                "description": "Unique file identifier"
                              },
                              "width": {
                                "type": "number",
                                "description": "Photo width"
                              },
                              "height": {
                                "type": "number",
                                "description": "Photo height"
                              },
                              "file_size": {
                                "type": "number",
                                "description": "File size in bytes"
                              }
                            },
                            "required": [
                              "file_id",
                              "file_unique_id",
                              "width",
                              "height"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Message photo"
                        },
                        "document": {
                          "type": "object",
                          "properties": {
                            "file_id": {
                              "type": "string",
                              "description": "File identifier"
                            },
                            "file_unique_id": {
                              "type": "string",
                              "description": "Unique file identifier"
                            },
                            "file_name": {
                              "type": "string",
                              "description": "Original filename"
                            },
                            "mime_type": {
                              "type": "string",
                              "description": "MIME type"
                            },
                            "file_size": {
                              "type": "number",
                              "description": "File size in bytes"
                            }
                          },
                          "required": [
                            "file_id",
                            "file_unique_id"
                          ],
                          "additionalProperties": false,
                          "description": "Message document"
                        }
                      },
                      "required": [
                        "message_id",
                        "date",
                        "chat"
                      ],
                      "additionalProperties": false,
                      "description": "New incoming message"
                    },
                    "edited_message": {
                      "type": "object",
                      "properties": {
                        "message_id": {
                          "type": "number",
                          "description": "Unique message identifier"
                        },
                        "from": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "description": "User identifier"
                            },
                            "is_bot": {
                              "type": "boolean",
                              "description": "True if user is a bot"
                            },
                            "first_name": {
                              "type": "string",
                              "description": "User first name"
                            },
                            "last_name": {
                              "type": "string",
                              "description": "User last name"
                            },
                            "username": {
                              "type": "string",
                              "description": "User username"
                            },
                            "language_code": {
                              "type": "string",
                              "description": "User language code"
                            }
                          },
                          "required": [
                            "id",
                            "is_bot",
                            "first_name"
                          ],
                          "additionalProperties": false,
                          "description": "Sender information"
                        },
                        "date": {
                          "type": "number",
                          "description": "Date the message was sent (Unix time)"
                        },
                        "chat": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "description": "Chat identifier"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "private",
                                "group",
                                "supergroup",
                                "channel"
                              ],
                              "description": "Chat type"
                            },
                            "title": {
                              "type": "string",
                              "description": "Chat title"
                            },
                            "username": {
                              "type": "string",
                              "description": "Chat username"
                            },
                            "first_name": {
                              "type": "string",
                              "description": "First name (for private chats)"
                            },
                            "last_name": {
                              "type": "string",
                              "description": "Last name (for private chats)"
                            }
                          },
                          "required": [
                            "id",
                            "type"
                          ],
                          "additionalProperties": false,
                          "description": "Chat information"
                        },
                        "text": {
                          "type": "string",
                          "description": "Message text"
                        },
                        "photo": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "file_id": {
                                "type": "string",
                                "description": "File identifier"
                              },
                              "file_unique_id": {
                                "type": "string",
                                "description": "Unique file identifier"
                              },
                              "width": {
                                "type": "number",
                                "description": "Photo width"
                              },
                              "height": {
                                "type": "number",
                                "description": "Photo height"
                              },
                              "file_size": {
                                "type": "number",
                                "description": "File size in bytes"
                              }
                            },
                            "required": [
                              "file_id",
                              "file_unique_id",
                              "width",
                              "height"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Message photo"
                        },
                        "document": {
                          "type": "object",
                          "properties": {
                            "file_id": {
                              "type": "string",
                              "description": "File identifier"
                            },
                            "file_unique_id": {
                              "type": "string",
                              "description": "Unique file identifier"
                            },
                            "file_name": {
                              "type": "string",
                              "description": "Original filename"
                            },
                            "mime_type": {
                              "type": "string",
                              "description": "MIME type"
                            },
                            "file_size": {
                              "type": "number",
                              "description": "File size in bytes"
                            }
                          },
                          "required": [
                            "file_id",
                            "file_unique_id"
                          ],
                          "additionalProperties": false,
                          "description": "Message document"
                        }
                      },
                      "required": [
                        "message_id",
                        "date",
                        "chat"
                      ],
                      "additionalProperties": false,
                      "description": "Edited message"
                    },
                    "channel_post": {
                      "type": "object",
                      "properties": {
                        "message_id": {
                          "type": "number",
                          "description": "Unique message identifier"
                        },
                        "from": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "description": "User identifier"
                            },
                            "is_bot": {
                              "type": "boolean",
                              "description": "True if user is a bot"
                            },
                            "first_name": {
                              "type": "string",
                              "description": "User first name"
                            },
                            "last_name": {
                              "type": "string",
                              "description": "User last name"
                            },
                            "username": {
                              "type": "string",
                              "description": "User username"
                            },
                            "language_code": {
                              "type": "string",
                              "description": "User language code"
                            }
                          },
                          "required": [
                            "id",
                            "is_bot",
                            "first_name"
                          ],
                          "additionalProperties": false,
                          "description": "Sender information"
                        },
                        "date": {
                          "type": "number",
                          "description": "Date the message was sent (Unix time)"
                        },
                        "chat": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "description": "Chat identifier"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "private",
                                "group",
                                "supergroup",
                                "channel"
                              ],
                              "description": "Chat type"
                            },
                            "title": {
                              "type": "string",
                              "description": "Chat title"
                            },
                            "username": {
                              "type": "string",
                              "description": "Chat username"
                            },
                            "first_name": {
                              "type": "string",
                              "description": "First name (for private chats)"
                            },
                            "last_name": {
                              "type": "string",
                              "description": "Last name (for private chats)"
                            }
                          },
                          "required": [
                            "id",
                            "type"
                          ],
                          "additionalProperties": false,
                          "description": "Chat information"
                        },
                        "text": {
                          "type": "string",
                          "description": "Message text"
                        },
                        "photo": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "file_id": {
                                "type": "string",
                                "description": "File identifier"
                              },
                              "file_unique_id": {
                                "type": "string",
                                "description": "Unique file identifier"
                              },
                              "width": {
                                "type": "number",
                                "description": "Photo width"
                              },
                              "height": {
                                "type": "number",
                                "description": "Photo height"
                              },
                              "file_size": {
                                "type": "number",
                                "description": "File size in bytes"
                              }
                            },
                            "required": [
                              "file_id",
                              "file_unique_id",
                              "width",
                              "height"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Message photo"
                        },
                        "document": {
                          "type": "object",
                          "properties": {
                            "file_id": {
                              "type": "string",
                              "description": "File identifier"
                            },
                            "file_unique_id": {
                              "type": "string",
                              "description": "Unique file identifier"
                            },
                            "file_name": {
                              "type": "string",
                              "description": "Original filename"
                            },
                            "mime_type": {
                              "type": "string",
                              "description": "MIME type"
                            },
                            "file_size": {
                              "type": "number",
                              "description": "File size in bytes"
                            }
                          },
                          "required": [
                            "file_id",
                            "file_unique_id"
                          ],
                          "additionalProperties": false,
                          "description": "Message document"
                        }
                      },
                      "required": [
                        "message_id",
                        "date",
                        "chat"
                      ],
                      "additionalProperties": false,
                      "description": "New channel post"
                    },
                    "edited_channel_post": {
                      "type": "object",
                      "properties": {
                        "message_id": {
                          "type": "number",
                          "description": "Unique message identifier"
                        },
                        "from": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "description": "User identifier"
                            },
                            "is_bot": {
                              "type": "boolean",
                              "description": "True if user is a bot"
                            },
                            "first_name": {
                              "type": "string",
                              "description": "User first name"
                            },
                            "last_name": {
                              "type": "string",
                              "description": "User last name"
                            },
                            "username": {
                              "type": "string",
                              "description": "User username"
                            },
                            "language_code": {
                              "type": "string",
                              "description": "User language code"
                            }
                          },
                          "required": [
                            "id",
                            "is_bot",
                            "first_name"
                          ],
                          "additionalProperties": false,
                          "description": "Sender information"
                        },
                        "date": {
                          "type": "number",
                          "description": "Date the message was sent (Unix time)"
                        },
                        "chat": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "description": "Chat identifier"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "private",
                                "group",
                                "supergroup",
                                "channel"
                              ],
                              "description": "Chat type"
                            },
                            "title": {
                              "type": "string",
                              "description": "Chat title"
                            },
                            "username": {
                              "type": "string",
                              "description": "Chat username"
                            },
                            "first_name": {
                              "type": "string",
                              "description": "First name (for private chats)"
                            },
                            "last_name": {
                              "type": "string",
                              "description": "Last name (for private chats)"
                            }
                          },
                          "required": [
                            "id",
                            "type"
                          ],
                          "additionalProperties": false,
                          "description": "Chat information"
                        },
                        "text": {
                          "type": "string",
                          "description": "Message text"
                        },
                        "photo": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "file_id": {
                                "type": "string",
                                "description": "File identifier"
                              },
                              "file_unique_id": {
                                "type": "string",
                                "description": "Unique file identifier"
                              },
                              "width": {
                                "type": "number",
                                "description": "Photo width"
                              },
                              "height": {
                                "type": "number",
                                "description": "Photo height"
                              },
                              "file_size": {
                                "type": "number",
                                "description": "File size in bytes"
                              }
                            },
                            "required": [
                              "file_id",
                              "file_unique_id",
                              "width",
                              "height"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Message photo"
                        },
                        "document": {
                          "type": "object",
                          "properties": {
                            "file_id": {
                              "type": "string",
                              "description": "File identifier"
                            },
                            "file_unique_id": {
                              "type": "string",
                              "description": "Unique file identifier"
                            },
                            "file_name": {
                              "type": "string",
                              "description": "Original filename"
                            },
                            "mime_type": {
                              "type": "string",
                              "description": "MIME type"
                            },
                            "file_size": {
                              "type": "number",
                              "description": "File size in bytes"
                            }
                          },
                          "required": [
                            "file_id",
                            "file_unique_id"
                          ],
                          "additionalProperties": false,
                          "description": "Message document"
                        }
                      },
                      "required": [
                        "message_id",
                        "date",
                        "chat"
                      ],
                      "additionalProperties": false,
                      "description": "Edited channel post"
                    },
                    "callback_query": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Callback query identifier"
                        },
                        "from": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "description": "User identifier"
                            },
                            "is_bot": {
                              "type": "boolean",
                              "description": "True if user is a bot"
                            },
                            "first_name": {
                              "type": "string",
                              "description": "User first name"
                            },
                            "last_name": {
                              "type": "string",
                              "description": "User last name"
                            },
                            "username": {
                              "type": "string",
                              "description": "User username"
                            },
                            "language_code": {
                              "type": "string",
                              "description": "User language code"
                            }
                          },
                          "required": [
                            "id",
                            "is_bot",
                            "first_name"
                          ],
                          "additionalProperties": false,
                          "description": "User who sent the callback"
                        },
                        "message": {
                          "type": "object",
                          "properties": {
                            "message_id": {
                              "type": "number",
                              "description": "Unique message identifier"
                            },
                            "from": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "number",
                                  "description": "User identifier"
                                },
                                "is_bot": {
                                  "type": "boolean",
                                  "description": "True if user is a bot"
                                },
                                "first_name": {
                                  "type": "string",
                                  "description": "User first name"
                                },
                                "last_name": {
                                  "type": "string",
                                  "description": "User last name"
                                },
                                "username": {
                                  "type": "string",
                                  "description": "User username"
                                },
                                "language_code": {
                                  "type": "string",
                                  "description": "User language code"
                                }
                              },
                              "required": [
                                "id",
                                "is_bot",
                                "first_name"
                              ],
                              "additionalProperties": false,
                              "description": "Sender information"
                            },
                            "date": {
                              "type": "number",
                              "description": "Date the message was sent (Unix time)"
                            },
                            "chat": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "number",
                                  "description": "Chat identifier"
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "private",
                                    "group",
                                    "supergroup",
                                    "channel"
                                  ],
                                  "description": "Chat type"
                                },
                                "title": {
                                  "type": "string",
                                  "description": "Chat title"
                                },
                                "username": {
                                  "type": "string",
                                  "description": "Chat username"
                                },
                                "first_name": {
                                  "type": "string",
                                  "description": "First name (for private chats)"
                                },
                                "last_name": {
                                  "type": "string",
                                  "description": "Last name (for private chats)"
                                }
                              },
                              "required": [
                                "id",
                                "type"
                              ],
                              "additionalProperties": false,
                              "description": "Chat information"
                            },
                            "text": {
                              "type": "string",
                              "description": "Message text"
                            },
                            "photo": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "file_id": {
                                    "type": "string",
                                    "description": "File identifier"
                                  },
                                  "file_unique_id": {
                                    "type": "string",
                                    "description": "Unique file identifier"
                                  },
                                  "width": {
                                    "type": "number",
                                    "description": "Photo width"
                                  },
                                  "height": {
                                    "type": "number",
                                    "description": "Photo height"
                                  },
                                  "file_size": {
                                    "type": "number",
                                    "description": "File size in bytes"
                                  }
                                },
                                "required": [
                                  "file_id",
                                  "file_unique_id",
                                  "width",
                                  "height"
                                ],
                                "additionalProperties": false
                              },
                              "description": "Message photo"
                            },
                            "document": {
                              "type": "object",
                              "properties": {
                                "file_id": {
                                  "type": "string",
                                  "description": "File identifier"
                                },
                                "file_unique_id": {
                                  "type": "string",
                                  "description": "Unique file identifier"
                                },
                                "file_name": {
                                  "type": "string",
                                  "description": "Original filename"
                                },
                                "mime_type": {
                                  "type": "string",
                                  "description": "MIME type"
                                },
                                "file_size": {
                                  "type": "number",
                                  "description": "File size in bytes"
                                }
                              },
                              "required": [
                                "file_id",
                                "file_unique_id"
                              ],
                              "additionalProperties": false,
                              "description": "Message document"
                            }
                          },
                          "required": [
                            "message_id",
                            "date",
                            "chat"
                          ],
                          "additionalProperties": false,
                          "description": "Message with the callback button"
                        },
                        "inline_message_id": {
                          "type": "string",
                          "description": "Inline message identifier"
                        },
                        "chat_instance": {
                          "type": "string",
                          "description": "Global identifier for the chat"
                        },
                        "data": {
                          "type": "string",
                          "description": "Callback data"
                        },
                        "game_short_name": {
                          "type": "string",
                          "description": "Game short name"
                        }
                      },
                      "required": [
                        "id",
                        "from",
                        "chat_instance"
                      ],
                      "additionalProperties": false,
                      "description": "New incoming callback query"
                    }
                  },
                  "required": [
                    "update_id"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of Update objects"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_chat_action"
                ],
                "description": "Tell the user that something is happening on the bot's side"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "set_message_reaction"
                ],
                "description": "Add a reaction to a message"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "set_webhook"
                ],
                "description": "Specify a URL to receive incoming updates via webhook"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_webhook"
                ],
                "description": "Remove webhook integration to switch back to getUpdates"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_webhook_info"
                ],
                "description": "Get current webhook status and information"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Telegram API call was successful"
              },
              "webhook_info": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "Webhook URL, may be empty if webhook is not set up"
                  },
                  "has_custom_certificate": {
                    "type": "boolean",
                    "description": "True, if a custom certificate was provided for webhook certificate checks"
                  },
                  "pending_update_count": {
                    "type": "number",
                    "description": "Number of updates awaiting delivery"
                  },
                  "ip_address": {
                    "type": "string",
                    "description": "Currently used webhook IP address"
                  },
                  "last_error_date": {
                    "type": "number",
                    "description": "Unix time for the most recent error that happened when trying to deliver an update via webhook"
                  },
                  "last_error_message": {
                    "type": "string",
                    "description": "Error message in human-readable format for the most recent error that happened when trying to deliver an update via webhook"
                  },
                  "last_synchronization_error_date": {
                    "type": "number",
                    "description": "Unix time of the most recent error that happened when trying to synchronize available updates with Telegram datacenters"
                  },
                  "max_connections": {
                    "type": "number",
                    "description": "The maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery"
                  },
                  "allowed_updates": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "A list of update types the bot is subscribed to. Defaults to all update types except chat_member"
                  }
                },
                "required": [
                  "url",
                  "has_custom_certificate",
                  "pending_update_count"
                ],
                "additionalProperties": false,
                "description": "Webhook information object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Send Message example\nconst telegram_send_message = new TelegramBubble({\n  operation: \"send_message\", // Send a text message to a Telegram chat\n  chat_id: \"example string\", // Unique identifier for the target chat or username (e.g., @channelusername)\n  text: \"example string\", // Text of the message to be sent\n  parse_mode: \"HTML\" // options: \"HTML\", \"Markdown\", \"MarkdownV2\", // Text formatting mode (HTML, Markdown, or MarkdownV2)\n  entities: [], // List of special entities in the message text\n  disable_web_page_preview: true, // Disable link previews for links in this message\n  disable_notification: true, // Sends the message silently\n  protect_content: true, // Protects the content from forwarding and saving\n  reply_to_message_id: 42, // If the message is a reply, ID of the original message\n  allow_sending_without_reply: true, // Allow sending message even if the replied message is not found\n  reply_markup: { inline_keyboard: [[{ text: \"example string\" // Button text, url: \"example string\" // HTTP or tg:// URL to open, callback_data: \"example string\" // Callback data (max 64 bytes), web_app: {} // Web App information, login_url: {} // Login URL information, switch_inline_query: \"example string\" // Switch to inline query, switch_inline_query_current_chat: \"example string\" // Switch to inline query in current chat, callback_game: {} // Callback game, pay: true // Pay button }]] // Array of button rows }, // Inline keyboard or reply keyboard markup\n});\n\nconst result = await telegram_send_message.action();\n// outputSchema for result.data when operation === 'send_message':\n// {\n//   operation: \"send_message\" // Send a text message to a Telegram chat,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   message: { message_id: number // Unique message identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Sender information, date: number // Date the message was sent (Unix time), chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats) } // Chat information, text: string | undefined // Message text, photo: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, width: number // Photo width, height: number // Photo height, file_size: number | undefined // File size in bytes }[] | undefined // Message photo, document: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, file_name: string | undefined // Original filename, mime_type: string | undefined // MIME type, file_size: number | undefined // File size in bytes } | undefined // Message document } | undefined // Sent message object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Send Photo example\nconst telegram_send_photo = new TelegramBubble({\n  operation: \"send_photo\", // Send a photo to a Telegram chat\n  chat_id: \"example string\", // Unique identifier for the target chat or username\n  photo: \"example string\", // Photo to send (file_id, HTTP URL, or file path)\n  caption: \"example string\", // Photo caption\n  parse_mode: \"HTML\" // options: \"HTML\", \"Markdown\", \"MarkdownV2\", // Text formatting mode (HTML, Markdown, or MarkdownV2)\n  caption_entities: [], // List of special entities in the caption\n  has_spoiler: true, // Mark photo as spoiler\n  disable_notification: true, // Sends the message silently\n  protect_content: true, // Protects the content from forwarding and saving\n  reply_to_message_id: 42, // If the message is a reply, ID of the original message\n  allow_sending_without_reply: true, // Allow sending message even if the replied message is not found\n  reply_markup: { inline_keyboard: [[{ text: \"example string\" // Button text, url: \"example string\" // HTTP or tg:// URL to open, callback_data: \"example string\" // Callback data (max 64 bytes), web_app: {} // Web App information, login_url: {} // Login URL information, switch_inline_query: \"example string\" // Switch to inline query, switch_inline_query_current_chat: \"example string\" // Switch to inline query in current chat, callback_game: {} // Callback game, pay: true // Pay button }]] // Array of button rows }, // Inline keyboard or reply keyboard markup\n});\n\nconst result = await telegram_send_photo.action();\n// outputSchema for result.data when operation === 'send_photo':\n// {\n//   operation: \"send_photo\" // Send a photo to a Telegram chat,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   message: { message_id: number // Unique message identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Sender information, date: number // Date the message was sent (Unix time), chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats) } // Chat information, text: string | undefined // Message text, photo: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, width: number // Photo width, height: number // Photo height, file_size: number | undefined // File size in bytes }[] | undefined // Message photo, document: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, file_name: string | undefined // Original filename, mime_type: string | undefined // MIME type, file_size: number | undefined // File size in bytes } | undefined // Message document } | undefined // Sent message object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Send Document example\nconst telegram_send_document = new TelegramBubble({\n  operation: \"send_document\", // Send a document to a Telegram chat\n  chat_id: \"example string\", // Unique identifier for the target chat or username\n  document: \"example string\", // File to send (file_id, HTTP URL, or file path)\n  thumbnail: \"example string\", // Thumbnail of the file\n  caption: \"example string\", // Document caption\n  parse_mode: \"HTML\" // options: \"HTML\", \"Markdown\", \"MarkdownV2\", // Text formatting mode (HTML, Markdown, or MarkdownV2)\n  caption_entities: [], // List of special entities in the caption\n  disable_content_type_detection: true, // Disable automatic file type detection\n  disable_notification: true, // Sends the message silently\n  protect_content: true, // Protects the content from forwarding and saving\n  reply_to_message_id: 42, // If the message is a reply, ID of the original message\n  allow_sending_without_reply: true, // Allow sending message even if the replied message is not found\n  reply_markup: { inline_keyboard: [[{ text: \"example string\" // Button text, url: \"example string\" // HTTP or tg:// URL to open, callback_data: \"example string\" // Callback data (max 64 bytes), web_app: {} // Web App information, login_url: {} // Login URL information, switch_inline_query: \"example string\" // Switch to inline query, switch_inline_query_current_chat: \"example string\" // Switch to inline query in current chat, callback_game: {} // Callback game, pay: true // Pay button }]] // Array of button rows }, // Inline keyboard or reply keyboard markup\n});\n\nconst result = await telegram_send_document.action();\n// outputSchema for result.data when operation === 'send_document':\n// {\n//   operation: \"send_document\" // Send a document to a Telegram chat,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   message: { message_id: number // Unique message identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Sender information, date: number // Date the message was sent (Unix time), chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats) } // Chat information, text: string | undefined // Message text, photo: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, width: number // Photo width, height: number // Photo height, file_size: number | undefined // File size in bytes }[] | undefined // Message photo, document: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, file_name: string | undefined // Original filename, mime_type: string | undefined // MIME type, file_size: number | undefined // File size in bytes } | undefined // Message document } | undefined // Sent message object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Edit Message example\nconst telegram_edit_message = new TelegramBubble({\n  operation: \"edit_message\", // Edit a previously sent message\n  chat_id: \"example string\", // Unique identifier for the target chat or username\n  message_id: 42, // Identifier of the message to edit\n  inline_message_id: \"example string\", // Identifier of the inline message to edit\n  text: \"example string\", // New text of the message\n  parse_mode: \"HTML\" // options: \"HTML\", \"Markdown\", \"MarkdownV2\", // Text formatting mode (HTML, Markdown, or MarkdownV2)\n  entities: [], // List of special entities in the message text\n  disable_web_page_preview: true, // Disable link previews for links in this message\n  reply_markup: { inline_keyboard: [[{ text: \"example string\" // Button text, url: \"example string\" // HTTP or tg:// URL to open, callback_data: \"example string\" // Callback data (max 64 bytes), web_app: {} // Web App information, login_url: {} // Login URL information, switch_inline_query: \"example string\" // Switch to inline query, switch_inline_query_current_chat: \"example string\" // Switch to inline query in current chat, callback_game: {} // Callback game, pay: true // Pay button }]] // Array of button rows },\n});\n\nconst result = await telegram_edit_message.action();\n// outputSchema for result.data when operation === 'edit_message':\n// {\n//   operation: \"edit_message\" // Edit a previously sent message,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   message: { message_id: number // Unique message identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Sender information, date: number // Date the message was sent (Unix time), chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats) } // Chat information, text: string | undefined // Message text, photo: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, width: number // Photo width, height: number // Photo height, file_size: number | undefined // File size in bytes }[] | undefined // Message photo, document: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, file_name: string | undefined // Original filename, mime_type: string | undefined // MIME type, file_size: number | undefined // File size in bytes } | undefined // Message document } | undefined // Edited message object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Delete Message example\nconst telegram_delete_message = new TelegramBubble({\n  operation: \"delete_message\", // Delete a message\n  chat_id: \"example string\", // Unique identifier for the target chat or username\n  message_id: 42, // Identifier of the message to delete\n});\n\nconst result = await telegram_delete_message.action();\n// outputSchema for result.data when operation === 'delete_message':\n// {\n//   operation: \"delete_message\" // Delete a message,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Me example\nconst telegram_get_me = new TelegramBubble({\n  operation: \"get_me\", // Get bot information\n});\n\nconst result = await telegram_get_me.action();\n// outputSchema for result.data when operation === 'get_me':\n// {\n//   operation: \"get_me\" // Get bot information,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   user: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Bot user object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Chat example\nconst telegram_get_chat = new TelegramBubble({\n  operation: \"get_chat\", // Get information about a chat\n  chat_id: \"example string\", // Unique identifier for the target chat or username\n});\n\nconst result = await telegram_get_chat.action();\n// outputSchema for result.data when operation === 'get_chat':\n// {\n//   operation: \"get_chat\" // Get information about a chat,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats), description: string | undefined // Chat description, invite_link: string | undefined // Chat invite link } | undefined // Chat object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Updates example\nconst telegram_get_updates = new TelegramBubble({\n  operation: \"get_updates\", // Receive incoming updates using long polling\n  offset: 42, // Identifier of the first update to be returned\n  limit: 100 // default, // Limits the number of updates to be retrieved (1-100)\n  timeout: 42, // Timeout in seconds for long polling\n  allowed_updates: [\"example string\"], // List of update types to receive\n});\n\nconst result = await telegram_get_updates.action();\n// outputSchema for result.data when operation === 'get_updates':\n// {\n//   operation: \"get_updates\" // Receive incoming updates using long polling,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   updates: { update_id: number // Update identifier, message: { message_id: number // Unique message identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Sender information, date: number // Date the message was sent (Unix time), chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats) } // Chat information, text: string | undefined // Message text, photo: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, width: number // Photo width, height: number // Photo height, file_size: number | undefined // File size in bytes }[] | undefined // Message photo, document: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, file_name: string | undefined // Original filename, mime_type: string | undefined // MIME type, file_size: number | undefined // File size in bytes } | undefined // Message document } | undefined // New incoming message, edited_message: { message_id: number // Unique message identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Sender information, date: number // Date the message was sent (Unix time), chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats) } // Chat information, text: string | undefined // Message text, photo: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, width: number // Photo width, height: number // Photo height, file_size: number | undefined // File size in bytes }[] | undefined // Message photo, document: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, file_name: string | undefined // Original filename, mime_type: string | undefined // MIME type, file_size: number | undefined // File size in bytes } | undefined // Message document } | undefined // Edited message, channel_post: { message_id: number // Unique message identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Sender information, date: number // Date the message was sent (Unix time), chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats) } // Chat information, text: string | undefined // Message text, photo: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, width: number // Photo width, height: number // Photo height, file_size: number | undefined // File size in bytes }[] | undefined // Message photo, document: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, file_name: string | undefined // Original filename, mime_type: string | undefined // MIME type, file_size: number | undefined // File size in bytes } | undefined // Message document } | undefined // New channel post, edited_channel_post: { message_id: number // Unique message identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Sender information, date: number // Date the message was sent (Unix time), chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats) } // Chat information, text: string | undefined // Message text, photo: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, width: number // Photo width, height: number // Photo height, file_size: number | undefined // File size in bytes }[] | undefined // Message photo, document: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, file_name: string | undefined // Original filename, mime_type: string | undefined // MIME type, file_size: number | undefined // File size in bytes } | undefined // Message document } | undefined // Edited channel post, callback_query: { id: string // Callback query identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } // User who sent the callback, message: { message_id: number // Unique message identifier, from: { id: number // User identifier, is_bot: boolean // True if user is a bot, first_name: string // User first name, last_name: string | undefined // User last name, username: string | undefined // User username, language_code: string | undefined // User language code } | undefined // Sender information, date: number // Date the message was sent (Unix time), chat: { id: number // Chat identifier, type: \"private\" | \"group\" | \"supergroup\" | \"channel\" // Chat type, title: string | undefined // Chat title, username: string | undefined // Chat username, first_name: string | undefined // First name (for private chats), last_name: string | undefined // Last name (for private chats) } // Chat information, text: string | undefined // Message text, photo: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, width: number // Photo width, height: number // Photo height, file_size: number | undefined // File size in bytes }[] | undefined // Message photo, document: { file_id: string // File identifier, file_unique_id: string // Unique file identifier, file_name: string | undefined // Original filename, mime_type: string | undefined // MIME type, file_size: number | undefined // File size in bytes } | undefined // Message document } | undefined // Message with the callback button, inline_message_id: string | undefined // Inline message identifier, chat_instance: string // Global identifier for the chat, data: string | undefined // Callback data, game_short_name: string | undefined // Game short name } | undefined // New incoming callback query }[] | undefined // Array of Update objects,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Send Chat Action example\nconst telegram_send_chat_action = new TelegramBubble({\n  operation: \"send_chat_action\", // Tell the user that something is happening on the bot's side (typing, uploading photo, etc.)\n  chat_id: \"example string\", // Unique identifier for the target chat or username\n  action: \"typing\" // options: \"typing\", \"upload_photo\", \"record_video\", \"upload_video\", \"record_voice\", \"upload_voice\", \"upload_document\", \"find_location\", \"record_video_note\", \"upload_video_note\", \"choose_sticker\", // Type of action to broadcast\n  message_thread_id: 42, // Unique identifier for the target message thread (for forum topics)\n});\n\nconst result = await telegram_send_chat_action.action();\n// outputSchema for result.data when operation === 'send_chat_action':\n// {\n//   operation: \"send_chat_action\" // Tell the user that something is happening on the bot's side,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Set Message Reaction example\nconst telegram_set_message_reaction = new TelegramBubble({\n  operation: \"set_message_reaction\", // Add a reaction to a message\n  chat_id: \"example string\", // Unique identifier for the target chat or username\n  message_id: 42, // Identifier of the message to react to\n  reaction: [{ type: \"emoji\", emoji: \"example string\" // Emoji reaction (e.g., \"👍\", \"❤️\") }], // Array of reactions to set (empty array to remove reactions)\n  is_big: true, // Pass True to set the reaction with a bigger animation\n});\n\nconst result = await telegram_set_message_reaction.action();\n// outputSchema for result.data when operation === 'set_message_reaction':\n// {\n//   operation: \"set_message_reaction\" // Add a reaction to a message,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Set Webhook example\nconst telegram_set_webhook = new TelegramBubble({\n  operation: \"set_webhook\", // Specify a URL to receive incoming updates via webhook\n  url: \"example string\", // HTTPS URL to send updates to. Use an empty string to remove webhook integration\n  ip_address: \"example string\", // The fixed IP address which will be used to send webhook requests instead of the IP address resolved through DNS\n  max_connections: 42, // Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery (1-100). Defaults to 40\n  allowed_updates: [\"example string\"], // A list of update types you want your bot to receive (e.g., [\"message\", \"callback_query\"])\n  drop_pending_updates: true, // Pass True to drop all pending updates\n  secret_token: \"example string\", // A secret token to be sent in the X-Telegram-Bot-Api-Secret-Token header (1-256 characters, A-Z, a-z, 0-9, _, -)\n});\n\nconst result = await telegram_set_webhook.action();\n// outputSchema for result.data when operation === 'set_webhook':\n// {\n//   operation: \"set_webhook\" // Specify a URL to receive incoming updates via webhook,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Delete Webhook example\nconst telegram_delete_webhook = new TelegramBubble({\n  operation: \"delete_webhook\", // Remove webhook integration to switch back to getUpdates\n  drop_pending_updates: true, // Pass True to drop all pending updates\n});\n\nconst result = await telegram_delete_webhook.action();\n// outputSchema for result.data when operation === 'delete_webhook':\n// {\n//   operation: \"delete_webhook\" // Remove webhook integration to switch back to getUpdates,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Webhook Info example\nconst telegram_get_webhook_info = new TelegramBubble({\n  operation: \"get_webhook_info\", // Get current webhook status and information\n});\n\nconst result = await telegram_get_webhook_info.action();\n// outputSchema for result.data when operation === 'get_webhook_info':\n// {\n//   operation: \"get_webhook_info\" // Get current webhook status and information,\n//   ok: boolean // Whether the Telegram API call was successful,\n//   webhook_info: { url: string // Webhook URL, may be empty if webhook is not set up, has_custom_certificate: boolean // True, if a custom certificate was provided for webhook certificate checks, pending_update_count: number // Number of updates awaiting delivery, ip_address: string | undefined // Currently used webhook IP address, last_error_date: number | undefined // Unix time for the most recent error that happened when trying to deliver an update via webhook, last_error_message: string | undefined // Error message in human-readable format for the most recent error that happened when trying to deliver an update via webhook, last_synchronization_error_date: number | undefined // Unix time of the most recent error that happened when trying to synchronize available updates with Telegram datacenters, max_connections: number | undefined // The maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, allowed_updates: string[] | undefined // A list of update types the bot is subscribed to. Defaults to all update types except chat_member } | undefined // Webhook information object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`telegram failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "TELEGRAM_BOT_TOKEN"
      ]
    },
    {
      "name": "resend",
      "alias": "resend",
      "type": "service",
      "shortDescription": "Email sending service via Resend API",
      "useCase": "- Send transactional emails with HTML and text content",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "from": {
                "type": "string",
                "default": "Bubble Lab Team <welcome@hello.bubblelab.ai>",
                "description": "Sender email address, should not be changed from <welcome@hello.bubblelab.ai> if resend account has not been setup with domain verification"
              },
              "to": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "email"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "email"
                    }
                  }
                ],
                "description": "Recipient email address(es). For multiple addresses, send as an array of strings. Max 50."
              },
              "cc": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "email"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "email"
                    }
                  }
                ],
                "description": "CC email address(es). For multiple addresses, send as an array of strings."
              },
              "bcc": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "email"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "email"
                    }
                  }
                ],
                "description": "BCC email address(es). For multiple addresses, send as an array of strings."
              },
              "subject": {
                "type": "string",
                "minLength": 1,
                "description": "Email subject line"
              },
              "text": {
                "type": "string",
                "description": "Email content (supports markdown — automatically converted to HTML for rendering)"
              },
              "html": {
                "type": "string",
                "description": "HTML email content. If not provided and text is set, HTML is auto-generated from text."
              },
              "reply_to": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "email"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "email"
                    }
                  }
                ],
                "description": "Reply-to email address(es). For multiple addresses, send as an array of strings."
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Tag name (ASCII letters, numbers, underscores, dashes only, max 256 chars)"
                    },
                    "value": {
                      "type": "string",
                      "description": "Tag value (ASCII letters, numbers, underscores, dashes only, max 256 chars)"
                    }
                  },
                  "required": [
                    "name",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of email tags for tracking and analytics"
              },
              "headers": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Custom email headers (e.g., X-Custom-Header)"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "send_email"
                ],
                "description": "Send an email via Resend"
              },
              "scheduled_at": {
                "type": "string",
                "description": "Schedule email to be sent later (ISO 8601 format or natural language like \"in 1 hour\")"
              },
              "attachments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "filename": {
                      "type": "string",
                      "description": "Name of the attached file"
                    },
                    "content": {
                      "type": "string",
                      "description": "Base64 encoded file content"
                    },
                    "contentType": {
                      "type": "string",
                      "description": "MIME type of the file"
                    },
                    "path": {
                      "type": "string",
                      "description": "URL where the attachment file is hosted"
                    }
                  },
                  "required": [
                    "filename"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of email attachments (max 40MB total per email)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "to",
              "subject",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_batch_emails"
                ],
                "description": "Send up to 100 batch emails in a single API call"
              },
              "emails": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "from": {
                      "type": "string",
                      "default": "Bubble Lab Team <welcome@hello.bubblelab.ai>",
                      "description": "Sender email address, should not be changed from <welcome@hello.bubblelab.ai> if resend account has not been setup with domain verification"
                    },
                    "to": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "email"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "email"
                          }
                        }
                      ],
                      "description": "Recipient email address(es). For multiple addresses, send as an array of strings. Max 50."
                    },
                    "cc": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "email"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "email"
                          }
                        }
                      ],
                      "description": "CC email address(es). For multiple addresses, send as an array of strings."
                    },
                    "bcc": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "email"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "email"
                          }
                        }
                      ],
                      "description": "BCC email address(es). For multiple addresses, send as an array of strings."
                    },
                    "subject": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Email subject line"
                    },
                    "text": {
                      "type": "string",
                      "description": "Email content (supports markdown — automatically converted to HTML for rendering)"
                    },
                    "html": {
                      "type": "string",
                      "description": "HTML email content. If not provided and text is set, HTML is auto-generated from text."
                    },
                    "reply_to": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "email"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "email"
                          }
                        }
                      ],
                      "description": "Reply-to email address(es). For multiple addresses, send as an array of strings."
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Tag name (ASCII letters, numbers, underscores, dashes only, max 256 chars)"
                          },
                          "value": {
                            "type": "string",
                            "description": "Tag value (ASCII letters, numbers, underscores, dashes only, max 256 chars)"
                          }
                        },
                        "required": [
                          "name",
                          "value"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of email tags for tracking and analytics"
                    },
                    "headers": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Custom email headers (e.g., X-Custom-Header)"
                    }
                  },
                  "required": [
                    "to",
                    "subject"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 100,
                "description": "Array of email objects to send in a single batch (max 100)."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "emails"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_email_status"
                ],
                "description": "Get the status of a sent email"
              },
              "email_id": {
                "type": "string",
                "minLength": 1,
                "description": "Resend email ID to check status for"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "email_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_email"
                ],
                "description": "Send an email via Resend"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the email was sent successfully"
              },
              "email_id": {
                "type": "string",
                "description": "Resend email ID if successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if email sending failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_batch_emails"
                ],
                "description": "Send batch emails via Resend"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the batch was sent successfully"
              },
              "email_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of Resend email IDs for each sent email"
              },
              "error": {
                "type": "string",
                "description": "Error message if batch sending failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_email_status"
                ],
                "description": "Get the status of a sent email"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the status request was successful"
              },
              "status": {
                "type": "string",
                "description": "Current status of the email"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the email was created"
              },
              "last_event": {
                "type": "string",
                "description": "Last event that occurred with the email"
              },
              "error": {
                "type": "string",
                "description": "Error message if status request failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Send Email example\nconst resend_send_email = new ResendBubble({\n  from: \"Bubble Lab Team <welcome@hello.bubblelab.ai>\" // default, // Sender email address, should not be changed from <welcome@hello.bubblelab.ai> if resend account has not been setup with domain verification\n  to: [\"example string\"], // Recipient email address(es). For multiple addresses, send as an array of strings. Max 50.\n  cc: [\"example string\"], // CC email address(es). For multiple addresses, send as an array of strings.\n  bcc: [\"example string\"], // BCC email address(es). For multiple addresses, send as an array of strings.\n  subject: \"example string\", // Email subject line\n  text: \"example string\", // Email content (supports markdown — automatically converted to HTML for rendering)\n  html: \"example string\", // HTML email content. If not provided and text is set, HTML is auto-generated from text.\n  reply_to: [\"example string\"], // Reply-to email address(es). For multiple addresses, send as an array of strings.\n  tags: [{ name: \"example string\" // Tag name (ASCII letters, numbers, underscores, dashes only, max 256 chars), value: \"example string\" // Tag value (ASCII letters, numbers, underscores, dashes only, max 256 chars) }], // Array of email tags for tracking and analytics\n  headers: { \"example_key\": \"example string\" }, // Custom email headers (e.g., X-Custom-Header)\n  operation: \"send_email\", // Send an email via Resend\n  scheduled_at: \"example string\", // Schedule email to be sent later (ISO 8601 format or natural language like \"in 1 hour\")\n  attachments: [{ filename: \"example string\" // Name of the attached file, content: \"example string\" // Base64 encoded file content, contentType: \"example string\" // MIME type of the file, path: \"example string\" // URL where the attachment file is hosted }], // Array of email attachments (max 40MB total per email)\n});\n\nconst result = await resend_send_email.action();\n// outputSchema for result.data when operation === 'send_email':\n// {\n//   operation: \"send_email\" // Send an email via Resend,\n//   success: boolean // Whether the email was sent successfully,\n//   email_id: string | undefined // Resend email ID if successful,\n//   error: string // Error message if email sending failed\n// }\n\n\n// Send Batch Emails example\nconst resend_send_batch_emails = new ResendBubble({\n  operation: \"send_batch_emails\", // Send up to 100 batch emails in a single API call\n  emails: [{ from: \"Bubble Lab Team <welcome@hello.bubblelab.ai>\" // default // Sender email address, should not be changed from <welcome@hello.bubblelab.ai> if resend account has not been setup with domain verification, to: [\"example string\"] // Recipient email address(es). For multiple addresses, send as an array of strings. Max 50., cc: [\"example string\"] // CC email address(es). For multiple addresses, send as an array of strings., bcc: [\"example string\"] // BCC email address(es). For multiple addresses, send as an array of strings., subject: \"example string\" // Email subject line, text: \"example string\" // Email content (supports markdown — automatically converted to HTML for rendering), html: \"example string\" // HTML email content. If not provided and text is set, HTML is auto-generated from text., reply_to: [\"example string\"] // Reply-to email address(es). For multiple addresses, send as an array of strings., tags: [{ name: \"example string\" // Tag name (ASCII letters, numbers, underscores, dashes only, max 256 chars), value: \"example string\" // Tag value (ASCII letters, numbers, underscores, dashes only, max 256 chars) }] // Array of email tags for tracking and analytics, headers: { \"example_key\": \"example string\" } // Custom email headers (e.g., X-Custom-Header) }], // Array of email objects to send in a single batch (max 100).\n});\n\nconst result = await resend_send_batch_emails.action();\n// outputSchema for result.data when operation === 'send_batch_emails':\n// {\n//   operation: \"send_batch_emails\" // Send batch emails via Resend,\n//   success: boolean // Whether the batch was sent successfully,\n//   email_ids: string[] | undefined // Array of Resend email IDs for each sent email,\n//   error: string // Error message if batch sending failed\n// }\n\n\n// Get Email Status example\nconst resend_get_email_status = new ResendBubble({\n  operation: \"get_email_status\", // Get the status of a sent email\n  email_id: \"example string\", // Resend email ID to check status for\n});\n\nconst result = await resend_get_email_status.action();\n// outputSchema for result.data when operation === 'get_email_status':\n// {\n//   operation: \"get_email_status\" // Get the status of a sent email,\n//   success: boolean // Whether the status request was successful,\n//   status: string | undefined // Current status of the email,\n//   created_at: string | undefined // Timestamp when the email was created,\n//   last_event: string | undefined // Last event that occurred with the email,\n//   error: string // Error message if status request failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`resend failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "RESEND_CRED"
      ]
    },
    {
      "name": "http",
      "alias": "fetch",
      "type": "service",
      "shortDescription": "Makes HTTP requests to external APIs and services",
      "useCase": "- Calling external REST APIs",
      "outputSchema": "{\n  status: number // HTTP status code,\n  statusText: string // HTTP status text,\n  headers: Record<string, string> // Response headers,\n  body: string // Response body. For text responses (HTML, JSON, etc.) this is the raw text. For binary responses (PDFs, images, etc.) this is base64-encoded — check isBase64 to know which.,\n  isBase64: boolean // True when body is base64-encoded binary data. When true, pass body directly to tools that accept base64 content (e.g., google_drive upload_file, resend attachment content).,\n  contentType: string // Response Content-Type (e.g., application/pdf, text/html). Pass to downstream tools as mimeType/contentType.,\n  json: unknown | undefined // Parsed JSON response (if applicable),\n  success: boolean // Whether the request was successful (HTTP 2xx status codes),\n  error: string // Error message if request failed,\n  responseTime: number // Response time in milliseconds,\n  size: number // Raw response size in bytes (before base64 encoding, if applicable)\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The URL to make the HTTP request to"
          },
          "method": {
            "type": "string",
            "enum": [
              "GET",
              "POST",
              "PUT",
              "PATCH",
              "DELETE",
              "HEAD",
              "OPTIONS"
            ],
            "default": "GET",
            "description": "HTTP method to use (default: GET)"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "HTTP headers to include in the request"
          },
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "additionalProperties": {}
              }
            ],
            "description": "Request body (string or JSON object)"
          },
          "timeout": {
            "type": "number",
            "minimum": 1000,
            "maximum": 120000,
            "default": 30000,
            "description": "Request timeout in milliseconds (default: 30000, max: 120000)"
          },
          "followRedirects": {
            "type": "boolean",
            "default": true,
            "description": "Whether to follow HTTP redirects (default: true)"
          },
          "authType": {
            "type": "string",
            "enum": [
              "none",
              "bearer",
              "basic",
              "api-key",
              "api-key-header",
              "custom"
            ],
            "default": "none",
            "description": "Authentication type: none (default), bearer (Authorization: Bearer), basic (Authorization: Basic), api-key (X-API-Key), api-key-header (Api-Key), custom (user-specified header)"
          },
          "authHeader": {
            "type": "string",
            "description": "Custom header name when authType is \"custom\" (e.g., \"X-Custom-Auth\")"
          },
          "responseType": {
            "type": "string",
            "enum": [
              "auto",
              "text",
              "binary"
            ],
            "default": "auto",
            "description": "How to handle the response body. auto: detects from Content-Type (e.g., application/pdf → base64). text: always returns UTF-8 string. binary: always returns base64-encoded string. Use binary when downloading files like PDFs or images."
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional credentials for authentication (injected at runtime)"
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "number",
            "description": "HTTP status code"
          },
          "statusText": {
            "type": "string",
            "description": "HTTP status text"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Response headers"
          },
          "body": {
            "type": "string",
            "description": "Response body. For text responses (HTML, JSON, etc.) this is the raw text. For binary responses (PDFs, images, etc.) this is base64-encoded — check isBase64 to know which."
          },
          "isBase64": {
            "type": "boolean",
            "description": "True when body is base64-encoded binary data. When true, pass body directly to tools that accept base64 content (e.g., google_drive upload_file, resend attachment content)."
          },
          "contentType": {
            "type": "string",
            "description": "Response Content-Type (e.g., application/pdf, text/html). Pass to downstream tools as mimeType/contentType."
          },
          "json": {
            "description": "Parsed JSON response (if applicable)"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the request was successful (HTTP 2xx status codes)"
          },
          "error": {
            "type": "string",
            "description": "Error message if request failed"
          },
          "responseTime": {
            "type": "number",
            "description": "Response time in milliseconds"
          },
          "size": {
            "type": "number",
            "description": "Raw response size in bytes (before base64 encoding, if applicable)"
          }
        },
        "required": [
          "status",
          "statusText",
          "headers",
          "body",
          "isBase64",
          "contentType",
          "success",
          "error",
          "responseTime",
          "size"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of http bubble\nconst http = new HttpBubble({\n  url: \"example string\", // The URL to make the HTTP request to,\n  method: \"GET\" // options: \"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"HEAD\", \"OPTIONS\", // HTTP method to use (default: GET),\n  headers: { \"example_key\": \"example string\" }, // HTTP headers to include in the request,\n  body: \"example string\", // Request body (string or JSON object),\n  timeout: 30000 // default, // Request timeout in milliseconds (default: 30000, max: 120000),\n  followRedirects: true // default, // Whether to follow HTTP redirects (default: true),\n  authType: \"none\" // options: \"none\", \"bearer\", \"basic\", \"api-key\", \"api-key-header\", \"custom\", // Authentication type: none (default), bearer (Authorization: Bearer), basic (Authorization: Basic), api-key (X-API-Key), api-key-header (Api-Key), custom (user-specified header),\n  authHeader: \"example string\", // Custom header name when authType is \"custom\" (e.g., \"X-Custom-Auth\"),\n  responseType: \"auto\" // options: \"auto\", \"text\", \"binary\", // How to handle the response body. auto: detects from Content-Type (e.g., application/pdf → base64). text: always returns UTF-8 string. binary: always returns base64-encoded string. Use binary when downloading files like PDFs or images.,\n});\n\nconst result = await http.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   status: number // HTTP status code,\n//   statusText: string // HTTP status text,\n//   headers: Record<string, string> // Response headers,\n//   body: string // Response body. For text responses (HTML, JSON, etc.) this is the raw text. For binary responses (PDFs, images, etc.) this is base64-encoded — check isBase64 to know which.,\n//   isBase64: boolean // True when body is base64-encoded binary data. When true, pass body directly to tools that accept base64 content (e.g., google_drive upload_file, resend attachment content).,\n//   contentType: string // Response Content-Type (e.g., application/pdf, text/html). Pass to downstream tools as mimeType/contentType.,\n//   json: unknown | undefined // Parsed JSON response (if applicable),\n//   success: boolean // Whether the request was successful (HTTP 2xx status codes),\n//   error: string // Error message if request failed,\n//   responseTime: number // Response time in milliseconds,\n//   size: number // Raw response size in bytes (before base64 encoding, if applicable)\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "*"
      ]
    },
    {
      "name": "storage",
      "alias": "r2",
      "type": "service",
      "shortDescription": "Cloudflare R2 storage operations for file management",
      "useCase": "- Generate presigned upload URLs for client-side file uploads",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getUploadUrl"
                ],
                "description": "Generate presigned upload URL"
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the R2 bucket"
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "description": "Original filename for the upload"
              },
              "accountId": {
                "type": "string",
                "description": "Cloudflare Account ID - can be provided via credentials"
              },
              "region": {
                "type": "string",
                "default": "auto",
                "description": "AWS region for R2 storage (defaults to auto)"
              },
              "expirationMinutes": {
                "type": "number",
                "default": 60,
                "description": "URL expiration time in minutes"
              },
              "contentType": {
                "type": "string",
                "description": "Content type for uploads"
              },
              "userId": {
                "type": "string",
                "description": "User ID for secure file isolation"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "bucketName",
              "fileName"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getFile"
                ],
                "description": "Generate presigned download URL"
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the R2 bucket"
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the file to retrieve"
              },
              "accountId": {
                "type": "string",
                "description": "Cloudflare Account ID - can be provided via credentials"
              },
              "region": {
                "type": "string",
                "default": "auto",
                "description": "AWS region for R2 storage (defaults to auto)"
              },
              "expirationMinutes": {
                "type": "number",
                "default": 60,
                "description": "URL expiration time in minutes"
              },
              "userId": {
                "type": "string",
                "description": "User ID for secure file isolation"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "bucketName",
              "fileName"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "deleteFile"
                ],
                "description": "Delete file from bucket"
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the R2 bucket"
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the file to delete"
              },
              "accountId": {
                "type": "string",
                "description": "Cloudflare Account ID - can be provided via credentials"
              },
              "region": {
                "type": "string",
                "default": "auto",
                "description": "AWS region for R2 storage (defaults to auto)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "bucketName",
              "fileName"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "updateFile"
                ],
                "description": "Upload or replace file content. Returns a presigned fileUrl for the uploaded file (default 7-day expiry)."
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "default": "bubble-lab-bucket"
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the file to update"
              },
              "accountId": {
                "type": "string",
                "description": "Cloudflare Account ID - can be provided via credentials"
              },
              "region": {
                "type": "string",
                "default": "auto",
                "description": "AWS region for R2 storage (defaults to auto)"
              },
              "expirationMinutes": {
                "type": "number",
                "default": 10080,
                "description": "Presigned fileUrl expiration in minutes (default 10080 = 7 days, max 7 days for R2)"
              },
              "contentType": {
                "type": "string",
                "description": "Content type for uploads"
              },
              "fileContent": {
                "type": "string",
                "minLength": 1,
                "description": "Base64 encoded file content or raw text content"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "fileName",
              "fileContent"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getMultipleUploadUrls"
                ],
                "description": "Generate multiple presigned upload URLs for PDF + page images"
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the R2 bucket"
              },
              "pdfFileName": {
                "type": "string",
                "minLength": 1,
                "description": "Original filename for the PDF"
              },
              "pageCount": {
                "type": "number",
                "minimum": 1,
                "description": "Number of pages to generate upload URLs for"
              },
              "accountId": {
                "type": "string",
                "description": "Cloudflare Account ID - can be provided via credentials"
              },
              "region": {
                "type": "string",
                "default": "auto",
                "description": "AWS region for R2 storage (defaults to auto)"
              },
              "expirationMinutes": {
                "type": "number",
                "default": 60,
                "description": "URL expiration time in minutes"
              },
              "userId": {
                "type": "string",
                "description": "User ID for secure file isolation"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "bucketName",
              "pdfFileName",
              "pageCount"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getUploadUrl"
                ],
                "description": "Generate presigned upload URL"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "uploadUrl": {
                "type": "string",
                "description": "Presigned upload URL"
              },
              "fileName": {
                "type": "string",
                "description": "Secure filename generated for the upload"
              },
              "contentType": {
                "type": "string",
                "description": "Content type of the file"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getFile"
                ],
                "description": "Generate presigned download URL"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "downloadUrl": {
                "type": "string",
                "description": "Presigned download URL"
              },
              "fileUrl": {
                "type": "string",
                "description": "Direct file access URL"
              },
              "fileName": {
                "type": "string",
                "description": "Name of the file"
              },
              "fileSize": {
                "type": "number",
                "description": "File size in bytes"
              },
              "contentType": {
                "type": "string",
                "description": "Content type of the file"
              },
              "lastModified": {
                "type": "string",
                "description": "Last modified timestamp in ISO format"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "deleteFile"
                ],
                "description": "Delete file from bucket"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "fileName": {
                "type": "string",
                "description": "Name of the deleted file"
              },
              "deleted": {
                "type": "boolean",
                "description": "Whether the file was successfully deleted"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "updateFile"
                ],
                "description": "Update/replace file content and generate a new secure filename for the file"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "fileName": {
                "type": "string",
                "description": "Secure filename for the updated file (different from the original filename). Use this key with getFile to generate new download URLs."
              },
              "fileUrl": {
                "type": "string",
                "description": "Presigned download URL for the uploaded file. Expires after expirationMinutes (default 7 days). Do NOT construct URLs manually — always use this field."
              },
              "updated": {
                "type": "boolean",
                "description": "Whether the file was successfully updated"
              },
              "contentType": {
                "type": "string",
                "description": "Content type of the updated file"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getMultipleUploadUrls"
                ],
                "description": "Generate multiple presigned upload URLs for PDF + page images"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "pdfUploadUrl": {
                "type": "string",
                "description": "Presigned upload URL for PDF"
              },
              "pdfFileName": {
                "type": "string",
                "description": "Secure filename for PDF"
              },
              "pageUploadUrls": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "pageNumber": {
                      "type": "number",
                      "description": "Page number (1-indexed)"
                    },
                    "uploadUrl": {
                      "type": "string",
                      "description": "Presigned upload URL for this page"
                    },
                    "fileName": {
                      "type": "string",
                      "description": "Secure filename for this page image"
                    }
                  },
                  "required": [
                    "pageNumber",
                    "uploadUrl",
                    "fileName"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of upload URLs for page images"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// GetUploadUrl example\nconst storage_getUploadUrl = new StorageBubble({\n  operation: \"getUploadUrl\", // Generate presigned upload URL\n  bucketName: \"example string\", // Name of the R2 bucket\n  fileName: \"example string\", // Original filename for the upload\n  accountId: \"example string\", // Cloudflare Account ID - can be provided via credentials\n  region: \"auto\" // default, // AWS region for R2 storage (defaults to auto)\n  expirationMinutes: 60 // default, // URL expiration time in minutes\n  contentType: \"example string\", // Content type for uploads\n  userId: \"example string\", // User ID for secure file isolation\n});\n\nconst result = await storage_getUploadUrl.action();\n// outputSchema for result.data when operation === 'getUploadUrl':\n// {\n//   operation: \"getUploadUrl\" // Generate presigned upload URL,\n//   success: boolean // Whether the operation was successful,\n//   uploadUrl: string | undefined // Presigned upload URL,\n//   fileName: string | undefined // Secure filename generated for the upload,\n//   contentType: string | undefined // Content type of the file,\n//   error: string // Error message if operation failed\n// }\n\n\n// GetFile example\nconst storage_getFile = new StorageBubble({\n  operation: \"getFile\", // Generate presigned download URL\n  bucketName: \"example string\", // Name of the R2 bucket\n  fileName: \"example string\", // Name of the file to retrieve\n  accountId: \"example string\", // Cloudflare Account ID - can be provided via credentials\n  region: \"auto\" // default, // AWS region for R2 storage (defaults to auto)\n  expirationMinutes: 60 // default, // URL expiration time in minutes\n  userId: \"example string\", // User ID for secure file isolation\n});\n\nconst result = await storage_getFile.action();\n// outputSchema for result.data when operation === 'getFile':\n// {\n//   operation: \"getFile\" // Generate presigned download URL,\n//   success: boolean // Whether the operation was successful,\n//   downloadUrl: string | undefined // Presigned download URL,\n//   fileUrl: string | undefined // Direct file access URL,\n//   fileName: string | undefined // Name of the file,\n//   fileSize: number | undefined // File size in bytes,\n//   contentType: string | undefined // Content type of the file,\n//   lastModified: string | undefined // Last modified timestamp in ISO format,\n//   error: string // Error message if operation failed\n// }\n\n\n// DeleteFile example\nconst storage_deleteFile = new StorageBubble({\n  operation: \"deleteFile\", // Delete file from bucket\n  bucketName: \"example string\", // Name of the R2 bucket\n  fileName: \"example string\", // Name of the file to delete\n  accountId: \"example string\", // Cloudflare Account ID - can be provided via credentials\n  region: \"auto\" // default, // AWS region for R2 storage (defaults to auto)\n});\n\nconst result = await storage_deleteFile.action();\n// outputSchema for result.data when operation === 'deleteFile':\n// {\n//   operation: \"deleteFile\" // Delete file from bucket,\n//   success: boolean // Whether the operation was successful,\n//   fileName: string | undefined // Name of the deleted file,\n//   deleted: boolean | undefined // Whether the file was successfully deleted,\n//   error: string // Error message if operation failed\n// }\n\n\n// UpdateFile example\nconst storage_updateFile = new StorageBubble({\n  operation: \"updateFile\", // Upload or replace file content. Returns a presigned fileUrl for the uploaded file (default 7-day expiry).\n  bucketName: \"bubble-lab-bucket\" // default,\n  fileName: \"example string\", // Name of the file to update\n  accountId: \"example string\", // Cloudflare Account ID - can be provided via credentials\n  region: \"auto\" // default, // AWS region for R2 storage (defaults to auto)\n  expirationMinutes: 10080 // default, // Presigned fileUrl expiration in minutes (default 10080 = 7 days, max 7 days for R2)\n  contentType: \"example string\", // Content type for uploads\n  fileContent: \"example string\", // Base64 encoded file content or raw text content\n});\n\nconst result = await storage_updateFile.action();\n// outputSchema for result.data when operation === 'updateFile':\n// {\n//   operation: \"updateFile\" // Update/replace file content and generate a new secure filename for the file,\n//   success: boolean // Whether the operation was successful,\n//   fileName: string | undefined // Secure filename for the updated file (different from the original filename). Use this key with getFile to generate new download URLs.,\n//   fileUrl: string | undefined // Presigned download URL for the uploaded file. Expires after expirationMinutes (default 7 days). Do NOT construct URLs manually — always use this field.,\n//   updated: boolean | undefined // Whether the file was successfully updated,\n//   contentType: string | undefined // Content type of the updated file,\n//   error: string // Error message if operation failed\n// }\n\n\n// GetMultipleUploadUrls example\nconst storage_getMultipleUploadUrls = new StorageBubble({\n  operation: \"getMultipleUploadUrls\", // Generate multiple presigned upload URLs for PDF + page images\n  bucketName: \"example string\", // Name of the R2 bucket\n  pdfFileName: \"example string\", // Original filename for the PDF\n  pageCount: 42, // Number of pages to generate upload URLs for\n  accountId: \"example string\", // Cloudflare Account ID - can be provided via credentials\n  region: \"auto\" // default, // AWS region for R2 storage (defaults to auto)\n  expirationMinutes: 60 // default, // URL expiration time in minutes\n  userId: \"example string\", // User ID for secure file isolation\n});\n\nconst result = await storage_getMultipleUploadUrls.action();\n// outputSchema for result.data when operation === 'getMultipleUploadUrls':\n// {\n//   operation: \"getMultipleUploadUrls\" // Generate multiple presigned upload URLs for PDF + page images,\n//   success: boolean // Whether the operation was successful,\n//   pdfUploadUrl: string | undefined // Presigned upload URL for PDF,\n//   pdfFileName: string | undefined // Secure filename for PDF,\n//   pageUploadUrls: { pageNumber: number // Page number (1-indexed), uploadUrl: string // Presigned upload URL for this page, fileName: string // Secure filename for this page image }[] | undefined // Array of upload URLs for page images,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`storage failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "CLOUDFLARE_R2_ACCESS_KEY",
        "CLOUDFLARE_R2_SECRET_KEY",
        "CLOUDFLARE_R2_ACCOUNT_ID"
      ]
    },
    {
      "name": "google-drive",
      "alias": "gdrive",
      "type": "service",
      "shortDescription": "Google Drive integration with full Google Docs tab support - read/write specific tabs, copy templates, and preserve formatting with find/replace",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "upload_file"
                ],
                "description": "Upload a file to Google Drive"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name for the uploaded file"
              },
              "content": {
                "type": "string",
                "description": "File content as base64 encoded string or plain text"
              },
              "mimeType": {
                "type": "string",
                "description": "MIME type of the file (auto-detected if not provided)"
              },
              "parent_folder_id": {
                "type": "string",
                "description": "ID of the parent folder (uploads to root if not provided)"
              },
              "convert_to_google_docs": {
                "type": "boolean",
                "default": false,
                "description": "Convert uploaded file to Google Docs format if possible"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name",
              "content"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "download_file"
                ],
                "description": "Download a file from Google Drive"
              },
              "file_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Drive file ID to download"
              },
              "export_format": {
                "type": "string",
                "description": "Export format for Google Workspace files (e.g., \"application/pdf\", \"text/plain\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "file_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_files"
                ],
                "description": "List files and folders in Google Drive"
              },
              "folder_id": {
                "type": "string",
                "description": "ID of folder to list files from (lists from root if not provided)"
              },
              "query": {
                "type": "string",
                "description": "Search query to filter files (e.g., \"name contains 'report'\""
              },
              "max_results": {
                "type": "number",
                "minimum": 1,
                "maximum": 1000,
                "default": 100,
                "description": "Maximum number of files to return"
              },
              "include_folders": {
                "type": "boolean",
                "default": true,
                "description": "Include folders in the results"
              },
              "order_by": {
                "type": "string",
                "default": "modifiedTime desc",
                "description": "Order results by field (e.g., \"name\", \"modifiedTime desc\")"
              },
              "page_token": {
                "type": "string",
                "description": "Token for fetching next page of results"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_folder"
                ],
                "description": "Create a new folder in Google Drive"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the folder to create"
              },
              "parent_folder_id": {
                "type": "string",
                "description": "ID of the parent folder (creates in root if not provided)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_file"
                ],
                "description": "Delete a file or folder from Google Drive"
              },
              "file_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Drive file or folder ID to delete"
              },
              "permanent": {
                "type": "boolean",
                "default": false,
                "description": "Permanently delete (true) or move to trash (false)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "file_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_file_info"
                ],
                "description": "Get detailed information about a file or folder"
              },
              "file_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Drive file or folder ID to get info for"
              },
              "include_permissions": {
                "type": "boolean",
                "default": false,
                "description": "Include file permissions in the response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "file_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "share_file"
                ],
                "description": "Share a file or folder with specific users or make it public"
              },
              "file_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Drive file or folder ID to share"
              },
              "email_address": {
                "type": "string",
                "format": "email",
                "description": "Email address to share with (for specific user sharing)"
              },
              "role": {
                "type": "string",
                "enum": [
                  "reader",
                  "writer",
                  "commenter",
                  "owner"
                ],
                "default": "reader",
                "description": "Permission role to grant"
              },
              "type": {
                "type": "string",
                "enum": [
                  "user",
                  "group",
                  "domain",
                  "anyone"
                ],
                "default": "user",
                "description": "Type of permission to create"
              },
              "send_notification": {
                "type": "boolean",
                "default": true,
                "description": "Send notification email to the user"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "file_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "move_file"
                ],
                "description": "Move a file or folder to a different location in Google Drive"
              },
              "file_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Drive file or folder ID to move"
              },
              "new_parent_folder_id": {
                "type": "string",
                "description": "ID of the new parent folder (moves to root if not provided)"
              },
              "remove_parent_folder_id": {
                "type": "string",
                "description": "ID of the parent folder to remove (removes from all parents if not provided)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "file_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_doc"
                ],
                "description": "Get the content and metadata of a Google Doc using the Google Docs API, use this over download_file for Google Docs"
              },
              "document_id": {
                "type": "string",
                "minLength": 1,
                "description": "The ID of the Google Doc to retrieve"
              },
              "tab_id": {
                "type": "string",
                "description": "Specific tab ID to read. If omitted, reads first tab."
              },
              "include_all_tabs": {
                "type": "boolean",
                "default": false,
                "description": "Return info for all tabs including their plain text content"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "document_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_doc"
                ],
                "description": "Update a Google Doc with new content using the Google Docs API batchUpdate"
              },
              "document_id": {
                "type": "string",
                "minLength": 1,
                "description": "The ID of the Google Doc to update"
              },
              "content": {
                "type": "string",
                "minLength": 1,
                "description": "The text or markdown content to write to the document (auto-detected)"
              },
              "mode": {
                "type": "string",
                "enum": [
                  "replace",
                  "append"
                ],
                "default": "replace",
                "description": "Update mode: \"replace\" clears existing content first, \"append\" adds to the end"
              },
              "tab_id": {
                "type": "string",
                "description": "Tab to write to. If omitted, writes to first tab."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "document_id",
              "content"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "replace_text"
                ],
                "description": "Find and replace text in a Google Doc while preserving formatting"
              },
              "document_id": {
                "type": "string",
                "minLength": 1,
                "description": "The ID of the Google Doc to perform replacements in"
              },
              "replacements": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "find": {
                      "type": "string",
                      "description": "Text to find"
                    },
                    "replace": {
                      "type": "string",
                      "description": "Text to replace with"
                    },
                    "match_case": {
                      "type": "boolean",
                      "default": true,
                      "description": "Whether to match case when finding text"
                    }
                  },
                  "required": [
                    "find",
                    "replace"
                  ],
                  "additionalProperties": false
                },
                "description": "List of find/replace pairs"
              },
              "tab_id": {
                "type": "string",
                "description": "Tab to perform replacements in. If omitted, applies to all tabs."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "document_id",
              "replacements"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "copy_doc"
                ],
                "description": "Create a copy of a Google Doc (useful for templates)"
              },
              "document_id": {
                "type": "string",
                "minLength": 1,
                "description": "Source document ID to copy"
              },
              "new_name": {
                "type": "string",
                "minLength": 1,
                "description": "Name for the new document"
              },
              "parent_folder_id": {
                "type": "string",
                "description": "Folder to place the copy in"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "document_id",
              "new_name"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "upload_file"
                ],
                "description": "Upload a file to Google Drive"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the file was uploaded successfully"
              },
              "file": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique file identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name of the file"
                  },
                  "mimeType": {
                    "type": "string",
                    "description": "MIME type of the file"
                  },
                  "size": {
                    "type": "string",
                    "description": "Size of the file in bytes"
                  },
                  "createdTime": {
                    "type": "string",
                    "description": "Creation time in RFC 3339 format"
                  },
                  "modifiedTime": {
                    "type": "string",
                    "description": "Last modified time in RFC 3339 format"
                  },
                  "webViewLink": {
                    "type": "string",
                    "description": "Link to view the file in Google Drive"
                  },
                  "webContentLink": {
                    "type": "string",
                    "description": "Link to download the file"
                  },
                  "parents": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Parent folder IDs"
                  },
                  "shared": {
                    "type": "boolean",
                    "description": "Whether the file is shared"
                  },
                  "owners": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "displayName": {
                          "type": "string",
                          "description": "Owner display name"
                        },
                        "emailAddress": {
                          "type": "string",
                          "description": "Owner email address"
                        }
                      },
                      "additionalProperties": false
                    },
                    "description": "File owners"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "mimeType"
                ],
                "additionalProperties": false,
                "description": "Uploaded file metadata"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "download_file"
                ],
                "description": "Download a file from Google Drive"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the file was downloaded successfully"
              },
              "content": {
                "type": "string",
                "description": "File content as plain text (for text-based files) or base64 encoded string (for binary files)"
              },
              "filename": {
                "type": "string",
                "description": "Original filename"
              },
              "mimeType": {
                "type": "string",
                "description": "MIME type of the downloaded file"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_files"
                ],
                "description": "List files and folders in Google Drive"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the file list was retrieved successfully"
              },
              "files": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique file identifier"
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the file"
                    },
                    "mimeType": {
                      "type": "string",
                      "description": "MIME type of the file"
                    },
                    "size": {
                      "type": "string",
                      "description": "Size of the file in bytes"
                    },
                    "createdTime": {
                      "type": "string",
                      "description": "Creation time in RFC 3339 format"
                    },
                    "modifiedTime": {
                      "type": "string",
                      "description": "Last modified time in RFC 3339 format"
                    },
                    "webViewLink": {
                      "type": "string",
                      "description": "Link to view the file in Google Drive"
                    },
                    "webContentLink": {
                      "type": "string",
                      "description": "Link to download the file"
                    },
                    "parents": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Parent folder IDs"
                    },
                    "shared": {
                      "type": "boolean",
                      "description": "Whether the file is shared"
                    },
                    "owners": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "displayName": {
                            "type": "string",
                            "description": "Owner display name"
                          },
                          "emailAddress": {
                            "type": "string",
                            "description": "Owner email address"
                          }
                        },
                        "additionalProperties": false
                      },
                      "description": "File owners"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "mimeType"
                  ],
                  "additionalProperties": false,
                  "description": "Google Drive file metadata"
                },
                "description": "List of files and folders"
              },
              "total_count": {
                "type": "number",
                "description": "Total number of files found"
              },
              "next_page_token": {
                "type": "string",
                "description": "Token for fetching next page of results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_folder"
                ],
                "description": "Create a new folder in Google Drive"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the folder was created successfully"
              },
              "folder": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique folder identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name of the folder"
                  },
                  "webViewLink": {
                    "type": "string",
                    "description": "Link to view the folder in Google Drive"
                  },
                  "parents": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Parent folder IDs"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "Created folder metadata"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_file"
                ],
                "description": "Delete a file or folder from Google Drive"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the file was deleted successfully"
              },
              "deleted_file_id": {
                "type": "string",
                "description": "ID of the deleted file"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_file_info"
                ],
                "description": "Get detailed information about a file or folder"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the file information was retrieved successfully"
              },
              "file": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique file identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name of the file"
                  },
                  "mimeType": {
                    "type": "string",
                    "description": "MIME type of the file"
                  },
                  "size": {
                    "type": "string",
                    "description": "Size of the file in bytes"
                  },
                  "createdTime": {
                    "type": "string",
                    "description": "Creation time in RFC 3339 format"
                  },
                  "modifiedTime": {
                    "type": "string",
                    "description": "Last modified time in RFC 3339 format"
                  },
                  "webViewLink": {
                    "type": "string",
                    "description": "Link to view the file in Google Drive"
                  },
                  "webContentLink": {
                    "type": "string",
                    "description": "Link to download the file"
                  },
                  "parents": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Parent folder IDs"
                  },
                  "shared": {
                    "type": "boolean",
                    "description": "Whether the file is shared"
                  },
                  "owners": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "displayName": {
                          "type": "string",
                          "description": "Owner display name"
                        },
                        "emailAddress": {
                          "type": "string",
                          "description": "Owner email address"
                        }
                      },
                      "additionalProperties": false
                    },
                    "description": "File owners"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "mimeType"
                ],
                "additionalProperties": false,
                "description": "File metadata and information"
              },
              "permissions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "role": {
                      "type": "string"
                    },
                    "emailAddress": {
                      "type": "string",
                      "description": "Permission holder email address"
                    },
                    "displayName": {
                      "type": "string",
                      "description": "Permission holder display name"
                    }
                  },
                  "required": [
                    "id",
                    "type",
                    "role"
                  ],
                  "additionalProperties": false
                },
                "description": "File permissions (if requested)"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "share_file"
                ],
                "description": "Share a file or folder with specific users or make it public"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the file was shared successfully"
              },
              "permission_id": {
                "type": "string",
                "description": "ID of the created permission"
              },
              "share_link": {
                "type": "string",
                "description": "Shareable link to the file"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "move_file"
                ],
                "description": "Move a file or folder to a different location in Google Drive"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the file was moved successfully"
              },
              "file": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique file identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name of the file"
                  },
                  "mimeType": {
                    "type": "string",
                    "description": "MIME type of the file"
                  },
                  "size": {
                    "type": "string",
                    "description": "Size of the file in bytes"
                  },
                  "createdTime": {
                    "type": "string",
                    "description": "Creation time in RFC 3339 format"
                  },
                  "modifiedTime": {
                    "type": "string",
                    "description": "Last modified time in RFC 3339 format"
                  },
                  "webViewLink": {
                    "type": "string",
                    "description": "Link to view the file in Google Drive"
                  },
                  "webContentLink": {
                    "type": "string",
                    "description": "Link to download the file"
                  },
                  "parents": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Parent folder IDs"
                  },
                  "shared": {
                    "type": "boolean",
                    "description": "Whether the file is shared"
                  },
                  "owners": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "displayName": {
                          "type": "string",
                          "description": "Owner display name"
                        },
                        "emailAddress": {
                          "type": "string",
                          "description": "Owner email address"
                        }
                      },
                      "additionalProperties": false
                    },
                    "description": "File owners"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "mimeType"
                ],
                "additionalProperties": false,
                "description": "Updated file metadata after move"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_doc"
                ],
                "description": "Get the content and metadata of a Google Doc using the Google Docs API"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the document was retrieved successfully"
              },
              "document": {
                "type": "object",
                "properties": {
                  "documentId": {
                    "type": "string",
                    "description": "The ID of the document"
                  },
                  "title": {
                    "type": "string",
                    "description": "The title of the document"
                  },
                  "revisionId": {
                    "type": "string",
                    "description": "The revision ID of the document"
                  },
                  "body": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "The main body of the document containing content array"
                  },
                  "suggestionsViewMode": {
                    "type": "string",
                    "description": "The suggestions view mode applied to the document"
                  },
                  "inlineObjects": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "The inline objects (images, etc.) in the document"
                  },
                  "lists": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "The lists in the document, keyed by list ID"
                  }
                },
                "required": [
                  "documentId",
                  "title"
                ],
                "additionalProperties": true,
                "description": "The Google Docs document content and metadata"
              },
              "plainText": {
                "type": "string",
                "description": "Extracted plain text content from the document"
              },
              "tabs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "tabId": {
                      "type": "string",
                      "description": "Unique tab identifier"
                    },
                    "title": {
                      "type": "string",
                      "description": "Tab title"
                    },
                    "index": {
                      "type": "number",
                      "description": "Tab position index"
                    },
                    "plainText": {
                      "type": "string",
                      "description": "Plain text content of the tab"
                    }
                  },
                  "required": [
                    "tabId",
                    "title",
                    "index"
                  ],
                  "additionalProperties": false
                },
                "description": "All tabs in the document"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_doc"
                ],
                "description": "Update a Google Doc with new content using the Google Docs API batchUpdate"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the document was updated successfully"
              },
              "documentId": {
                "type": "string",
                "description": "The ID of the updated document"
              },
              "revisionId": {
                "type": "string",
                "description": "The new revision ID after the update"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "replace_text"
                ],
                "description": "Find and replace text in a Google Doc"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the replacements were made successfully"
              },
              "replacements_made": {
                "type": "number",
                "description": "Total number of replacements made"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "copy_doc"
                ],
                "description": "Create a copy of a Google Doc"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the document was copied successfully"
              },
              "new_document_id": {
                "type": "string",
                "description": "ID of the new document"
              },
              "new_document_url": {
                "type": "string",
                "description": "URL to view the new document"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Upload File example\nconst googleDrive_upload_file = new GoogleDriveBubble({\n  operation: \"upload_file\", // Upload a file to Google Drive\n  name: \"example string\", // Name for the uploaded file\n  content: \"example string\", // File content as base64 encoded string or plain text\n  mimeType: \"example string\", // MIME type of the file (auto-detected if not provided)\n  parent_folder_id: \"example string\", // ID of the parent folder (uploads to root if not provided)\n  convert_to_google_docs: false // default, // Convert uploaded file to Google Docs format if possible\n});\n\nconst result = await googleDrive_upload_file.action();\n// outputSchema for result.data when operation === 'upload_file':\n// {\n//   operation: \"upload_file\" // Upload a file to Google Drive,\n//   success: boolean // Whether the file was uploaded successfully,\n//   file: { id: string // Unique file identifier, name: string // Name of the file, mimeType: string // MIME type of the file, size: string | undefined // Size of the file in bytes, createdTime: string | undefined // Creation time in RFC 3339 format, modifiedTime: string | undefined // Last modified time in RFC 3339 format, webViewLink: string | undefined // Link to view the file in Google Drive, webContentLink: string | undefined // Link to download the file, parents: string[] | undefined // Parent folder IDs, shared: boolean | undefined // Whether the file is shared, owners: { displayName: string | undefined // Owner display name, emailAddress: string | undefined // Owner email address }[] | undefined // File owners } | undefined // Uploaded file metadata,\n//   error: string // Error message if operation failed\n// }\n\n\n// Download File example\nconst googleDrive_download_file = new GoogleDriveBubble({\n  operation: \"download_file\", // Download a file from Google Drive\n  file_id: \"example string\", // Google Drive file ID to download\n  export_format: \"example string\", // Export format for Google Workspace files (e.g., \"application/pdf\", \"text/plain\")\n});\n\nconst result = await googleDrive_download_file.action();\n// outputSchema for result.data when operation === 'download_file':\n// {\n//   operation: \"download_file\" // Download a file from Google Drive,\n//   success: boolean // Whether the file was downloaded successfully,\n//   content: string | undefined // File content as plain text (for text-based files) or base64 encoded string (for binary files),\n//   filename: string | undefined // Original filename,\n//   mimeType: string | undefined // MIME type of the downloaded file,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Files example\nconst googleDrive_list_files = new GoogleDriveBubble({\n  operation: \"list_files\", // List files and folders in Google Drive\n  folder_id: \"example string\", // ID of folder to list files from (lists from root if not provided)\n  query: \"example string\", // Search query to filter files (e.g., \"name contains 'report'\"\n  max_results: 100 // default, // Maximum number of files to return\n  include_folders: true // default, // Include folders in the results\n  order_by: \"modifiedTime desc\" // default, // Order results by field (e.g., \"name\", \"modifiedTime desc\")\n  page_token: \"example string\", // Token for fetching next page of results\n});\n\nconst result = await googleDrive_list_files.action();\n// outputSchema for result.data when operation === 'list_files':\n// {\n//   operation: \"list_files\" // List files and folders in Google Drive,\n//   success: boolean // Whether the file list was retrieved successfully,\n//   files: { id: string // Unique file identifier, name: string // Name of the file, mimeType: string // MIME type of the file, size: string | undefined // Size of the file in bytes, createdTime: string | undefined // Creation time in RFC 3339 format, modifiedTime: string | undefined // Last modified time in RFC 3339 format, webViewLink: string | undefined // Link to view the file in Google Drive, webContentLink: string | undefined // Link to download the file, parents: string[] | undefined // Parent folder IDs, shared: boolean | undefined // Whether the file is shared, owners: { displayName: string | undefined // Owner display name, emailAddress: string | undefined // Owner email address }[] | undefined // File owners }[] | undefined // List of files and folders,\n//   total_count: number | undefined // Total number of files found,\n//   next_page_token: string | undefined // Token for fetching next page of results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Folder example\nconst googleDrive_create_folder = new GoogleDriveBubble({\n  operation: \"create_folder\", // Create a new folder in Google Drive\n  name: \"example string\", // Name of the folder to create\n  parent_folder_id: \"example string\", // ID of the parent folder (creates in root if not provided)\n});\n\nconst result = await googleDrive_create_folder.action();\n// outputSchema for result.data when operation === 'create_folder':\n// {\n//   operation: \"create_folder\" // Create a new folder in Google Drive,\n//   success: boolean // Whether the folder was created successfully,\n//   folder: { id: string // Unique folder identifier, name: string // Name of the folder, webViewLink: string | undefined // Link to view the folder in Google Drive, parents: string[] | undefined // Parent folder IDs } | undefined // Created folder metadata,\n//   error: string // Error message if operation failed\n// }\n\n\n// Delete File example\nconst googleDrive_delete_file = new GoogleDriveBubble({\n  operation: \"delete_file\", // Delete a file or folder from Google Drive\n  file_id: \"example string\", // Google Drive file or folder ID to delete\n  permanent: false // default, // Permanently delete (true) or move to trash (false)\n});\n\nconst result = await googleDrive_delete_file.action();\n// outputSchema for result.data when operation === 'delete_file':\n// {\n//   operation: \"delete_file\" // Delete a file or folder from Google Drive,\n//   success: boolean // Whether the file was deleted successfully,\n//   deleted_file_id: string | undefined // ID of the deleted file,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get File Info example\nconst googleDrive_get_file_info = new GoogleDriveBubble({\n  operation: \"get_file_info\", // Get detailed information about a file or folder\n  file_id: \"example string\", // Google Drive file or folder ID to get info for\n  include_permissions: false // default, // Include file permissions in the response\n});\n\nconst result = await googleDrive_get_file_info.action();\n// outputSchema for result.data when operation === 'get_file_info':\n// {\n//   operation: \"get_file_info\" // Get detailed information about a file or folder,\n//   success: boolean // Whether the file information was retrieved successfully,\n//   file: { id: string // Unique file identifier, name: string // Name of the file, mimeType: string // MIME type of the file, size: string | undefined // Size of the file in bytes, createdTime: string | undefined // Creation time in RFC 3339 format, modifiedTime: string | undefined // Last modified time in RFC 3339 format, webViewLink: string | undefined // Link to view the file in Google Drive, webContentLink: string | undefined // Link to download the file, parents: string[] | undefined // Parent folder IDs, shared: boolean | undefined // Whether the file is shared, owners: { displayName: string | undefined // Owner display name, emailAddress: string | undefined // Owner email address }[] | undefined // File owners } | undefined // File metadata and information,\n//   permissions: { id: string, type: string, role: string, emailAddress: string | undefined // Permission holder email address, displayName: string | undefined // Permission holder display name }[] | undefined // File permissions (if requested),\n//   error: string // Error message if operation failed\n// }\n\n\n// Share File example\nconst googleDrive_share_file = new GoogleDriveBubble({\n  operation: \"share_file\", // Share a file or folder with specific users or make it public\n  file_id: \"example string\", // Google Drive file or folder ID to share\n  email_address: \"example string\", // Email address to share with (for specific user sharing)\n  role: \"reader\" // options: \"reader\", \"writer\", \"commenter\", \"owner\", // Permission role to grant\n  type: \"user\" // options: \"user\", \"group\", \"domain\", \"anyone\", // Type of permission to create\n  send_notification: true // default, // Send notification email to the user\n});\n\nconst result = await googleDrive_share_file.action();\n// outputSchema for result.data when operation === 'share_file':\n// {\n//   operation: \"share_file\" // Share a file or folder with specific users or make it public,\n//   success: boolean // Whether the file was shared successfully,\n//   permission_id: string | undefined // ID of the created permission,\n//   share_link: string | undefined // Shareable link to the file,\n//   error: string // Error message if operation failed\n// }\n\n\n// Move File example\nconst googleDrive_move_file = new GoogleDriveBubble({\n  operation: \"move_file\", // Move a file or folder to a different location in Google Drive\n  file_id: \"example string\", // Google Drive file or folder ID to move\n  new_parent_folder_id: \"example string\", // ID of the new parent folder (moves to root if not provided)\n  remove_parent_folder_id: \"example string\", // ID of the parent folder to remove (removes from all parents if not provided)\n});\n\nconst result = await googleDrive_move_file.action();\n// outputSchema for result.data when operation === 'move_file':\n// {\n//   operation: \"move_file\" // Move a file or folder to a different location in Google Drive,\n//   success: boolean // Whether the file was moved successfully,\n//   file: { id: string // Unique file identifier, name: string // Name of the file, mimeType: string // MIME type of the file, size: string | undefined // Size of the file in bytes, createdTime: string | undefined // Creation time in RFC 3339 format, modifiedTime: string | undefined // Last modified time in RFC 3339 format, webViewLink: string | undefined // Link to view the file in Google Drive, webContentLink: string | undefined // Link to download the file, parents: string[] | undefined // Parent folder IDs, shared: boolean | undefined // Whether the file is shared, owners: { displayName: string | undefined // Owner display name, emailAddress: string | undefined // Owner email address }[] | undefined // File owners } | undefined // Updated file metadata after move,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Doc example\nconst googleDrive_get_doc = new GoogleDriveBubble({\n  operation: \"get_doc\", // Get the content and metadata of a Google Doc using the Google Docs API, use this over download_file for Google Docs\n  document_id: \"example string\", // The ID of the Google Doc to retrieve\n  tab_id: \"example string\", // Specific tab ID to read. If omitted, reads first tab.\n  include_all_tabs: false // default, // Return info for all tabs including their plain text content\n});\n\nconst result = await googleDrive_get_doc.action();\n// outputSchema for result.data when operation === 'get_doc':\n// {\n//   operation: \"get_doc\" // Get the content and metadata of a Google Doc using the Google Docs API,\n//   success: boolean // Whether the document was retrieved successfully,\n//   document: { documentId: string // The ID of the document, title: string // The title of the document, revisionId: string | undefined // The revision ID of the document, body: Record<string, unknown> | undefined // The main body of the document containing content array, suggestionsViewMode: string | undefined // The suggestions view mode applied to the document, inlineObjects: Record<string, unknown> | undefined // The inline objects (images, etc.) in the document, lists: Record<string, unknown> | undefined // The lists in the document, keyed by list ID } | undefined // The Google Docs document content and metadata,\n//   plainText: string | undefined // Extracted plain text content from the document,\n//   tabs: { tabId: string // Unique tab identifier, title: string // Tab title, index: number // Tab position index, plainText: string | undefined // Plain text content of the tab }[] | undefined // All tabs in the document,\n//   error: string // Error message if operation failed\n// }\n\n\n// Update Doc example\nconst googleDrive_update_doc = new GoogleDriveBubble({\n  operation: \"update_doc\", // Update a Google Doc with new content using the Google Docs API batchUpdate\n  document_id: \"example string\", // The ID of the Google Doc to update\n  content: \"example string\", // The text or markdown content to write to the document (auto-detected)\n  mode: \"replace\" // options: \"replace\", \"append\", // Update mode: \"replace\" clears existing content first, \"append\" adds to the end\n  tab_id: \"example string\", // Tab to write to. If omitted, writes to first tab.\n});\n\nconst result = await googleDrive_update_doc.action();\n// outputSchema for result.data when operation === 'update_doc':\n// {\n//   operation: \"update_doc\" // Update a Google Doc with new content using the Google Docs API batchUpdate,\n//   success: boolean // Whether the document was updated successfully,\n//   documentId: string | undefined // The ID of the updated document,\n//   revisionId: string | undefined // The new revision ID after the update,\n//   error: string // Error message if operation failed\n// }\n\n\n// Replace Text example\nconst googleDrive_replace_text = new GoogleDriveBubble({\n  operation: \"replace_text\", // Find and replace text in a Google Doc while preserving formatting\n  document_id: \"example string\", // The ID of the Google Doc to perform replacements in\n  replacements: [{ find: \"example string\" // Text to find, replace: \"example string\" // Text to replace with, match_case: true // default // Whether to match case when finding text }], // List of find/replace pairs\n  tab_id: \"example string\", // Tab to perform replacements in. If omitted, applies to all tabs.\n});\n\nconst result = await googleDrive_replace_text.action();\n// outputSchema for result.data when operation === 'replace_text':\n// {\n//   operation: \"replace_text\" // Find and replace text in a Google Doc,\n//   success: boolean // Whether the replacements were made successfully,\n//   replacements_made: number | undefined // Total number of replacements made,\n//   error: string // Error message if operation failed\n// }\n\n\n// Copy Doc example\nconst googleDrive_copy_doc = new GoogleDriveBubble({\n  operation: \"copy_doc\", // Create a copy of a Google Doc (useful for templates)\n  document_id: \"example string\", // Source document ID to copy\n  new_name: \"example string\", // Name for the new document\n  parent_folder_id: \"example string\", // Folder to place the copy in\n});\n\nconst result = await googleDrive_copy_doc.action();\n// outputSchema for result.data when operation === 'copy_doc':\n// {\n//   operation: \"copy_doc\" // Create a copy of a Google Doc,\n//   success: boolean // Whether the document was copied successfully,\n//   new_document_id: string | undefined // ID of the new document,\n//   new_document_url: string | undefined // URL to view the new document,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`google-drive failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GOOGLE_DRIVE_CRED"
      ]
    },
    {
      "name": "gmail",
      "alias": "gmail",
      "type": "service",
      "shortDescription": "Gmail integration for email management",
      "useCase": "- Send and receive emails with rich formatting",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_email"
                ],
                "description": "Send an email message"
              },
              "to": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "email"
                },
                "minItems": 1,
                "description": "List of recipient email addresses"
              },
              "cc": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "email"
                },
                "description": "List of CC recipient email addresses"
              },
              "bcc": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "email"
                },
                "description": "List of BCC recipient email addresses"
              },
              "subject": {
                "type": "string",
                "minLength": 1,
                "description": "Email subject line"
              },
              "body_text": {
                "type": "string",
                "description": "[ONEOF:body] Email body (supports markdown — automatically converted to HTML for rendering)"
              },
              "body_html": {
                "type": "string",
                "description": "[ONEOF:body] HTML email body. If not provided and body_text is set, HTML is auto-generated from body_text."
              },
              "reply_to": {
                "type": "string",
                "format": "email",
                "description": "Reply-to email address"
              },
              "thread_id": {
                "type": "string",
                "description": "Thread ID to reply to (for threaded conversations)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "to",
              "subject"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_emails"
                ],
                "description": "List emails in the user mailbox"
              },
              "query": {
                "type": "string",
                "description": "Gmail search query (e.g., \"from:user@example.com is:unread\")"
              },
              "label_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Filter by specific label IDs"
              },
              "include_spam_trash": {
                "type": "boolean",
                "default": false,
                "description": "Include messages from SPAM and TRASH"
              },
              "max_results": {
                "type": "number",
                "minimum": 1,
                "maximum": 500,
                "default": 100,
                "description": "Maximum number of messages to return"
              },
              "page_token": {
                "type": "string",
                "description": "Token for pagination to get next page"
              },
              "include_details": {
                "type": "boolean",
                "default": true,
                "description": "Whether to fetch full message details including snippet, headers, and body"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_email"
                ],
                "description": "Get a specific email message"
              },
              "message_id": {
                "type": "string",
                "minLength": 1,
                "description": "Gmail message ID to retrieve"
              },
              "format": {
                "type": "string",
                "enum": [
                  "minimal",
                  "full",
                  "raw",
                  "metadata"
                ],
                "default": "full",
                "description": "Format to return the message in"
              },
              "metadata_headers": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of headers to include when format is metadata"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "message_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_emails"
                ],
                "description": "Search emails with query"
              },
              "query": {
                "type": "string",
                "minLength": 1,
                "description": "Gmail search query string"
              },
              "max_results": {
                "type": "number",
                "minimum": 1,
                "maximum": 500,
                "default": 50,
                "description": "Maximum number of results to return"
              },
              "include_spam_trash": {
                "type": "boolean",
                "default": false,
                "description": "Include messages from SPAM and TRASH"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "query"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "mark_as_read"
                ],
                "description": "Mark one or more messages as read"
              },
              "message_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "minItems": 1,
                "description": "List of message IDs to mark as read"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "message_ids"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "mark_as_unread"
                ],
                "description": "Mark one or more messages as unread"
              },
              "message_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "minItems": 1,
                "description": "List of message IDs to mark as unread"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "message_ids"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_draft"
                ],
                "description": "Create a draft email"
              },
              "to": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "email"
                },
                "minItems": 1,
                "description": "List of recipient email addresses"
              },
              "cc": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "email"
                },
                "description": "List of CC recipient email addresses"
              },
              "bcc": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "email"
                },
                "description": "List of BCC recipient email addresses"
              },
              "subject": {
                "type": "string",
                "minLength": 1,
                "description": "Email subject line"
              },
              "body_text": {
                "type": "string",
                "description": "[ONEOF:body] Email body (supports markdown — automatically converted to HTML for rendering)"
              },
              "body_html": {
                "type": "string",
                "description": "[ONEOF:body] HTML email body. If not provided and body_text is set, HTML is auto-generated from body_text."
              },
              "reply_to": {
                "type": "string",
                "format": "email",
                "description": "Reply-to email address"
              },
              "thread_id": {
                "type": "string",
                "description": "Thread ID to reply to (for threaded conversations)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "to",
              "subject"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_draft"
                ],
                "description": "Send a draft email"
              },
              "draft_id": {
                "type": "string",
                "minLength": 1,
                "description": "Gmail draft ID to send"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "draft_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_drafts"
                ],
                "description": "List draft emails"
              },
              "query": {
                "type": "string",
                "description": "Search query to filter drafts"
              },
              "max_results": {
                "type": "number",
                "minimum": 1,
                "maximum": 500,
                "default": 100,
                "description": "Maximum number of drafts to return"
              },
              "page_token": {
                "type": "string",
                "description": "Token for pagination to get next page"
              },
              "include_spam_trash": {
                "type": "boolean",
                "default": false,
                "description": "Include drafts from SPAM and TRASH"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_email"
                ],
                "description": "Delete an email message permanently"
              },
              "message_id": {
                "type": "string",
                "minLength": 1,
                "description": "Gmail message ID to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "message_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "trash_email"
                ],
                "description": "Move an email message to trash"
              },
              "message_id": {
                "type": "string",
                "minLength": 1,
                "description": "Gmail message ID to move to trash"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "message_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_threads"
                ],
                "description": "List email threads"
              },
              "query": {
                "type": "string",
                "description": "Gmail search query to filter threads"
              },
              "label_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Filter by specific label IDs"
              },
              "include_spam_trash": {
                "type": "boolean",
                "default": false,
                "description": "Include threads from SPAM and TRASH"
              },
              "max_results": {
                "type": "number",
                "minimum": 1,
                "maximum": 500,
                "default": 100,
                "description": "Maximum number of threads to return"
              },
              "page_token": {
                "type": "string",
                "description": "Token for pagination to get next page"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_labels"
                ],
                "description": "List all labels in mailbox"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_label"
                ],
                "description": "Create a new custom label"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Label name (display name)"
              },
              "label_list_visibility": {
                "type": "string",
                "enum": [
                  "labelShow",
                  "labelShowIfUnread",
                  "labelHide"
                ],
                "default": "labelShow",
                "description": "Visibility in label list"
              },
              "message_list_visibility": {
                "type": "string",
                "enum": [
                  "show",
                  "hide"
                ],
                "default": "show",
                "description": "Visibility in message list"
              },
              "background_color": {
                "type": "string",
                "description": "Background color in hex format (e.g., #000000)"
              },
              "text_color": {
                "type": "string",
                "description": "Text color in hex format (e.g., #ffffff)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "modify_message_labels"
                ],
                "description": "Add or remove labels from a message"
              },
              "message_id": {
                "type": "string",
                "minLength": 1,
                "description": "Gmail message ID to modify"
              },
              "add_label_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of label IDs to add (max 100)"
              },
              "remove_label_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of label IDs to remove (max 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "message_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "modify_thread_labels"
                ],
                "description": "Add or remove labels from all messages in a thread"
              },
              "thread_id": {
                "type": "string",
                "minLength": 1,
                "description": "Gmail thread ID to modify"
              },
              "add_label_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of label IDs to add to all messages in thread (max 100)"
              },
              "remove_label_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of label IDs to remove from all messages in thread (max 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "thread_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_attachment"
                ],
                "description": "Download an attachment from an email message"
              },
              "message_id": {
                "type": "string",
                "minLength": 1,
                "description": "Gmail message ID that contains the attachment"
              },
              "attachment_id": {
                "type": "string",
                "minLength": 1,
                "description": "Attachment ID from the message payload (found in body.attachmentId of attachment parts)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "message_id",
              "attachment_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_email"
                ],
                "description": "Send an email message"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the email was sent successfully"
              },
              "message_id": {
                "type": "string",
                "description": "Sent message ID"
              },
              "thread_id": {
                "type": "string",
                "description": "Thread ID"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_emails"
                ],
                "description": "List emails in the user mailbox"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the email list was retrieved successfully"
              },
              "messages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique message identifier"
                    },
                    "threadId": {
                      "type": "string",
                      "description": "Thread identifier this message belongs to"
                    },
                    "labelIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "List of label IDs applied to this message"
                    },
                    "snippet": {
                      "type": "string",
                      "description": "Short snippet of the message text"
                    },
                    "textContent": {
                      "type": "string",
                      "description": "Clean, readable email text content"
                    },
                    "historyId": {
                      "type": "string",
                      "description": "History record ID that last modified this message"
                    },
                    "internalDate": {
                      "type": "string",
                      "description": "Internal message creation timestamp (epoch ms)"
                    },
                    "sizeEstimate": {
                      "type": "number",
                      "description": "Estimated size in bytes"
                    },
                    "raw": {
                      "type": "string",
                      "description": "Entire email message in RFC 2822 format (base64url encoded)"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "mimeType": {
                          "type": "string",
                          "description": "MIME type of the email content"
                        },
                        "headers": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string",
                                "description": "Header name (e.g., \"Subject\", \"From\", \"To\")"
                              },
                              "value": {
                                "type": "string",
                                "description": "Header value"
                              }
                            },
                            "required": [
                              "name",
                              "value"
                            ],
                            "additionalProperties": false,
                            "description": "Email header key-value pair"
                          },
                          "description": "Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References)"
                        },
                        "body": {
                          "type": "object",
                          "properties": {
                            "data": {
                              "type": "string",
                              "description": "Email body content (base64url encoded)"
                            },
                            "size": {
                              "type": "number",
                              "description": "Size of the body content in bytes"
                            },
                            "attachmentId": {
                              "type": "string",
                              "description": "ID of the attachment if this body part is an attachment"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Email body content and metadata"
                        },
                        "parts": {
                          "type": "array",
                          "description": "Array of message parts for multipart emails"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Parsed email structure"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "Gmail message object"
                },
                "description": "List of email messages"
              },
              "next_page_token": {
                "type": "string",
                "description": "Token for fetching next page"
              },
              "result_size_estimate": {
                "type": "number",
                "description": "Estimated total number of results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_email"
                ],
                "description": "Get a specific email message"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the email was retrieved successfully"
              },
              "message": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique message identifier"
                  },
                  "threadId": {
                    "type": "string",
                    "description": "Thread identifier this message belongs to"
                  },
                  "labelIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of label IDs applied to this message"
                  },
                  "snippet": {
                    "type": "string",
                    "description": "Short snippet of the message text"
                  },
                  "textContent": {
                    "type": "string",
                    "description": "Clean, readable email text content"
                  },
                  "historyId": {
                    "type": "string",
                    "description": "History record ID that last modified this message"
                  },
                  "internalDate": {
                    "type": "string",
                    "description": "Internal message creation timestamp (epoch ms)"
                  },
                  "sizeEstimate": {
                    "type": "number",
                    "description": "Estimated size in bytes"
                  },
                  "raw": {
                    "type": "string",
                    "description": "Entire email message in RFC 2822 format (base64url encoded)"
                  },
                  "payload": {
                    "type": "object",
                    "properties": {
                      "mimeType": {
                        "type": "string",
                        "description": "MIME type of the email content"
                      },
                      "headers": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Header name (e.g., \"Subject\", \"From\", \"To\")"
                            },
                            "value": {
                              "type": "string",
                              "description": "Header value"
                            }
                          },
                          "required": [
                            "name",
                            "value"
                          ],
                          "additionalProperties": false,
                          "description": "Email header key-value pair"
                        },
                        "description": "Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References)"
                      },
                      "body": {
                        "type": "object",
                        "properties": {
                          "data": {
                            "type": "string",
                            "description": "Email body content (base64url encoded)"
                          },
                          "size": {
                            "type": "number",
                            "description": "Size of the body content in bytes"
                          },
                          "attachmentId": {
                            "type": "string",
                            "description": "ID of the attachment if this body part is an attachment"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Email body content and metadata"
                      },
                      "parts": {
                        "type": "array",
                        "description": "Array of message parts for multipart emails"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Parsed email structure"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Email message details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_emails"
                ],
                "description": "Search emails with query"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the email search was completed successfully"
              },
              "messages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique message identifier"
                    },
                    "threadId": {
                      "type": "string",
                      "description": "Thread identifier this message belongs to"
                    },
                    "labelIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "List of label IDs applied to this message"
                    },
                    "snippet": {
                      "type": "string",
                      "description": "Short snippet of the message text"
                    },
                    "textContent": {
                      "type": "string",
                      "description": "Clean, readable email text content"
                    },
                    "historyId": {
                      "type": "string",
                      "description": "History record ID that last modified this message"
                    },
                    "internalDate": {
                      "type": "string",
                      "description": "Internal message creation timestamp (epoch ms)"
                    },
                    "sizeEstimate": {
                      "type": "number",
                      "description": "Estimated size in bytes"
                    },
                    "raw": {
                      "type": "string",
                      "description": "Entire email message in RFC 2822 format (base64url encoded)"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "mimeType": {
                          "type": "string",
                          "description": "MIME type of the email content"
                        },
                        "headers": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string",
                                "description": "Header name (e.g., \"Subject\", \"From\", \"To\")"
                              },
                              "value": {
                                "type": "string",
                                "description": "Header value"
                              }
                            },
                            "required": [
                              "name",
                              "value"
                            ],
                            "additionalProperties": false,
                            "description": "Email header key-value pair"
                          },
                          "description": "Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References)"
                        },
                        "body": {
                          "type": "object",
                          "properties": {
                            "data": {
                              "type": "string",
                              "description": "Email body content (base64url encoded)"
                            },
                            "size": {
                              "type": "number",
                              "description": "Size of the body content in bytes"
                            },
                            "attachmentId": {
                              "type": "string",
                              "description": "ID of the attachment if this body part is an attachment"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Email body content and metadata"
                        },
                        "parts": {
                          "type": "array",
                          "description": "Array of message parts for multipart emails"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Parsed email structure"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "Gmail message object"
                },
                "description": "List of matching email messages"
              },
              "result_size_estimate": {
                "type": "number",
                "description": "Estimated total number of results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "mark_as_read"
                ],
                "description": "Mark one or more messages as read"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the messages were marked as read successfully"
              },
              "modified_messages": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "IDs of messages that were modified"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "mark_as_unread"
                ],
                "description": "Mark one or more messages as unread"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the messages were marked as unread successfully"
              },
              "modified_messages": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "IDs of messages that were modified"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_draft"
                ],
                "description": "Create a draft email"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the draft was created successfully"
              },
              "draft": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique draft identifier"
                  },
                  "message": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Unique message identifier"
                      },
                      "threadId": {
                        "type": "string",
                        "description": "Thread identifier this message belongs to"
                      },
                      "labelIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "List of label IDs applied to this message"
                      },
                      "snippet": {
                        "type": "string",
                        "description": "Short snippet of the message text"
                      },
                      "textContent": {
                        "type": "string",
                        "description": "Clean, readable email text content"
                      },
                      "historyId": {
                        "type": "string",
                        "description": "History record ID that last modified this message"
                      },
                      "internalDate": {
                        "type": "string",
                        "description": "Internal message creation timestamp (epoch ms)"
                      },
                      "sizeEstimate": {
                        "type": "number",
                        "description": "Estimated size in bytes"
                      },
                      "raw": {
                        "type": "string",
                        "description": "Entire email message in RFC 2822 format (base64url encoded)"
                      },
                      "payload": {
                        "type": "object",
                        "properties": {
                          "mimeType": {
                            "type": "string",
                            "description": "MIME type of the email content"
                          },
                          "headers": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "description": "Header name (e.g., \"Subject\", \"From\", \"To\")"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Header value"
                                }
                              },
                              "required": [
                                "name",
                                "value"
                              ],
                              "additionalProperties": false,
                              "description": "Email header key-value pair"
                            },
                            "description": "Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References)"
                          },
                          "body": {
                            "type": "object",
                            "properties": {
                              "data": {
                                "type": "string",
                                "description": "Email body content (base64url encoded)"
                              },
                              "size": {
                                "type": "number",
                                "description": "Size of the body content in bytes"
                              },
                              "attachmentId": {
                                "type": "string",
                                "description": "ID of the attachment if this body part is an attachment"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Email body content and metadata"
                          },
                          "parts": {
                            "type": "array",
                            "description": "Array of message parts for multipart emails"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Parsed email structure"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "Draft message content"
                  }
                },
                "required": [
                  "id",
                  "message"
                ],
                "additionalProperties": false,
                "description": "Created draft"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_draft"
                ],
                "description": "Send a draft email"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the draft was sent successfully"
              },
              "message_id": {
                "type": "string",
                "description": "Sent message ID"
              },
              "thread_id": {
                "type": "string",
                "description": "Thread ID"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_drafts"
                ],
                "description": "List draft emails"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the draft list was retrieved successfully"
              },
              "drafts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique draft identifier"
                    },
                    "message": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Unique message identifier"
                        },
                        "threadId": {
                          "type": "string",
                          "description": "Thread identifier this message belongs to"
                        },
                        "labelIds": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "List of label IDs applied to this message"
                        },
                        "snippet": {
                          "type": "string",
                          "description": "Short snippet of the message text"
                        },
                        "textContent": {
                          "type": "string",
                          "description": "Clean, readable email text content"
                        },
                        "historyId": {
                          "type": "string",
                          "description": "History record ID that last modified this message"
                        },
                        "internalDate": {
                          "type": "string",
                          "description": "Internal message creation timestamp (epoch ms)"
                        },
                        "sizeEstimate": {
                          "type": "number",
                          "description": "Estimated size in bytes"
                        },
                        "raw": {
                          "type": "string",
                          "description": "Entire email message in RFC 2822 format (base64url encoded)"
                        },
                        "payload": {
                          "type": "object",
                          "properties": {
                            "mimeType": {
                              "type": "string",
                              "description": "MIME type of the email content"
                            },
                            "headers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "description": "Header name (e.g., \"Subject\", \"From\", \"To\")"
                                  },
                                  "value": {
                                    "type": "string",
                                    "description": "Header value"
                                  }
                                },
                                "required": [
                                  "name",
                                  "value"
                                ],
                                "additionalProperties": false,
                                "description": "Email header key-value pair"
                              },
                              "description": "Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References)"
                            },
                            "body": {
                              "type": "object",
                              "properties": {
                                "data": {
                                  "type": "string",
                                  "description": "Email body content (base64url encoded)"
                                },
                                "size": {
                                  "type": "number",
                                  "description": "Size of the body content in bytes"
                                },
                                "attachmentId": {
                                  "type": "string",
                                  "description": "ID of the attachment if this body part is an attachment"
                                }
                              },
                              "additionalProperties": false,
                              "description": "Email body content and metadata"
                            },
                            "parts": {
                              "type": "array",
                              "description": "Array of message parts for multipart emails"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Parsed email structure"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false,
                      "description": "Draft message content"
                    }
                  },
                  "required": [
                    "id",
                    "message"
                  ],
                  "additionalProperties": false,
                  "description": "Gmail draft object"
                },
                "description": "List of drafts"
              },
              "next_page_token": {
                "type": "string",
                "description": "Token for fetching next page"
              },
              "result_size_estimate": {
                "type": "number",
                "description": "Estimated total number of results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_email"
                ],
                "description": "Delete an email message permanently"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the email was deleted successfully"
              },
              "deleted_message_id": {
                "type": "string",
                "description": "ID of the deleted message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "trash_email"
                ],
                "description": "Move an email message to trash"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the email was moved to trash successfully"
              },
              "trashed_message_id": {
                "type": "string",
                "description": "ID of the trashed message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_threads"
                ],
                "description": "List email threads"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the thread list was retrieved successfully"
              },
              "threads": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique thread identifier"
                    },
                    "historyId": {
                      "type": "string",
                      "description": "Last history record ID"
                    },
                    "messages": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Unique message identifier"
                          },
                          "threadId": {
                            "type": "string",
                            "description": "Thread identifier this message belongs to"
                          },
                          "labelIds": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "List of label IDs applied to this message"
                          },
                          "snippet": {
                            "type": "string",
                            "description": "Short snippet of the message text"
                          },
                          "textContent": {
                            "type": "string",
                            "description": "Clean, readable email text content"
                          },
                          "historyId": {
                            "type": "string",
                            "description": "History record ID that last modified this message"
                          },
                          "internalDate": {
                            "type": "string",
                            "description": "Internal message creation timestamp (epoch ms)"
                          },
                          "sizeEstimate": {
                            "type": "number",
                            "description": "Estimated size in bytes"
                          },
                          "raw": {
                            "type": "string",
                            "description": "Entire email message in RFC 2822 format (base64url encoded)"
                          },
                          "payload": {
                            "type": "object",
                            "properties": {
                              "mimeType": {
                                "type": "string",
                                "description": "MIME type of the email content"
                              },
                              "headers": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string",
                                      "description": "Header name (e.g., \"Subject\", \"From\", \"To\")"
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "Header value"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "value"
                                  ],
                                  "additionalProperties": false,
                                  "description": "Email header key-value pair"
                                },
                                "description": "Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References)"
                              },
                              "body": {
                                "type": "object",
                                "properties": {
                                  "data": {
                                    "type": "string",
                                    "description": "Email body content (base64url encoded)"
                                  },
                                  "size": {
                                    "type": "number",
                                    "description": "Size of the body content in bytes"
                                  },
                                  "attachmentId": {
                                    "type": "string",
                                    "description": "ID of the attachment if this body part is an attachment"
                                  }
                                },
                                "additionalProperties": false,
                                "description": "Email body content and metadata"
                              },
                              "parts": {
                                "type": "array",
                                "description": "Array of message parts for multipart emails"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Parsed email structure"
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false,
                        "description": "Gmail message object"
                      },
                      "description": "Messages in this thread"
                    },
                    "snippet": {
                      "type": "string",
                      "description": "Thread snippet"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "Gmail thread object"
                },
                "description": "List of email threads"
              },
              "next_page_token": {
                "type": "string",
                "description": "Token for fetching next page"
              },
              "result_size_estimate": {
                "type": "number",
                "description": "Estimated total number of results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_labels"
                ],
                "description": "List all labels in mailbox"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the label list was retrieved successfully"
              },
              "labels": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Label ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Label name"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "system",
                        "user"
                      ],
                      "description": "Label type: system (built-in) or user (custom)"
                    },
                    "messageListVisibility": {
                      "type": "string",
                      "enum": [
                        "show",
                        "hide"
                      ],
                      "description": "Visibility in message list"
                    },
                    "labelListVisibility": {
                      "type": "string",
                      "enum": [
                        "labelShow",
                        "labelShowIfUnread",
                        "labelHide"
                      ],
                      "description": "Visibility in label list"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": false,
                  "description": "Gmail label object"
                },
                "description": "List of labels (both system and user labels)"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_label"
                ],
                "description": "Create a new custom label"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the label was created successfully"
              },
              "label": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Label ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Label name"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "system",
                      "user"
                    ],
                    "description": "Label type: system (built-in) or user (custom)"
                  },
                  "messageListVisibility": {
                    "type": "string",
                    "enum": [
                      "show",
                      "hide"
                    ],
                    "description": "Visibility in message list"
                  },
                  "labelListVisibility": {
                    "type": "string",
                    "enum": [
                      "labelShow",
                      "labelShowIfUnread",
                      "labelHide"
                    ],
                    "description": "Visibility in label list"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "Created label details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "modify_message_labels"
                ],
                "description": "Add or remove labels from a message"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the labels were modified successfully"
              },
              "message_id": {
                "type": "string",
                "description": "Modified message ID"
              },
              "label_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Current label IDs after modification"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "modify_thread_labels"
                ],
                "description": "Add or remove labels from all messages in a thread"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the thread labels were modified successfully"
              },
              "thread_id": {
                "type": "string",
                "description": "Modified thread ID"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_attachment"
                ],
                "description": "Download an attachment from an email message"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the attachment was downloaded successfully"
              },
              "data": {
                "type": "string",
                "description": "Base64-encoded attachment content"
              },
              "size": {
                "type": "number",
                "description": "Attachment size in bytes"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Send Email example\nconst gmail_send_email = new GmailBubble({\n  operation: \"send_email\", // Send an email message\n  to: [\"example string\"], // List of recipient email addresses\n  cc: [\"example string\"], // List of CC recipient email addresses\n  bcc: [\"example string\"], // List of BCC recipient email addresses\n  subject: \"example string\", // Email subject line\n  body_text: \"example string\", // [ONEOF:body] Email body (supports markdown — automatically converted to HTML for rendering)\n  body_html: \"example string\", // [ONEOF:body] HTML email body. If not provided and body_text is set, HTML is auto-generated from body_text.\n  reply_to: \"example string\", // Reply-to email address\n  thread_id: \"example string\", // Thread ID to reply to (for threaded conversations)\n});\n\nconst result = await gmail_send_email.action();\n// outputSchema for result.data when operation === 'send_email':\n// {\n//   operation: \"send_email\" // Send an email message,\n//   success: boolean // Whether the email was sent successfully,\n//   message_id: string | undefined // Sent message ID,\n//   thread_id: string | undefined // Thread ID,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Emails example\nconst gmail_list_emails = new GmailBubble({\n  operation: \"list_emails\", // List emails in the user mailbox\n  query: \"example string\", // Gmail search query (e.g., \"from:user@example.com is:unread\")\n  label_ids: [\"example string\"], // Filter by specific label IDs\n  include_spam_trash: false // default, // Include messages from SPAM and TRASH\n  max_results: 100 // default, // Maximum number of messages to return\n  page_token: \"example string\", // Token for pagination to get next page\n  include_details: true // default, // Whether to fetch full message details including snippet, headers, and body\n});\n\nconst result = await gmail_list_emails.action();\n// outputSchema for result.data when operation === 'list_emails':\n// {\n//   operation: \"list_emails\" // List emails in the user mailbox,\n//   success: boolean // Whether the email list was retrieved successfully,\n//   messages: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure }[] | undefined // List of email messages,\n//   next_page_token: string | undefined // Token for fetching next page,\n//   result_size_estimate: number | undefined // Estimated total number of results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Email example\nconst gmail_get_email = new GmailBubble({\n  operation: \"get_email\", // Get a specific email message\n  message_id: \"example string\", // Gmail message ID to retrieve\n  format: \"minimal\" // options: \"minimal\", \"full\", \"raw\", \"metadata\", // Format to return the message in\n  metadata_headers: [\"example string\"], // List of headers to include when format is metadata\n});\n\nconst result = await gmail_get_email.action();\n// outputSchema for result.data when operation === 'get_email':\n// {\n//   operation: \"get_email\" // Get a specific email message,\n//   success: boolean // Whether the email was retrieved successfully,\n//   message: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure } | undefined // Email message details,\n//   error: string // Error message if operation failed\n// }\n\n\n// Search Emails example\nconst gmail_search_emails = new GmailBubble({\n  operation: \"search_emails\", // Search emails with query\n  query: \"example string\", // Gmail search query string\n  max_results: 50 // default, // Maximum number of results to return\n  include_spam_trash: false // default, // Include messages from SPAM and TRASH\n});\n\nconst result = await gmail_search_emails.action();\n// outputSchema for result.data when operation === 'search_emails':\n// {\n//   operation: \"search_emails\" // Search emails with query,\n//   success: boolean // Whether the email search was completed successfully,\n//   messages: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure }[] | undefined // List of matching email messages,\n//   result_size_estimate: number | undefined // Estimated total number of results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Mark As Read example\nconst gmail_mark_as_read = new GmailBubble({\n  operation: \"mark_as_read\", // Mark one or more messages as read\n  message_ids: [\"example string\"], // List of message IDs to mark as read\n});\n\nconst result = await gmail_mark_as_read.action();\n// outputSchema for result.data when operation === 'mark_as_read':\n// {\n//   operation: \"mark_as_read\" // Mark one or more messages as read,\n//   success: boolean // Whether the messages were marked as read successfully,\n//   modified_messages: string[] | undefined // IDs of messages that were modified,\n//   error: string // Error message if operation failed\n// }\n\n\n// Mark As Unread example\nconst gmail_mark_as_unread = new GmailBubble({\n  operation: \"mark_as_unread\", // Mark one or more messages as unread\n  message_ids: [\"example string\"], // List of message IDs to mark as unread\n});\n\nconst result = await gmail_mark_as_unread.action();\n// outputSchema for result.data when operation === 'mark_as_unread':\n// {\n//   operation: \"mark_as_unread\" // Mark one or more messages as unread,\n//   success: boolean // Whether the messages were marked as unread successfully,\n//   modified_messages: string[] | undefined // IDs of messages that were modified,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Draft example\nconst gmail_create_draft = new GmailBubble({\n  operation: \"create_draft\", // Create a draft email\n  to: [\"example string\"], // List of recipient email addresses\n  cc: [\"example string\"], // List of CC recipient email addresses\n  bcc: [\"example string\"], // List of BCC recipient email addresses\n  subject: \"example string\", // Email subject line\n  body_text: \"example string\", // [ONEOF:body] Email body (supports markdown — automatically converted to HTML for rendering)\n  body_html: \"example string\", // [ONEOF:body] HTML email body. If not provided and body_text is set, HTML is auto-generated from body_text.\n  reply_to: \"example string\", // Reply-to email address\n  thread_id: \"example string\", // Thread ID to reply to (for threaded conversations)\n});\n\nconst result = await gmail_create_draft.action();\n// outputSchema for result.data when operation === 'create_draft':\n// {\n//   operation: \"create_draft\" // Create a draft email,\n//   success: boolean // Whether the draft was created successfully,\n//   draft: { id: string // Unique draft identifier, message: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure } // Draft message content } | undefined // Created draft,\n//   error: string // Error message if operation failed\n// }\n\n\n// Send Draft example\nconst gmail_send_draft = new GmailBubble({\n  operation: \"send_draft\", // Send a draft email\n  draft_id: \"example string\", // Gmail draft ID to send\n});\n\nconst result = await gmail_send_draft.action();\n// outputSchema for result.data when operation === 'send_draft':\n// {\n//   operation: \"send_draft\" // Send a draft email,\n//   success: boolean // Whether the draft was sent successfully,\n//   message_id: string | undefined // Sent message ID,\n//   thread_id: string | undefined // Thread ID,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Drafts example\nconst gmail_list_drafts = new GmailBubble({\n  operation: \"list_drafts\", // List draft emails\n  query: \"example string\", // Search query to filter drafts\n  max_results: 100 // default, // Maximum number of drafts to return\n  page_token: \"example string\", // Token for pagination to get next page\n  include_spam_trash: false // default, // Include drafts from SPAM and TRASH\n});\n\nconst result = await gmail_list_drafts.action();\n// outputSchema for result.data when operation === 'list_drafts':\n// {\n//   operation: \"list_drafts\" // List draft emails,\n//   success: boolean // Whether the draft list was retrieved successfully,\n//   drafts: { id: string // Unique draft identifier, message: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure } // Draft message content }[] | undefined // List of drafts,\n//   next_page_token: string | undefined // Token for fetching next page,\n//   result_size_estimate: number | undefined // Estimated total number of results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Delete Email example\nconst gmail_delete_email = new GmailBubble({\n  operation: \"delete_email\", // Delete an email message permanently\n  message_id: \"example string\", // Gmail message ID to delete\n});\n\nconst result = await gmail_delete_email.action();\n// outputSchema for result.data when operation === 'delete_email':\n// {\n//   operation: \"delete_email\" // Delete an email message permanently,\n//   success: boolean // Whether the email was deleted successfully,\n//   deleted_message_id: string | undefined // ID of the deleted message,\n//   error: string // Error message if operation failed\n// }\n\n\n// Trash Email example\nconst gmail_trash_email = new GmailBubble({\n  operation: \"trash_email\", // Move an email message to trash\n  message_id: \"example string\", // Gmail message ID to move to trash\n});\n\nconst result = await gmail_trash_email.action();\n// outputSchema for result.data when operation === 'trash_email':\n// {\n//   operation: \"trash_email\" // Move an email message to trash,\n//   success: boolean // Whether the email was moved to trash successfully,\n//   trashed_message_id: string | undefined // ID of the trashed message,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Threads example\nconst gmail_list_threads = new GmailBubble({\n  operation: \"list_threads\", // List email threads\n  query: \"example string\", // Gmail search query to filter threads\n  label_ids: [\"example string\"], // Filter by specific label IDs\n  include_spam_trash: false // default, // Include threads from SPAM and TRASH\n  max_results: 100 // default, // Maximum number of threads to return\n  page_token: \"example string\", // Token for pagination to get next page\n});\n\nconst result = await gmail_list_threads.action();\n// outputSchema for result.data when operation === 'list_threads':\n// {\n//   operation: \"list_threads\" // List email threads,\n//   success: boolean // Whether the thread list was retrieved successfully,\n//   threads: { id: string // Unique thread identifier, historyId: string | undefined // Last history record ID, messages: { id: string // Unique message identifier, threadId: string | undefined // Thread identifier this message belongs to, labelIds: string[] | undefined // List of label IDs applied to this message, snippet: string | undefined // Short snippet of the message text, textContent: string | undefined // Clean, readable email text content, historyId: string | undefined // History record ID that last modified this message, internalDate: string | undefined // Internal message creation timestamp (epoch ms), sizeEstimate: number | undefined // Estimated size in bytes, raw: string | undefined // Entire email message in RFC 2822 format (base64url encoded), payload: { mimeType: string | undefined // MIME type of the email content, headers: { name: string // Header name (e.g., \"Subject\", \"From\", \"To\"), value: string // Header value }[] | undefined // Essential email headers only (Subject, From, To, Cc, Bcc, Date, Reply-To, Message-ID, In-Reply-To, References), body: { data: string | undefined // Email body content (base64url encoded), size: number | undefined // Size of the body content in bytes, attachmentId: string | undefined // ID of the attachment if this body part is an attachment } | undefined // Email body content and metadata, parts: unknown[] | undefined // Array of message parts for multipart emails } | undefined // Parsed email structure }[] | undefined // Messages in this thread, snippet: string | undefined // Thread snippet }[] | undefined // List of email threads,\n//   next_page_token: string | undefined // Token for fetching next page,\n//   result_size_estimate: number | undefined // Estimated total number of results,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Labels example\nconst gmail_list_labels = new GmailBubble({\n  operation: \"list_labels\", // List all labels in mailbox\n});\n\nconst result = await gmail_list_labels.action();\n// outputSchema for result.data when operation === 'list_labels':\n// {\n//   operation: \"list_labels\" // List all labels in mailbox,\n//   success: boolean // Whether the label list was retrieved successfully,\n//   labels: { id: string // Label ID, name: string // Label name, type: \"system\" | \"user\" | undefined // Label type: system (built-in) or user (custom), messageListVisibility: \"show\" | \"hide\" | undefined // Visibility in message list, labelListVisibility: \"labelShow\" | \"labelShowIfUnread\" | \"labelHide\" | undefined // Visibility in label list }[] | undefined // List of labels (both system and user labels),\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Label example\nconst gmail_create_label = new GmailBubble({\n  operation: \"create_label\", // Create a new custom label\n  name: \"example string\", // Label name (display name)\n  label_list_visibility: \"labelShow\" // options: \"labelShow\", \"labelShowIfUnread\", \"labelHide\", // Visibility in label list\n  message_list_visibility: \"show\" // options: \"show\", \"hide\", // Visibility in message list\n  background_color: \"example string\", // Background color in hex format (e.g., #000000)\n  text_color: \"example string\", // Text color in hex format (e.g., #ffffff)\n});\n\nconst result = await gmail_create_label.action();\n// outputSchema for result.data when operation === 'create_label':\n// {\n//   operation: \"create_label\" // Create a new custom label,\n//   success: boolean // Whether the label was created successfully,\n//   label: { id: string // Label ID, name: string // Label name, type: \"system\" | \"user\" | undefined // Label type: system (built-in) or user (custom), messageListVisibility: \"show\" | \"hide\" | undefined // Visibility in message list, labelListVisibility: \"labelShow\" | \"labelShowIfUnread\" | \"labelHide\" | undefined // Visibility in label list } | undefined // Created label details,\n//   error: string // Error message if operation failed\n// }\n\n\n// Modify Message Labels example\nconst gmail_modify_message_labels = new GmailBubble({\n  operation: \"modify_message_labels\", // Add or remove labels from a message\n  message_id: \"example string\", // Gmail message ID to modify\n  add_label_ids: [\"example string\"], // List of label IDs to add (max 100)\n  remove_label_ids: [\"example string\"], // List of label IDs to remove (max 100)\n});\n\nconst result = await gmail_modify_message_labels.action();\n// outputSchema for result.data when operation === 'modify_message_labels':\n// {\n//   operation: \"modify_message_labels\" // Add or remove labels from a message,\n//   success: boolean // Whether the labels were modified successfully,\n//   message_id: string | undefined // Modified message ID,\n//   label_ids: string[] | undefined // Current label IDs after modification,\n//   error: string // Error message if operation failed\n// }\n\n\n// Modify Thread Labels example\nconst gmail_modify_thread_labels = new GmailBubble({\n  operation: \"modify_thread_labels\", // Add or remove labels from all messages in a thread\n  thread_id: \"example string\", // Gmail thread ID to modify\n  add_label_ids: [\"example string\"], // List of label IDs to add to all messages in thread (max 100)\n  remove_label_ids: [\"example string\"], // List of label IDs to remove from all messages in thread (max 100)\n});\n\nconst result = await gmail_modify_thread_labels.action();\n// outputSchema for result.data when operation === 'modify_thread_labels':\n// {\n//   operation: \"modify_thread_labels\" // Add or remove labels from all messages in a thread,\n//   success: boolean // Whether the thread labels were modified successfully,\n//   thread_id: string | undefined // Modified thread ID,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Attachment example\nconst gmail_get_attachment = new GmailBubble({\n  operation: \"get_attachment\", // Download an attachment from an email message\n  message_id: \"example string\", // Gmail message ID that contains the attachment\n  attachment_id: \"example string\", // Attachment ID from the message payload (found in body.attachmentId of attachment parts)\n});\n\nconst result = await gmail_get_attachment.action();\n// outputSchema for result.data when operation === 'get_attachment':\n// {\n//   operation: \"get_attachment\" // Download an attachment from an email message,\n//   success: boolean // Whether the attachment was downloaded successfully,\n//   data: string | undefined // Base64-encoded attachment content,\n//   size: number | undefined // Attachment size in bytes,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`gmail failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GMAIL_CRED"
      ]
    },
    {
      "name": "google-sheets",
      "alias": "sheets",
      "type": "service",
      "shortDescription": "Google Sheets integration for spreadsheet operations",
      "useCase": "- Read and write spreadsheet data with flexible ranges",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "read_values"
                ],
                "description": "Read values from a range"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "range": {
                "type": "string",
                "minLength": 1,
                "description": "A1 notation range. To read ALL data, use just the sheet name (e.g., \"Sheet1\") or use open-ended ranges like \"Sheet1!A:ZZ\" for columns beyond Z. Examples: \"Sheet1\" (entire sheet), \"Sheet1!A2:ZZ\" (all columns starting row 2), \"Tab Name!A1:B10\" (specific range). Tab names with spaces are automatically quoted."
              },
              "major_dimension": {
                "type": "string",
                "enum": [
                  "ROWS",
                  "COLUMNS"
                ],
                "default": "ROWS",
                "description": "Major dimension for the values"
              },
              "value_render_option": {
                "type": "string",
                "enum": [
                  "FORMATTED_VALUE",
                  "UNFORMATTED_VALUE",
                  "FORMULA"
                ],
                "default": "FORMATTED_VALUE",
                "description": "How values should be represented in the output"
              },
              "date_time_render_option": {
                "type": "string",
                "enum": [
                  "SERIAL_NUMBER",
                  "FORMATTED_STRING"
                ],
                "default": "SERIAL_NUMBER",
                "description": "How date/time values should be rendered"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id",
              "range"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "write_values"
                ],
                "description": "Write values to a range"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "range": {
                "type": "string",
                "minLength": 1,
                "description": "A1 notation range. Use \"Sheet1\" for entire sheet, \"Sheet1!A:ZZ\" for all columns beyond Z, or specific ranges like \"Sheet1!A1:B10\". Tab names with spaces are automatically quoted."
              },
              "values": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {}
                },
                "minItems": 1,
                "description": "Data to write as array of arrays (null/undefined automatically converted to empty strings)"
              },
              "major_dimension": {
                "type": "string",
                "enum": [
                  "ROWS",
                  "COLUMNS"
                ],
                "default": "ROWS",
                "description": "Major dimension for the values"
              },
              "value_input_option": {
                "type": "string",
                "enum": [
                  "RAW",
                  "USER_ENTERED"
                ],
                "default": "USER_ENTERED",
                "description": "How input data should be interpreted"
              },
              "include_values_in_response": {
                "type": "boolean",
                "default": false,
                "description": "Include updated values in response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id",
              "range",
              "values"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_values"
                ],
                "description": "Update values in a specific range"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "range": {
                "type": "string",
                "minLength": 1,
                "description": "A1 notation range. Use \"Sheet1\" for entire sheet, \"Sheet1!A:ZZ\" for all columns beyond Z, or specific ranges like \"Sheet1!A1:B10\". Tab names with spaces are automatically quoted."
              },
              "values": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {}
                },
                "minItems": 1,
                "description": "Data to update as array of arrays (null/undefined automatically converted to empty strings)"
              },
              "major_dimension": {
                "type": "string",
                "enum": [
                  "ROWS",
                  "COLUMNS"
                ],
                "default": "ROWS",
                "description": "Major dimension for the values"
              },
              "value_input_option": {
                "type": "string",
                "enum": [
                  "RAW",
                  "USER_ENTERED"
                ],
                "default": "USER_ENTERED",
                "description": "How input data should be interpreted"
              },
              "include_values_in_response": {
                "type": "boolean",
                "default": false,
                "description": "Include updated values in response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id",
              "range",
              "values"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "append_values"
                ],
                "description": "Append values to the end of a table"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "range": {
                "type": "string",
                "minLength": 1,
                "description": "A1 notation range to search for table. Use \"Sheet1\" for entire sheet, \"Sheet1!A:ZZ\" for all columns beyond Z, or \"Sheet1!A:A\" for single column. Tab names with spaces are automatically quoted."
              },
              "values": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {}
                },
                "minItems": 1,
                "description": "Data to append as array of arrays (null/undefined automatically converted to empty strings)"
              },
              "major_dimension": {
                "type": "string",
                "enum": [
                  "ROWS",
                  "COLUMNS"
                ],
                "default": "ROWS",
                "description": "Major dimension for the values"
              },
              "value_input_option": {
                "type": "string",
                "enum": [
                  "RAW",
                  "USER_ENTERED"
                ],
                "default": "USER_ENTERED",
                "description": "How input data should be interpreted"
              },
              "insert_data_option": {
                "type": "string",
                "enum": [
                  "OVERWRITE",
                  "INSERT_ROWS"
                ],
                "default": "INSERT_ROWS",
                "description": "How data should be inserted"
              },
              "include_values_in_response": {
                "type": "boolean",
                "default": false,
                "description": "Include appended values in response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id",
              "range",
              "values"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "clear_values"
                ],
                "description": "Clear values from a range"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "range": {
                "type": "string",
                "minLength": 1,
                "description": "A1 notation range. Use \"Sheet1\" for entire sheet, \"Sheet1!A:ZZ\" for all columns beyond Z, or specific ranges like \"Sheet1!A1:B10\". Tab names with spaces are automatically quoted."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id",
              "range"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_read_values"
                ],
                "description": "Read multiple ranges at once"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "ranges": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "minItems": 1,
                "description": "Array of A1 notation ranges. Use \"Sheet1\" for entire sheet, \"Sheet1!A:ZZ\" for all columns beyond Z. Tab names with spaces are automatically quoted."
              },
              "major_dimension": {
                "type": "string",
                "enum": [
                  "ROWS",
                  "COLUMNS"
                ],
                "default": "ROWS",
                "description": "Major dimension for the values"
              },
              "value_render_option": {
                "type": "string",
                "enum": [
                  "FORMATTED_VALUE",
                  "UNFORMATTED_VALUE",
                  "FORMULA"
                ],
                "default": "FORMATTED_VALUE",
                "description": "How values should be represented in the output"
              },
              "date_time_render_option": {
                "type": "string",
                "enum": [
                  "SERIAL_NUMBER",
                  "FORMATTED_STRING"
                ],
                "default": "SERIAL_NUMBER",
                "description": "How date/time values should be rendered"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id",
              "ranges"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_update_values"
                ],
                "description": "Update multiple ranges at once"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "value_ranges": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "range": {
                      "type": "string",
                      "description": "A1 notation range (tab names with spaces are automatically quoted)"
                    },
                    "values": {
                      "type": "array",
                      "items": {
                        "type": "array",
                        "items": {}
                      },
                      "description": "Data values (null/undefined automatically converted to empty strings)"
                    },
                    "major_dimension": {
                      "type": "string",
                      "enum": [
                        "ROWS",
                        "COLUMNS"
                      ],
                      "default": "ROWS"
                    }
                  },
                  "required": [
                    "range",
                    "values"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "description": "Array of value ranges to update"
              },
              "value_input_option": {
                "type": "string",
                "enum": [
                  "RAW",
                  "USER_ENTERED"
                ],
                "default": "USER_ENTERED",
                "description": "How input data should be interpreted"
              },
              "include_values_in_response": {
                "type": "boolean",
                "default": false,
                "description": "Include updated values in response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id",
              "value_ranges"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_spreadsheet_info"
                ],
                "description": "Get spreadsheet metadata and properties"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "include_grid_data": {
                "type": "boolean",
                "default": false,
                "description": "Include grid data in response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_spreadsheet"
                ],
                "description": "Create a new spreadsheet"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "Title for the new spreadsheet"
              },
              "sheet_titles": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "default": [
                  "Sheet1"
                ],
                "description": "Tab names for the initial tabs (these are the tabs at the bottom of a spreadsheet, not the spreadsheet name)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "title"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_sheet"
                ],
                "description": "Add a new tab to spreadsheet"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "sheet_title": {
                "type": "string",
                "minLength": 1,
                "description": "Tab name for the new tab (this is the tab at the bottom of a spreadsheet, not the spreadsheet name)"
              },
              "row_count": {
                "type": "number",
                "minimum": 1,
                "default": 1000,
                "description": "Number of rows in the new sheet"
              },
              "column_count": {
                "type": "number",
                "minimum": 1,
                "default": 26,
                "description": "Number of columns in the new sheet"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id",
              "sheet_title"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_sheet"
                ],
                "description": "Delete a tab from spreadsheet"
              },
              "spreadsheet_id": {
                "type": "string",
                "minLength": 1,
                "description": "Google Sheets spreadsheet ID"
              },
              "sheet_id": {
                "type": "number",
                "minimum": 0,
                "description": "ID of the sheet to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "spreadsheet_id",
              "sheet_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "read_values"
                ],
                "description": "Read values from a range"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "range": {
                "type": "string",
                "description": "The range that was read"
              },
              "values": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      }
                    ]
                  }
                },
                "description": "The values that were read"
              },
              "major_dimension": {
                "type": "string",
                "description": "Major dimension of the returned values"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "write_values"
                ],
                "description": "Write values to a range"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "updated_range": {
                "type": "string",
                "description": "The range that was updated"
              },
              "updated_rows": {
                "type": "number",
                "description": "Number of rows updated"
              },
              "updated_columns": {
                "type": "number",
                "description": "Number of columns updated"
              },
              "updated_cells": {
                "type": "number",
                "description": "Number of cells updated"
              },
              "updated_data": {
                "type": "object",
                "properties": {
                  "range": {
                    "type": "string",
                    "description": "The A1 notation range"
                  },
                  "majorDimension": {
                    "type": "string",
                    "enum": [
                      "ROWS",
                      "COLUMNS"
                    ],
                    "description": "Major dimension of the values"
                  },
                  "values": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      }
                    },
                    "description": "The data values as array of arrays"
                  }
                },
                "required": [
                  "range",
                  "values"
                ],
                "additionalProperties": false,
                "description": "Updated data if requested"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_values"
                ],
                "description": "Update values in a specific range"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "updated_range": {
                "type": "string",
                "description": "The range that was updated"
              },
              "updated_rows": {
                "type": "number",
                "description": "Number of rows updated"
              },
              "updated_columns": {
                "type": "number",
                "description": "Number of columns updated"
              },
              "updated_cells": {
                "type": "number",
                "description": "Number of cells updated"
              },
              "updated_data": {
                "type": "object",
                "properties": {
                  "range": {
                    "type": "string",
                    "description": "The A1 notation range"
                  },
                  "majorDimension": {
                    "type": "string",
                    "enum": [
                      "ROWS",
                      "COLUMNS"
                    ],
                    "description": "Major dimension of the values"
                  },
                  "values": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      }
                    },
                    "description": "The data values as array of arrays"
                  }
                },
                "required": [
                  "range",
                  "values"
                ],
                "additionalProperties": false,
                "description": "Updated data if requested"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "append_values"
                ],
                "description": "Append values to the end of a table"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "table_range": {
                "type": "string",
                "description": "The table range values were appended to"
              },
              "updated_range": {
                "type": "string",
                "description": "The range that was updated"
              },
              "updated_rows": {
                "type": "number",
                "description": "Number of rows updated"
              },
              "updated_columns": {
                "type": "number",
                "description": "Number of columns updated"
              },
              "updated_cells": {
                "type": "number",
                "description": "Number of cells updated"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "clear_values"
                ],
                "description": "Clear values from a range"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "cleared_range": {
                "type": "string",
                "description": "The range that was cleared"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_read_values"
                ],
                "description": "Read multiple ranges at once"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "value_ranges": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "range": {
                      "type": "string",
                      "description": "The A1 notation range"
                    },
                    "majorDimension": {
                      "type": "string",
                      "enum": [
                        "ROWS",
                        "COLUMNS"
                      ],
                      "description": "Major dimension of the values"
                    },
                    "values": {
                      "type": "array",
                      "items": {
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "description": "The data values as array of arrays"
                    }
                  },
                  "required": [
                    "range",
                    "values"
                  ],
                  "additionalProperties": false,
                  "description": "Range of values in a spreadsheet"
                },
                "description": "Array of value ranges that were read"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_update_values"
                ],
                "description": "Update multiple ranges at once"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "total_updated_rows": {
                "type": "number",
                "description": "Total number of rows updated across all ranges"
              },
              "total_updated_columns": {
                "type": "number",
                "description": "Total number of columns updated across all ranges"
              },
              "total_updated_cells": {
                "type": "number",
                "description": "Total number of cells updated across all ranges"
              },
              "total_updated_sheets": {
                "type": "number",
                "description": "Total number of sheets updated"
              },
              "responses": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "updated_range": {
                      "type": "string",
                      "description": "Range that was updated"
                    },
                    "updated_rows": {
                      "type": "number",
                      "description": "Number of rows updated in this range"
                    },
                    "updated_columns": {
                      "type": "number",
                      "description": "Number of columns updated in this range"
                    },
                    "updated_cells": {
                      "type": "number",
                      "description": "Number of cells updated in this range"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Individual range update response"
                },
                "description": "Individual update responses"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_spreadsheet_info"
                ],
                "description": "Get spreadsheet metadata and properties"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "spreadsheet": {
                "type": "object",
                "properties": {
                  "spreadsheetId": {
                    "type": "string",
                    "description": "Unique spreadsheet identifier"
                  },
                  "properties": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Spreadsheet title"
                      },
                      "locale": {
                        "type": "string",
                        "description": "Spreadsheet locale"
                      },
                      "autoRecalc": {
                        "type": "string",
                        "description": "Auto recalc setting"
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "Time zone"
                      }
                    },
                    "required": [
                      "title"
                    ],
                    "additionalProperties": false,
                    "description": "Spreadsheet properties"
                  },
                  "sheets": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "properties": {
                          "type": "object",
                          "properties": {
                            "sheetId": {
                              "type": "number",
                              "description": "Sheet ID"
                            },
                            "title": {
                              "type": "string",
                              "description": "Sheet title"
                            },
                            "index": {
                              "type": "number",
                              "description": "Sheet index"
                            },
                            "sheetType": {
                              "type": "string",
                              "description": "Sheet type"
                            },
                            "gridProperties": {
                              "type": "object",
                              "properties": {
                                "rowCount": {
                                  "type": "number",
                                  "description": "Number of rows in the sheet"
                                },
                                "columnCount": {
                                  "type": "number",
                                  "description": "Number of columns in the sheet"
                                }
                              },
                              "additionalProperties": false,
                              "description": "Grid properties of the sheet"
                            }
                          },
                          "required": [
                            "sheetId",
                            "title",
                            "index"
                          ],
                          "additionalProperties": false,
                          "description": "Sheet properties"
                        }
                      },
                      "required": [
                        "properties"
                      ],
                      "additionalProperties": false,
                      "description": "Sheet information"
                    },
                    "description": "List of sheets in the spreadsheet"
                  },
                  "spreadsheetUrl": {
                    "type": "string",
                    "description": "URL to the spreadsheet"
                  }
                },
                "required": [
                  "spreadsheetId"
                ],
                "additionalProperties": false,
                "description": "Spreadsheet information"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_spreadsheet"
                ],
                "description": "Create a new spreadsheet"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "spreadsheet": {
                "type": "object",
                "properties": {
                  "spreadsheetId": {
                    "type": "string",
                    "description": "Unique spreadsheet identifier"
                  },
                  "properties": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Spreadsheet title"
                      },
                      "locale": {
                        "type": "string",
                        "description": "Spreadsheet locale"
                      },
                      "autoRecalc": {
                        "type": "string",
                        "description": "Auto recalc setting"
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "Time zone"
                      }
                    },
                    "required": [
                      "title"
                    ],
                    "additionalProperties": false,
                    "description": "Spreadsheet properties"
                  },
                  "sheets": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "properties": {
                          "type": "object",
                          "properties": {
                            "sheetId": {
                              "type": "number",
                              "description": "Sheet ID"
                            },
                            "title": {
                              "type": "string",
                              "description": "Sheet title"
                            },
                            "index": {
                              "type": "number",
                              "description": "Sheet index"
                            },
                            "sheetType": {
                              "type": "string",
                              "description": "Sheet type"
                            },
                            "gridProperties": {
                              "type": "object",
                              "properties": {
                                "rowCount": {
                                  "type": "number",
                                  "description": "Number of rows in the sheet"
                                },
                                "columnCount": {
                                  "type": "number",
                                  "description": "Number of columns in the sheet"
                                }
                              },
                              "additionalProperties": false,
                              "description": "Grid properties of the sheet"
                            }
                          },
                          "required": [
                            "sheetId",
                            "title",
                            "index"
                          ],
                          "additionalProperties": false,
                          "description": "Sheet properties"
                        }
                      },
                      "required": [
                        "properties"
                      ],
                      "additionalProperties": false,
                      "description": "Sheet information"
                    },
                    "description": "List of sheets in the spreadsheet"
                  },
                  "spreadsheetUrl": {
                    "type": "string",
                    "description": "URL to the spreadsheet"
                  }
                },
                "required": [
                  "spreadsheetId"
                ],
                "additionalProperties": false,
                "description": "Created spreadsheet information"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_sheet"
                ],
                "description": "Add a new tab to spreadsheet"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "sheet_id": {
                "type": "number",
                "description": "ID of the added sheet"
              },
              "sheet_title": {
                "type": "string",
                "description": "Tab name of the added tab"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_sheet"
                ],
                "description": "Delete a tab from spreadsheet"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "deleted_sheet_id": {
                "type": "number",
                "description": "ID of the deleted sheet"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Read Values example\nconst googleSheets_read_values = new GoogleSheetsBubble({\n  operation: \"read_values\", // Read values from a range\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n  major_dimension: \"ROWS\" // options: \"ROWS\", \"COLUMNS\", // Major dimension for the values\n  value_render_option: \"FORMATTED_VALUE\" // options: \"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\", // How values should be represented in the output\n  date_time_render_option: \"SERIAL_NUMBER\" // options: \"SERIAL_NUMBER\", \"FORMATTED_STRING\", // How date/time values should be rendered\n});\n\nconst result = await googleSheets_read_values.action();\n// outputSchema for result.data when operation === 'read_values':\n// {\n//   operation: \"read_values\" // Read values from a range,\n//   success: boolean // Whether the operation was successful,\n//   range: string | undefined // The range that was read,\n//   values: unknown[][] | undefined // The values that were read,\n//   major_dimension: string | undefined // Major dimension of the returned values,\n//   error: string // Error message if operation failed\n// }\n\n\n// Write Values example\nconst googleSheets_write_values = new GoogleSheetsBubble({\n  operation: \"write_values\", // Write values to a range\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n  major_dimension: \"ROWS\" // options: \"ROWS\", \"COLUMNS\", // Major dimension for the values\n  value_input_option: \"RAW\" // options: \"RAW\", \"USER_ENTERED\", // How input data should be interpreted\n  include_values_in_response: false // default, // Include updated values in response\n});\n\nconst result = await googleSheets_write_values.action();\n// outputSchema for result.data when operation === 'write_values':\n// {\n//   operation: \"write_values\" // Write values to a range,\n//   success: boolean // Whether the operation was successful,\n//   updated_range: string | undefined // The range that was updated,\n//   updated_rows: number | undefined // Number of rows updated,\n//   updated_columns: number | undefined // Number of columns updated,\n//   updated_cells: number | undefined // Number of cells updated,\n//   updated_data: { range: string // The A1 notation range, majorDimension: \"ROWS\" | \"COLUMNS\" | undefined // Major dimension of the values, values: unknown[][] // The data values as array of arrays } | undefined // Updated data if requested,\n//   error: string // Error message if operation failed\n// }\n\n\n// Update Values example\nconst googleSheets_update_values = new GoogleSheetsBubble({\n  operation: \"update_values\", // Update values in a specific range\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n  major_dimension: \"ROWS\" // options: \"ROWS\", \"COLUMNS\", // Major dimension for the values\n  value_input_option: \"RAW\" // options: \"RAW\", \"USER_ENTERED\", // How input data should be interpreted\n  include_values_in_response: false // default, // Include updated values in response\n});\n\nconst result = await googleSheets_update_values.action();\n// outputSchema for result.data when operation === 'update_values':\n// {\n//   operation: \"update_values\" // Update values in a specific range,\n//   success: boolean // Whether the operation was successful,\n//   updated_range: string | undefined // The range that was updated,\n//   updated_rows: number | undefined // Number of rows updated,\n//   updated_columns: number | undefined // Number of columns updated,\n//   updated_cells: number | undefined // Number of cells updated,\n//   updated_data: { range: string // The A1 notation range, majorDimension: \"ROWS\" | \"COLUMNS\" | undefined // Major dimension of the values, values: unknown[][] // The data values as array of arrays } | undefined // Updated data if requested,\n//   error: string // Error message if operation failed\n// }\n\n\n// Append Values example\nconst googleSheets_append_values = new GoogleSheetsBubble({\n  operation: \"append_values\", // Append values to the end of a table\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n  major_dimension: \"ROWS\" // options: \"ROWS\", \"COLUMNS\", // Major dimension for the values\n  value_input_option: \"RAW\" // options: \"RAW\", \"USER_ENTERED\", // How input data should be interpreted\n  insert_data_option: \"OVERWRITE\" // options: \"OVERWRITE\", \"INSERT_ROWS\", // How data should be inserted\n  include_values_in_response: false // default, // Include appended values in response\n});\n\nconst result = await googleSheets_append_values.action();\n// outputSchema for result.data when operation === 'append_values':\n// {\n//   operation: \"append_values\" // Append values to the end of a table,\n//   success: boolean // Whether the operation was successful,\n//   table_range: string | undefined // The table range values were appended to,\n//   updated_range: string | undefined // The range that was updated,\n//   updated_rows: number | undefined // Number of rows updated,\n//   updated_columns: number | undefined // Number of columns updated,\n//   updated_cells: number | undefined // Number of cells updated,\n//   error: string // Error message if operation failed\n// }\n\n\n// Clear Values example\nconst googleSheets_clear_values = new GoogleSheetsBubble({\n  operation: \"clear_values\", // Clear values from a range\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n});\n\nconst result = await googleSheets_clear_values.action();\n// outputSchema for result.data when operation === 'clear_values':\n// {\n//   operation: \"clear_values\" // Clear values from a range,\n//   success: boolean // Whether the operation was successful,\n//   cleared_range: string | undefined // The range that was cleared,\n//   error: string // Error message if operation failed\n// }\n\n\n// Batch Read Values example\nconst googleSheets_batch_read_values = new GoogleSheetsBubble({\n  operation: \"batch_read_values\", // Read multiple ranges at once\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n  major_dimension: \"ROWS\" // options: \"ROWS\", \"COLUMNS\", // Major dimension for the values\n  value_render_option: \"FORMATTED_VALUE\" // options: \"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\", // How values should be represented in the output\n  date_time_render_option: \"SERIAL_NUMBER\" // options: \"SERIAL_NUMBER\", \"FORMATTED_STRING\", // How date/time values should be rendered\n});\n\nconst result = await googleSheets_batch_read_values.action();\n// outputSchema for result.data when operation === 'batch_read_values':\n// {\n//   operation: \"batch_read_values\" // Read multiple ranges at once,\n//   success: boolean // Whether the operation was successful,\n//   value_ranges: { range: string // The A1 notation range, majorDimension: \"ROWS\" | \"COLUMNS\" | undefined // Major dimension of the values, values: unknown[][] // The data values as array of arrays }[] | undefined // Array of value ranges that were read,\n//   error: string // Error message if operation failed\n// }\n\n\n// Batch Update Values example\nconst googleSheets_batch_update_values = new GoogleSheetsBubble({\n  operation: \"batch_update_values\", // Update multiple ranges at once\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n  value_ranges: [{ major_dimension: \"ROWS\" // options: \"ROWS\", \"COLUMNS\" }], // Array of value ranges to update\n  value_input_option: \"RAW\" // options: \"RAW\", \"USER_ENTERED\", // How input data should be interpreted\n  include_values_in_response: false // default, // Include updated values in response\n});\n\nconst result = await googleSheets_batch_update_values.action();\n// outputSchema for result.data when operation === 'batch_update_values':\n// {\n//   operation: \"batch_update_values\" // Update multiple ranges at once,\n//   success: boolean // Whether the operation was successful,\n//   total_updated_rows: number | undefined // Total number of rows updated across all ranges,\n//   total_updated_columns: number | undefined // Total number of columns updated across all ranges,\n//   total_updated_cells: number | undefined // Total number of cells updated across all ranges,\n//   total_updated_sheets: number | undefined // Total number of sheets updated,\n//   responses: { updated_range: string | undefined // Range that was updated, updated_rows: number | undefined // Number of rows updated in this range, updated_columns: number | undefined // Number of columns updated in this range, updated_cells: number | undefined // Number of cells updated in this range }[] | undefined // Individual update responses,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Spreadsheet Info example\nconst googleSheets_get_spreadsheet_info = new GoogleSheetsBubble({\n  operation: \"get_spreadsheet_info\", // Get spreadsheet metadata and properties\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n  include_grid_data: false // default, // Include grid data in response\n});\n\nconst result = await googleSheets_get_spreadsheet_info.action();\n// outputSchema for result.data when operation === 'get_spreadsheet_info':\n// {\n//   operation: \"get_spreadsheet_info\" // Get spreadsheet metadata and properties,\n//   success: boolean // Whether the operation was successful,\n//   spreadsheet: { spreadsheetId: string // Unique spreadsheet identifier, properties: { title: string // Spreadsheet title, locale: string | undefined // Spreadsheet locale, autoRecalc: string | undefined // Auto recalc setting, timeZone: string | undefined // Time zone } | undefined // Spreadsheet properties, sheets: { properties: { sheetId: number // Sheet ID, title: string // Sheet title, index: number // Sheet index, sheetType: string | undefined // Sheet type, gridProperties: { rowCount: number | undefined // Number of rows in the sheet, columnCount: number | undefined // Number of columns in the sheet } | undefined // Grid properties of the sheet } // Sheet properties }[] | undefined // List of sheets in the spreadsheet, spreadsheetUrl: string | undefined // URL to the spreadsheet } | undefined // Spreadsheet information,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Spreadsheet example\nconst googleSheets_create_spreadsheet = new GoogleSheetsBubble({\n  operation: \"create_spreadsheet\", // Create a new spreadsheet\n  title: \"example string\", // Title for the new spreadsheet\n  sheet_titles: [\"Sheet1\"] // default, // Tab names for the initial tabs (these are the tabs at the bottom of a spreadsheet, not the spreadsheet name)\n});\n\nconst result = await googleSheets_create_spreadsheet.action();\n// outputSchema for result.data when operation === 'create_spreadsheet':\n// {\n//   operation: \"create_spreadsheet\" // Create a new spreadsheet,\n//   success: boolean // Whether the operation was successful,\n//   spreadsheet: { spreadsheetId: string // Unique spreadsheet identifier, properties: { title: string // Spreadsheet title, locale: string | undefined // Spreadsheet locale, autoRecalc: string | undefined // Auto recalc setting, timeZone: string | undefined // Time zone } | undefined // Spreadsheet properties, sheets: { properties: { sheetId: number // Sheet ID, title: string // Sheet title, index: number // Sheet index, sheetType: string | undefined // Sheet type, gridProperties: { rowCount: number | undefined // Number of rows in the sheet, columnCount: number | undefined // Number of columns in the sheet } | undefined // Grid properties of the sheet } // Sheet properties }[] | undefined // List of sheets in the spreadsheet, spreadsheetUrl: string | undefined // URL to the spreadsheet } | undefined // Created spreadsheet information,\n//   error: string // Error message if operation failed\n// }\n\n\n// Add Sheet example\nconst googleSheets_add_sheet = new GoogleSheetsBubble({\n  operation: \"add_sheet\", // Add a new tab to spreadsheet\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n  sheet_title: \"example string\", // Tab name for the new tab (this is the tab at the bottom of a spreadsheet, not the spreadsheet name)\n  row_count: 1000 // default, // Number of rows in the new sheet\n  column_count: 26 // default, // Number of columns in the new sheet\n});\n\nconst result = await googleSheets_add_sheet.action();\n// outputSchema for result.data when operation === 'add_sheet':\n// {\n//   operation: \"add_sheet\" // Add a new tab to spreadsheet,\n//   success: boolean // Whether the operation was successful,\n//   sheet_id: number | undefined // ID of the added sheet,\n//   sheet_title: string | undefined // Tab name of the added tab,\n//   error: string // Error message if operation failed\n// }\n\n\n// Delete Sheet example\nconst googleSheets_delete_sheet = new GoogleSheetsBubble({\n  operation: \"delete_sheet\", // Delete a tab from spreadsheet\n  spreadsheet_id: \"example string\", // Google Sheets spreadsheet ID\n  sheet_id: 42, // ID of the sheet to delete\n});\n\nconst result = await googleSheets_delete_sheet.action();\n// outputSchema for result.data when operation === 'delete_sheet':\n// {\n//   operation: \"delete_sheet\" // Delete a tab from spreadsheet,\n//   success: boolean // Whether the operation was successful,\n//   deleted_sheet_id: number | undefined // ID of the deleted sheet,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`google-sheets failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GOOGLE_SHEETS_CRED"
      ]
    },
    {
      "name": "google-calendar",
      "alias": "gcal",
      "type": "service",
      "shortDescription": "Google Calendar integration for managing events",
      "useCase": "- List calendars and events with filters and pagination",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_calendars"
                ],
                "description": "List calendars for the user"
              },
              "max_results": {
                "type": "number",
                "minimum": 1,
                "maximum": 250,
                "default": 50,
                "description": "Maximum number of calendars to return"
              },
              "page_token": {
                "type": "string",
                "description": "Token for fetching next page"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_events"
                ],
                "description": "List events in a calendar"
              },
              "calendar_id": {
                "type": "string",
                "default": "primary",
                "description": "Calendar ID"
              },
              "time_min": {
                "type": "string",
                "description": "Lower bound (RFC3339 timestamp)"
              },
              "time_max": {
                "type": "string",
                "description": "Upper bound (RFC3339 timestamp)"
              },
              "q": {
                "type": "string",
                "description": "Free text search query"
              },
              "single_events": {
                "type": "boolean",
                "default": true,
                "description": "Expand recurring events"
              },
              "order_by": {
                "type": "string",
                "enum": [
                  "startTime",
                  "updated"
                ],
                "default": "startTime",
                "description": "Sort order"
              },
              "page_token": {
                "type": "string",
                "description": "Token for fetching next page"
              },
              "max_results": {
                "type": "number",
                "minimum": 1,
                "maximum": 250,
                "default": 50,
                "description": "Maximum number of events to return"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_event"
                ],
                "description": "Get a single event"
              },
              "calendar_id": {
                "type": "string",
                "default": "primary",
                "description": "Calendar ID"
              },
              "event_id": {
                "type": "string",
                "minLength": 1,
                "description": "Event ID to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "event_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_event"
                ],
                "description": "Create an event"
              },
              "calendar_id": {
                "type": "string",
                "default": "primary",
                "description": "Calendar ID"
              },
              "summary": {
                "type": "string",
                "minLength": 1,
                "description": "Event title"
              },
              "description": {
                "type": "string",
                "description": "Event description"
              },
              "location": {
                "type": "string",
                "description": "Event location"
              },
              "start": {
                "type": "object",
                "properties": {
                  "dateTime": {
                    "type": "string",
                    "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                  },
                  "date": {
                    "type": "string",
                    "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                  },
                  "timeZone": {
                    "type": "string",
                    "description": "Time zone for the event time"
                  }
                },
                "additionalProperties": false,
                "description": "Start date/time"
              },
              "end": {
                "type": "object",
                "properties": {
                  "dateTime": {
                    "type": "string",
                    "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                  },
                  "date": {
                    "type": "string",
                    "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                  },
                  "timeZone": {
                    "type": "string",
                    "description": "Time zone for the event time"
                  }
                },
                "additionalProperties": false,
                "description": "End date/time"
              },
              "attendees": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "Attendee email"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether this attendee is optional"
                    },
                    "responseStatus": {
                      "type": "string",
                      "enum": [
                        "needsAction",
                        "declined",
                        "tentative",
                        "accepted"
                      ],
                      "description": "Response status of the attendee"
                    },
                    "displayName": {
                      "type": "string",
                      "description": "Display name of the attendee"
                    }
                  },
                  "required": [
                    "email"
                  ],
                  "additionalProperties": false,
                  "description": "Event attendee"
                },
                "description": "List of event attendees"
              },
              "conference": {
                "type": "boolean",
                "default": false,
                "description": "Create a Google Meet conference link"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "summary",
              "start",
              "end"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_event"
                ],
                "description": "Update an existing event"
              },
              "calendar_id": {
                "type": "string",
                "default": "primary",
                "description": "Calendar ID"
              },
              "event_id": {
                "type": "string",
                "minLength": 1,
                "description": "Event ID to update"
              },
              "summary": {
                "type": "string",
                "description": "Event title"
              },
              "description": {
                "type": "string",
                "description": "Event description"
              },
              "location": {
                "type": "string",
                "description": "Event location"
              },
              "start": {
                "type": "object",
                "properties": {
                  "dateTime": {
                    "type": "string",
                    "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                  },
                  "date": {
                    "type": "string",
                    "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                  },
                  "timeZone": {
                    "type": "string",
                    "description": "Time zone for the event time"
                  }
                },
                "additionalProperties": false,
                "description": "Start date/time"
              },
              "end": {
                "type": "object",
                "properties": {
                  "dateTime": {
                    "type": "string",
                    "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                  },
                  "date": {
                    "type": "string",
                    "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                  },
                  "timeZone": {
                    "type": "string",
                    "description": "Time zone for the event time"
                  }
                },
                "additionalProperties": false,
                "description": "End date/time"
              },
              "attendees": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "Attendee email"
                    },
                    "optional": {
                      "type": "boolean",
                      "description": "Whether this attendee is optional"
                    },
                    "responseStatus": {
                      "type": "string",
                      "enum": [
                        "needsAction",
                        "declined",
                        "tentative",
                        "accepted"
                      ],
                      "description": "Response status of the attendee"
                    },
                    "displayName": {
                      "type": "string",
                      "description": "Display name of the attendee"
                    }
                  },
                  "required": [
                    "email"
                  ],
                  "additionalProperties": false,
                  "description": "Event attendee"
                },
                "description": "List of event attendees"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "event_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_event"
                ],
                "description": "Delete an event"
              },
              "calendar_id": {
                "type": "string",
                "default": "primary",
                "description": "Calendar ID"
              },
              "event_id": {
                "type": "string",
                "minLength": 1,
                "description": "Event ID to delete"
              },
              "send_updates": {
                "type": "string",
                "enum": [
                  "all",
                  "externalOnly",
                  "none"
                ],
                "default": "none",
                "description": "Whether to notify attendees"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "event_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_calendars"
                ],
                "description": "List calendars for the user"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the calendar list was retrieved successfully"
              },
              "calendars": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Calendar ID"
                    },
                    "summary": {
                      "type": "string",
                      "description": "Calendar title"
                    },
                    "description": {
                      "type": "string",
                      "description": "Calendar description"
                    },
                    "timeZone": {
                      "type": "string",
                      "description": "Calendar time zone"
                    },
                    "selected": {
                      "type": "boolean",
                      "description": "Whether this calendar is selected"
                    },
                    "accessRole": {
                      "type": "string",
                      "enum": [
                        "freeBusyReader",
                        "reader",
                        "writer",
                        "owner"
                      ],
                      "description": "Access role for the user"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": true,
                  "description": "Google Calendar list entry"
                },
                "description": "List of calendars"
              },
              "next_page_token": {
                "type": "string",
                "description": "Token for fetching next page"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_events"
                ],
                "description": "List events in a calendar"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the event list was retrieved successfully"
              },
              "events": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Event ID"
                    },
                    "status": {
                      "type": "string",
                      "description": "Event status (confirmed, tentative, cancelled)"
                    },
                    "htmlLink": {
                      "type": "string",
                      "description": "Link to the event in Calendar UI"
                    },
                    "created": {
                      "type": "string",
                      "description": "Event creation timestamp"
                    },
                    "updated": {
                      "type": "string",
                      "description": "Event last updated timestamp"
                    },
                    "summary": {
                      "type": "string",
                      "description": "Event title"
                    },
                    "description": {
                      "type": "string",
                      "description": "Event description"
                    },
                    "location": {
                      "type": "string",
                      "description": "Event location"
                    },
                    "start": {
                      "type": "object",
                      "properties": {
                        "dateTime": {
                          "type": "string",
                          "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                        },
                        "date": {
                          "type": "string",
                          "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                        },
                        "timeZone": {
                          "type": "string",
                          "description": "Time zone for the event time"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Event start date/time"
                    },
                    "end": {
                      "type": "object",
                      "properties": {
                        "dateTime": {
                          "type": "string",
                          "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                        },
                        "date": {
                          "type": "string",
                          "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                        },
                        "timeZone": {
                          "type": "string",
                          "description": "Time zone for the event time"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Event end date/time"
                    },
                    "attendees": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Attendee email"
                          },
                          "optional": {
                            "type": "boolean",
                            "description": "Whether this attendee is optional"
                          },
                          "responseStatus": {
                            "type": "string",
                            "enum": [
                              "needsAction",
                              "declined",
                              "tentative",
                              "accepted"
                            ],
                            "description": "Response status of the attendee"
                          },
                          "displayName": {
                            "type": "string",
                            "description": "Display name of the attendee"
                          }
                        },
                        "required": [
                          "email"
                        ],
                        "additionalProperties": false,
                        "description": "Event attendee"
                      },
                      "description": "List of event attendees"
                    },
                    "organizer": {
                      "type": "object",
                      "properties": {
                        "email": {
                          "type": "string",
                          "description": "Organizer email address"
                        },
                        "displayName": {
                          "type": "string",
                          "description": "Organizer display name"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Event organizer information"
                    },
                    "hangoutLink": {
                      "type": "string",
                      "description": "Google Hangout/Meet link for the event"
                    },
                    "conferenceData": {
                      "description": "Conference data for virtual meetings"
                    },
                    "attachments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "fileId": {
                            "type": "string",
                            "description": "Google Drive file ID"
                          },
                          "fileUrl": {
                            "type": "string",
                            "description": "URL link to the attachment"
                          },
                          "title": {
                            "type": "string",
                            "description": "Attachment title/filename"
                          },
                          "mimeType": {
                            "type": "string",
                            "description": "MIME type of the attachment"
                          },
                          "iconLink": {
                            "type": "string",
                            "description": "URL link to the attachment icon"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Event attachment (Google Drive file)"
                      },
                      "description": "List of file attachments on the event"
                    },
                    "driveAttachmentFileIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "List of Google Drive file IDs extracted from event attachments"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": true,
                  "description": "Google Calendar event"
                },
                "description": "List of events"
              },
              "next_page_token": {
                "type": "string",
                "description": "Token for fetching next page"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_event"
                ],
                "description": "Get a single event"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the event was retrieved successfully"
              },
              "event": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Event ID"
                  },
                  "status": {
                    "type": "string",
                    "description": "Event status (confirmed, tentative, cancelled)"
                  },
                  "htmlLink": {
                    "type": "string",
                    "description": "Link to the event in Calendar UI"
                  },
                  "created": {
                    "type": "string",
                    "description": "Event creation timestamp"
                  },
                  "updated": {
                    "type": "string",
                    "description": "Event last updated timestamp"
                  },
                  "summary": {
                    "type": "string",
                    "description": "Event title"
                  },
                  "description": {
                    "type": "string",
                    "description": "Event description"
                  },
                  "location": {
                    "type": "string",
                    "description": "Event location"
                  },
                  "start": {
                    "type": "object",
                    "properties": {
                      "dateTime": {
                        "type": "string",
                        "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                      },
                      "date": {
                        "type": "string",
                        "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "Time zone for the event time"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Event start date/time"
                  },
                  "end": {
                    "type": "object",
                    "properties": {
                      "dateTime": {
                        "type": "string",
                        "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                      },
                      "date": {
                        "type": "string",
                        "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "Time zone for the event time"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Event end date/time"
                  },
                  "attendees": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "email": {
                          "type": "string",
                          "format": "email",
                          "description": "Attendee email"
                        },
                        "optional": {
                          "type": "boolean",
                          "description": "Whether this attendee is optional"
                        },
                        "responseStatus": {
                          "type": "string",
                          "enum": [
                            "needsAction",
                            "declined",
                            "tentative",
                            "accepted"
                          ],
                          "description": "Response status of the attendee"
                        },
                        "displayName": {
                          "type": "string",
                          "description": "Display name of the attendee"
                        }
                      },
                      "required": [
                        "email"
                      ],
                      "additionalProperties": false,
                      "description": "Event attendee"
                    },
                    "description": "List of event attendees"
                  },
                  "organizer": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Organizer email address"
                      },
                      "displayName": {
                        "type": "string",
                        "description": "Organizer display name"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Event organizer information"
                  },
                  "hangoutLink": {
                    "type": "string",
                    "description": "Google Hangout/Meet link for the event"
                  },
                  "conferenceData": {
                    "description": "Conference data for virtual meetings"
                  },
                  "attachments": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "fileId": {
                          "type": "string",
                          "description": "Google Drive file ID"
                        },
                        "fileUrl": {
                          "type": "string",
                          "description": "URL link to the attachment"
                        },
                        "title": {
                          "type": "string",
                          "description": "Attachment title/filename"
                        },
                        "mimeType": {
                          "type": "string",
                          "description": "MIME type of the attachment"
                        },
                        "iconLink": {
                          "type": "string",
                          "description": "URL link to the attachment icon"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Event attachment (Google Drive file)"
                    },
                    "description": "List of file attachments on the event"
                  },
                  "driveAttachmentFileIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of Google Drive file IDs extracted from event attachments"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "Event details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_event"
                ],
                "description": "Create an event"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the event was created successfully"
              },
              "event": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Event ID"
                  },
                  "status": {
                    "type": "string",
                    "description": "Event status (confirmed, tentative, cancelled)"
                  },
                  "htmlLink": {
                    "type": "string",
                    "description": "Link to the event in Calendar UI"
                  },
                  "created": {
                    "type": "string",
                    "description": "Event creation timestamp"
                  },
                  "updated": {
                    "type": "string",
                    "description": "Event last updated timestamp"
                  },
                  "summary": {
                    "type": "string",
                    "description": "Event title"
                  },
                  "description": {
                    "type": "string",
                    "description": "Event description"
                  },
                  "location": {
                    "type": "string",
                    "description": "Event location"
                  },
                  "start": {
                    "type": "object",
                    "properties": {
                      "dateTime": {
                        "type": "string",
                        "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                      },
                      "date": {
                        "type": "string",
                        "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "Time zone for the event time"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Event start date/time"
                  },
                  "end": {
                    "type": "object",
                    "properties": {
                      "dateTime": {
                        "type": "string",
                        "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                      },
                      "date": {
                        "type": "string",
                        "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "Time zone for the event time"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Event end date/time"
                  },
                  "attendees": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "email": {
                          "type": "string",
                          "format": "email",
                          "description": "Attendee email"
                        },
                        "optional": {
                          "type": "boolean",
                          "description": "Whether this attendee is optional"
                        },
                        "responseStatus": {
                          "type": "string",
                          "enum": [
                            "needsAction",
                            "declined",
                            "tentative",
                            "accepted"
                          ],
                          "description": "Response status of the attendee"
                        },
                        "displayName": {
                          "type": "string",
                          "description": "Display name of the attendee"
                        }
                      },
                      "required": [
                        "email"
                      ],
                      "additionalProperties": false,
                      "description": "Event attendee"
                    },
                    "description": "List of event attendees"
                  },
                  "organizer": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Organizer email address"
                      },
                      "displayName": {
                        "type": "string",
                        "description": "Organizer display name"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Event organizer information"
                  },
                  "hangoutLink": {
                    "type": "string",
                    "description": "Google Hangout/Meet link for the event"
                  },
                  "conferenceData": {
                    "description": "Conference data for virtual meetings"
                  },
                  "attachments": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "fileId": {
                          "type": "string",
                          "description": "Google Drive file ID"
                        },
                        "fileUrl": {
                          "type": "string",
                          "description": "URL link to the attachment"
                        },
                        "title": {
                          "type": "string",
                          "description": "Attachment title/filename"
                        },
                        "mimeType": {
                          "type": "string",
                          "description": "MIME type of the attachment"
                        },
                        "iconLink": {
                          "type": "string",
                          "description": "URL link to the attachment icon"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Event attachment (Google Drive file)"
                    },
                    "description": "List of file attachments on the event"
                  },
                  "driveAttachmentFileIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of Google Drive file IDs extracted from event attachments"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "Created event details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_event"
                ],
                "description": "Update an existing event"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the event was updated successfully"
              },
              "event": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Event ID"
                  },
                  "status": {
                    "type": "string",
                    "description": "Event status (confirmed, tentative, cancelled)"
                  },
                  "htmlLink": {
                    "type": "string",
                    "description": "Link to the event in Calendar UI"
                  },
                  "created": {
                    "type": "string",
                    "description": "Event creation timestamp"
                  },
                  "updated": {
                    "type": "string",
                    "description": "Event last updated timestamp"
                  },
                  "summary": {
                    "type": "string",
                    "description": "Event title"
                  },
                  "description": {
                    "type": "string",
                    "description": "Event description"
                  },
                  "location": {
                    "type": "string",
                    "description": "Event location"
                  },
                  "start": {
                    "type": "object",
                    "properties": {
                      "dateTime": {
                        "type": "string",
                        "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                      },
                      "date": {
                        "type": "string",
                        "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "Time zone for the event time"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Event start date/time"
                  },
                  "end": {
                    "type": "object",
                    "properties": {
                      "dateTime": {
                        "type": "string",
                        "description": "RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00"
                      },
                      "date": {
                        "type": "string",
                        "description": "All-day date in YYYY-MM-DD (mutually exclusive with dateTime)"
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "Time zone for the event time"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Event end date/time"
                  },
                  "attendees": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "email": {
                          "type": "string",
                          "format": "email",
                          "description": "Attendee email"
                        },
                        "optional": {
                          "type": "boolean",
                          "description": "Whether this attendee is optional"
                        },
                        "responseStatus": {
                          "type": "string",
                          "enum": [
                            "needsAction",
                            "declined",
                            "tentative",
                            "accepted"
                          ],
                          "description": "Response status of the attendee"
                        },
                        "displayName": {
                          "type": "string",
                          "description": "Display name of the attendee"
                        }
                      },
                      "required": [
                        "email"
                      ],
                      "additionalProperties": false,
                      "description": "Event attendee"
                    },
                    "description": "List of event attendees"
                  },
                  "organizer": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Organizer email address"
                      },
                      "displayName": {
                        "type": "string",
                        "description": "Organizer display name"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Event organizer information"
                  },
                  "hangoutLink": {
                    "type": "string",
                    "description": "Google Hangout/Meet link for the event"
                  },
                  "conferenceData": {
                    "description": "Conference data for virtual meetings"
                  },
                  "attachments": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "fileId": {
                          "type": "string",
                          "description": "Google Drive file ID"
                        },
                        "fileUrl": {
                          "type": "string",
                          "description": "URL link to the attachment"
                        },
                        "title": {
                          "type": "string",
                          "description": "Attachment title/filename"
                        },
                        "mimeType": {
                          "type": "string",
                          "description": "MIME type of the attachment"
                        },
                        "iconLink": {
                          "type": "string",
                          "description": "URL link to the attachment icon"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Event attachment (Google Drive file)"
                    },
                    "description": "List of file attachments on the event"
                  },
                  "driveAttachmentFileIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of Google Drive file IDs extracted from event attachments"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "Updated event details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_event"
                ],
                "description": "Delete an event"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the event was deleted successfully"
              },
              "deleted": {
                "type": "boolean",
                "description": "Whether the event was actually deleted"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Calendars example\nconst googleCalendar_list_calendars = new GoogleCalendarBubble({\n  operation: \"list_calendars\", // List calendars for the user\n  max_results: 50 // default, // Maximum number of calendars to return\n  page_token: \"example string\", // Token for fetching next page\n});\n\nconst result = await googleCalendar_list_calendars.action();\n// outputSchema for result.data when operation === 'list_calendars':\n// {\n//   operation: \"list_calendars\" // List calendars for the user,\n//   success: boolean // Whether the calendar list was retrieved successfully,\n//   calendars: { id: string // Calendar ID, summary: string | undefined // Calendar title, description: string | undefined // Calendar description, timeZone: string | undefined // Calendar time zone, selected: boolean | undefined // Whether this calendar is selected, accessRole: \"freeBusyReader\" | \"reader\" | \"writer\" | \"owner\" | undefined // Access role for the user }[] | undefined // List of calendars,\n//   next_page_token: string | undefined // Token for fetching next page,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Events example\nconst googleCalendar_list_events = new GoogleCalendarBubble({\n  operation: \"list_events\", // List events in a calendar\n  calendar_id: \"primary\" // default, // Calendar ID\n  time_min: \"example string\", // Lower bound (RFC3339 timestamp)\n  time_max: \"example string\", // Upper bound (RFC3339 timestamp)\n  q: \"example string\", // Free text search query\n  single_events: true // default, // Expand recurring events\n  order_by: \"startTime\" // options: \"startTime\", \"updated\", // Sort order\n  page_token: \"example string\", // Token for fetching next page\n  max_results: 50 // default, // Maximum number of events to return\n});\n\nconst result = await googleCalendar_list_events.action();\n// outputSchema for result.data when operation === 'list_events':\n// {\n//   operation: \"list_events\" // List events in a calendar,\n//   success: boolean // Whether the event list was retrieved successfully,\n//   events: { id: string // Event ID, status: string | undefined // Event status (confirmed, tentative, cancelled), htmlLink: string | undefined // Link to the event in Calendar UI, created: string | undefined // Event creation timestamp, updated: string | undefined // Event last updated timestamp, summary: string | undefined // Event title, description: string | undefined // Event description, location: string | undefined // Event location, start: { dateTime: string | undefined // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: string | undefined // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: string | undefined // Time zone for the event time } | undefined // Event start date/time, end: { dateTime: string | undefined // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: string | undefined // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: string | undefined // Time zone for the event time } | undefined // Event end date/time, attendees: { email: string // Attendee email, optional: boolean | undefined // Whether this attendee is optional, responseStatus: \"needsAction\" | \"declined\" | \"tentative\" | \"accepted\" | undefined // Response status of the attendee, displayName: string | undefined // Display name of the attendee }[] | undefined // List of event attendees, organizer: { email: string | undefined // Organizer email address, displayName: string | undefined // Organizer display name } | undefined // Event organizer information, hangoutLink: string | undefined // Google Hangout/Meet link for the event, conferenceData: unknown | undefined // Conference data for virtual meetings, attachments: { fileId: string | undefined // Google Drive file ID, fileUrl: string | undefined // URL link to the attachment, title: string | undefined // Attachment title/filename, mimeType: string | undefined // MIME type of the attachment, iconLink: string | undefined // URL link to the attachment icon }[] | undefined // List of file attachments on the event, driveAttachmentFileIds: string[] | undefined // List of Google Drive file IDs extracted from event attachments }[] | undefined // List of events,\n//   next_page_token: string | undefined // Token for fetching next page,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Event example\nconst googleCalendar_get_event = new GoogleCalendarBubble({\n  operation: \"get_event\", // Get a single event\n  calendar_id: \"primary\" // default, // Calendar ID\n  event_id: \"example string\", // Event ID to retrieve\n});\n\nconst result = await googleCalendar_get_event.action();\n// outputSchema for result.data when operation === 'get_event':\n// {\n//   operation: \"get_event\" // Get a single event,\n//   success: boolean // Whether the event was retrieved successfully,\n//   event: { id: string // Event ID, status: string | undefined // Event status (confirmed, tentative, cancelled), htmlLink: string | undefined // Link to the event in Calendar UI, created: string | undefined // Event creation timestamp, updated: string | undefined // Event last updated timestamp, summary: string | undefined // Event title, description: string | undefined // Event description, location: string | undefined // Event location, start: { dateTime: string | undefined // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: string | undefined // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: string | undefined // Time zone for the event time } | undefined // Event start date/time, end: { dateTime: string | undefined // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: string | undefined // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: string | undefined // Time zone for the event time } | undefined // Event end date/time, attendees: { email: string // Attendee email, optional: boolean | undefined // Whether this attendee is optional, responseStatus: \"needsAction\" | \"declined\" | \"tentative\" | \"accepted\" | undefined // Response status of the attendee, displayName: string | undefined // Display name of the attendee }[] | undefined // List of event attendees, organizer: { email: string | undefined // Organizer email address, displayName: string | undefined // Organizer display name } | undefined // Event organizer information, hangoutLink: string | undefined // Google Hangout/Meet link for the event, conferenceData: unknown | undefined // Conference data for virtual meetings, attachments: { fileId: string | undefined // Google Drive file ID, fileUrl: string | undefined // URL link to the attachment, title: string | undefined // Attachment title/filename, mimeType: string | undefined // MIME type of the attachment, iconLink: string | undefined // URL link to the attachment icon }[] | undefined // List of file attachments on the event, driveAttachmentFileIds: string[] | undefined // List of Google Drive file IDs extracted from event attachments } | undefined // Event details,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Event example\nconst googleCalendar_create_event = new GoogleCalendarBubble({\n  operation: \"create_event\", // Create an event\n  calendar_id: \"primary\" // default, // Calendar ID\n  summary: \"example string\", // Event title\n  description: \"example string\", // Event description\n  location: \"example string\", // Event location\n  start: { dateTime: \"example string\" // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: \"example string\" // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: \"example string\" // Time zone for the event time }, // Start date/time\n  end: { dateTime: \"example string\" // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: \"example string\" // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: \"example string\" // Time zone for the event time }, // End date/time\n  attendees: [{ email: \"example string\" // Attendee email, optional: true // Whether this attendee is optional, responseStatus: \"needsAction\" // options: \"needsAction\", \"declined\", \"tentative\", \"accepted\" // Response status of the attendee, displayName: \"example string\" // Display name of the attendee }], // List of event attendees\n  conference: false // default, // Create a Google Meet conference link\n});\n\nconst result = await googleCalendar_create_event.action();\n// outputSchema for result.data when operation === 'create_event':\n// {\n//   operation: \"create_event\" // Create an event,\n//   success: boolean // Whether the event was created successfully,\n//   event: { id: string // Event ID, status: string | undefined // Event status (confirmed, tentative, cancelled), htmlLink: string | undefined // Link to the event in Calendar UI, created: string | undefined // Event creation timestamp, updated: string | undefined // Event last updated timestamp, summary: string | undefined // Event title, description: string | undefined // Event description, location: string | undefined // Event location, start: { dateTime: string | undefined // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: string | undefined // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: string | undefined // Time zone for the event time } | undefined // Event start date/time, end: { dateTime: string | undefined // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: string | undefined // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: string | undefined // Time zone for the event time } | undefined // Event end date/time, attendees: { email: string // Attendee email, optional: boolean | undefined // Whether this attendee is optional, responseStatus: \"needsAction\" | \"declined\" | \"tentative\" | \"accepted\" | undefined // Response status of the attendee, displayName: string | undefined // Display name of the attendee }[] | undefined // List of event attendees, organizer: { email: string | undefined // Organizer email address, displayName: string | undefined // Organizer display name } | undefined // Event organizer information, hangoutLink: string | undefined // Google Hangout/Meet link for the event, conferenceData: unknown | undefined // Conference data for virtual meetings, attachments: { fileId: string | undefined // Google Drive file ID, fileUrl: string | undefined // URL link to the attachment, title: string | undefined // Attachment title/filename, mimeType: string | undefined // MIME type of the attachment, iconLink: string | undefined // URL link to the attachment icon }[] | undefined // List of file attachments on the event, driveAttachmentFileIds: string[] | undefined // List of Google Drive file IDs extracted from event attachments } | undefined // Created event details,\n//   error: string // Error message if operation failed\n// }\n\n\n// Update Event example\nconst googleCalendar_update_event = new GoogleCalendarBubble({\n  operation: \"update_event\", // Update an existing event\n  calendar_id: \"primary\" // default, // Calendar ID\n  event_id: \"example string\", // Event ID to update\n  summary: \"example string\", // Event title\n  description: \"example string\", // Event description\n  location: \"example string\", // Event location\n  start: { dateTime: \"example string\" // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: \"example string\" // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: \"example string\" // Time zone for the event time }, // Start date/time\n  end: { dateTime: \"example string\" // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: \"example string\" // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: \"example string\" // Time zone for the event time }, // End date/time\n  attendees: [{ email: \"example string\" // Attendee email, optional: true // Whether this attendee is optional, responseStatus: \"needsAction\" // options: \"needsAction\", \"declined\", \"tentative\", \"accepted\" // Response status of the attendee, displayName: \"example string\" // Display name of the attendee }], // List of event attendees\n});\n\nconst result = await googleCalendar_update_event.action();\n// outputSchema for result.data when operation === 'update_event':\n// {\n//   operation: \"update_event\" // Update an existing event,\n//   success: boolean // Whether the event was updated successfully,\n//   event: { id: string // Event ID, status: string | undefined // Event status (confirmed, tentative, cancelled), htmlLink: string | undefined // Link to the event in Calendar UI, created: string | undefined // Event creation timestamp, updated: string | undefined // Event last updated timestamp, summary: string | undefined // Event title, description: string | undefined // Event description, location: string | undefined // Event location, start: { dateTime: string | undefined // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: string | undefined // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: string | undefined // Time zone for the event time } | undefined // Event start date/time, end: { dateTime: string | undefined // RFC3339 timestamp, e.g. 2025-09-10T10:00:00-07:00, date: string | undefined // All-day date in YYYY-MM-DD (mutually exclusive with dateTime), timeZone: string | undefined // Time zone for the event time } | undefined // Event end date/time, attendees: { email: string // Attendee email, optional: boolean | undefined // Whether this attendee is optional, responseStatus: \"needsAction\" | \"declined\" | \"tentative\" | \"accepted\" | undefined // Response status of the attendee, displayName: string | undefined // Display name of the attendee }[] | undefined // List of event attendees, organizer: { email: string | undefined // Organizer email address, displayName: string | undefined // Organizer display name } | undefined // Event organizer information, hangoutLink: string | undefined // Google Hangout/Meet link for the event, conferenceData: unknown | undefined // Conference data for virtual meetings, attachments: { fileId: string | undefined // Google Drive file ID, fileUrl: string | undefined // URL link to the attachment, title: string | undefined // Attachment title/filename, mimeType: string | undefined // MIME type of the attachment, iconLink: string | undefined // URL link to the attachment icon }[] | undefined // List of file attachments on the event, driveAttachmentFileIds: string[] | undefined // List of Google Drive file IDs extracted from event attachments } | undefined // Updated event details,\n//   error: string // Error message if operation failed\n// }\n\n\n// Delete Event example\nconst googleCalendar_delete_event = new GoogleCalendarBubble({\n  operation: \"delete_event\", // Delete an event\n  calendar_id: \"primary\" // default, // Calendar ID\n  event_id: \"example string\", // Event ID to delete\n  send_updates: \"all\" // options: \"all\", \"externalOnly\", \"none\", // Whether to notify attendees\n});\n\nconst result = await googleCalendar_delete_event.action();\n// outputSchema for result.data when operation === 'delete_event':\n// {\n//   operation: \"delete_event\" // Delete an event,\n//   success: boolean // Whether the event was deleted successfully,\n//   deleted: boolean | undefined // Whether the event was actually deleted,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`google-calendar failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GOOGLE_CALENDAR_CRED"
      ]
    },
    {
      "name": "apify",
      "alias": "scrape",
      "type": "service",
      "shortDescription": "Discover and run specialized Apify actors for complex web scraping tasks not covered by standard tools",
      "useCase": "- Discovering available actors and their schemas then",
      "outputSchema": "{\n  runId: string // Apify actor run ID,\n  status: string // Actor run status (READY, RUNNING, SUCCEEDED, FAILED, etc.),\n  datasetId: string | undefined // Dataset ID where results are stored,\n  items: unknown[] | undefined // Array of scraped items (if waitForFinish is true). Structure depends on the actor. For discovery mode, contains actor information with schemas.,\n  itemsCount: number | undefined // Total number of items scraped,\n  consoleUrl: string // URL to view the actor run in Apify console,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed,\n  discoveredActors: { id: string // Actor ID (e.g., \"apify/instagram-scraper\"), name: string // Full actor path (e.g., \"beauty/linkedin-jobs-scraper\"), description: string | null | undefined // Actor description, inputSchemaUrl: string // URL to the actor input schema page. Use the web scrape tool to scrape from this URL (e.g., https://apify.com/apify/google-search-scraper/input-schema) to get the input/output schema details., stars: number | null | undefined // Actor rating (if available), usage: { totalRuns: number | undefined, usersCount: number | undefined } | null | undefined // Basic usage stats, requiresRental: boolean | undefined // Whether this actor requires rental/private access (filtered out when true) }[] | undefined // Discovered actors with description and input schema URL (only present in discovery mode)\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "actorId": {
            "type": "string",
            "description": "The Apify actor to run. Examples: \"apify/instagram-scraper\", \"apify/reddit-scraper\", etc. Required when running an actor, not needed for discovery mode."
          },
          "search": {
            "type": "string",
            "description": "Search query to discover available Apify actors. When provided, this triggers discovery mode to search for actors matching the query and return their schemas and information."
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "default": 20,
            "description": "Maximum number of actors to return in discovery mode (default: 20, max: 100)"
          },
          "input": {
            "type": "object",
            "additionalProperties": {},
            "description": "Input parameters for the actor. Structure depends on the specific actor being used. Not used in discovery mode."
          },
          "waitForFinish": {
            "type": "boolean",
            "default": true,
            "description": "Whether to wait for the actor run to complete before returning"
          },
          "timeout": {
            "type": "number",
            "minimum": 1000,
            "maximum": 1800000,
            "default": 300000,
            "description": "Maximum time to wait for actor completion in milliseconds (default: 300000 = 5 min, max: 1800000 = 30 min). Long-running actors (e.g., apify/instagram-reel-scraper with transcripts) need >300s."
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          }
        },
        "required": [
          "input"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "runId": {
            "type": "string",
            "description": "Apify actor run ID"
          },
          "status": {
            "type": "string",
            "description": "Actor run status (READY, RUNNING, SUCCEEDED, FAILED, etc.)"
          },
          "datasetId": {
            "type": "string",
            "description": "Dataset ID where results are stored"
          },
          "items": {
            "type": "array",
            "items": {},
            "description": "Array of scraped items (if waitForFinish is true). Structure depends on the actor. For discovery mode, contains actor information with schemas."
          },
          "itemsCount": {
            "type": "number",
            "description": "Total number of items scraped"
          },
          "consoleUrl": {
            "type": "string",
            "description": "URL to view the actor run in Apify console"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          },
          "discoveredActors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Actor ID (e.g., \"apify/instagram-scraper\")"
                },
                "name": {
                  "type": "string",
                  "description": "Full actor path (e.g., \"beauty/linkedin-jobs-scraper\")"
                },
                "description": {
                  "type": "string",
                  "nullable": true,
                  "description": "Actor description"
                },
                "inputSchemaUrl": {
                  "type": "string",
                  "description": "URL to the actor input schema page. Use the web scrape tool to scrape from this URL (e.g., https://apify.com/apify/google-search-scraper/input-schema) to get the input/output schema details."
                },
                "stars": {
                  "type": "number",
                  "nullable": true,
                  "description": "Actor rating (if available)"
                },
                "usage": {
                  "type": "object",
                  "properties": {
                    "totalRuns": {
                      "type": "number"
                    },
                    "usersCount": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Basic usage stats"
                },
                "requiresRental": {
                  "type": "boolean",
                  "description": "Whether this actor requires rental/private access (filtered out when true)"
                }
              },
              "required": [
                "id",
                "name",
                "inputSchemaUrl"
              ],
              "additionalProperties": false
            },
            "description": "Discovered actors with description and input schema URL (only present in discovery mode)"
          }
        },
        "required": [
          "runId",
          "status",
          "consoleUrl",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of apify bubble\nconst apify = new ApifyBubble({\n  actorId: \"example string\", // The Apify actor to run. Examples: \"apify/instagram-scraper\", \"apify/reddit-scraper\", etc. Required when running an actor, not needed for discovery mode.,\n  search: \"example string\", // Search query to discover available Apify actors. When provided, this triggers discovery mode to search for actors matching the query and return their schemas and information.,\n  limit: 20 // default, // Maximum number of actors to return in discovery mode (default: 20, max: 100),\n  input: {}, // Input parameters for the actor. Structure depends on the specific actor being used. Not used in discovery mode.,\n  waitForFinish: true // default, // Whether to wait for the actor run to complete before returning,\n  timeout: 300000 // default, // Maximum time to wait for actor completion in milliseconds (default: 300000 = 5 min, max: 1800000 = 30 min). Long-running actors (e.g., apify/instagram-reel-scraper with transcripts) need >300s.,\n});\n\nconst result = await apify.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   runId: string // Apify actor run ID,\n//   status: string // Actor run status (READY, RUNNING, SUCCEEDED, FAILED, etc.),\n//   datasetId: string | undefined // Dataset ID where results are stored,\n//   items: unknown[] | undefined // Array of scraped items (if waitForFinish is true). Structure depends on the actor. For discovery mode, contains actor information with schemas.,\n//   itemsCount: number | undefined // Total number of items scraped,\n//   consoleUrl: string // URL to view the actor run in Apify console,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed,\n//   discoveredActors: { id: string // Actor ID (e.g., \"apify/instagram-scraper\"), name: string // Full actor path (e.g., \"beauty/linkedin-jobs-scraper\"), description: string | null | undefined // Actor description, inputSchemaUrl: string // URL to the actor input schema page. Use the web scrape tool to scrape from this URL (e.g., https://apify.com/apify/google-search-scraper/input-schema) to get the input/output schema details., stars: number | null | undefined // Actor rating (if available), usage: { totalRuns: number | undefined, usersCount: number | undefined } | null | undefined // Basic usage stats, requiresRental: boolean | undefined // Whether this actor requires rental/private access (filtered out when true) }[] | undefined // Discovered actors with description and input schema URL (only present in discovery mode)\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "APIFY_CRED"
      ]
    },
    {
      "name": "github",
      "alias": "gh",
      "type": "service",
      "shortDescription": "GitHub API integration for repository operations",
      "useCase": "- Code review automation and PR management",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_file"
                ],
                "description": "Get the contents of a file from a GitHub repository"
              },
              "owner": {
                "type": "string",
                "minLength": 1,
                "description": "Repository owner (username or organization name)"
              },
              "repo": {
                "type": "string",
                "minLength": 1,
                "description": "Repository name"
              },
              "path": {
                "type": "string",
                "minLength": 1,
                "description": "Path to the file in the repository (e.g., src/index.ts)"
              },
              "ref": {
                "type": "string",
                "description": "Git reference (branch, tag, or commit SHA). Defaults to the default branch"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner",
              "repo",
              "path"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_directory"
                ],
                "description": "Get the contents of a directory from a GitHub repository"
              },
              "owner": {
                "type": "string",
                "minLength": 1,
                "description": "Repository owner (username or organization name)"
              },
              "repo": {
                "type": "string",
                "minLength": 1,
                "description": "Repository name"
              },
              "path": {
                "type": "string",
                "default": "",
                "description": "Path to the directory in the repository (empty string for root)"
              },
              "ref": {
                "type": "string",
                "description": "Git reference (branch, tag, or commit SHA). Defaults to the default branch"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner",
              "repo"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_pull_requests"
                ],
                "description": "List pull requests in a GitHub repository"
              },
              "owner": {
                "type": "string",
                "minLength": 1,
                "description": "Repository owner (username or organization name)"
              },
              "repo": {
                "type": "string",
                "minLength": 1,
                "description": "Repository name"
              },
              "state": {
                "type": "string",
                "enum": [
                  "open",
                  "closed",
                  "all"
                ],
                "default": "open",
                "description": "Filter by PR state"
              },
              "sort": {
                "type": "string",
                "enum": [
                  "created",
                  "updated",
                  "popularity",
                  "long-running"
                ],
                "default": "created",
                "description": "Sort order for results"
              },
              "direction": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ],
                "default": "desc",
                "description": "Sort direction"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 30,
                "description": "Number of results per page (1-100)"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner",
              "repo"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_pull_request"
                ],
                "description": "Get detailed information about a specific pull request"
              },
              "owner": {
                "type": "string",
                "minLength": 1,
                "description": "Repository owner (username or organization name)"
              },
              "repo": {
                "type": "string",
                "minLength": 1,
                "description": "Repository name"
              },
              "pull_number": {
                "type": "number",
                "minimum": 1,
                "description": "Pull request number"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner",
              "repo",
              "pull_number"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_pr_comment"
                ],
                "description": "Add a comment to a pull request"
              },
              "owner": {
                "type": "string",
                "minLength": 1,
                "description": "Repository owner (username or organization name)"
              },
              "repo": {
                "type": "string",
                "minLength": 1,
                "description": "Repository name"
              },
              "pull_number": {
                "type": "number",
                "minimum": 1,
                "description": "Pull request number"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "description": "Comment text content (supports GitHub Markdown)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner",
              "repo",
              "pull_number",
              "body"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_repositories"
                ],
                "description": "List repositories for the authenticated user"
              },
              "visibility": {
                "type": "string",
                "enum": [
                  "all",
                  "public",
                  "private"
                ],
                "default": "all",
                "description": "Filter by repository visibility"
              },
              "sort": {
                "type": "string",
                "enum": [
                  "created",
                  "updated",
                  "pushed",
                  "full_name"
                ],
                "default": "updated",
                "description": "Sort order for results"
              },
              "direction": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ],
                "default": "desc",
                "description": "Sort direction"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 30,
                "description": "Number of results per page (1-100)"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_repository"
                ],
                "description": "Get detailed information about a specific repository"
              },
              "owner": {
                "type": "string",
                "minLength": 1,
                "description": "Repository owner (username or organization name)"
              },
              "repo": {
                "type": "string",
                "minLength": 1,
                "description": "Repository name"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner",
              "repo"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_issue_comment"
                ],
                "description": "Add a comment to an issue"
              },
              "owner": {
                "type": "string",
                "minLength": 1,
                "description": "Repository owner (username or organization name)"
              },
              "repo": {
                "type": "string",
                "minLength": 1,
                "description": "Repository name"
              },
              "issue_number": {
                "type": "number",
                "minimum": 1,
                "description": "Issue number"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "description": "Comment text content (supports GitHub Markdown)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner",
              "repo",
              "issue_number",
              "body"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_issue"
                ],
                "description": "Create a new issue in a GitHub repository"
              },
              "owner": {
                "type": "string",
                "minLength": 1,
                "description": "Repository owner (username or organization name)"
              },
              "repo": {
                "type": "string",
                "minLength": 1,
                "description": "Repository name"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "Issue title"
              },
              "body": {
                "type": "string",
                "description": "Issue body content (supports GitHub Markdown)"
              },
              "labels": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of label names to add to the issue"
              },
              "assignees": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of usernames to assign to the issue"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner",
              "repo",
              "title"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_issues"
                ],
                "description": "List issues in a GitHub repository"
              },
              "owner": {
                "type": "string",
                "minLength": 1,
                "description": "Repository owner (username or organization name)"
              },
              "repo": {
                "type": "string",
                "minLength": 1,
                "description": "Repository name"
              },
              "state": {
                "type": "string",
                "enum": [
                  "open",
                  "closed",
                  "all"
                ],
                "default": "open",
                "description": "Filter by issue state"
              },
              "labels": {
                "type": "string",
                "description": "Filter by labels (comma-separated list)"
              },
              "sort": {
                "type": "string",
                "enum": [
                  "created",
                  "updated",
                  "comments"
                ],
                "default": "created",
                "description": "Sort order for results"
              },
              "direction": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ],
                "default": "desc",
                "description": "Sort direction"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 30,
                "description": "Number of results per page (1-100)"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner",
              "repo"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_file"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "name": {
                "type": "string",
                "description": "File name"
              },
              "path": {
                "type": "string",
                "description": "Full path to the file in the repository"
              },
              "sha": {
                "type": "string",
                "description": "Git SHA hash of the file"
              },
              "size": {
                "type": "number",
                "description": "File size in bytes"
              },
              "url": {
                "type": "string",
                "description": "API URL for this file"
              },
              "html_url": {
                "type": "string",
                "description": "Web URL to view the file on GitHub"
              },
              "git_url": {
                "type": "string",
                "description": "Git URL for the file object"
              },
              "download_url": {
                "type": "string",
                "nullable": true,
                "description": "Direct download URL for the file"
              },
              "type": {
                "type": "string",
                "enum": [
                  "file",
                  "dir",
                  "symlink",
                  "submodule"
                ],
                "description": "Type of the content"
              },
              "content": {
                "type": "string",
                "description": "Base64 encoded content (for files)"
              },
              "encoding": {
                "type": "string",
                "description": "Encoding type (usually base64)"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_directory"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "contents": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "File name"
                    },
                    "path": {
                      "type": "string",
                      "description": "Full path to the file in the repository"
                    },
                    "sha": {
                      "type": "string",
                      "description": "Git SHA hash of the file"
                    },
                    "size": {
                      "type": "number",
                      "description": "File size in bytes"
                    },
                    "url": {
                      "type": "string",
                      "description": "API URL for this file"
                    },
                    "html_url": {
                      "type": "string",
                      "description": "Web URL to view the file on GitHub"
                    },
                    "git_url": {
                      "type": "string",
                      "description": "Git URL for the file object"
                    },
                    "download_url": {
                      "type": "string",
                      "nullable": true,
                      "description": "Direct download URL for the file"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "file",
                        "dir",
                        "symlink",
                        "submodule"
                      ],
                      "description": "Type of the content"
                    },
                    "content": {
                      "type": "string",
                      "description": "Base64 encoded content (for files)"
                    },
                    "encoding": {
                      "type": "string",
                      "description": "Encoding type (usually base64)"
                    }
                  },
                  "required": [
                    "name",
                    "path",
                    "sha",
                    "size",
                    "url",
                    "html_url",
                    "git_url",
                    "download_url",
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of directory contents"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_pull_requests"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "pull_requests": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Pull request ID"
                    },
                    "node_id": {
                      "type": "string",
                      "description": "GraphQL node ID"
                    },
                    "number": {
                      "type": "number",
                      "description": "Pull request number"
                    },
                    "state": {
                      "type": "string",
                      "enum": [
                        "open",
                        "closed"
                      ],
                      "description": "Pull request state"
                    },
                    "title": {
                      "type": "string",
                      "description": "Pull request title"
                    },
                    "body": {
                      "type": "string",
                      "nullable": true,
                      "description": "Pull request description"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "ISO datetime when PR was created"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "ISO datetime when PR was last updated"
                    },
                    "closed_at": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO datetime when PR was closed"
                    },
                    "merged_at": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO datetime when PR was merged"
                    },
                    "user": {
                      "type": "object",
                      "properties": {
                        "login": {
                          "type": "string",
                          "description": "Author username"
                        },
                        "id": {
                          "type": "number",
                          "description": "Author ID"
                        },
                        "avatar_url": {
                          "type": "string",
                          "description": "Author avatar URL"
                        }
                      },
                      "required": [
                        "login",
                        "id",
                        "avatar_url"
                      ],
                      "additionalProperties": false,
                      "description": "Pull request author"
                    },
                    "html_url": {
                      "type": "string",
                      "description": "Web URL to view the PR"
                    },
                    "draft": {
                      "type": "boolean",
                      "description": "Whether this is a draft PR"
                    },
                    "head": {
                      "type": "object",
                      "properties": {
                        "ref": {
                          "type": "string",
                          "description": "Source branch name"
                        },
                        "sha": {
                          "type": "string",
                          "description": "Source commit SHA"
                        }
                      },
                      "required": [
                        "ref",
                        "sha"
                      ],
                      "additionalProperties": false,
                      "description": "Source branch information"
                    },
                    "base": {
                      "type": "object",
                      "properties": {
                        "ref": {
                          "type": "string",
                          "description": "Target branch name"
                        },
                        "sha": {
                          "type": "string",
                          "description": "Target commit SHA"
                        }
                      },
                      "required": [
                        "ref",
                        "sha"
                      ],
                      "additionalProperties": false,
                      "description": "Target branch information"
                    },
                    "merged": {
                      "type": "boolean",
                      "description": "Whether the PR has been merged (may not be present in list responses)"
                    },
                    "mergeable": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "Whether the PR can be merged (may not be present in list responses)"
                    },
                    "mergeable_state": {
                      "type": "string",
                      "description": "Mergeable state (clean, unstable, dirty, etc.)"
                    },
                    "comments": {
                      "type": "number",
                      "description": "Number of comments"
                    },
                    "review_comments": {
                      "type": "number",
                      "description": "Number of review comments"
                    },
                    "commits": {
                      "type": "number",
                      "description": "Number of commits"
                    },
                    "additions": {
                      "type": "number",
                      "description": "Lines added"
                    },
                    "deletions": {
                      "type": "number",
                      "description": "Lines deleted"
                    },
                    "changed_files": {
                      "type": "number",
                      "description": "Number of files changed"
                    }
                  },
                  "required": [
                    "id",
                    "node_id",
                    "number",
                    "state",
                    "title",
                    "body",
                    "created_at",
                    "updated_at",
                    "closed_at",
                    "merged_at",
                    "user",
                    "html_url",
                    "draft",
                    "head",
                    "base"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of pull requests"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_pull_request"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "id": {
                "type": "number",
                "description": "Pull request ID"
              },
              "node_id": {
                "type": "string",
                "description": "GraphQL node ID"
              },
              "number": {
                "type": "number",
                "description": "Pull request number"
              },
              "state": {
                "type": "string",
                "enum": [
                  "open",
                  "closed"
                ],
                "description": "Pull request state"
              },
              "title": {
                "type": "string",
                "description": "Pull request title"
              },
              "body": {
                "type": "string",
                "nullable": true,
                "description": "Pull request description"
              },
              "created_at": {
                "type": "string",
                "description": "ISO datetime when PR was created"
              },
              "updated_at": {
                "type": "string",
                "description": "ISO datetime when PR was last updated"
              },
              "closed_at": {
                "type": "string",
                "nullable": true,
                "description": "ISO datetime when PR was closed"
              },
              "merged_at": {
                "type": "string",
                "nullable": true,
                "description": "ISO datetime when PR was merged"
              },
              "user": {
                "type": "object",
                "properties": {
                  "login": {
                    "type": "string",
                    "description": "Author username"
                  },
                  "id": {
                    "type": "number",
                    "description": "Author ID"
                  },
                  "avatar_url": {
                    "type": "string",
                    "description": "Author avatar URL"
                  }
                },
                "required": [
                  "login",
                  "id",
                  "avatar_url"
                ],
                "additionalProperties": false,
                "description": "Pull request author"
              },
              "html_url": {
                "type": "string",
                "description": "Web URL to view the PR"
              },
              "draft": {
                "type": "boolean",
                "description": "Whether this is a draft PR"
              },
              "head": {
                "type": "object",
                "properties": {
                  "ref": {
                    "type": "string",
                    "description": "Source branch name"
                  },
                  "sha": {
                    "type": "string",
                    "description": "Source commit SHA"
                  }
                },
                "required": [
                  "ref",
                  "sha"
                ],
                "additionalProperties": false,
                "description": "Source branch information"
              },
              "base": {
                "type": "object",
                "properties": {
                  "ref": {
                    "type": "string",
                    "description": "Target branch name"
                  },
                  "sha": {
                    "type": "string",
                    "description": "Target commit SHA"
                  }
                },
                "required": [
                  "ref",
                  "sha"
                ],
                "additionalProperties": false,
                "description": "Target branch information"
              },
              "merged": {
                "type": "boolean",
                "description": "Whether the PR has been merged (may not be present in list responses)"
              },
              "mergeable": {
                "type": "boolean",
                "nullable": true,
                "description": "Whether the PR can be merged (may not be present in list responses)"
              },
              "mergeable_state": {
                "type": "string",
                "description": "Mergeable state (clean, unstable, dirty, etc.)"
              },
              "comments": {
                "type": "number",
                "description": "Number of comments"
              },
              "review_comments": {
                "type": "number",
                "description": "Number of review comments"
              },
              "commits": {
                "type": "number",
                "description": "Number of commits"
              },
              "additions": {
                "type": "number",
                "description": "Lines added"
              },
              "deletions": {
                "type": "number",
                "description": "Lines deleted"
              },
              "changed_files": {
                "type": "number",
                "description": "Number of files changed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_pr_comment"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "id": {
                "type": "number",
                "description": "Comment ID"
              },
              "node_id": {
                "type": "string",
                "description": "GraphQL node ID"
              },
              "body": {
                "type": "string",
                "description": "Comment text content"
              },
              "user": {
                "type": "object",
                "properties": {
                  "login": {
                    "type": "string",
                    "description": "Comment author username"
                  },
                  "id": {
                    "type": "number",
                    "description": "Comment author ID"
                  }
                },
                "required": [
                  "login",
                  "id"
                ],
                "additionalProperties": false,
                "description": "Comment author information"
              },
              "created_at": {
                "type": "string",
                "description": "ISO datetime when comment was created"
              },
              "updated_at": {
                "type": "string",
                "description": "ISO datetime when comment was last updated"
              },
              "html_url": {
                "type": "string",
                "description": "Web URL to view the comment"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_repositories"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "repositories": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Repository ID"
                    },
                    "node_id": {
                      "type": "string",
                      "description": "GraphQL node ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Repository name"
                    },
                    "full_name": {
                      "type": "string",
                      "description": "Full repository name (owner/repo)"
                    },
                    "private": {
                      "type": "boolean",
                      "description": "Whether the repository is private"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "login": {
                          "type": "string",
                          "description": "Owner username"
                        },
                        "id": {
                          "type": "number",
                          "description": "Owner ID"
                        },
                        "avatar_url": {
                          "type": "string",
                          "description": "Owner avatar URL"
                        },
                        "html_url": {
                          "type": "string",
                          "description": "Owner profile URL"
                        }
                      },
                      "required": [
                        "login",
                        "id",
                        "avatar_url",
                        "html_url"
                      ],
                      "additionalProperties": false,
                      "description": "Repository owner information"
                    },
                    "html_url": {
                      "type": "string",
                      "description": "Repository web URL"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Repository description"
                    },
                    "fork": {
                      "type": "boolean",
                      "description": "Whether this is a fork"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "ISO datetime when repository was created"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "ISO datetime when repository was last updated"
                    },
                    "pushed_at": {
                      "type": "string",
                      "description": "ISO datetime of last push"
                    },
                    "size": {
                      "type": "number",
                      "description": "Repository size in KB"
                    },
                    "stargazers_count": {
                      "type": "number",
                      "description": "Number of stars"
                    },
                    "watchers_count": {
                      "type": "number",
                      "description": "Number of watchers"
                    },
                    "language": {
                      "type": "string",
                      "nullable": true,
                      "description": "Primary programming language"
                    },
                    "forks_count": {
                      "type": "number",
                      "description": "Number of forks"
                    },
                    "open_issues_count": {
                      "type": "number",
                      "description": "Number of open issues"
                    },
                    "default_branch": {
                      "type": "string",
                      "description": "Default branch name"
                    },
                    "visibility": {
                      "type": "string",
                      "description": "Repository visibility (public, private, internal)"
                    }
                  },
                  "required": [
                    "id",
                    "node_id",
                    "name",
                    "full_name",
                    "private",
                    "owner",
                    "html_url",
                    "description",
                    "fork",
                    "created_at",
                    "updated_at",
                    "pushed_at",
                    "size",
                    "stargazers_count",
                    "watchers_count",
                    "language",
                    "forks_count",
                    "open_issues_count",
                    "default_branch"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of repositories"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_repository"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "id": {
                "type": "number",
                "description": "Repository ID"
              },
              "node_id": {
                "type": "string",
                "description": "GraphQL node ID"
              },
              "name": {
                "type": "string",
                "description": "Repository name"
              },
              "full_name": {
                "type": "string",
                "description": "Full repository name (owner/repo)"
              },
              "private": {
                "type": "boolean",
                "description": "Whether the repository is private"
              },
              "owner": {
                "type": "object",
                "properties": {
                  "login": {
                    "type": "string",
                    "description": "Owner username"
                  },
                  "id": {
                    "type": "number",
                    "description": "Owner ID"
                  },
                  "avatar_url": {
                    "type": "string",
                    "description": "Owner avatar URL"
                  },
                  "html_url": {
                    "type": "string",
                    "description": "Owner profile URL"
                  }
                },
                "required": [
                  "login",
                  "id",
                  "avatar_url",
                  "html_url"
                ],
                "additionalProperties": false,
                "description": "Repository owner information"
              },
              "html_url": {
                "type": "string",
                "description": "Repository web URL"
              },
              "description": {
                "type": "string",
                "nullable": true,
                "description": "Repository description"
              },
              "fork": {
                "type": "boolean",
                "description": "Whether this is a fork"
              },
              "created_at": {
                "type": "string",
                "description": "ISO datetime when repository was created"
              },
              "updated_at": {
                "type": "string",
                "description": "ISO datetime when repository was last updated"
              },
              "pushed_at": {
                "type": "string",
                "description": "ISO datetime of last push"
              },
              "size": {
                "type": "number",
                "description": "Repository size in KB"
              },
              "stargazers_count": {
                "type": "number",
                "description": "Number of stars"
              },
              "watchers_count": {
                "type": "number",
                "description": "Number of watchers"
              },
              "language": {
                "type": "string",
                "nullable": true,
                "description": "Primary programming language"
              },
              "forks_count": {
                "type": "number",
                "description": "Number of forks"
              },
              "open_issues_count": {
                "type": "number",
                "description": "Number of open issues"
              },
              "default_branch": {
                "type": "string",
                "description": "Default branch name"
              },
              "visibility": {
                "type": "string",
                "description": "Repository visibility (public, private, internal)"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_issue_comment"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "id": {
                "type": "number",
                "description": "Comment ID"
              },
              "node_id": {
                "type": "string",
                "description": "GraphQL node ID"
              },
              "body": {
                "type": "string",
                "description": "Comment text content"
              },
              "user": {
                "type": "object",
                "properties": {
                  "login": {
                    "type": "string",
                    "description": "Comment author username"
                  },
                  "id": {
                    "type": "number",
                    "description": "Comment author ID"
                  }
                },
                "required": [
                  "login",
                  "id"
                ],
                "additionalProperties": false,
                "description": "Comment author information"
              },
              "created_at": {
                "type": "string",
                "description": "ISO datetime when comment was created"
              },
              "updated_at": {
                "type": "string",
                "description": "ISO datetime when comment was last updated"
              },
              "html_url": {
                "type": "string",
                "description": "Web URL to view the comment"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_issue"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "id": {
                "type": "number",
                "description": "Issue ID"
              },
              "node_id": {
                "type": "string",
                "description": "GraphQL node ID"
              },
              "number": {
                "type": "number",
                "description": "Issue number"
              },
              "state": {
                "type": "string",
                "enum": [
                  "open",
                  "closed"
                ],
                "description": "Issue state"
              },
              "title": {
                "type": "string",
                "description": "Issue title"
              },
              "body": {
                "type": "string",
                "nullable": true,
                "description": "Issue description"
              },
              "user": {
                "type": "object",
                "properties": {
                  "login": {
                    "type": "string",
                    "description": "Issue creator username"
                  },
                  "id": {
                    "type": "number",
                    "description": "Issue creator ID"
                  }
                },
                "required": [
                  "login",
                  "id"
                ],
                "additionalProperties": false,
                "description": "Issue creator information"
              },
              "labels": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Label ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Label name"
                    },
                    "color": {
                      "type": "string",
                      "description": "Label color (hex)"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Label description"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "color",
                    "description"
                  ],
                  "additionalProperties": false
                },
                "description": "Issue labels"
              },
              "created_at": {
                "type": "string",
                "description": "ISO datetime when issue was created"
              },
              "updated_at": {
                "type": "string",
                "description": "ISO datetime when issue was last updated"
              },
              "closed_at": {
                "type": "string",
                "nullable": true,
                "description": "ISO datetime when issue was closed"
              },
              "html_url": {
                "type": "string",
                "description": "Web URL to view the issue"
              },
              "comments": {
                "type": "number",
                "description": "Number of comments"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_issues"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "issues": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Issue ID"
                    },
                    "node_id": {
                      "type": "string",
                      "description": "GraphQL node ID"
                    },
                    "number": {
                      "type": "number",
                      "description": "Issue number"
                    },
                    "state": {
                      "type": "string",
                      "enum": [
                        "open",
                        "closed"
                      ],
                      "description": "Issue state"
                    },
                    "title": {
                      "type": "string",
                      "description": "Issue title"
                    },
                    "body": {
                      "type": "string",
                      "nullable": true,
                      "description": "Issue description"
                    },
                    "user": {
                      "type": "object",
                      "properties": {
                        "login": {
                          "type": "string",
                          "description": "Issue creator username"
                        },
                        "id": {
                          "type": "number",
                          "description": "Issue creator ID"
                        }
                      },
                      "required": [
                        "login",
                        "id"
                      ],
                      "additionalProperties": false,
                      "description": "Issue creator information"
                    },
                    "labels": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "number",
                            "description": "Label ID"
                          },
                          "name": {
                            "type": "string",
                            "description": "Label name"
                          },
                          "color": {
                            "type": "string",
                            "description": "Label color (hex)"
                          },
                          "description": {
                            "type": "string",
                            "nullable": true,
                            "description": "Label description"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "color",
                          "description"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Issue labels"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "ISO datetime when issue was created"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "ISO datetime when issue was last updated"
                    },
                    "closed_at": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO datetime when issue was closed"
                    },
                    "html_url": {
                      "type": "string",
                      "description": "Web URL to view the issue"
                    },
                    "comments": {
                      "type": "number",
                      "description": "Number of comments"
                    }
                  },
                  "required": [
                    "id",
                    "node_id",
                    "number",
                    "state",
                    "title",
                    "body",
                    "user",
                    "labels",
                    "created_at",
                    "updated_at",
                    "closed_at",
                    "html_url",
                    "comments"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of issues"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Get File example\nconst github_get_file = new GithubBubble({\n  operation: \"get_file\", // Get the contents of a file from a GitHub repository\n  owner: \"example string\", // Repository owner (username or organization name)\n  repo: \"example string\", // Repository name\n  path: \"example string\", // Path to the file in the repository (e.g., src/index.ts)\n  ref: \"example string\", // Git reference (branch, tag, or commit SHA). Defaults to the default branch\n});\n\nconst result = await github_get_file.action();\n// outputSchema for result.data when operation === 'get_file':\n// {\n//   operation: \"get_file\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   name: string | undefined // File name,\n//   path: string | undefined // Full path to the file in the repository,\n//   sha: string | undefined // Git SHA hash of the file,\n//   size: number | undefined // File size in bytes,\n//   url: string | undefined // API URL for this file,\n//   html_url: string | undefined // Web URL to view the file on GitHub,\n//   git_url: string | undefined // Git URL for the file object,\n//   download_url: string | null | undefined // Direct download URL for the file,\n//   type: \"file\" | \"dir\" | \"symlink\" | \"submodule\" | undefined // Type of the content,\n//   content: string | undefined | undefined // Base64 encoded content (for files),\n//   encoding: string | undefined | undefined // Encoding type (usually base64)\n// }\n\n\n// Get Directory example\nconst github_get_directory = new GithubBubble({\n  operation: \"get_directory\", // Get the contents of a directory from a GitHub repository\n  owner: \"example string\", // Repository owner (username or organization name)\n  repo: \"example string\", // Repository name\n  path: \"\" // default, // Path to the directory in the repository (empty string for root)\n  ref: \"example string\", // Git reference (branch, tag, or commit SHA). Defaults to the default branch\n});\n\nconst result = await github_get_directory.action();\n// outputSchema for result.data when operation === 'get_directory':\n// {\n//   operation: \"get_directory\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   contents: { name: string // File name, path: string // Full path to the file in the repository, sha: string // Git SHA hash of the file, size: number // File size in bytes, url: string // API URL for this file, html_url: string // Web URL to view the file on GitHub, git_url: string // Git URL for the file object, download_url: string | null // Direct download URL for the file, type: \"file\" | \"dir\" | \"symlink\" | \"submodule\" // Type of the content, content: string | undefined // Base64 encoded content (for files), encoding: string | undefined // Encoding type (usually base64) }[] | undefined // Array of directory contents\n// }\n\n\n// List Pull Requests example\nconst github_list_pull_requests = new GithubBubble({\n  operation: \"list_pull_requests\", // List pull requests in a GitHub repository\n  owner: \"example string\", // Repository owner (username or organization name)\n  repo: \"example string\", // Repository name\n  state: \"open\" // options: \"open\", \"closed\", \"all\", // Filter by PR state\n  sort: \"created\" // options: \"created\", \"updated\", \"popularity\", \"long-running\", // Sort order for results\n  direction: \"asc\" // options: \"asc\", \"desc\", // Sort direction\n  per_page: 30 // default, // Number of results per page (1-100)\n  page: 1 // default, // Page number for pagination\n});\n\nconst result = await github_list_pull_requests.action();\n// outputSchema for result.data when operation === 'list_pull_requests':\n// {\n//   operation: \"list_pull_requests\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   pull_requests: { id: number // Pull request ID, node_id: string // GraphQL node ID, number: number // Pull request number, state: \"open\" | \"closed\" // Pull request state, title: string // Pull request title, body: string | null // Pull request description, created_at: string // ISO datetime when PR was created, updated_at: string // ISO datetime when PR was last updated, closed_at: string | null // ISO datetime when PR was closed, merged_at: string | null // ISO datetime when PR was merged, user: { login: string // Author username, id: number // Author ID, avatar_url: string // Author avatar URL } // Pull request author, html_url: string // Web URL to view the PR, draft: boolean // Whether this is a draft PR, head: { ref: string // Source branch name, sha: string // Source commit SHA } // Source branch information, base: { ref: string // Target branch name, sha: string // Target commit SHA } // Target branch information, merged: boolean | undefined // Whether the PR has been merged (may not be present in list responses), mergeable: boolean | null | undefined // Whether the PR can be merged (may not be present in list responses), mergeable_state: string | undefined // Mergeable state (clean, unstable, dirty, etc.), comments: number | undefined // Number of comments, review_comments: number | undefined // Number of review comments, commits: number | undefined // Number of commits, additions: number | undefined // Lines added, deletions: number | undefined // Lines deleted, changed_files: number | undefined // Number of files changed }[] | undefined // Array of pull requests\n// }\n\n\n// Get Pull Request example\nconst github_get_pull_request = new GithubBubble({\n  operation: \"get_pull_request\", // Get detailed information about a specific pull request\n  owner: \"example string\", // Repository owner (username or organization name)\n  repo: \"example string\", // Repository name\n  pull_number: 42, // Pull request number\n});\n\nconst result = await github_get_pull_request.action();\n// outputSchema for result.data when operation === 'get_pull_request':\n// {\n//   operation: \"get_pull_request\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   id: number | undefined // Pull request ID,\n//   node_id: string | undefined // GraphQL node ID,\n//   number: number | undefined // Pull request number,\n//   state: \"open\" | \"closed\" | undefined // Pull request state,\n//   title: string | undefined // Pull request title,\n//   body: string | null | undefined // Pull request description,\n//   created_at: string | undefined // ISO datetime when PR was created,\n//   updated_at: string | undefined // ISO datetime when PR was last updated,\n//   closed_at: string | null | undefined // ISO datetime when PR was closed,\n//   merged_at: string | null | undefined // ISO datetime when PR was merged,\n//   user: { login: string // Author username, id: number // Author ID, avatar_url: string // Author avatar URL } | undefined // Pull request author,\n//   html_url: string | undefined // Web URL to view the PR,\n//   draft: boolean | undefined // Whether this is a draft PR,\n//   head: { ref: string // Source branch name, sha: string // Source commit SHA } | undefined // Source branch information,\n//   base: { ref: string // Target branch name, sha: string // Target commit SHA } | undefined // Target branch information,\n//   merged: boolean | undefined | undefined // Whether the PR has been merged (may not be present in list responses),\n//   mergeable: boolean | null | undefined | undefined // Whether the PR can be merged (may not be present in list responses),\n//   mergeable_state: string | undefined | undefined // Mergeable state (clean, unstable, dirty, etc.),\n//   comments: number | undefined | undefined // Number of comments,\n//   review_comments: number | undefined | undefined // Number of review comments,\n//   commits: number | undefined | undefined // Number of commits,\n//   additions: number | undefined | undefined // Lines added,\n//   deletions: number | undefined | undefined // Lines deleted,\n//   changed_files: number | undefined | undefined // Number of files changed\n// }\n\n\n// Create Pr Comment example\nconst github_create_pr_comment = new GithubBubble({\n  operation: \"create_pr_comment\", // Add a comment to a pull request\n  owner: \"example string\", // Repository owner (username or organization name)\n  repo: \"example string\", // Repository name\n  pull_number: 42, // Pull request number\n  body: \"example string\", // Comment text content (supports GitHub Markdown)\n});\n\nconst result = await github_create_pr_comment.action();\n// outputSchema for result.data when operation === 'create_pr_comment':\n// {\n//   operation: \"create_pr_comment\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   id: number | undefined // Comment ID,\n//   node_id: string | undefined // GraphQL node ID,\n//   body: string | undefined // Comment text content,\n//   user: { login: string // Comment author username, id: number // Comment author ID } | undefined // Comment author information,\n//   created_at: string | undefined // ISO datetime when comment was created,\n//   updated_at: string | undefined // ISO datetime when comment was last updated,\n//   html_url: string | undefined // Web URL to view the comment\n// }\n\n\n// List Repositories example\nconst github_list_repositories = new GithubBubble({\n  operation: \"list_repositories\", // List repositories for the authenticated user\n  visibility: \"all\" // options: \"all\", \"public\", \"private\", // Filter by repository visibility\n  sort: \"created\" // options: \"created\", \"updated\", \"pushed\", \"full_name\", // Sort order for results\n  direction: \"asc\" // options: \"asc\", \"desc\", // Sort direction\n  per_page: 30 // default, // Number of results per page (1-100)\n  page: 1 // default, // Page number for pagination\n});\n\nconst result = await github_list_repositories.action();\n// outputSchema for result.data when operation === 'list_repositories':\n// {\n//   operation: \"list_repositories\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   repositories: { id: number // Repository ID, node_id: string // GraphQL node ID, name: string // Repository name, full_name: string // Full repository name (owner/repo), private: boolean // Whether the repository is private, owner: { login: string // Owner username, id: number // Owner ID, avatar_url: string // Owner avatar URL, html_url: string // Owner profile URL } // Repository owner information, html_url: string // Repository web URL, description: string | null // Repository description, fork: boolean // Whether this is a fork, created_at: string // ISO datetime when repository was created, updated_at: string // ISO datetime when repository was last updated, pushed_at: string // ISO datetime of last push, size: number // Repository size in KB, stargazers_count: number // Number of stars, watchers_count: number // Number of watchers, language: string | null // Primary programming language, forks_count: number // Number of forks, open_issues_count: number // Number of open issues, default_branch: string // Default branch name, visibility: string | undefined // Repository visibility (public, private, internal) }[] | undefined // Array of repositories\n// }\n\n\n// Get Repository example\nconst github_get_repository = new GithubBubble({\n  operation: \"get_repository\", // Get detailed information about a specific repository\n  owner: \"example string\", // Repository owner (username or organization name)\n  repo: \"example string\", // Repository name\n});\n\nconst result = await github_get_repository.action();\n// outputSchema for result.data when operation === 'get_repository':\n// {\n//   operation: \"get_repository\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   id: number | undefined // Repository ID,\n//   node_id: string | undefined // GraphQL node ID,\n//   name: string | undefined // Repository name,\n//   full_name: string | undefined // Full repository name (owner/repo),\n//   private: boolean | undefined // Whether the repository is private,\n//   owner: { login: string // Owner username, id: number // Owner ID, avatar_url: string // Owner avatar URL, html_url: string // Owner profile URL } | undefined // Repository owner information,\n//   html_url: string | undefined // Repository web URL,\n//   description: string | null | undefined // Repository description,\n//   fork: boolean | undefined // Whether this is a fork,\n//   created_at: string | undefined // ISO datetime when repository was created,\n//   updated_at: string | undefined // ISO datetime when repository was last updated,\n//   pushed_at: string | undefined // ISO datetime of last push,\n//   size: number | undefined // Repository size in KB,\n//   stargazers_count: number | undefined // Number of stars,\n//   watchers_count: number | undefined // Number of watchers,\n//   language: string | null | undefined // Primary programming language,\n//   forks_count: number | undefined // Number of forks,\n//   open_issues_count: number | undefined // Number of open issues,\n//   default_branch: string | undefined // Default branch name,\n//   visibility: string | undefined | undefined // Repository visibility (public, private, internal)\n// }\n\n\n// Create Issue Comment example\nconst github_create_issue_comment = new GithubBubble({\n  operation: \"create_issue_comment\", // Add a comment to an issue\n  owner: \"example string\", // Repository owner (username or organization name)\n  repo: \"example string\", // Repository name\n  issue_number: 42, // Issue number\n  body: \"example string\", // Comment text content (supports GitHub Markdown)\n});\n\nconst result = await github_create_issue_comment.action();\n// outputSchema for result.data when operation === 'create_issue_comment':\n// {\n//   operation: \"create_issue_comment\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   id: number | undefined // Comment ID,\n//   node_id: string | undefined // GraphQL node ID,\n//   body: string | undefined // Comment text content,\n//   user: { login: string // Comment author username, id: number // Comment author ID } | undefined // Comment author information,\n//   created_at: string | undefined // ISO datetime when comment was created,\n//   updated_at: string | undefined // ISO datetime when comment was last updated,\n//   html_url: string | undefined // Web URL to view the comment\n// }\n\n\n// Create Issue example\nconst github_create_issue = new GithubBubble({\n  operation: \"create_issue\", // Create a new issue in a GitHub repository\n  owner: \"example string\", // Repository owner (username or organization name)\n  repo: \"example string\", // Repository name\n  title: \"example string\", // Issue title\n  body: \"example string\", // Issue body content (supports GitHub Markdown)\n  labels: [\"example string\"], // Array of label names to add to the issue\n  assignees: [\"example string\"], // Array of usernames to assign to the issue\n});\n\nconst result = await github_create_issue.action();\n// outputSchema for result.data when operation === 'create_issue':\n// {\n//   operation: \"create_issue\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   id: number | undefined // Issue ID,\n//   node_id: string | undefined // GraphQL node ID,\n//   number: number | undefined // Issue number,\n//   state: \"open\" | \"closed\" | undefined // Issue state,\n//   title: string | undefined // Issue title,\n//   body: string | null | undefined // Issue description,\n//   user: { login: string // Issue creator username, id: number // Issue creator ID } | undefined // Issue creator information,\n//   labels: { id: number // Label ID, name: string // Label name, color: string // Label color (hex), description: string | null // Label description }[] | undefined // Issue labels,\n//   created_at: string | undefined // ISO datetime when issue was created,\n//   updated_at: string | undefined // ISO datetime when issue was last updated,\n//   closed_at: string | null | undefined // ISO datetime when issue was closed,\n//   html_url: string | undefined // Web URL to view the issue,\n//   comments: number | undefined // Number of comments\n// }\n\n\n// List Issues example\nconst github_list_issues = new GithubBubble({\n  operation: \"list_issues\", // List issues in a GitHub repository\n  owner: \"example string\", // Repository owner (username or organization name)\n  repo: \"example string\", // Repository name\n  state: \"open\" // options: \"open\", \"closed\", \"all\", // Filter by issue state\n  labels: \"example string\", // Filter by labels (comma-separated list)\n  sort: \"created\" // options: \"created\", \"updated\", \"comments\", // Sort order for results\n  direction: \"asc\" // options: \"asc\", \"desc\", // Sort direction\n  per_page: 30 // default, // Number of results per page (1-100)\n  page: 1 // default, // Page number for pagination\n});\n\nconst result = await github_list_issues.action();\n// outputSchema for result.data when operation === 'list_issues':\n// {\n//   operation: \"list_issues\",\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   issues: { id: number // Issue ID, node_id: string // GraphQL node ID, number: number // Issue number, state: \"open\" | \"closed\" // Issue state, title: string // Issue title, body: string | null // Issue description, user: { login: string // Issue creator username, id: number // Issue creator ID } // Issue creator information, labels: { id: number // Label ID, name: string // Label name, color: string // Label color (hex), description: string | null // Label description }[] // Issue labels, created_at: string // ISO datetime when issue was created, updated_at: string // ISO datetime when issue was last updated, closed_at: string | null // ISO datetime when issue was closed, html_url: string // Web URL to view the issue, comments: number // Number of comments }[] | undefined // Array of issues\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`github failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GITHUB_TOKEN"
      ]
    },
    {
      "name": "followupboss",
      "alias": "fub",
      "type": "service",
      "shortDescription": "Follow Up Boss CRM integration",
      "useCase": "- Manage contacts/people with full CRUD operations",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_people"
                ],
                "description": "List people/contacts"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Number of results to return"
              },
              "offset": {
                "type": "number",
                "default": 0,
                "description": "Number of results to skip"
              },
              "sort": {
                "type": "string",
                "description": "Sort field"
              },
              "fields": {
                "type": "string",
                "description": "Comma-separated fields to return (use \"allFields\" for all)"
              },
              "includeTrash": {
                "type": "boolean",
                "default": false,
                "description": "Include people in Trash stage"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_person"
                ],
                "description": "Get a specific person by ID"
              },
              "person_id": {
                "type": "number",
                "description": "Person ID to retrieve"
              },
              "fields": {
                "type": "string",
                "description": "Comma-separated fields to return"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "person_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_person"
                ],
                "description": "Create a new person/contact"
              },
              "firstName": {
                "type": "string",
                "description": "First name"
              },
              "lastName": {
                "type": "string",
                "description": "Last name"
              },
              "emails": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string",
                      "format": "email"
                    },
                    "type": {
                      "type": "string"
                    },
                    "isPrimary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Email addresses"
              },
              "phones": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "isPrimary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Phone numbers"
              },
              "stage": {
                "type": "string",
                "description": "Initial stage"
              },
              "source": {
                "type": "string",
                "description": "Lead source"
              },
              "assignedTo": {
                "type": "number",
                "description": "Assigned user ID"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Tags to apply"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_person"
                ],
                "description": "Update an existing person"
              },
              "person_id": {
                "type": "number",
                "description": "Person ID to update"
              },
              "firstName": {
                "type": "string",
                "description": "First name"
              },
              "lastName": {
                "type": "string",
                "description": "Last name"
              },
              "emails": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string",
                      "format": "email"
                    },
                    "type": {
                      "type": "string"
                    },
                    "isPrimary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Email addresses"
              },
              "phones": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "isPrimary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Phone numbers"
              },
              "stage": {
                "type": "string",
                "description": "Stage"
              },
              "source": {
                "type": "string",
                "description": "Lead source"
              },
              "assignedTo": {
                "type": "number",
                "description": "Assigned user ID"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Tags"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "person_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_person"
                ],
                "description": "Delete a person"
              },
              "person_id": {
                "type": "number",
                "description": "Person ID to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "person_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tasks"
                ],
                "description": "List tasks"
              },
              "personId": {
                "type": "number",
                "description": "Filter by person ID"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Number of results to return"
              },
              "offset": {
                "type": "number",
                "default": 0,
                "description": "Number of results to skip"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_task"
                ],
                "description": "Get a specific task by ID"
              },
              "task_id": {
                "type": "number",
                "description": "Task ID to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_task"
                ],
                "description": "Create a new task"
              },
              "personId": {
                "type": "number",
                "description": "Associated person ID"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Task name/title"
              },
              "description": {
                "type": "string",
                "description": "Task description"
              },
              "dueDate": {
                "type": "string",
                "description": "Due date (YYYY-MM-DD)"
              },
              "assignedTo": {
                "type": "number",
                "description": "Assigned user ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_task"
                ],
                "description": "Update an existing task"
              },
              "task_id": {
                "type": "number",
                "description": "Task ID to update"
              },
              "name": {
                "type": "string",
                "description": "Task name/title"
              },
              "description": {
                "type": "string",
                "description": "Task description"
              },
              "dueDate": {
                "type": "string",
                "description": "Due date (YYYY-MM-DD)"
              },
              "completed": {
                "type": "boolean",
                "description": "Whether task is completed"
              },
              "assignedTo": {
                "type": "number",
                "description": "Assigned user ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_task"
                ],
                "description": "Delete a task"
              },
              "task_id": {
                "type": "number",
                "description": "Task ID to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_notes"
                ],
                "description": "List notes"
              },
              "personId": {
                "type": "number",
                "description": "Filter by person ID"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Number of results to return"
              },
              "offset": {
                "type": "number",
                "default": 0,
                "description": "Number of results to skip"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_note"
                ],
                "description": "Create a new note"
              },
              "personId": {
                "type": "number",
                "description": "Associated person ID"
              },
              "subject": {
                "type": "string",
                "description": "Note subject"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "description": "Note content"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "personId",
              "body"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_note"
                ],
                "description": "Update an existing note"
              },
              "note_id": {
                "type": "number",
                "description": "Note ID to update"
              },
              "subject": {
                "type": "string",
                "description": "Note subject"
              },
              "body": {
                "type": "string",
                "description": "Note content"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "note_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_note"
                ],
                "description": "Delete a note"
              },
              "note_id": {
                "type": "number",
                "description": "Note ID to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "note_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_deals"
                ],
                "description": "List deals"
              },
              "personId": {
                "type": "number",
                "description": "Filter by person ID"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Number of results to return"
              },
              "offset": {
                "type": "number",
                "default": 0,
                "description": "Number of results to skip"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_deal"
                ],
                "description": "Get a specific deal by ID"
              },
              "deal_id": {
                "type": "number",
                "description": "Deal ID to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "deal_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_deal"
                ],
                "description": "Create a new deal"
              },
              "personId": {
                "type": "number",
                "description": "Associated person ID"
              },
              "name": {
                "type": "string",
                "description": "Deal name"
              },
              "price": {
                "type": "number",
                "description": "Deal price/value"
              },
              "stage": {
                "type": "string",
                "description": "Deal stage"
              },
              "closeDate": {
                "type": "string",
                "description": "Expected close date (YYYY-MM-DD)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_deal"
                ],
                "description": "Update an existing deal"
              },
              "deal_id": {
                "type": "number",
                "description": "Deal ID to update"
              },
              "name": {
                "type": "string",
                "description": "Deal name"
              },
              "price": {
                "type": "number",
                "description": "Deal price/value"
              },
              "stage": {
                "type": "string",
                "description": "Deal stage"
              },
              "closeDate": {
                "type": "string",
                "description": "Expected close date (YYYY-MM-DD)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "deal_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_events"
                ],
                "description": "List/search events"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Number of results to return"
              },
              "offset": {
                "type": "number",
                "default": 0,
                "description": "Number of results to skip"
              },
              "personId": {
                "type": "number",
                "description": "Filter by person ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_event"
                ],
                "description": "Get a specific event by ID"
              },
              "event_id": {
                "type": "number",
                "description": "Event ID to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "event_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_event"
                ],
                "description": "Create an event (preferred for new leads)"
              },
              "type": {
                "type": "string",
                "minLength": 1,
                "description": "Event type (e.g., \"Showing Request\", \"Registration\")"
              },
              "source": {
                "type": "string",
                "description": "Event source"
              },
              "message": {
                "type": "string",
                "description": "Event message"
              },
              "person": {
                "type": "object",
                "properties": {
                  "firstName": {
                    "type": "string"
                  },
                  "lastName": {
                    "type": "string"
                  },
                  "emails": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string",
                          "format": "email"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "phones": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false,
                "description": "Person data for the event"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "type",
              "person"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_calls"
                ],
                "description": "List calls"
              },
              "personId": {
                "type": "number",
                "description": "Filter by person ID"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Number of results to return"
              },
              "offset": {
                "type": "number",
                "default": 0,
                "description": "Number of results to skip"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_call"
                ],
                "description": "Log a call"
              },
              "personId": {
                "type": "number",
                "description": "Associated person ID"
              },
              "outcome": {
                "type": "string",
                "description": "Call outcome"
              },
              "note": {
                "type": "string",
                "description": "Call notes"
              },
              "duration": {
                "type": "number",
                "description": "Call duration in seconds"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "personId"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_appointments"
                ],
                "description": "List appointments"
              },
              "personId": {
                "type": "number",
                "description": "Filter by person ID"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Number of results to return"
              },
              "offset": {
                "type": "number",
                "default": 0,
                "description": "Number of results to skip"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_appointment"
                ],
                "description": "Create an appointment"
              },
              "personId": {
                "type": "number",
                "description": "Associated person ID"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "Appointment title"
              },
              "startTime": {
                "type": "string",
                "description": "Start time (ISO 8601)"
              },
              "endTime": {
                "type": "string",
                "description": "End time (ISO 8601)"
              },
              "location": {
                "type": "string",
                "description": "Location"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "title",
              "startTime"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_webhooks"
                ],
                "description": "List registered webhooks"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_webhook"
                ],
                "description": "Get a specific webhook by ID"
              },
              "webhook_id": {
                "type": "number",
                "description": "Webhook ID to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "webhook_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_webhook"
                ],
                "description": "Register a new webhook"
              },
              "event": {
                "type": "string",
                "enum": [
                  "peopleCreated",
                  "peopleUpdated",
                  "peopleDeleted",
                  "peopleTagsCreated",
                  "peopleStageUpdated",
                  "peopleRelationshipCreated",
                  "peopleRelationshipUpdated",
                  "peopleRelationshipDeleted",
                  "notesCreated",
                  "notesUpdated",
                  "notesDeleted",
                  "emailsCreated",
                  "emailsUpdated",
                  "emailsDeleted",
                  "tasksCreated",
                  "tasksUpdated",
                  "tasksDeleted",
                  "appointmentsCreated",
                  "appointmentsUpdated",
                  "appointmentsDeleted",
                  "textMessagesCreated",
                  "textMessagesUpdated",
                  "textMessagesDeleted",
                  "callsCreated",
                  "callsUpdated",
                  "callsDeleted",
                  "dealsCreated",
                  "dealsUpdated",
                  "dealsDeleted",
                  "eventsCreated",
                  "stageCreated",
                  "stageUpdated",
                  "stageDeleted",
                  "pipelineCreated",
                  "pipelineUpdated",
                  "pipelineDeleted",
                  "pipelineStageCreated",
                  "pipelineStageUpdated",
                  "pipelineStageDeleted",
                  "customFieldsCreated",
                  "customFieldsUpdated",
                  "customFieldsDeleted",
                  "dealCustomFieldsCreated",
                  "dealCustomFieldsUpdated",
                  "dealCustomFieldsDeleted",
                  "emEventsOpened",
                  "emEventsClicked",
                  "emEventsUnsubscribed",
                  "reactionCreated",
                  "reactionDeleted",
                  "threadedReplyCreated",
                  "threadedReplyUpdated",
                  "threadedReplyDeleted"
                ],
                "description": "Webhook event type to subscribe to"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "HTTPS callback URL for webhook notifications"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "event",
              "url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_webhook"
                ],
                "description": "Update an existing webhook"
              },
              "webhook_id": {
                "type": "number",
                "description": "Webhook ID to update"
              },
              "event": {
                "type": "string",
                "enum": [
                  "peopleCreated",
                  "peopleUpdated",
                  "peopleDeleted",
                  "peopleTagsCreated",
                  "peopleStageUpdated",
                  "peopleRelationshipCreated",
                  "peopleRelationshipUpdated",
                  "peopleRelationshipDeleted",
                  "notesCreated",
                  "notesUpdated",
                  "notesDeleted",
                  "emailsCreated",
                  "emailsUpdated",
                  "emailsDeleted",
                  "tasksCreated",
                  "tasksUpdated",
                  "tasksDeleted",
                  "appointmentsCreated",
                  "appointmentsUpdated",
                  "appointmentsDeleted",
                  "textMessagesCreated",
                  "textMessagesUpdated",
                  "textMessagesDeleted",
                  "callsCreated",
                  "callsUpdated",
                  "callsDeleted",
                  "dealsCreated",
                  "dealsUpdated",
                  "dealsDeleted",
                  "eventsCreated",
                  "stageCreated",
                  "stageUpdated",
                  "stageDeleted",
                  "pipelineCreated",
                  "pipelineUpdated",
                  "pipelineDeleted",
                  "pipelineStageCreated",
                  "pipelineStageUpdated",
                  "pipelineStageDeleted",
                  "customFieldsCreated",
                  "customFieldsUpdated",
                  "customFieldsDeleted",
                  "dealCustomFieldsCreated",
                  "dealCustomFieldsUpdated",
                  "dealCustomFieldsDeleted",
                  "emEventsOpened",
                  "emEventsClicked",
                  "emEventsUnsubscribed",
                  "reactionCreated",
                  "reactionDeleted",
                  "threadedReplyCreated",
                  "threadedReplyUpdated",
                  "threadedReplyDeleted"
                ],
                "description": "New webhook event type"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "New HTTPS callback URL"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "webhook_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_webhook"
                ],
                "description": "Delete a webhook"
              },
              "webhook_id": {
                "type": "number",
                "description": "Webhook ID to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "webhook_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_people"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "people": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Unique person identifier"
                    },
                    "firstName": {
                      "type": "string",
                      "description": "First name"
                    },
                    "lastName": {
                      "type": "string",
                      "description": "Last name"
                    },
                    "emails": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string"
                          },
                          "isPrimary": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "value"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Email addresses"
                    },
                    "phones": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string"
                          },
                          "isPrimary": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "value"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Phone numbers"
                    },
                    "stage": {
                      "type": "string",
                      "description": "Current stage in pipeline"
                    },
                    "source": {
                      "type": "string",
                      "description": "Lead source"
                    },
                    "assignedTo": {
                      "type": "number",
                      "description": "Assigned user ID"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Tags applied to person"
                    },
                    "created": {
                      "type": "string",
                      "description": "Creation timestamp"
                    },
                    "updated": {
                      "type": "string",
                      "description": "Last update timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": true,
                  "description": "FUB person/contact object"
                }
              },
              "_metadata": {
                "type": "object",
                "properties": {
                  "total": {
                    "type": "number"
                  },
                  "limit": {
                    "type": "number"
                  },
                  "offset": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_person"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "person": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique person identifier"
                  },
                  "firstName": {
                    "type": "string",
                    "description": "First name"
                  },
                  "lastName": {
                    "type": "string",
                    "description": "Last name"
                  },
                  "emails": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "isPrimary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Email addresses"
                  },
                  "phones": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "isPrimary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Phone numbers"
                  },
                  "stage": {
                    "type": "string",
                    "description": "Current stage in pipeline"
                  },
                  "source": {
                    "type": "string",
                    "description": "Lead source"
                  },
                  "assignedTo": {
                    "type": "number",
                    "description": "Assigned user ID"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Tags applied to person"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updated": {
                    "type": "string",
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "FUB person/contact object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_person"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "person": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique person identifier"
                  },
                  "firstName": {
                    "type": "string",
                    "description": "First name"
                  },
                  "lastName": {
                    "type": "string",
                    "description": "Last name"
                  },
                  "emails": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "isPrimary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Email addresses"
                  },
                  "phones": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "isPrimary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Phone numbers"
                  },
                  "stage": {
                    "type": "string",
                    "description": "Current stage in pipeline"
                  },
                  "source": {
                    "type": "string",
                    "description": "Lead source"
                  },
                  "assignedTo": {
                    "type": "number",
                    "description": "Assigned user ID"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Tags applied to person"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updated": {
                    "type": "string",
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "FUB person/contact object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_person"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "person": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique person identifier"
                  },
                  "firstName": {
                    "type": "string",
                    "description": "First name"
                  },
                  "lastName": {
                    "type": "string",
                    "description": "Last name"
                  },
                  "emails": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "isPrimary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Email addresses"
                  },
                  "phones": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "isPrimary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Phone numbers"
                  },
                  "stage": {
                    "type": "string",
                    "description": "Current stage in pipeline"
                  },
                  "source": {
                    "type": "string",
                    "description": "Lead source"
                  },
                  "assignedTo": {
                    "type": "number",
                    "description": "Assigned user ID"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Tags applied to person"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updated": {
                    "type": "string",
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "FUB person/contact object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_person"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "deleted_id": {
                "type": "number"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tasks"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "tasks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Unique task identifier"
                    },
                    "personId": {
                      "type": "number",
                      "description": "Associated person ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Task name/title"
                    },
                    "description": {
                      "type": "string",
                      "description": "Task description"
                    },
                    "dueDate": {
                      "type": "string",
                      "description": "Due date (YYYY-MM-DD)"
                    },
                    "completed": {
                      "type": "boolean",
                      "description": "Whether task is completed"
                    },
                    "assignedTo": {
                      "type": "number",
                      "description": "Assigned user ID"
                    },
                    "created": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": true,
                  "description": "FUB task object"
                }
              },
              "_metadata": {
                "type": "object",
                "properties": {
                  "total": {
                    "type": "number"
                  },
                  "limit": {
                    "type": "number"
                  },
                  "offset": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "task": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique task identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Task name/title"
                  },
                  "description": {
                    "type": "string",
                    "description": "Task description"
                  },
                  "dueDate": {
                    "type": "string",
                    "description": "Due date (YYYY-MM-DD)"
                  },
                  "completed": {
                    "type": "boolean",
                    "description": "Whether task is completed"
                  },
                  "assignedTo": {
                    "type": "number",
                    "description": "Assigned user ID"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": true,
                "description": "FUB task object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "task": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique task identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Task name/title"
                  },
                  "description": {
                    "type": "string",
                    "description": "Task description"
                  },
                  "dueDate": {
                    "type": "string",
                    "description": "Due date (YYYY-MM-DD)"
                  },
                  "completed": {
                    "type": "boolean",
                    "description": "Whether task is completed"
                  },
                  "assignedTo": {
                    "type": "number",
                    "description": "Assigned user ID"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": true,
                "description": "FUB task object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "task": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique task identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Task name/title"
                  },
                  "description": {
                    "type": "string",
                    "description": "Task description"
                  },
                  "dueDate": {
                    "type": "string",
                    "description": "Due date (YYYY-MM-DD)"
                  },
                  "completed": {
                    "type": "boolean",
                    "description": "Whether task is completed"
                  },
                  "assignedTo": {
                    "type": "number",
                    "description": "Assigned user ID"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": true,
                "description": "FUB task object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "deleted_id": {
                "type": "number"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_notes"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "notes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Unique note identifier"
                    },
                    "personId": {
                      "type": "number",
                      "description": "Associated person ID"
                    },
                    "subject": {
                      "type": "string",
                      "description": "Note subject"
                    },
                    "body": {
                      "type": "string",
                      "description": "Note content"
                    },
                    "created": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "id",
                    "personId",
                    "body"
                  ],
                  "additionalProperties": true,
                  "description": "FUB note object"
                }
              },
              "_metadata": {
                "type": "object",
                "properties": {
                  "total": {
                    "type": "number"
                  },
                  "limit": {
                    "type": "number"
                  },
                  "offset": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_note"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "note": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique note identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "subject": {
                    "type": "string",
                    "description": "Note subject"
                  },
                  "body": {
                    "type": "string",
                    "description": "Note content"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id",
                  "personId",
                  "body"
                ],
                "additionalProperties": true,
                "description": "FUB note object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_note"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "note": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique note identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "subject": {
                    "type": "string",
                    "description": "Note subject"
                  },
                  "body": {
                    "type": "string",
                    "description": "Note content"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id",
                  "personId",
                  "body"
                ],
                "additionalProperties": true,
                "description": "FUB note object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_note"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "deleted_id": {
                "type": "number"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_deals"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "deals": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Unique deal identifier"
                    },
                    "personId": {
                      "type": "number",
                      "description": "Associated person ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Deal name"
                    },
                    "price": {
                      "type": "number",
                      "description": "Deal price/value"
                    },
                    "stage": {
                      "type": "string",
                      "description": "Deal stage"
                    },
                    "closeDate": {
                      "type": "string",
                      "description": "Expected close date"
                    },
                    "created": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": true,
                  "description": "FUB deal object"
                }
              },
              "_metadata": {
                "type": "object",
                "properties": {
                  "total": {
                    "type": "number"
                  },
                  "limit": {
                    "type": "number"
                  },
                  "offset": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_deal"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "deal": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique deal identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Deal name"
                  },
                  "price": {
                    "type": "number",
                    "description": "Deal price/value"
                  },
                  "stage": {
                    "type": "string",
                    "description": "Deal stage"
                  },
                  "closeDate": {
                    "type": "string",
                    "description": "Expected close date"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "FUB deal object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_deal"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "deal": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique deal identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Deal name"
                  },
                  "price": {
                    "type": "number",
                    "description": "Deal price/value"
                  },
                  "stage": {
                    "type": "string",
                    "description": "Deal stage"
                  },
                  "closeDate": {
                    "type": "string",
                    "description": "Expected close date"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "FUB deal object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_deal"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "deal": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique deal identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Deal name"
                  },
                  "price": {
                    "type": "number",
                    "description": "Deal price/value"
                  },
                  "stage": {
                    "type": "string",
                    "description": "Deal stage"
                  },
                  "closeDate": {
                    "type": "string",
                    "description": "Expected close date"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "FUB deal object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_events"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "events": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Event identifier"
                    },
                    "type": {
                      "type": "string",
                      "description": "Event type (e.g., \"Showing Request\", \"Registration\")"
                    },
                    "source": {
                      "type": "string",
                      "description": "Event source"
                    },
                    "message": {
                      "type": "string",
                      "description": "Event message"
                    },
                    "person": {
                      "type": "object",
                      "properties": {
                        "firstName": {
                          "type": "string"
                        },
                        "lastName": {
                          "type": "string"
                        },
                        "emails": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "value"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "phones": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "value"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "additionalProperties": false,
                      "description": "Person data for the event"
                    },
                    "created": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": true,
                  "description": "FUB event object"
                }
              },
              "_metadata": {
                "type": "object",
                "properties": {
                  "total": {
                    "type": "number"
                  },
                  "limit": {
                    "type": "number"
                  },
                  "offset": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_event"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "event": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Event identifier"
                  },
                  "type": {
                    "type": "string",
                    "description": "Event type (e.g., \"Showing Request\", \"Registration\")"
                  },
                  "source": {
                    "type": "string",
                    "description": "Event source"
                  },
                  "message": {
                    "type": "string",
                    "description": "Event message"
                  },
                  "person": {
                    "type": "object",
                    "properties": {
                      "firstName": {
                        "type": "string"
                      },
                      "lastName": {
                        "type": "string"
                      },
                      "emails": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "value"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "phones": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "value"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "tags": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "additionalProperties": false,
                    "description": "Person data for the event"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": true,
                "description": "FUB event object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_event"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "event": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Event identifier"
                  },
                  "type": {
                    "type": "string",
                    "description": "Event type (e.g., \"Showing Request\", \"Registration\")"
                  },
                  "source": {
                    "type": "string",
                    "description": "Event source"
                  },
                  "message": {
                    "type": "string",
                    "description": "Event message"
                  },
                  "person": {
                    "type": "object",
                    "properties": {
                      "firstName": {
                        "type": "string"
                      },
                      "lastName": {
                        "type": "string"
                      },
                      "emails": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "value"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "phones": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "value"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "tags": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "additionalProperties": false,
                    "description": "Person data for the event"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": true,
                "description": "FUB event object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_calls"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "calls": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Unique call identifier"
                    },
                    "personId": {
                      "type": "number",
                      "description": "Associated person ID"
                    },
                    "outcome": {
                      "type": "string",
                      "description": "Call outcome"
                    },
                    "note": {
                      "type": "string",
                      "description": "Call notes"
                    },
                    "duration": {
                      "type": "number",
                      "description": "Call duration in seconds"
                    },
                    "created": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "id",
                    "personId"
                  ],
                  "additionalProperties": true,
                  "description": "FUB call object"
                }
              },
              "_metadata": {
                "type": "object",
                "properties": {
                  "total": {
                    "type": "number"
                  },
                  "limit": {
                    "type": "number"
                  },
                  "offset": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_call"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "call": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique call identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "outcome": {
                    "type": "string",
                    "description": "Call outcome"
                  },
                  "note": {
                    "type": "string",
                    "description": "Call notes"
                  },
                  "duration": {
                    "type": "number",
                    "description": "Call duration in seconds"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id",
                  "personId"
                ],
                "additionalProperties": true,
                "description": "FUB call object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_appointments"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "appointments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Unique appointment identifier"
                    },
                    "personId": {
                      "type": "number",
                      "description": "Associated person ID"
                    },
                    "title": {
                      "type": "string",
                      "description": "Appointment title"
                    },
                    "startTime": {
                      "type": "string",
                      "description": "Start time"
                    },
                    "endTime": {
                      "type": "string",
                      "description": "End time"
                    },
                    "location": {
                      "type": "string",
                      "description": "Location"
                    },
                    "created": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": true,
                  "description": "FUB appointment object"
                }
              },
              "_metadata": {
                "type": "object",
                "properties": {
                  "total": {
                    "type": "number"
                  },
                  "limit": {
                    "type": "number"
                  },
                  "offset": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_appointment"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "appointment": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique appointment identifier"
                  },
                  "personId": {
                    "type": "number",
                    "description": "Associated person ID"
                  },
                  "title": {
                    "type": "string",
                    "description": "Appointment title"
                  },
                  "startTime": {
                    "type": "string",
                    "description": "Start time"
                  },
                  "endTime": {
                    "type": "string",
                    "description": "End time"
                  },
                  "location": {
                    "type": "string",
                    "description": "Location"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "FUB appointment object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_webhooks"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "webhooks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Unique webhook identifier"
                    },
                    "event": {
                      "type": "string",
                      "description": "Webhook event type"
                    },
                    "url": {
                      "type": "string",
                      "description": "Callback URL"
                    },
                    "status": {
                      "type": "string",
                      "description": "Webhook status (Active/Inactive)"
                    }
                  },
                  "required": [
                    "id",
                    "event",
                    "url"
                  ],
                  "additionalProperties": true,
                  "description": "FUB webhook object"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_webhook"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "webhook": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique webhook identifier"
                  },
                  "event": {
                    "type": "string",
                    "description": "Webhook event type"
                  },
                  "url": {
                    "type": "string",
                    "description": "Callback URL"
                  },
                  "status": {
                    "type": "string",
                    "description": "Webhook status (Active/Inactive)"
                  }
                },
                "required": [
                  "id",
                  "event",
                  "url"
                ],
                "additionalProperties": true,
                "description": "FUB webhook object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_webhook"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "webhook": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique webhook identifier"
                  },
                  "event": {
                    "type": "string",
                    "description": "Webhook event type"
                  },
                  "url": {
                    "type": "string",
                    "description": "Callback URL"
                  },
                  "status": {
                    "type": "string",
                    "description": "Webhook status (Active/Inactive)"
                  }
                },
                "required": [
                  "id",
                  "event",
                  "url"
                ],
                "additionalProperties": true,
                "description": "FUB webhook object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_webhook"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "webhook": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique webhook identifier"
                  },
                  "event": {
                    "type": "string",
                    "description": "Webhook event type"
                  },
                  "url": {
                    "type": "string",
                    "description": "Callback URL"
                  },
                  "status": {
                    "type": "string",
                    "description": "Webhook status (Active/Inactive)"
                  }
                },
                "required": [
                  "id",
                  "event",
                  "url"
                ],
                "additionalProperties": true,
                "description": "FUB webhook object"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_webhook"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "deleted_id": {
                "type": "number"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List People example\nconst followupboss_list_people = new FollowUpBossBubble({\n  operation: \"list_people\", // List people/contacts\n  limit: 25 // default, // Number of results to return\n  offset: 0 // default, // Number of results to skip\n  sort: \"example string\", // Sort field\n  fields: \"example string\", // Comma-separated fields to return (use \"allFields\" for all)\n  includeTrash: false // default, // Include people in Trash stage\n});\n\nconst result = await followupboss_list_people.action();\n// outputSchema for result.data when operation === 'list_people':\n// {\n//   operation: \"list_people\",\n//   success: boolean,\n//   people: { id: number // Unique person identifier, firstName: string | undefined // First name, lastName: string | undefined // Last name, emails: { value: string, type: string | undefined, isPrimary: boolean | undefined }[] | undefined // Email addresses, phones: { value: string, type: string | undefined, isPrimary: boolean | undefined }[] | undefined // Phone numbers, stage: string | undefined // Current stage in pipeline, source: string | undefined // Lead source, assignedTo: number | undefined // Assigned user ID, tags: string[] | undefined // Tags applied to person, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined,\n//   _metadata: { total: number | undefined, limit: number | undefined, offset: number | undefined } | undefined,\n//   error: string\n// }\n\n\n// Get Person example\nconst followupboss_get_person = new FollowUpBossBubble({\n  operation: \"get_person\", // Get a specific person by ID\n  person_id: 42, // Person ID to retrieve\n  fields: \"example string\", // Comma-separated fields to return\n});\n\nconst result = await followupboss_get_person.action();\n// outputSchema for result.data when operation === 'get_person':\n// {\n//   operation: \"get_person\",\n//   success: boolean,\n//   person: { id: number // Unique person identifier, firstName: string | undefined // First name, lastName: string | undefined // Last name, emails: { value: string, type: string | undefined, isPrimary: boolean | undefined }[] | undefined // Email addresses, phones: { value: string, type: string | undefined, isPrimary: boolean | undefined }[] | undefined // Phone numbers, stage: string | undefined // Current stage in pipeline, source: string | undefined // Lead source, assignedTo: number | undefined // Assigned user ID, tags: string[] | undefined // Tags applied to person, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp } | undefined // FUB person/contact object,\n//   error: string\n// }\n\n\n// Create Person example\nconst followupboss_create_person = new FollowUpBossBubble({\n  operation: \"create_person\", // Create a new person/contact\n  firstName: \"example string\", // First name\n  lastName: \"example string\", // Last name\n  emails: [{ value: \"example string\", type: \"example string\", isPrimary: true }], // Email addresses\n  phones: [{ value: \"example string\", type: \"example string\", isPrimary: true }], // Phone numbers\n  stage: \"example string\", // Initial stage\n  source: \"example string\", // Lead source\n  assignedTo: 42, // Assigned user ID\n  tags: [\"example string\"], // Tags to apply\n});\n\nconst result = await followupboss_create_person.action();\n// outputSchema for result.data when operation === 'create_person':\n// {\n//   operation: \"create_person\",\n//   success: boolean,\n//   person: { id: number // Unique person identifier, firstName: string | undefined // First name, lastName: string | undefined // Last name, emails: { value: string, type: string | undefined, isPrimary: boolean | undefined }[] | undefined // Email addresses, phones: { value: string, type: string | undefined, isPrimary: boolean | undefined }[] | undefined // Phone numbers, stage: string | undefined // Current stage in pipeline, source: string | undefined // Lead source, assignedTo: number | undefined // Assigned user ID, tags: string[] | undefined // Tags applied to person, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp } | undefined // FUB person/contact object,\n//   error: string\n// }\n\n\n// Update Person example\nconst followupboss_update_person = new FollowUpBossBubble({\n  operation: \"update_person\", // Update an existing person\n  person_id: 42, // Person ID to update\n  firstName: \"example string\", // First name\n  lastName: \"example string\", // Last name\n  emails: [{ value: \"example string\", type: \"example string\", isPrimary: true }], // Email addresses\n  phones: [{ value: \"example string\", type: \"example string\", isPrimary: true }], // Phone numbers\n  stage: \"example string\", // Stage\n  source: \"example string\", // Lead source\n  assignedTo: 42, // Assigned user ID\n  tags: [\"example string\"], // Tags\n});\n\nconst result = await followupboss_update_person.action();\n// outputSchema for result.data when operation === 'update_person':\n// {\n//   operation: \"update_person\",\n//   success: boolean,\n//   person: { id: number // Unique person identifier, firstName: string | undefined // First name, lastName: string | undefined // Last name, emails: { value: string, type: string | undefined, isPrimary: boolean | undefined }[] | undefined // Email addresses, phones: { value: string, type: string | undefined, isPrimary: boolean | undefined }[] | undefined // Phone numbers, stage: string | undefined // Current stage in pipeline, source: string | undefined // Lead source, assignedTo: number | undefined // Assigned user ID, tags: string[] | undefined // Tags applied to person, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp } | undefined // FUB person/contact object,\n//   error: string\n// }\n\n\n// Delete Person example\nconst followupboss_delete_person = new FollowUpBossBubble({\n  operation: \"delete_person\", // Delete a person\n  person_id: 42, // Person ID to delete\n});\n\nconst result = await followupboss_delete_person.action();\n// outputSchema for result.data when operation === 'delete_person':\n// {\n//   operation: \"delete_person\",\n//   success: boolean,\n//   deleted_id: number | undefined,\n//   error: string\n// }\n\n\n// List Tasks example\nconst followupboss_list_tasks = new FollowUpBossBubble({\n  operation: \"list_tasks\", // List tasks\n  personId: 42, // Filter by person ID\n  limit: 25 // default, // Number of results to return\n  offset: 0 // default, // Number of results to skip\n});\n\nconst result = await followupboss_list_tasks.action();\n// outputSchema for result.data when operation === 'list_tasks':\n// {\n//   operation: \"list_tasks\",\n//   success: boolean,\n//   tasks: { id: number // Unique task identifier, personId: number | undefined // Associated person ID, name: string // Task name/title, description: string | undefined // Task description, dueDate: string | undefined // Due date (YYYY-MM-DD), completed: boolean | undefined // Whether task is completed, assignedTo: number | undefined // Assigned user ID, created: string | undefined // Creation timestamp }[] | undefined,\n//   _metadata: { total: number | undefined, limit: number | undefined, offset: number | undefined } | undefined,\n//   error: string\n// }\n\n\n// Get Task example\nconst followupboss_get_task = new FollowUpBossBubble({\n  operation: \"get_task\", // Get a specific task by ID\n  task_id: 42, // Task ID to retrieve\n});\n\nconst result = await followupboss_get_task.action();\n// outputSchema for result.data when operation === 'get_task':\n// {\n//   operation: \"get_task\",\n//   success: boolean,\n//   task: { id: number // Unique task identifier, personId: number | undefined // Associated person ID, name: string // Task name/title, description: string | undefined // Task description, dueDate: string | undefined // Due date (YYYY-MM-DD), completed: boolean | undefined // Whether task is completed, assignedTo: number | undefined // Assigned user ID, created: string | undefined // Creation timestamp } | undefined // FUB task object,\n//   error: string\n// }\n\n\n// Create Task example\nconst followupboss_create_task = new FollowUpBossBubble({\n  operation: \"create_task\", // Create a new task\n  personId: 42, // Associated person ID\n  name: \"example string\", // Task name/title\n  description: \"example string\", // Task description\n  dueDate: \"example string\", // Due date (YYYY-MM-DD)\n  assignedTo: 42, // Assigned user ID\n});\n\nconst result = await followupboss_create_task.action();\n// outputSchema for result.data when operation === 'create_task':\n// {\n//   operation: \"create_task\",\n//   success: boolean,\n//   task: { id: number // Unique task identifier, personId: number | undefined // Associated person ID, name: string // Task name/title, description: string | undefined // Task description, dueDate: string | undefined // Due date (YYYY-MM-DD), completed: boolean | undefined // Whether task is completed, assignedTo: number | undefined // Assigned user ID, created: string | undefined // Creation timestamp } | undefined // FUB task object,\n//   error: string\n// }\n\n\n// Update Task example\nconst followupboss_update_task = new FollowUpBossBubble({\n  operation: \"update_task\", // Update an existing task\n  task_id: 42, // Task ID to update\n  name: \"example string\", // Task name/title\n  description: \"example string\", // Task description\n  dueDate: \"example string\", // Due date (YYYY-MM-DD)\n  completed: true, // Whether task is completed\n  assignedTo: 42, // Assigned user ID\n});\n\nconst result = await followupboss_update_task.action();\n// outputSchema for result.data when operation === 'update_task':\n// {\n//   operation: \"update_task\",\n//   success: boolean,\n//   task: { id: number // Unique task identifier, personId: number | undefined // Associated person ID, name: string // Task name/title, description: string | undefined // Task description, dueDate: string | undefined // Due date (YYYY-MM-DD), completed: boolean | undefined // Whether task is completed, assignedTo: number | undefined // Assigned user ID, created: string | undefined // Creation timestamp } | undefined // FUB task object,\n//   error: string\n// }\n\n\n// Delete Task example\nconst followupboss_delete_task = new FollowUpBossBubble({\n  operation: \"delete_task\", // Delete a task\n  task_id: 42, // Task ID to delete\n});\n\nconst result = await followupboss_delete_task.action();\n// outputSchema for result.data when operation === 'delete_task':\n// {\n//   operation: \"delete_task\",\n//   success: boolean,\n//   deleted_id: number | undefined,\n//   error: string\n// }\n\n\n// List Notes example\nconst followupboss_list_notes = new FollowUpBossBubble({\n  operation: \"list_notes\", // List notes\n  personId: 42, // Filter by person ID\n  limit: 25 // default, // Number of results to return\n  offset: 0 // default, // Number of results to skip\n});\n\nconst result = await followupboss_list_notes.action();\n// outputSchema for result.data when operation === 'list_notes':\n// {\n//   operation: \"list_notes\",\n//   success: boolean,\n//   notes: { id: number // Unique note identifier, personId: number // Associated person ID, subject: string | undefined // Note subject, body: string // Note content, created: string | undefined // Creation timestamp }[] | undefined,\n//   _metadata: { total: number | undefined, limit: number | undefined, offset: number | undefined } | undefined,\n//   error: string\n// }\n\n\n// Create Note example\nconst followupboss_create_note = new FollowUpBossBubble({\n  operation: \"create_note\", // Create a new note\n  personId: 42, // Associated person ID\n  subject: \"example string\", // Note subject\n  body: \"example string\", // Note content\n});\n\nconst result = await followupboss_create_note.action();\n// outputSchema for result.data when operation === 'create_note':\n// {\n//   operation: \"create_note\",\n//   success: boolean,\n//   note: { id: number // Unique note identifier, personId: number // Associated person ID, subject: string | undefined // Note subject, body: string // Note content, created: string | undefined // Creation timestamp } | undefined // FUB note object,\n//   error: string\n// }\n\n\n// Update Note example\nconst followupboss_update_note = new FollowUpBossBubble({\n  operation: \"update_note\", // Update an existing note\n  note_id: 42, // Note ID to update\n  subject: \"example string\", // Note subject\n  body: \"example string\", // Note content\n});\n\nconst result = await followupboss_update_note.action();\n// outputSchema for result.data when operation === 'update_note':\n// {\n//   operation: \"update_note\",\n//   success: boolean,\n//   note: { id: number // Unique note identifier, personId: number // Associated person ID, subject: string | undefined // Note subject, body: string // Note content, created: string | undefined // Creation timestamp } | undefined // FUB note object,\n//   error: string\n// }\n\n\n// Delete Note example\nconst followupboss_delete_note = new FollowUpBossBubble({\n  operation: \"delete_note\", // Delete a note\n  note_id: 42, // Note ID to delete\n});\n\nconst result = await followupboss_delete_note.action();\n// outputSchema for result.data when operation === 'delete_note':\n// {\n//   operation: \"delete_note\",\n//   success: boolean,\n//   deleted_id: number | undefined,\n//   error: string\n// }\n\n\n// List Deals example\nconst followupboss_list_deals = new FollowUpBossBubble({\n  operation: \"list_deals\", // List deals\n  personId: 42, // Filter by person ID\n  limit: 25 // default, // Number of results to return\n  offset: 0 // default, // Number of results to skip\n});\n\nconst result = await followupboss_list_deals.action();\n// outputSchema for result.data when operation === 'list_deals':\n// {\n//   operation: \"list_deals\",\n//   success: boolean,\n//   deals: { id: number // Unique deal identifier, personId: number | undefined // Associated person ID, name: string | undefined // Deal name, price: number | undefined // Deal price/value, stage: string | undefined // Deal stage, closeDate: string | undefined // Expected close date, created: string | undefined // Creation timestamp }[] | undefined,\n//   _metadata: { total: number | undefined, limit: number | undefined, offset: number | undefined } | undefined,\n//   error: string\n// }\n\n\n// Get Deal example\nconst followupboss_get_deal = new FollowUpBossBubble({\n  operation: \"get_deal\", // Get a specific deal by ID\n  deal_id: 42, // Deal ID to retrieve\n});\n\nconst result = await followupboss_get_deal.action();\n// outputSchema for result.data when operation === 'get_deal':\n// {\n//   operation: \"get_deal\",\n//   success: boolean,\n//   deal: { id: number // Unique deal identifier, personId: number | undefined // Associated person ID, name: string | undefined // Deal name, price: number | undefined // Deal price/value, stage: string | undefined // Deal stage, closeDate: string | undefined // Expected close date, created: string | undefined // Creation timestamp } | undefined // FUB deal object,\n//   error: string\n// }\n\n\n// Create Deal example\nconst followupboss_create_deal = new FollowUpBossBubble({\n  operation: \"create_deal\", // Create a new deal\n  personId: 42, // Associated person ID\n  name: \"example string\", // Deal name\n  price: 42, // Deal price/value\n  stage: \"example string\", // Deal stage\n  closeDate: \"example string\", // Expected close date (YYYY-MM-DD)\n});\n\nconst result = await followupboss_create_deal.action();\n// outputSchema for result.data when operation === 'create_deal':\n// {\n//   operation: \"create_deal\",\n//   success: boolean,\n//   deal: { id: number // Unique deal identifier, personId: number | undefined // Associated person ID, name: string | undefined // Deal name, price: number | undefined // Deal price/value, stage: string | undefined // Deal stage, closeDate: string | undefined // Expected close date, created: string | undefined // Creation timestamp } | undefined // FUB deal object,\n//   error: string\n// }\n\n\n// Update Deal example\nconst followupboss_update_deal = new FollowUpBossBubble({\n  operation: \"update_deal\", // Update an existing deal\n  deal_id: 42, // Deal ID to update\n  name: \"example string\", // Deal name\n  price: 42, // Deal price/value\n  stage: \"example string\", // Deal stage\n  closeDate: \"example string\", // Expected close date (YYYY-MM-DD)\n});\n\nconst result = await followupboss_update_deal.action();\n// outputSchema for result.data when operation === 'update_deal':\n// {\n//   operation: \"update_deal\",\n//   success: boolean,\n//   deal: { id: number // Unique deal identifier, personId: number | undefined // Associated person ID, name: string | undefined // Deal name, price: number | undefined // Deal price/value, stage: string | undefined // Deal stage, closeDate: string | undefined // Expected close date, created: string | undefined // Creation timestamp } | undefined // FUB deal object,\n//   error: string\n// }\n\n\n// List Events example\nconst followupboss_list_events = new FollowUpBossBubble({\n  operation: \"list_events\", // List/search events\n  limit: 25 // default, // Number of results to return\n  offset: 0 // default, // Number of results to skip\n  personId: 42, // Filter by person ID\n});\n\nconst result = await followupboss_list_events.action();\n// outputSchema for result.data when operation === 'list_events':\n// {\n//   operation: \"list_events\",\n//   success: boolean,\n//   events: { id: number | undefined // Event identifier, type: string // Event type (e.g., \"Showing Request\", \"Registration\"), source: string | undefined // Event source, message: string | undefined // Event message, person: { firstName: string | undefined, lastName: string | undefined, emails: { value: string }[] | undefined, phones: { value: string }[] | undefined, tags: string[] | undefined } | undefined // Person data for the event, created: string | undefined // Creation timestamp }[] | undefined,\n//   _metadata: { total: number | undefined, limit: number | undefined, offset: number | undefined } | undefined,\n//   error: string\n// }\n\n\n// Get Event example\nconst followupboss_get_event = new FollowUpBossBubble({\n  operation: \"get_event\", // Get a specific event by ID\n  event_id: 42, // Event ID to retrieve\n});\n\nconst result = await followupboss_get_event.action();\n// outputSchema for result.data when operation === 'get_event':\n// {\n//   operation: \"get_event\",\n//   success: boolean,\n//   event: { id: number | undefined // Event identifier, type: string // Event type (e.g., \"Showing Request\", \"Registration\"), source: string | undefined // Event source, message: string | undefined // Event message, person: { firstName: string | undefined, lastName: string | undefined, emails: { value: string }[] | undefined, phones: { value: string }[] | undefined, tags: string[] | undefined } | undefined // Person data for the event, created: string | undefined // Creation timestamp } | undefined // FUB event object,\n//   error: string\n// }\n\n\n// Create Event example\nconst followupboss_create_event = new FollowUpBossBubble({\n  operation: \"create_event\", // Create an event (preferred for new leads)\n  type: \"example string\", // Event type (e.g., \"Showing Request\", \"Registration\")\n  source: \"example string\", // Event source\n  message: \"example string\", // Event message\n  person: { firstName: \"example string\", lastName: \"example string\", emails: [{ value: \"example string\" }], phones: [{ value: \"example string\" }], tags: [\"example string\"] }, // Person data for the event\n});\n\nconst result = await followupboss_create_event.action();\n// outputSchema for result.data when operation === 'create_event':\n// {\n//   operation: \"create_event\",\n//   success: boolean,\n//   event: { id: number | undefined // Event identifier, type: string // Event type (e.g., \"Showing Request\", \"Registration\"), source: string | undefined // Event source, message: string | undefined // Event message, person: { firstName: string | undefined, lastName: string | undefined, emails: { value: string }[] | undefined, phones: { value: string }[] | undefined, tags: string[] | undefined } | undefined // Person data for the event, created: string | undefined // Creation timestamp } | undefined // FUB event object,\n//   error: string\n// }\n\n\n// List Calls example\nconst followupboss_list_calls = new FollowUpBossBubble({\n  operation: \"list_calls\", // List calls\n  personId: 42, // Filter by person ID\n  limit: 25 // default, // Number of results to return\n  offset: 0 // default, // Number of results to skip\n});\n\nconst result = await followupboss_list_calls.action();\n// outputSchema for result.data when operation === 'list_calls':\n// {\n//   operation: \"list_calls\",\n//   success: boolean,\n//   calls: { id: number // Unique call identifier, personId: number // Associated person ID, outcome: string | undefined // Call outcome, note: string | undefined // Call notes, duration: number | undefined // Call duration in seconds, created: string | undefined // Creation timestamp }[] | undefined,\n//   _metadata: { total: number | undefined, limit: number | undefined, offset: number | undefined } | undefined,\n//   error: string\n// }\n\n\n// Create Call example\nconst followupboss_create_call = new FollowUpBossBubble({\n  operation: \"create_call\", // Log a call\n  personId: 42, // Associated person ID\n  outcome: \"example string\", // Call outcome\n  note: \"example string\", // Call notes\n  duration: 42, // Call duration in seconds\n});\n\nconst result = await followupboss_create_call.action();\n// outputSchema for result.data when operation === 'create_call':\n// {\n//   operation: \"create_call\",\n//   success: boolean,\n//   call: { id: number // Unique call identifier, personId: number // Associated person ID, outcome: string | undefined // Call outcome, note: string | undefined // Call notes, duration: number | undefined // Call duration in seconds, created: string | undefined // Creation timestamp } | undefined // FUB call object,\n//   error: string\n// }\n\n\n// List Appointments example\nconst followupboss_list_appointments = new FollowUpBossBubble({\n  operation: \"list_appointments\", // List appointments\n  personId: 42, // Filter by person ID\n  limit: 25 // default, // Number of results to return\n  offset: 0 // default, // Number of results to skip\n});\n\nconst result = await followupboss_list_appointments.action();\n// outputSchema for result.data when operation === 'list_appointments':\n// {\n//   operation: \"list_appointments\",\n//   success: boolean,\n//   appointments: { id: number // Unique appointment identifier, personId: number | undefined // Associated person ID, title: string | undefined // Appointment title, startTime: string | undefined // Start time, endTime: string | undefined // End time, location: string | undefined // Location, created: string | undefined // Creation timestamp }[] | undefined,\n//   _metadata: { total: number | undefined, limit: number | undefined, offset: number | undefined } | undefined,\n//   error: string\n// }\n\n\n// Create Appointment example\nconst followupboss_create_appointment = new FollowUpBossBubble({\n  operation: \"create_appointment\", // Create an appointment\n  personId: 42, // Associated person ID\n  title: \"example string\", // Appointment title\n  startTime: \"example string\", // Start time (ISO 8601)\n  endTime: \"example string\", // End time (ISO 8601)\n  location: \"example string\", // Location\n});\n\nconst result = await followupboss_create_appointment.action();\n// outputSchema for result.data when operation === 'create_appointment':\n// {\n//   operation: \"create_appointment\",\n//   success: boolean,\n//   appointment: { id: number // Unique appointment identifier, personId: number | undefined // Associated person ID, title: string | undefined // Appointment title, startTime: string | undefined // Start time, endTime: string | undefined // End time, location: string | undefined // Location, created: string | undefined // Creation timestamp } | undefined // FUB appointment object,\n//   error: string\n// }\n\n\n// List Webhooks example\nconst followupboss_list_webhooks = new FollowUpBossBubble({\n  operation: \"list_webhooks\", // List registered webhooks\n});\n\nconst result = await followupboss_list_webhooks.action();\n// outputSchema for result.data when operation === 'list_webhooks':\n// {\n//   operation: \"list_webhooks\",\n//   success: boolean,\n//   webhooks: { id: number // Unique webhook identifier, event: string // Webhook event type, url: string // Callback URL, status: string | undefined // Webhook status (Active/Inactive) }[] | undefined,\n//   error: string\n// }\n\n\n// Get Webhook example\nconst followupboss_get_webhook = new FollowUpBossBubble({\n  operation: \"get_webhook\", // Get a specific webhook by ID\n  webhook_id: 42, // Webhook ID to retrieve\n});\n\nconst result = await followupboss_get_webhook.action();\n// outputSchema for result.data when operation === 'get_webhook':\n// {\n//   operation: \"get_webhook\",\n//   success: boolean,\n//   webhook: { id: number // Unique webhook identifier, event: string // Webhook event type, url: string // Callback URL, status: string | undefined // Webhook status (Active/Inactive) } | undefined // FUB webhook object,\n//   error: string\n// }\n\n\n// Create Webhook example\nconst followupboss_create_webhook = new FollowUpBossBubble({\n  operation: \"create_webhook\", // Register a new webhook\n  event: \"peopleCreated\" // options: \"peopleCreated\", \"peopleUpdated\", \"peopleDeleted\", \"peopleTagsCreated\", \"peopleStageUpdated\", \"peopleRelationshipCreated\", \"peopleRelationshipUpdated\", \"peopleRelationshipDeleted\", \"notesCreated\", \"notesUpdated\", \"notesDeleted\", \"emailsCreated\", \"emailsUpdated\", \"emailsDeleted\", \"tasksCreated\", \"tasksUpdated\", \"tasksDeleted\", \"appointmentsCreated\", \"appointmentsUpdated\", \"appointmentsDeleted\", \"textMessagesCreated\", \"textMessagesUpdated\", \"textMessagesDeleted\", \"callsCreated\", \"callsUpdated\", \"callsDeleted\", \"dealsCreated\", \"dealsUpdated\", \"dealsDeleted\", \"eventsCreated\", \"stageCreated\", \"stageUpdated\", \"stageDeleted\", \"pipelineCreated\", \"pipelineUpdated\", \"pipelineDeleted\", \"pipelineStageCreated\", \"pipelineStageUpdated\", \"pipelineStageDeleted\", \"customFieldsCreated\", \"customFieldsUpdated\", \"customFieldsDeleted\", \"dealCustomFieldsCreated\", \"dealCustomFieldsUpdated\", \"dealCustomFieldsDeleted\", \"emEventsOpened\", \"emEventsClicked\", \"emEventsUnsubscribed\", \"reactionCreated\", \"reactionDeleted\", \"threadedReplyCreated\", \"threadedReplyUpdated\", \"threadedReplyDeleted\", // Webhook event type to subscribe to\n  url: \"example string\", // HTTPS callback URL for webhook notifications\n});\n\nconst result = await followupboss_create_webhook.action();\n// outputSchema for result.data when operation === 'create_webhook':\n// {\n//   operation: \"create_webhook\",\n//   success: boolean,\n//   webhook: { id: number // Unique webhook identifier, event: string // Webhook event type, url: string // Callback URL, status: string | undefined // Webhook status (Active/Inactive) } | undefined // FUB webhook object,\n//   error: string\n// }\n\n\n// Update Webhook example\nconst followupboss_update_webhook = new FollowUpBossBubble({\n  operation: \"update_webhook\", // Update an existing webhook\n  webhook_id: 42, // Webhook ID to update\n  event: \"peopleCreated\" // options: \"peopleCreated\", \"peopleUpdated\", \"peopleDeleted\", \"peopleTagsCreated\", \"peopleStageUpdated\", \"peopleRelationshipCreated\", \"peopleRelationshipUpdated\", \"peopleRelationshipDeleted\", \"notesCreated\", \"notesUpdated\", \"notesDeleted\", \"emailsCreated\", \"emailsUpdated\", \"emailsDeleted\", \"tasksCreated\", \"tasksUpdated\", \"tasksDeleted\", \"appointmentsCreated\", \"appointmentsUpdated\", \"appointmentsDeleted\", \"textMessagesCreated\", \"textMessagesUpdated\", \"textMessagesDeleted\", \"callsCreated\", \"callsUpdated\", \"callsDeleted\", \"dealsCreated\", \"dealsUpdated\", \"dealsDeleted\", \"eventsCreated\", \"stageCreated\", \"stageUpdated\", \"stageDeleted\", \"pipelineCreated\", \"pipelineUpdated\", \"pipelineDeleted\", \"pipelineStageCreated\", \"pipelineStageUpdated\", \"pipelineStageDeleted\", \"customFieldsCreated\", \"customFieldsUpdated\", \"customFieldsDeleted\", \"dealCustomFieldsCreated\", \"dealCustomFieldsUpdated\", \"dealCustomFieldsDeleted\", \"emEventsOpened\", \"emEventsClicked\", \"emEventsUnsubscribed\", \"reactionCreated\", \"reactionDeleted\", \"threadedReplyCreated\", \"threadedReplyUpdated\", \"threadedReplyDeleted\", // New webhook event type\n  url: \"example string\", // New HTTPS callback URL\n});\n\nconst result = await followupboss_update_webhook.action();\n// outputSchema for result.data when operation === 'update_webhook':\n// {\n//   operation: \"update_webhook\",\n//   success: boolean,\n//   webhook: { id: number // Unique webhook identifier, event: string // Webhook event type, url: string // Callback URL, status: string | undefined // Webhook status (Active/Inactive) } | undefined // FUB webhook object,\n//   error: string\n// }\n\n\n// Delete Webhook example\nconst followupboss_delete_webhook = new FollowUpBossBubble({\n  operation: \"delete_webhook\", // Delete a webhook\n  webhook_id: 42, // Webhook ID to delete\n});\n\nconst result = await followupboss_delete_webhook.action();\n// outputSchema for result.data when operation === 'delete_webhook':\n// {\n//   operation: \"delete_webhook\",\n//   success: boolean,\n//   deleted_id: number | undefined,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`followupboss failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "FUB_CRED"
      ]
    },
    {
      "name": "notion",
      "alias": "notion",
      "type": "service",
      "shortDescription": "Notion API integration for pages, databases, and blocks",
      "useCase": "- Content management and automation",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_page"
                ],
                "description": "Create a new page in Notion"
              },
              "parent": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "page_id"
                        ],
                        "description": "Parent is a page"
                      },
                      "page_id": {
                        "type": "string",
                        "description": "ID of the parent page"
                      }
                    },
                    "required": [
                      "type",
                      "page_id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "database_id"
                        ],
                        "description": "Parent is a database"
                      },
                      "database_id": {
                        "type": "string",
                        "description": "ID of the parent database"
                      }
                    },
                    "required": [
                      "type",
                      "database_id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "data_source_id"
                        ],
                        "description": "Parent is a data source"
                      },
                      "data_source_id": {
                        "type": "string",
                        "description": "ID of the parent data source"
                      },
                      "database_id": {
                        "type": "string",
                        "description": "ID of the database"
                      }
                    },
                    "required": [
                      "type",
                      "data_source_id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "block_id"
                        ],
                        "description": "Parent is a block"
                      },
                      "block_id": {
                        "type": "string",
                        "description": "ID of the parent block"
                      }
                    },
                    "required": [
                      "type",
                      "block_id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "workspace"
                        ],
                        "description": "Parent is the workspace"
                      },
                      "workspace": {
                        "type": "boolean",
                        "enum": [
                          true
                        ],
                        "description": "Workspace parent"
                      }
                    },
                    "required": [
                      "type",
                      "workspace"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Parent page, database, or data source. IMPORTANT: To add a row to a database, use type \"data_source_id\" with the data_source_id (NOT the database_id). If you pass type \"database_id\", it will be auto-resolved to the correct data_source_id via an extra API call. Get the data_source_id from retrieve_database response (data_sources[0].id)."
              },
              "properties": {
                "type": "object",
                "additionalProperties": {},
                "description": "Page properties (required if parent is a data source)"
              },
              "children": {
                "type": "array",
                "items": {},
                "description": "Array of Notion block objects for page content. Same format as `append_block_children.children`. For tables, the table block must include `children: [table_row, ...]` inline; `table_width` must equal every row's cell count."
              },
              "icon": {
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "emoji"
                        ]
                      },
                      "emoji": {
                        "type": "string",
                        "description": "Emoji character"
                      }
                    },
                    "required": [
                      "type",
                      "emoji"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Page icon (emoji or file)"
              },
              "cover": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "file"
                        ],
                        "description": "Notion-hosted file type"
                      },
                      "file": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Authenticated HTTP GET URL to the file"
                          },
                          "expiry_time": {
                            "type": "string",
                            "description": "ISO 8601 date time when the link expires"
                          }
                        },
                        "required": [
                          "url",
                          "expiry_time"
                        ],
                        "additionalProperties": false,
                        "description": "File object for Notion-hosted files"
                      }
                    },
                    "required": [
                      "type",
                      "file"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "file_upload"
                        ],
                        "description": "File uploaded via API type"
                      },
                      "file_upload": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID of a File Upload object"
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false,
                        "description": "File upload object"
                      }
                    },
                    "required": [
                      "type",
                      "file_upload"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "external"
                        ],
                        "description": "External file type"
                      },
                      "external": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Link to externally hosted content"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "additionalProperties": false,
                        "description": "External file object"
                      }
                    },
                    "required": [
                      "type",
                      "external"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Page cover image"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "parent"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_page"
                ],
                "description": "Retrieve a page by its ID"
              },
              "page_id": {
                "type": "string",
                "description": "UUID of the Notion page"
              },
              "filter_properties": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Limit response to specific property IDs"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "page_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_page"
                ],
                "description": "Update an existing page"
              },
              "page_id": {
                "type": "string",
                "description": "UUID of the Notion page"
              },
              "properties": {
                "type": "object",
                "additionalProperties": {},
                "description": "Page properties to update"
              },
              "icon": {
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "emoji"
                        ]
                      },
                      "emoji": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "type",
                      "emoji"
                    ],
                    "additionalProperties": false
                  }
                ],
                "nullable": true,
                "description": "Page icon (emoji or file, null to remove)"
              },
              "cover": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "file"
                        ],
                        "description": "Notion-hosted file type"
                      },
                      "file": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Authenticated HTTP GET URL to the file"
                          },
                          "expiry_time": {
                            "type": "string",
                            "description": "ISO 8601 date time when the link expires"
                          }
                        },
                        "required": [
                          "url",
                          "expiry_time"
                        ],
                        "additionalProperties": false,
                        "description": "File object for Notion-hosted files"
                      }
                    },
                    "required": [
                      "type",
                      "file"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "file_upload"
                        ],
                        "description": "File uploaded via API type"
                      },
                      "file_upload": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID of a File Upload object"
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false,
                        "description": "File upload object"
                      }
                    },
                    "required": [
                      "type",
                      "file_upload"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "external"
                        ],
                        "description": "External file type"
                      },
                      "external": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Link to externally hosted content"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "additionalProperties": false,
                        "description": "External file object"
                      }
                    },
                    "required": [
                      "type",
                      "external"
                    ],
                    "additionalProperties": false
                  }
                ],
                "nullable": true,
                "description": "Page cover image (null to remove)"
              },
              "archived": {
                "type": "boolean",
                "description": "Set to true to archive the page"
              },
              "in_trash": {
                "type": "boolean",
                "description": "Set to true to move page to trash"
              },
              "is_locked": {
                "type": "boolean",
                "description": "Control if page can be edited in Notion UI"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "page_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_database"
                ],
                "description": "Retrieve a database by its ID. The response includes a data_sources array — use data_sources[0].id as the data_source_id for query_data_source and create_page operations. In Notion API v2025+, database_id and data_source_id are different UUIDs."
              },
              "database_id": {
                "type": "string",
                "description": "UUID of the Notion database (the 32-character hex ID from the Notion URL)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "database_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_data_source"
                ],
                "description": "Retrieve a data source by its ID to get the schema (properties). Returns the property definitions (names, types, options, etc.) for the data source. NOTE: retrieve_database now auto-fetches this, so you typically don't need this operation."
              },
              "data_source_id": {
                "type": "string",
                "description": "UUID of the Notion data source. Get this from retrieve_database response (data_sources[0].id)."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "data_source_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "query_data_source"
                ],
                "description": "Query a data source to retrieve pages"
              },
              "data_source_id": {
                "type": "string",
                "description": "UUID of the Notion data source (NOT the database ID). In Notion API v2025+, databases are containers and data sources are the queryable tables inside them — they have different IDs. You can get the data_source_id from retrieve_database response (data_sources[0].id) or from a search result. If you only have a database_id, pass it via the database_id parameter instead and it will be resolved automatically."
              },
              "database_id": {
                "type": "string",
                "description": "UUID of the Notion database (from the URL). If provided instead of data_source_id, the bubble will automatically resolve the correct data_source_id by calling retrieve_database. This is a convenience parameter — using data_source_id directly is more efficient as it avoids an extra API call."
              },
              "filter": {
                "type": "object",
                "additionalProperties": {},
                "description": "Filter object for querying"
              },
              "sorts": {
                "type": "array",
                "items": {},
                "description": "Array of sort objects"
              },
              "start_cursor": {
                "type": "string",
                "description": "Cursor for pagination"
              },
              "page_size": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Number of results per page (1-100)"
              },
              "filter_properties": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Limit response to specific property IDs"
              },
              "result_type": {
                "type": "string",
                "enum": [
                  "page",
                  "data_source"
                ],
                "description": "Filter results to page or data_source"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_data_source"
                ],
                "description": "Create a new data source in an existing database"
              },
              "parent": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "database_id"
                    ],
                    "description": "Parent type"
                  },
                  "database_id": {
                    "type": "string",
                    "description": "ID of the parent database"
                  }
                },
                "required": [
                  "type",
                  "database_id"
                ],
                "additionalProperties": false,
                "description": "Parent database for the new data source"
              },
              "properties": {
                "type": "object",
                "additionalProperties": {},
                "description": "Property schema for the data source (hash map where keys are property names)"
              },
              "title": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "text",
                        "mention",
                        "equation"
                      ],
                      "description": "Type of rich text"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "link": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL for the link"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "additionalProperties": false,
                          "nullable": true,
                          "description": "Optional link object"
                        }
                      },
                      "required": [
                        "content"
                      ],
                      "additionalProperties": false,
                      "description": "Text object (when type is \"text\")"
                    },
                    "annotations": {
                      "type": "object",
                      "properties": {
                        "bold": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is bolded"
                        },
                        "italic": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is italicized"
                        },
                        "strikethrough": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is struck through"
                        },
                        "underline": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is underlined"
                        },
                        "code": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is code style"
                        },
                        "color": {
                          "type": "string",
                          "enum": [
                            "default",
                            "gray",
                            "brown",
                            "orange",
                            "yellow",
                            "green",
                            "blue",
                            "purple",
                            "pink",
                            "red"
                          ],
                          "default": "default",
                          "description": "Color of the text"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Styling information for the rich text"
                    },
                    "plain_text": {
                      "type": "string",
                      "description": "Plain text without annotations"
                    },
                    "href": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL of any link"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Title of the data source"
              },
              "icon": {
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "emoji"
                        ]
                      },
                      "emoji": {
                        "type": "string",
                        "description": "Emoji character"
                      }
                    },
                    "required": [
                      "type",
                      "emoji"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Data source icon"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "parent",
              "properties"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_data_source"
                ],
                "description": "Update a data source"
              },
              "data_source_id": {
                "type": "string",
                "description": "UUID of the Notion data source"
              },
              "properties": {
                "type": "object",
                "additionalProperties": {},
                "description": "Property schema updates"
              },
              "title": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "text",
                        "mention",
                        "equation"
                      ],
                      "description": "Type of rich text"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "link": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL for the link"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "additionalProperties": false,
                          "nullable": true,
                          "description": "Optional link object"
                        }
                      },
                      "required": [
                        "content"
                      ],
                      "additionalProperties": false,
                      "description": "Text object (when type is \"text\")"
                    },
                    "annotations": {
                      "type": "object",
                      "properties": {
                        "bold": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is bolded"
                        },
                        "italic": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is italicized"
                        },
                        "strikethrough": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is struck through"
                        },
                        "underline": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is underlined"
                        },
                        "code": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is code style"
                        },
                        "color": {
                          "type": "string",
                          "enum": [
                            "default",
                            "gray",
                            "brown",
                            "orange",
                            "yellow",
                            "green",
                            "blue",
                            "purple",
                            "pink",
                            "red"
                          ],
                          "default": "default",
                          "description": "Color of the text"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Styling information for the rich text"
                    },
                    "plain_text": {
                      "type": "string",
                      "description": "Plain text without annotations"
                    },
                    "href": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL of any link"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Updated title"
              },
              "description": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "text",
                        "mention",
                        "equation"
                      ],
                      "description": "Type of rich text"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "link": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL for the link"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "additionalProperties": false,
                          "nullable": true,
                          "description": "Optional link object"
                        }
                      },
                      "required": [
                        "content"
                      ],
                      "additionalProperties": false,
                      "description": "Text object (when type is \"text\")"
                    },
                    "annotations": {
                      "type": "object",
                      "properties": {
                        "bold": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is bolded"
                        },
                        "italic": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is italicized"
                        },
                        "strikethrough": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is struck through"
                        },
                        "underline": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is underlined"
                        },
                        "code": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is code style"
                        },
                        "color": {
                          "type": "string",
                          "enum": [
                            "default",
                            "gray",
                            "brown",
                            "orange",
                            "yellow",
                            "green",
                            "blue",
                            "purple",
                            "pink",
                            "red"
                          ],
                          "default": "default",
                          "description": "Color of the text"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Styling information for the rich text"
                    },
                    "plain_text": {
                      "type": "string",
                      "description": "Plain text without annotations"
                    },
                    "href": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL of any link"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Updated description"
              },
              "icon": {
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "emoji"
                        ]
                      },
                      "emoji": {
                        "type": "string",
                        "description": "Emoji character"
                      }
                    },
                    "required": [
                      "type",
                      "emoji"
                    ],
                    "additionalProperties": false
                  }
                ],
                "nullable": true,
                "description": "Updated icon (null to remove)"
              },
              "in_trash": {
                "type": "boolean",
                "description": "Set to true to move to trash"
              },
              "parent": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "database_id"
                    ]
                  },
                  "database_id": {
                    "type": "string",
                    "description": "ID of the destination database"
                  }
                },
                "required": [
                  "type",
                  "database_id"
                ],
                "additionalProperties": false,
                "description": "New parent database to move data source"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "data_source_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_database"
                ],
                "description": "Create a new database"
              },
              "parent": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "page_id",
                      "workspace"
                    ],
                    "description": "Type of parent"
                  },
                  "page_id": {
                    "type": "string",
                    "description": "ID of parent page (required if type is page_id)"
                  },
                  "workspace": {
                    "type": "boolean",
                    "enum": [
                      true
                    ],
                    "description": "Workspace parent (required if type is workspace)"
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false,
                "description": "Parent page or workspace"
              },
              "initial_data_source": {
                "type": "object",
                "properties": {
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Property schema for the data source (hash map where keys are property names)"
                  }
                },
                "required": [
                  "properties"
                ],
                "additionalProperties": false,
                "description": "Initial data source configuration"
              },
              "title": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "text",
                        "mention",
                        "equation"
                      ],
                      "description": "Type of rich text"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "link": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL for the link"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "additionalProperties": false,
                          "nullable": true,
                          "description": "Optional link object"
                        }
                      },
                      "required": [
                        "content"
                      ],
                      "additionalProperties": false,
                      "description": "Text object (when type is \"text\")"
                    },
                    "annotations": {
                      "type": "object",
                      "properties": {
                        "bold": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is bolded"
                        },
                        "italic": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is italicized"
                        },
                        "strikethrough": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is struck through"
                        },
                        "underline": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is underlined"
                        },
                        "code": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is code style"
                        },
                        "color": {
                          "type": "string",
                          "enum": [
                            "default",
                            "gray",
                            "brown",
                            "orange",
                            "yellow",
                            "green",
                            "blue",
                            "purple",
                            "pink",
                            "red"
                          ],
                          "default": "default",
                          "description": "Color of the text"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Styling information for the rich text"
                    },
                    "plain_text": {
                      "type": "string",
                      "description": "Plain text without annotations"
                    },
                    "href": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL of any link"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Title of the database"
              },
              "description": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "text",
                        "mention",
                        "equation"
                      ],
                      "description": "Type of rich text"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "link": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL for the link"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "additionalProperties": false,
                          "nullable": true,
                          "description": "Optional link object"
                        }
                      },
                      "required": [
                        "content"
                      ],
                      "additionalProperties": false,
                      "description": "Text object (when type is \"text\")"
                    },
                    "annotations": {
                      "type": "object",
                      "properties": {
                        "bold": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is bolded"
                        },
                        "italic": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is italicized"
                        },
                        "strikethrough": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is struck through"
                        },
                        "underline": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is underlined"
                        },
                        "code": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is code style"
                        },
                        "color": {
                          "type": "string",
                          "enum": [
                            "default",
                            "gray",
                            "brown",
                            "orange",
                            "yellow",
                            "green",
                            "blue",
                            "purple",
                            "pink",
                            "red"
                          ],
                          "default": "default",
                          "description": "Color of the text"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Styling information for the rich text"
                    },
                    "plain_text": {
                      "type": "string",
                      "description": "Plain text without annotations"
                    },
                    "href": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL of any link"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Description of the database"
              },
              "icon": {
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "emoji"
                        ]
                      },
                      "emoji": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "type",
                      "emoji"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Database icon"
              },
              "cover": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "file"
                        ],
                        "description": "Notion-hosted file type"
                      },
                      "file": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Authenticated HTTP GET URL to the file"
                          },
                          "expiry_time": {
                            "type": "string",
                            "description": "ISO 8601 date time when the link expires"
                          }
                        },
                        "required": [
                          "url",
                          "expiry_time"
                        ],
                        "additionalProperties": false,
                        "description": "File object for Notion-hosted files"
                      }
                    },
                    "required": [
                      "type",
                      "file"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "file_upload"
                        ],
                        "description": "File uploaded via API type"
                      },
                      "file_upload": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID of a File Upload object"
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false,
                        "description": "File upload object"
                      }
                    },
                    "required": [
                      "type",
                      "file_upload"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "external"
                        ],
                        "description": "External file type"
                      },
                      "external": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Link to externally hosted content"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "additionalProperties": false,
                        "description": "External file object"
                      }
                    },
                    "required": [
                      "type",
                      "external"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Database cover image"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "parent",
              "initial_data_source"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_database"
                ],
                "description": "Update a database"
              },
              "database_id": {
                "type": "string",
                "description": "UUID of the Notion database"
              },
              "title": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "text",
                        "mention",
                        "equation"
                      ],
                      "description": "Type of rich text"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "link": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL for the link"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "additionalProperties": false,
                          "nullable": true,
                          "description": "Optional link object"
                        }
                      },
                      "required": [
                        "content"
                      ],
                      "additionalProperties": false,
                      "description": "Text object (when type is \"text\")"
                    },
                    "annotations": {
                      "type": "object",
                      "properties": {
                        "bold": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is bolded"
                        },
                        "italic": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is italicized"
                        },
                        "strikethrough": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is struck through"
                        },
                        "underline": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is underlined"
                        },
                        "code": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is code style"
                        },
                        "color": {
                          "type": "string",
                          "enum": [
                            "default",
                            "gray",
                            "brown",
                            "orange",
                            "yellow",
                            "green",
                            "blue",
                            "purple",
                            "pink",
                            "red"
                          ],
                          "default": "default",
                          "description": "Color of the text"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Styling information for the rich text"
                    },
                    "plain_text": {
                      "type": "string",
                      "description": "Plain text without annotations"
                    },
                    "href": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL of any link"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Updated title"
              },
              "description": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "text",
                        "mention",
                        "equation"
                      ],
                      "description": "Type of rich text"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "link": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL for the link"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "additionalProperties": false,
                          "nullable": true,
                          "description": "Optional link object"
                        }
                      },
                      "required": [
                        "content"
                      ],
                      "additionalProperties": false,
                      "description": "Text object (when type is \"text\")"
                    },
                    "annotations": {
                      "type": "object",
                      "properties": {
                        "bold": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is bolded"
                        },
                        "italic": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is italicized"
                        },
                        "strikethrough": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is struck through"
                        },
                        "underline": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is underlined"
                        },
                        "code": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is code style"
                        },
                        "color": {
                          "type": "string",
                          "enum": [
                            "default",
                            "gray",
                            "brown",
                            "orange",
                            "yellow",
                            "green",
                            "blue",
                            "purple",
                            "pink",
                            "red"
                          ],
                          "default": "default",
                          "description": "Color of the text"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Styling information for the rich text"
                    },
                    "plain_text": {
                      "type": "string",
                      "description": "Plain text without annotations"
                    },
                    "href": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL of any link"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Updated description"
              },
              "icon": {
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "emoji"
                        ]
                      },
                      "emoji": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "type",
                      "emoji"
                    ],
                    "additionalProperties": false
                  }
                ],
                "nullable": true,
                "description": "Updated icon (null to remove)"
              },
              "cover": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "file"
                        ],
                        "description": "Notion-hosted file type"
                      },
                      "file": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Authenticated HTTP GET URL to the file"
                          },
                          "expiry_time": {
                            "type": "string",
                            "description": "ISO 8601 date time when the link expires"
                          }
                        },
                        "required": [
                          "url",
                          "expiry_time"
                        ],
                        "additionalProperties": false,
                        "description": "File object for Notion-hosted files"
                      }
                    },
                    "required": [
                      "type",
                      "file"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "file_upload"
                        ],
                        "description": "File uploaded via API type"
                      },
                      "file_upload": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID of a File Upload object"
                          }
                        },
                        "required": [
                          "id"
                        ],
                        "additionalProperties": false,
                        "description": "File upload object"
                      }
                    },
                    "required": [
                      "type",
                      "file_upload"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "external"
                        ],
                        "description": "External file type"
                      },
                      "external": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Link to externally hosted content"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "additionalProperties": false,
                        "description": "External file object"
                      }
                    },
                    "required": [
                      "type",
                      "external"
                    ],
                    "additionalProperties": false
                  }
                ],
                "nullable": true,
                "description": "Updated cover (null to remove)"
              },
              "parent": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "page_id"
                        ],
                        "description": "Parent is a page"
                      },
                      "page_id": {
                        "type": "string",
                        "description": "ID of the parent page"
                      }
                    },
                    "required": [
                      "type",
                      "page_id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "database_id"
                        ],
                        "description": "Parent is a database"
                      },
                      "database_id": {
                        "type": "string",
                        "description": "ID of the parent database"
                      }
                    },
                    "required": [
                      "type",
                      "database_id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "data_source_id"
                        ],
                        "description": "Parent is a data source"
                      },
                      "data_source_id": {
                        "type": "string",
                        "description": "ID of the parent data source"
                      },
                      "database_id": {
                        "type": "string",
                        "description": "ID of the database"
                      }
                    },
                    "required": [
                      "type",
                      "data_source_id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "block_id"
                        ],
                        "description": "Parent is a block"
                      },
                      "block_id": {
                        "type": "string",
                        "description": "ID of the parent block"
                      }
                    },
                    "required": [
                      "type",
                      "block_id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "workspace"
                        ],
                        "description": "Parent is the workspace"
                      },
                      "workspace": {
                        "type": "boolean",
                        "enum": [
                          true
                        ],
                        "description": "Workspace parent"
                      }
                    },
                    "required": [
                      "type",
                      "workspace"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "New parent to move database"
              },
              "is_inline": {
                "type": "boolean",
                "description": "Whether database should be displayed inline"
              },
              "in_trash": {
                "type": "boolean",
                "description": "Set to true to move to trash"
              },
              "is_locked": {
                "type": "boolean",
                "description": "Set to true to lock from editing"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "database_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "append_block_children"
                ],
                "description": "Append children blocks to a parent block or page"
              },
              "block_id": {
                "type": "string",
                "description": "UUID of the parent block or page"
              },
              "children": {
                "type": "array",
                "items": {},
                "minItems": 1,
                "maxItems": 100,
                "description": "Array of Notion block objects to append (max 100). Each block is `{ object: \"block\", type: \"<type>\", \"<type>\": { ... } }`. Common examples:\n- Paragraph: { object: \"block\", type: \"paragraph\", paragraph: { rich_text: [{ type: \"text\", text: { content: \"hello\" } }] } }\n- Heading: { object: \"block\", type: \"heading_2\", heading_2: { rich_text: [{ type: \"text\", text: { content: \"Title\" } }] } }\n- Table (rows MUST be supplied inline as children; table_width must equal every row's cell count): { object: \"block\", type: \"table\", table: { table_width: 2, has_column_header: true, has_row_header: false, children: [ { object: \"block\", type: \"table_row\", table_row: { cells: [ [{ type: \"text\", text: { content: \"Name\" } }], [{ type: \"text\", text: { content: \"Status\" } }] ] } }, { object: \"block\", type: \"table_row\", table_row: { cells: [ [{ type: \"text\", text: { content: \"Task A\" } }], [{ type: \"text\", text: { content: \"Done\" } }] ] } } ] } }. You cannot append rows to an empty table later — always include all rows in the initial create call. For an empty cell, use `cells: [..., [], ...]` (an empty array) — Notion rejects rich_text items with empty content strings."
              },
              "after": {
                "type": "string",
                "description": "ID of block to append after"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "block_id",
              "children"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_block_children"
                ],
                "description": "Retrieve children blocks of a parent block"
              },
              "block_id": {
                "type": "string",
                "description": "UUID of the parent block"
              },
              "start_cursor": {
                "type": "string",
                "description": "Cursor for pagination"
              },
              "page_size": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Number of items per response (max 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "block_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_block"
                ],
                "description": "Retrieve a block by its ID"
              },
              "block_id": {
                "type": "string",
                "description": "UUID of the Notion block"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "block_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_block"
                ],
                "description": "Update a block"
              },
              "block_id": {
                "type": "string",
                "description": "UUID of the Notion block"
              },
              "archived": {
                "type": "boolean",
                "description": "Set to true to archive the block"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "block_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_comment"
                ],
                "description": "Create a comment on a page or block"
              },
              "parent": {
                "type": "object",
                "properties": {
                  "page_id": {
                    "type": "string",
                    "description": "ID of parent page"
                  },
                  "block_id": {
                    "type": "string",
                    "description": "ID of parent block"
                  }
                },
                "additionalProperties": false,
                "description": "Parent page or block ID (one of page_id or block_id is required)"
              },
              "rich_text": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "text",
                        "mention",
                        "equation"
                      ],
                      "description": "Type of rich text"
                    },
                    "text": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "string",
                          "description": "The actual text content"
                        },
                        "link": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL for the link"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "additionalProperties": false,
                          "nullable": true,
                          "description": "Optional link object"
                        }
                      },
                      "required": [
                        "content"
                      ],
                      "additionalProperties": false,
                      "description": "Text object (when type is \"text\")"
                    },
                    "annotations": {
                      "type": "object",
                      "properties": {
                        "bold": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is bolded"
                        },
                        "italic": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is italicized"
                        },
                        "strikethrough": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is struck through"
                        },
                        "underline": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is underlined"
                        },
                        "code": {
                          "type": "boolean",
                          "default": false,
                          "description": "Whether text is code style"
                        },
                        "color": {
                          "type": "string",
                          "enum": [
                            "default",
                            "gray",
                            "brown",
                            "orange",
                            "yellow",
                            "green",
                            "blue",
                            "purple",
                            "pink",
                            "red"
                          ],
                          "default": "default",
                          "description": "Color of the text"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Styling information for the rich text"
                    },
                    "plain_text": {
                      "type": "string",
                      "description": "Plain text without annotations"
                    },
                    "href": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL of any link"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "description": "Array of rich text objects for comment content"
              },
              "attachments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "file_upload_id": {
                      "type": "string",
                      "description": "File Upload ID"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "file_upload"
                      ]
                    }
                  },
                  "required": [
                    "file_upload_id"
                  ],
                  "additionalProperties": false
                },
                "maxItems": 3,
                "description": "Array of file attachments (max 3)"
              },
              "display_name": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "integration",
                      "user",
                      "custom"
                    ],
                    "description": "Type of display name"
                  },
                  "custom": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Custom name for the comment"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "additionalProperties": false,
                    "description": "Custom name object (required if type is custom)"
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false,
                "description": "Custom display name for the comment"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "parent",
              "rich_text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_comment"
                ],
                "description": "Retrieve a comment by its ID"
              },
              "comment_id": {
                "type": "string",
                "description": "UUID of the Notion comment"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "comment_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ],
                "description": "List all users in the workspace"
              },
              "start_cursor": {
                "type": "string",
                "description": "Cursor for pagination"
              },
              "page_size": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Number of items per page (max 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ],
                "description": "Search all pages and data sources shared with the integration"
              },
              "query": {
                "type": "string",
                "description": "Text to compare against page and data source titles. If not provided, returns all pages and data sources shared with the integration"
              },
              "sort": {
                "type": "object",
                "properties": {
                  "direction": {
                    "type": "string",
                    "enum": [
                      "ascending",
                      "descending"
                    ],
                    "description": "Sort direction"
                  },
                  "timestamp": {
                    "type": "string",
                    "enum": [
                      "last_edited_time"
                    ],
                    "description": "Timestamp field to sort by (only \"last_edited_time\" is supported)"
                  }
                },
                "required": [
                  "direction",
                  "timestamp"
                ],
                "additionalProperties": false,
                "description": "Sort criteria. If not provided, most recently edited results are returned first"
              },
              "filter": {
                "type": "object",
                "properties": {
                  "value": {
                    "type": "string",
                    "enum": [
                      "page",
                      "data_source"
                    ],
                    "description": "Filter results to only pages or only data sources"
                  },
                  "property": {
                    "type": "string",
                    "enum": [
                      "object"
                    ],
                    "description": "Property to filter on (only \"object\" is supported)"
                  }
                },
                "required": [
                  "value",
                  "property"
                ],
                "additionalProperties": false,
                "description": "Filter to limit results to either pages or data sources"
              },
              "start_cursor": {
                "type": "string",
                "description": "Cursor for pagination (from previous response)"
              },
              "page_size": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Number of items per page (max 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_page"
                ],
                "description": "Create page operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "page": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "page"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Page ID"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the page"
                  },
                  "last_edited_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who last edited the page"
                  },
                  "cover": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Page cover image"
                  },
                  "icon": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "emoji"
                            ],
                            "description": "Emoji icon"
                          },
                          "emoji": {
                            "type": "string",
                            "description": "Emoji character"
                          }
                        },
                        "required": [
                          "type",
                          "emoji"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External icon"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the external icon"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "File icon"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the file icon"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "Expiry time of the URL"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Page icon"
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "page_id"
                            ],
                            "description": "Parent is a page"
                          },
                          "page_id": {
                            "type": "string",
                            "description": "ID of the parent page"
                          }
                        },
                        "required": [
                          "type",
                          "page_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "database_id"
                            ],
                            "description": "Parent is a database"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the parent database"
                          }
                        },
                        "required": [
                          "type",
                          "database_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "data_source_id"
                            ],
                            "description": "Parent is a data source"
                          },
                          "data_source_id": {
                            "type": "string",
                            "description": "ID of the parent data source"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the database"
                          }
                        },
                        "required": [
                          "type",
                          "data_source_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "block_id"
                            ],
                            "description": "Parent is a block"
                          },
                          "block_id": {
                            "type": "string",
                            "description": "ID of the parent block"
                          }
                        },
                        "required": [
                          "type",
                          "block_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "workspace"
                            ],
                            "description": "Parent is the workspace"
                          },
                          "workspace": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Workspace parent"
                          }
                        },
                        "required": [
                          "type",
                          "workspace"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Parent of the page"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the page is archived"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether the page is in trash"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Page properties"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Public URL of the page"
                  },
                  "public_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true,
                    "description": "Public shareable URL"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "last_edited_by",
                  "parent",
                  "archived",
                  "properties",
                  "url"
                ],
                "additionalProperties": false,
                "description": "Created page object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_page"
                ],
                "description": "Retrieve page operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "page": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "page"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Page ID"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the page"
                  },
                  "last_edited_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who last edited the page"
                  },
                  "cover": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Page cover image"
                  },
                  "icon": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "emoji"
                            ],
                            "description": "Emoji icon"
                          },
                          "emoji": {
                            "type": "string",
                            "description": "Emoji character"
                          }
                        },
                        "required": [
                          "type",
                          "emoji"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External icon"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the external icon"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "File icon"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the file icon"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "Expiry time of the URL"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Page icon"
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "page_id"
                            ],
                            "description": "Parent is a page"
                          },
                          "page_id": {
                            "type": "string",
                            "description": "ID of the parent page"
                          }
                        },
                        "required": [
                          "type",
                          "page_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "database_id"
                            ],
                            "description": "Parent is a database"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the parent database"
                          }
                        },
                        "required": [
                          "type",
                          "database_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "data_source_id"
                            ],
                            "description": "Parent is a data source"
                          },
                          "data_source_id": {
                            "type": "string",
                            "description": "ID of the parent data source"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the database"
                          }
                        },
                        "required": [
                          "type",
                          "data_source_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "block_id"
                            ],
                            "description": "Parent is a block"
                          },
                          "block_id": {
                            "type": "string",
                            "description": "ID of the parent block"
                          }
                        },
                        "required": [
                          "type",
                          "block_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "workspace"
                            ],
                            "description": "Parent is the workspace"
                          },
                          "workspace": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Workspace parent"
                          }
                        },
                        "required": [
                          "type",
                          "workspace"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Parent of the page"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the page is archived"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether the page is in trash"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Page properties"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Public URL of the page"
                  },
                  "public_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true,
                    "description": "Public shareable URL"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "last_edited_by",
                  "parent",
                  "archived",
                  "properties",
                  "url"
                ],
                "additionalProperties": false,
                "description": "Retrieved page object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_page"
                ],
                "description": "Update page operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "page": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "page"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Page ID"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the page"
                  },
                  "last_edited_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who last edited the page"
                  },
                  "cover": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Page cover image"
                  },
                  "icon": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "emoji"
                            ],
                            "description": "Emoji icon"
                          },
                          "emoji": {
                            "type": "string",
                            "description": "Emoji character"
                          }
                        },
                        "required": [
                          "type",
                          "emoji"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External icon"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the external icon"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "File icon"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the file icon"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "Expiry time of the URL"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Page icon"
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "page_id"
                            ],
                            "description": "Parent is a page"
                          },
                          "page_id": {
                            "type": "string",
                            "description": "ID of the parent page"
                          }
                        },
                        "required": [
                          "type",
                          "page_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "database_id"
                            ],
                            "description": "Parent is a database"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the parent database"
                          }
                        },
                        "required": [
                          "type",
                          "database_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "data_source_id"
                            ],
                            "description": "Parent is a data source"
                          },
                          "data_source_id": {
                            "type": "string",
                            "description": "ID of the parent data source"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the database"
                          }
                        },
                        "required": [
                          "type",
                          "data_source_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "block_id"
                            ],
                            "description": "Parent is a block"
                          },
                          "block_id": {
                            "type": "string",
                            "description": "ID of the parent block"
                          }
                        },
                        "required": [
                          "type",
                          "block_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "workspace"
                            ],
                            "description": "Parent is the workspace"
                          },
                          "workspace": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Workspace parent"
                          }
                        },
                        "required": [
                          "type",
                          "workspace"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Parent of the page"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the page is archived"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether the page is in trash"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Page properties"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Public URL of the page"
                  },
                  "public_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true,
                    "description": "Public shareable URL"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "last_edited_by",
                  "parent",
                  "archived",
                  "properties",
                  "url"
                ],
                "additionalProperties": false,
                "description": "Updated page object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_database"
                ],
                "description": "Retrieve database operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "database": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "database"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Database ID, To find a database ID, navigate to the database URL in your Notion workspace. The ID is the string of characters in the URL that is between the slash following the workspace name (if applicable) and the question mark. The ID is a 32 characters alphanumeric string."
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "title": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Database title"
                  },
                  "description": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Database description"
                  },
                  "icon": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "emoji"
                            ],
                            "description": "Emoji icon"
                          },
                          "emoji": {
                            "type": "string",
                            "description": "Emoji character"
                          }
                        },
                        "required": [
                          "type",
                          "emoji"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External icon"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the external icon"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "File icon"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the file icon"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "Expiry time of the URL"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Database icon"
                  },
                  "cover": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Database cover"
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "page_id"
                            ],
                            "description": "Parent is a page"
                          },
                          "page_id": {
                            "type": "string",
                            "description": "ID of the parent page"
                          }
                        },
                        "required": [
                          "type",
                          "page_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "database_id"
                            ],
                            "description": "Parent is a database"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the parent database"
                          }
                        },
                        "required": [
                          "type",
                          "database_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "data_source_id"
                            ],
                            "description": "Parent is a data source"
                          },
                          "data_source_id": {
                            "type": "string",
                            "description": "ID of the parent data source"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the database"
                          }
                        },
                        "required": [
                          "type",
                          "data_source_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "block_id"
                            ],
                            "description": "Parent is a block"
                          },
                          "block_id": {
                            "type": "string",
                            "description": "ID of the parent block"
                          }
                        },
                        "required": [
                          "type",
                          "block_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "workspace"
                            ],
                            "description": "Parent is the workspace"
                          },
                          "workspace": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Workspace parent"
                          }
                        },
                        "required": [
                          "type",
                          "workspace"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Parent of the database"
                  },
                  "is_inline": {
                    "type": "boolean",
                    "description": "Whether displayed inline"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether in trash"
                  },
                  "is_locked": {
                    "type": "boolean",
                    "description": "Whether locked from editing"
                  },
                  "data_sources": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Data source ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "Data source name"
                        },
                        "icon": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "emoji"
                                  ],
                                  "description": "Emoji icon"
                                },
                                "emoji": {
                                  "type": "string",
                                  "description": "Emoji character"
                                }
                              },
                              "required": [
                                "type",
                                "emoji"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "external"
                                  ],
                                  "description": "External icon"
                                },
                                "external": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "URL of the external icon"
                                    }
                                  },
                                  "required": [
                                    "url"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "type",
                                "external"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "file"
                                  ],
                                  "description": "File icon"
                                },
                                "file": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "URL of the file icon"
                                    },
                                    "expiry_time": {
                                      "type": "string",
                                      "description": "Expiry time of the URL"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "expiry_time"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "type",
                                "file"
                              ],
                              "additionalProperties": false
                            }
                          ],
                          "nullable": true
                        },
                        "cover": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "file"
                                  ],
                                  "description": "Notion-hosted file type"
                                },
                                "file": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "Authenticated HTTP GET URL to the file"
                                    },
                                    "expiry_time": {
                                      "type": "string",
                                      "description": "ISO 8601 date time when the link expires"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "expiry_time"
                                  ],
                                  "additionalProperties": false,
                                  "description": "File object for Notion-hosted files"
                                }
                              },
                              "required": [
                                "type",
                                "file"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "file_upload"
                                  ],
                                  "description": "File uploaded via API type"
                                },
                                "file_upload": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "description": "ID of a File Upload object"
                                    }
                                  },
                                  "required": [
                                    "id"
                                  ],
                                  "additionalProperties": false,
                                  "description": "File upload object"
                                }
                              },
                              "required": [
                                "type",
                                "file_upload"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "external"
                                  ],
                                  "description": "External file type"
                                },
                                "external": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "Link to externally hosted content"
                                    }
                                  },
                                  "required": [
                                    "url"
                                  ],
                                  "additionalProperties": false,
                                  "description": "External file object"
                                }
                              },
                              "required": [
                                "type",
                                "external"
                              ],
                              "additionalProperties": false
                            }
                          ],
                          "nullable": true
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Array of data sources in this database"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the database"
                  },
                  "public_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "title",
                  "parent",
                  "data_sources"
                ],
                "additionalProperties": false,
                "description": "Retrieved database object (with auto-fetched properties schema from first data source)"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_data_source"
                ],
                "description": "Retrieve data source operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "data_source": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "data_source"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Data source ID"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the data source"
                  },
                  "last_edited_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who last edited the data source"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Data source properties"
                  },
                  "parent": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "database_id"
                        ]
                      },
                      "database_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "type",
                      "database_id"
                    ],
                    "additionalProperties": true,
                    "description": "Parent database"
                  },
                  "database_parent": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Database parent information"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the data source is archived"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether data source is in trash"
                  },
                  "is_inline": {
                    "type": "boolean",
                    "description": "Whether displayed inline"
                  },
                  "icon": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "emoji"
                            ],
                            "description": "Emoji icon"
                          },
                          "emoji": {
                            "type": "string",
                            "description": "Emoji character"
                          }
                        },
                        "required": [
                          "type",
                          "emoji"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External icon"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the external icon"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "File icon"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the file icon"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "Expiry time of the URL"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Data source icon"
                  },
                  "cover": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Data source cover"
                  },
                  "title": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "default": [],
                    "description": "Data source title (can be empty array)"
                  },
                  "description": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Data source description"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the data source"
                  },
                  "public_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true,
                    "description": "Public shareable URL of the data source"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "last_edited_by",
                  "properties",
                  "parent",
                  "archived"
                ],
                "additionalProperties": true,
                "description": "Retrieved data source object with properties schema"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "query_data_source"
                ],
                "description": "Query data source operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "page",
                        "data_source"
                      ],
                      "description": "Object type (page or data_source)"
                    },
                    "id": {
                      "type": "string",
                      "description": "Object ID"
                    },
                    "created_time": {
                      "type": "string",
                      "description": "ISO 8601 datetime"
                    },
                    "last_edited_time": {
                      "type": "string",
                      "description": "ISO 8601 datetime"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL of the object"
                    },
                    "properties": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Object properties"
                    },
                    "title": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "plain_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": true
                      },
                      "description": "Title (for data sources)"
                    },
                    "parent": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Parent of the object"
                    },
                    "archived": {
                      "type": "boolean",
                      "description": "Whether the object is archived"
                    },
                    "in_trash": {
                      "type": "boolean",
                      "description": "Whether the object is in trash"
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "created_time",
                    "last_edited_time"
                  ],
                  "additionalProperties": true
                },
                "description": "Array of pages or data sources from query"
              },
              "next_cursor": {
                "type": "string",
                "nullable": true,
                "description": "Cursor for pagination"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether more results exist"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_data_source"
                ],
                "description": "Create data source operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "dataSource": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "data_source"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Data source ID"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the data source"
                  },
                  "last_edited_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who last edited the data source"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Data source properties"
                  },
                  "parent": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "database_id"
                        ]
                      },
                      "database_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "type",
                      "database_id"
                    ],
                    "additionalProperties": true,
                    "description": "Parent database"
                  },
                  "database_parent": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Database parent information"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the data source is archived"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether data source is in trash"
                  },
                  "is_inline": {
                    "type": "boolean",
                    "description": "Whether displayed inline"
                  },
                  "icon": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "emoji"
                            ],
                            "description": "Emoji icon"
                          },
                          "emoji": {
                            "type": "string",
                            "description": "Emoji character"
                          }
                        },
                        "required": [
                          "type",
                          "emoji"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External icon"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the external icon"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "File icon"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the file icon"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "Expiry time of the URL"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Data source icon"
                  },
                  "cover": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Data source cover"
                  },
                  "title": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "default": [],
                    "description": "Data source title (can be empty array)"
                  },
                  "description": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Data source description"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the data source"
                  },
                  "public_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true,
                    "description": "Public shareable URL of the data source"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "last_edited_by",
                  "properties",
                  "parent",
                  "archived"
                ],
                "additionalProperties": true,
                "description": "Created data source object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_data_source"
                ],
                "description": "Update data source operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "dataSource": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "data_source"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Data source ID"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the data source"
                  },
                  "last_edited_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who last edited the data source"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Data source properties"
                  },
                  "parent": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "database_id"
                        ]
                      },
                      "database_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "type",
                      "database_id"
                    ],
                    "additionalProperties": true,
                    "description": "Parent database"
                  },
                  "database_parent": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Database parent information"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the data source is archived"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether data source is in trash"
                  },
                  "is_inline": {
                    "type": "boolean",
                    "description": "Whether displayed inline"
                  },
                  "icon": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "emoji"
                            ],
                            "description": "Emoji icon"
                          },
                          "emoji": {
                            "type": "string",
                            "description": "Emoji character"
                          }
                        },
                        "required": [
                          "type",
                          "emoji"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External icon"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the external icon"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "File icon"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the file icon"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "Expiry time of the URL"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Data source icon"
                  },
                  "cover": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Data source cover"
                  },
                  "title": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "default": [],
                    "description": "Data source title (can be empty array)"
                  },
                  "description": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Data source description"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the data source"
                  },
                  "public_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true,
                    "description": "Public shareable URL of the data source"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "last_edited_by",
                  "properties",
                  "parent",
                  "archived"
                ],
                "additionalProperties": true,
                "description": "Updated data source object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_database"
                ],
                "description": "Create database operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "database": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "database"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Database ID, To find a database ID, navigate to the database URL in your Notion workspace. The ID is the string of characters in the URL that is between the slash following the workspace name (if applicable) and the question mark. The ID is a 32 characters alphanumeric string."
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "title": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Database title"
                  },
                  "description": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Database description"
                  },
                  "icon": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "emoji"
                            ],
                            "description": "Emoji icon"
                          },
                          "emoji": {
                            "type": "string",
                            "description": "Emoji character"
                          }
                        },
                        "required": [
                          "type",
                          "emoji"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External icon"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the external icon"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "File icon"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the file icon"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "Expiry time of the URL"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Database icon"
                  },
                  "cover": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Database cover"
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "page_id"
                            ],
                            "description": "Parent is a page"
                          },
                          "page_id": {
                            "type": "string",
                            "description": "ID of the parent page"
                          }
                        },
                        "required": [
                          "type",
                          "page_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "database_id"
                            ],
                            "description": "Parent is a database"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the parent database"
                          }
                        },
                        "required": [
                          "type",
                          "database_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "data_source_id"
                            ],
                            "description": "Parent is a data source"
                          },
                          "data_source_id": {
                            "type": "string",
                            "description": "ID of the parent data source"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the database"
                          }
                        },
                        "required": [
                          "type",
                          "data_source_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "block_id"
                            ],
                            "description": "Parent is a block"
                          },
                          "block_id": {
                            "type": "string",
                            "description": "ID of the parent block"
                          }
                        },
                        "required": [
                          "type",
                          "block_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "workspace"
                            ],
                            "description": "Parent is the workspace"
                          },
                          "workspace": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Workspace parent"
                          }
                        },
                        "required": [
                          "type",
                          "workspace"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Parent of the database"
                  },
                  "is_inline": {
                    "type": "boolean",
                    "description": "Whether displayed inline"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether in trash"
                  },
                  "is_locked": {
                    "type": "boolean",
                    "description": "Whether locked from editing"
                  },
                  "data_sources": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Data source ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "Data source name"
                        },
                        "icon": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "emoji"
                                  ],
                                  "description": "Emoji icon"
                                },
                                "emoji": {
                                  "type": "string",
                                  "description": "Emoji character"
                                }
                              },
                              "required": [
                                "type",
                                "emoji"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "external"
                                  ],
                                  "description": "External icon"
                                },
                                "external": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "URL of the external icon"
                                    }
                                  },
                                  "required": [
                                    "url"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "type",
                                "external"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "file"
                                  ],
                                  "description": "File icon"
                                },
                                "file": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "URL of the file icon"
                                    },
                                    "expiry_time": {
                                      "type": "string",
                                      "description": "Expiry time of the URL"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "expiry_time"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "type",
                                "file"
                              ],
                              "additionalProperties": false
                            }
                          ],
                          "nullable": true
                        },
                        "cover": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "file"
                                  ],
                                  "description": "Notion-hosted file type"
                                },
                                "file": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "Authenticated HTTP GET URL to the file"
                                    },
                                    "expiry_time": {
                                      "type": "string",
                                      "description": "ISO 8601 date time when the link expires"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "expiry_time"
                                  ],
                                  "additionalProperties": false,
                                  "description": "File object for Notion-hosted files"
                                }
                              },
                              "required": [
                                "type",
                                "file"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "file_upload"
                                  ],
                                  "description": "File uploaded via API type"
                                },
                                "file_upload": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "description": "ID of a File Upload object"
                                    }
                                  },
                                  "required": [
                                    "id"
                                  ],
                                  "additionalProperties": false,
                                  "description": "File upload object"
                                }
                              },
                              "required": [
                                "type",
                                "file_upload"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "external"
                                  ],
                                  "description": "External file type"
                                },
                                "external": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "Link to externally hosted content"
                                    }
                                  },
                                  "required": [
                                    "url"
                                  ],
                                  "additionalProperties": false,
                                  "description": "External file object"
                                }
                              },
                              "required": [
                                "type",
                                "external"
                              ],
                              "additionalProperties": false
                            }
                          ],
                          "nullable": true
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Array of data sources in this database"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the database"
                  },
                  "public_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "title",
                  "parent",
                  "data_sources"
                ],
                "additionalProperties": false,
                "description": "Created database object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_database"
                ],
                "description": "Update database operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "database": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "database"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Database ID, To find a database ID, navigate to the database URL in your Notion workspace. The ID is the string of characters in the URL that is between the slash following the workspace name (if applicable) and the question mark. The ID is a 32 characters alphanumeric string."
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "title": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Database title"
                  },
                  "description": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Database description"
                  },
                  "icon": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "emoji"
                            ],
                            "description": "Emoji icon"
                          },
                          "emoji": {
                            "type": "string",
                            "description": "Emoji character"
                          }
                        },
                        "required": [
                          "type",
                          "emoji"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External icon"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the external icon"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "File icon"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "URL of the file icon"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "Expiry time of the URL"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Database icon"
                  },
                  "cover": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file"
                            ],
                            "description": "Notion-hosted file type"
                          },
                          "file": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Authenticated HTTP GET URL to the file"
                              },
                              "expiry_time": {
                                "type": "string",
                                "description": "ISO 8601 date time when the link expires"
                              }
                            },
                            "required": [
                              "url",
                              "expiry_time"
                            ],
                            "additionalProperties": false,
                            "description": "File object for Notion-hosted files"
                          }
                        },
                        "required": [
                          "type",
                          "file"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "file_upload"
                            ],
                            "description": "File uploaded via API type"
                          },
                          "file_upload": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID of a File Upload object"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": false,
                            "description": "File upload object"
                          }
                        },
                        "required": [
                          "type",
                          "file_upload"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "external"
                            ],
                            "description": "External file type"
                          },
                          "external": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Link to externally hosted content"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false,
                            "description": "External file object"
                          }
                        },
                        "required": [
                          "type",
                          "external"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "nullable": true,
                    "description": "Database cover"
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "page_id"
                            ],
                            "description": "Parent is a page"
                          },
                          "page_id": {
                            "type": "string",
                            "description": "ID of the parent page"
                          }
                        },
                        "required": [
                          "type",
                          "page_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "database_id"
                            ],
                            "description": "Parent is a database"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the parent database"
                          }
                        },
                        "required": [
                          "type",
                          "database_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "data_source_id"
                            ],
                            "description": "Parent is a data source"
                          },
                          "data_source_id": {
                            "type": "string",
                            "description": "ID of the parent data source"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the database"
                          }
                        },
                        "required": [
                          "type",
                          "data_source_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "block_id"
                            ],
                            "description": "Parent is a block"
                          },
                          "block_id": {
                            "type": "string",
                            "description": "ID of the parent block"
                          }
                        },
                        "required": [
                          "type",
                          "block_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "workspace"
                            ],
                            "description": "Parent is the workspace"
                          },
                          "workspace": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Workspace parent"
                          }
                        },
                        "required": [
                          "type",
                          "workspace"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Parent of the database"
                  },
                  "is_inline": {
                    "type": "boolean",
                    "description": "Whether displayed inline"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether in trash"
                  },
                  "is_locked": {
                    "type": "boolean",
                    "description": "Whether locked from editing"
                  },
                  "data_sources": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Data source ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "Data source name"
                        },
                        "icon": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "emoji"
                                  ],
                                  "description": "Emoji icon"
                                },
                                "emoji": {
                                  "type": "string",
                                  "description": "Emoji character"
                                }
                              },
                              "required": [
                                "type",
                                "emoji"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "external"
                                  ],
                                  "description": "External icon"
                                },
                                "external": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "URL of the external icon"
                                    }
                                  },
                                  "required": [
                                    "url"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "type",
                                "external"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "file"
                                  ],
                                  "description": "File icon"
                                },
                                "file": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "URL of the file icon"
                                    },
                                    "expiry_time": {
                                      "type": "string",
                                      "description": "Expiry time of the URL"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "expiry_time"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "type",
                                "file"
                              ],
                              "additionalProperties": false
                            }
                          ],
                          "nullable": true
                        },
                        "cover": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "file"
                                  ],
                                  "description": "Notion-hosted file type"
                                },
                                "file": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "Authenticated HTTP GET URL to the file"
                                    },
                                    "expiry_time": {
                                      "type": "string",
                                      "description": "ISO 8601 date time when the link expires"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "expiry_time"
                                  ],
                                  "additionalProperties": false,
                                  "description": "File object for Notion-hosted files"
                                }
                              },
                              "required": [
                                "type",
                                "file"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "file_upload"
                                  ],
                                  "description": "File uploaded via API type"
                                },
                                "file_upload": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "description": "ID of a File Upload object"
                                    }
                                  },
                                  "required": [
                                    "id"
                                  ],
                                  "additionalProperties": false,
                                  "description": "File upload object"
                                }
                              },
                              "required": [
                                "type",
                                "file_upload"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "external"
                                  ],
                                  "description": "External file type"
                                },
                                "external": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "format": "uri",
                                      "description": "Link to externally hosted content"
                                    }
                                  },
                                  "required": [
                                    "url"
                                  ],
                                  "additionalProperties": false,
                                  "description": "External file object"
                                }
                              },
                              "required": [
                                "type",
                                "external"
                              ],
                              "additionalProperties": false
                            }
                          ],
                          "nullable": true
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Array of data sources in this database"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the database"
                  },
                  "public_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "title",
                  "parent",
                  "data_sources"
                ],
                "additionalProperties": false,
                "description": "Updated database object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "append_block_children"
                ],
                "description": "Append block children operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "blocks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "block"
                      ],
                      "description": "Object type"
                    },
                    "id": {
                      "type": "string",
                      "description": "Block ID"
                    },
                    "parent": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "page_id"
                              ],
                              "description": "Parent is a page"
                            },
                            "page_id": {
                              "type": "string",
                              "description": "ID of the parent page"
                            }
                          },
                          "required": [
                            "type",
                            "page_id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "database_id"
                              ],
                              "description": "Parent is a database"
                            },
                            "database_id": {
                              "type": "string",
                              "description": "ID of the parent database"
                            }
                          },
                          "required": [
                            "type",
                            "database_id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "data_source_id"
                              ],
                              "description": "Parent is a data source"
                            },
                            "data_source_id": {
                              "type": "string",
                              "description": "ID of the parent data source"
                            },
                            "database_id": {
                              "type": "string",
                              "description": "ID of the database"
                            }
                          },
                          "required": [
                            "type",
                            "data_source_id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "block_id"
                              ],
                              "description": "Parent is a block"
                            },
                            "block_id": {
                              "type": "string",
                              "description": "ID of the parent block"
                            }
                          },
                          "required": [
                            "type",
                            "block_id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "workspace"
                              ],
                              "description": "Parent is the workspace"
                            },
                            "workspace": {
                              "type": "boolean",
                              "enum": [
                                true
                              ],
                              "description": "Workspace parent"
                            }
                          },
                          "required": [
                            "type",
                            "workspace"
                          ],
                          "additionalProperties": false
                        }
                      ],
                      "description": "Parent of the block"
                    },
                    "created_time": {
                      "type": "string",
                      "description": "ISO 8601 datetime"
                    },
                    "last_edited_time": {
                      "type": "string",
                      "description": "ISO 8601 datetime"
                    },
                    "created_by": {
                      "type": "object",
                      "properties": {
                        "object": {
                          "type": "string",
                          "enum": [
                            "user"
                          ],
                          "description": "Object type"
                        },
                        "id": {
                          "type": "string",
                          "description": "User ID"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "person",
                            "bot"
                          ],
                          "description": "User type"
                        },
                        "name": {
                          "type": "string",
                          "description": "User name"
                        },
                        "avatar_url": {
                          "type": "string",
                          "nullable": true,
                          "description": "Avatar URL"
                        },
                        "person": {
                          "type": "object",
                          "properties": {
                            "email": {
                              "type": "string",
                              "format": "email",
                              "description": "Email address"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Person details"
                        },
                        "bot": {
                          "type": "object",
                          "properties": {
                            "owner": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "workspace",
                                    "user"
                                  ],
                                  "description": "Owner type"
                                },
                                "workspace": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "type"
                              ],
                              "additionalProperties": false
                            },
                            "workspace_name": {
                              "type": "string",
                              "description": "Workspace name"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Bot details"
                        }
                      },
                      "required": [
                        "object",
                        "id"
                      ],
                      "additionalProperties": false,
                      "description": "User who created the block"
                    },
                    "last_edited_by": {
                      "type": "object",
                      "properties": {
                        "object": {
                          "type": "string",
                          "enum": [
                            "user"
                          ],
                          "description": "Object type"
                        },
                        "id": {
                          "type": "string",
                          "description": "User ID"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "person",
                            "bot"
                          ],
                          "description": "User type"
                        },
                        "name": {
                          "type": "string",
                          "description": "User name"
                        },
                        "avatar_url": {
                          "type": "string",
                          "nullable": true,
                          "description": "Avatar URL"
                        },
                        "person": {
                          "type": "object",
                          "properties": {
                            "email": {
                              "type": "string",
                              "format": "email",
                              "description": "Email address"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Person details"
                        },
                        "bot": {
                          "type": "object",
                          "properties": {
                            "owner": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "workspace",
                                    "user"
                                  ],
                                  "description": "Owner type"
                                },
                                "workspace": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "type"
                              ],
                              "additionalProperties": false
                            },
                            "workspace_name": {
                              "type": "string",
                              "description": "Workspace name"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Bot details"
                        }
                      },
                      "required": [
                        "object",
                        "id"
                      ],
                      "additionalProperties": false,
                      "description": "User who last edited the block"
                    },
                    "has_children": {
                      "type": "boolean",
                      "description": "Whether the block has children"
                    },
                    "archived": {
                      "type": "boolean",
                      "description": "Whether the block is archived"
                    },
                    "in_trash": {
                      "type": "boolean",
                      "description": "Whether block is in trash"
                    },
                    "type": {
                      "type": "string",
                      "description": "Type of block (e.g., paragraph, heading_2, etc.)"
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "created_time",
                    "last_edited_time",
                    "created_by",
                    "last_edited_by",
                    "has_children",
                    "archived",
                    "type"
                  ],
                  "additionalProperties": true,
                  "description": "Block object with type-specific properties"
                },
                "description": "Array of appended block objects"
              },
              "next_cursor": {
                "type": "string",
                "nullable": true,
                "description": "Cursor for pagination"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether more results exist"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_block_children"
                ],
                "description": "Retrieve block children operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "blocks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "block"
                      ],
                      "description": "Object type"
                    },
                    "id": {
                      "type": "string",
                      "description": "Block ID"
                    },
                    "parent": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "page_id"
                              ],
                              "description": "Parent is a page"
                            },
                            "page_id": {
                              "type": "string",
                              "description": "ID of the parent page"
                            }
                          },
                          "required": [
                            "type",
                            "page_id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "database_id"
                              ],
                              "description": "Parent is a database"
                            },
                            "database_id": {
                              "type": "string",
                              "description": "ID of the parent database"
                            }
                          },
                          "required": [
                            "type",
                            "database_id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "data_source_id"
                              ],
                              "description": "Parent is a data source"
                            },
                            "data_source_id": {
                              "type": "string",
                              "description": "ID of the parent data source"
                            },
                            "database_id": {
                              "type": "string",
                              "description": "ID of the database"
                            }
                          },
                          "required": [
                            "type",
                            "data_source_id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "block_id"
                              ],
                              "description": "Parent is a block"
                            },
                            "block_id": {
                              "type": "string",
                              "description": "ID of the parent block"
                            }
                          },
                          "required": [
                            "type",
                            "block_id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "workspace"
                              ],
                              "description": "Parent is the workspace"
                            },
                            "workspace": {
                              "type": "boolean",
                              "enum": [
                                true
                              ],
                              "description": "Workspace parent"
                            }
                          },
                          "required": [
                            "type",
                            "workspace"
                          ],
                          "additionalProperties": false
                        }
                      ],
                      "description": "Parent of the block"
                    },
                    "created_time": {
                      "type": "string",
                      "description": "ISO 8601 datetime"
                    },
                    "last_edited_time": {
                      "type": "string",
                      "description": "ISO 8601 datetime"
                    },
                    "created_by": {
                      "type": "object",
                      "properties": {
                        "object": {
                          "type": "string",
                          "enum": [
                            "user"
                          ],
                          "description": "Object type"
                        },
                        "id": {
                          "type": "string",
                          "description": "User ID"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "person",
                            "bot"
                          ],
                          "description": "User type"
                        },
                        "name": {
                          "type": "string",
                          "description": "User name"
                        },
                        "avatar_url": {
                          "type": "string",
                          "nullable": true,
                          "description": "Avatar URL"
                        },
                        "person": {
                          "type": "object",
                          "properties": {
                            "email": {
                              "type": "string",
                              "format": "email",
                              "description": "Email address"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Person details"
                        },
                        "bot": {
                          "type": "object",
                          "properties": {
                            "owner": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "workspace",
                                    "user"
                                  ],
                                  "description": "Owner type"
                                },
                                "workspace": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "type"
                              ],
                              "additionalProperties": false
                            },
                            "workspace_name": {
                              "type": "string",
                              "description": "Workspace name"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Bot details"
                        }
                      },
                      "required": [
                        "object",
                        "id"
                      ],
                      "additionalProperties": false,
                      "description": "User who created the block"
                    },
                    "last_edited_by": {
                      "type": "object",
                      "properties": {
                        "object": {
                          "type": "string",
                          "enum": [
                            "user"
                          ],
                          "description": "Object type"
                        },
                        "id": {
                          "type": "string",
                          "description": "User ID"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "person",
                            "bot"
                          ],
                          "description": "User type"
                        },
                        "name": {
                          "type": "string",
                          "description": "User name"
                        },
                        "avatar_url": {
                          "type": "string",
                          "nullable": true,
                          "description": "Avatar URL"
                        },
                        "person": {
                          "type": "object",
                          "properties": {
                            "email": {
                              "type": "string",
                              "format": "email",
                              "description": "Email address"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Person details"
                        },
                        "bot": {
                          "type": "object",
                          "properties": {
                            "owner": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "workspace",
                                    "user"
                                  ],
                                  "description": "Owner type"
                                },
                                "workspace": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "type"
                              ],
                              "additionalProperties": false
                            },
                            "workspace_name": {
                              "type": "string",
                              "description": "Workspace name"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Bot details"
                        }
                      },
                      "required": [
                        "object",
                        "id"
                      ],
                      "additionalProperties": false,
                      "description": "User who last edited the block"
                    },
                    "has_children": {
                      "type": "boolean",
                      "description": "Whether the block has children"
                    },
                    "archived": {
                      "type": "boolean",
                      "description": "Whether the block is archived"
                    },
                    "in_trash": {
                      "type": "boolean",
                      "description": "Whether block is in trash"
                    },
                    "type": {
                      "type": "string",
                      "description": "Type of block (e.g., paragraph, heading_2, etc.)"
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "created_time",
                    "last_edited_time",
                    "created_by",
                    "last_edited_by",
                    "has_children",
                    "archived",
                    "type"
                  ],
                  "additionalProperties": true,
                  "description": "Block object with type-specific properties"
                },
                "description": "Array of block children"
              },
              "next_cursor": {
                "type": "string",
                "nullable": true,
                "description": "Cursor for pagination"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether more results exist"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_block"
                ],
                "description": "Retrieve block operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "block": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "block"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Block ID"
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "page_id"
                            ],
                            "description": "Parent is a page"
                          },
                          "page_id": {
                            "type": "string",
                            "description": "ID of the parent page"
                          }
                        },
                        "required": [
                          "type",
                          "page_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "database_id"
                            ],
                            "description": "Parent is a database"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the parent database"
                          }
                        },
                        "required": [
                          "type",
                          "database_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "data_source_id"
                            ],
                            "description": "Parent is a data source"
                          },
                          "data_source_id": {
                            "type": "string",
                            "description": "ID of the parent data source"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the database"
                          }
                        },
                        "required": [
                          "type",
                          "data_source_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "block_id"
                            ],
                            "description": "Parent is a block"
                          },
                          "block_id": {
                            "type": "string",
                            "description": "ID of the parent block"
                          }
                        },
                        "required": [
                          "type",
                          "block_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "workspace"
                            ],
                            "description": "Parent is the workspace"
                          },
                          "workspace": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Workspace parent"
                          }
                        },
                        "required": [
                          "type",
                          "workspace"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Parent of the block"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the block"
                  },
                  "last_edited_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who last edited the block"
                  },
                  "has_children": {
                    "type": "boolean",
                    "description": "Whether the block has children"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the block is archived"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether block is in trash"
                  },
                  "type": {
                    "type": "string",
                    "description": "Type of block (e.g., paragraph, heading_2, etc.)"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "last_edited_by",
                  "has_children",
                  "archived",
                  "type"
                ],
                "additionalProperties": true,
                "description": "Retrieved block object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_block"
                ],
                "description": "Update block operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "block": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "block"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Block ID"
                  },
                  "parent": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "page_id"
                            ],
                            "description": "Parent is a page"
                          },
                          "page_id": {
                            "type": "string",
                            "description": "ID of the parent page"
                          }
                        },
                        "required": [
                          "type",
                          "page_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "database_id"
                            ],
                            "description": "Parent is a database"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the parent database"
                          }
                        },
                        "required": [
                          "type",
                          "database_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "data_source_id"
                            ],
                            "description": "Parent is a data source"
                          },
                          "data_source_id": {
                            "type": "string",
                            "description": "ID of the parent data source"
                          },
                          "database_id": {
                            "type": "string",
                            "description": "ID of the database"
                          }
                        },
                        "required": [
                          "type",
                          "data_source_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "block_id"
                            ],
                            "description": "Parent is a block"
                          },
                          "block_id": {
                            "type": "string",
                            "description": "ID of the parent block"
                          }
                        },
                        "required": [
                          "type",
                          "block_id"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "workspace"
                            ],
                            "description": "Parent is the workspace"
                          },
                          "workspace": {
                            "type": "boolean",
                            "enum": [
                              true
                            ],
                            "description": "Workspace parent"
                          }
                        },
                        "required": [
                          "type",
                          "workspace"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Parent of the block"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the block"
                  },
                  "last_edited_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who last edited the block"
                  },
                  "has_children": {
                    "type": "boolean",
                    "description": "Whether the block has children"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the block is archived"
                  },
                  "in_trash": {
                    "type": "boolean",
                    "description": "Whether block is in trash"
                  },
                  "type": {
                    "type": "string",
                    "description": "Type of block (e.g., paragraph, heading_2, etc.)"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "last_edited_by",
                  "has_children",
                  "archived",
                  "type"
                ],
                "additionalProperties": true,
                "description": "Updated block object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_comment"
                ],
                "description": "Create comment operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "comment": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "comment"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Comment ID"
                  },
                  "parent": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "page_id",
                          "block_id"
                        ]
                      },
                      "page_id": {
                        "type": "string"
                      },
                      "block_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "additionalProperties": true,
                    "description": "Parent page or block"
                  },
                  "discussion_id": {
                    "type": "string",
                    "description": "Discussion thread ID"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the comment"
                  },
                  "rich_text": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Comment content"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "parent",
                  "discussion_id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "rich_text"
                ],
                "additionalProperties": false,
                "description": "Created comment object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_comment"
                ],
                "description": "Retrieve comment operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "comment": {
                "type": "object",
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "comment"
                    ],
                    "description": "Object type"
                  },
                  "id": {
                    "type": "string",
                    "description": "Comment ID"
                  },
                  "parent": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "page_id",
                          "block_id"
                        ]
                      },
                      "page_id": {
                        "type": "string"
                      },
                      "block_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "additionalProperties": true,
                    "description": "Parent page or block"
                  },
                  "discussion_id": {
                    "type": "string",
                    "description": "Discussion thread ID"
                  },
                  "created_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "last_edited_time": {
                    "type": "string",
                    "description": "ISO 8601 datetime"
                  },
                  "created_by": {
                    "type": "object",
                    "properties": {
                      "object": {
                        "type": "string",
                        "enum": [
                          "user"
                        ],
                        "description": "Object type"
                      },
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "person",
                          "bot"
                        ],
                        "description": "User type"
                      },
                      "name": {
                        "type": "string",
                        "description": "User name"
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Avatar URL"
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "format": "email",
                            "description": "Email address"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Person details"
                      },
                      "bot": {
                        "type": "object",
                        "properties": {
                          "owner": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "workspace",
                                  "user"
                                ],
                                "description": "Owner type"
                              },
                              "workspace": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          },
                          "workspace_name": {
                            "type": "string",
                            "description": "Workspace name"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Bot details"
                      }
                    },
                    "required": [
                      "object",
                      "id"
                    ],
                    "additionalProperties": false,
                    "description": "User who created the comment"
                  },
                  "rich_text": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "text",
                            "mention",
                            "equation"
                          ],
                          "description": "Type of rich text"
                        },
                        "text": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string",
                              "description": "The actual text content"
                            },
                            "link": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "format": "uri",
                                  "description": "URL for the link"
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "nullable": true,
                              "description": "Optional link object"
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false,
                          "description": "Text object (when type is \"text\")"
                        },
                        "annotations": {
                          "type": "object",
                          "properties": {
                            "bold": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is bolded"
                            },
                            "italic": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is italicized"
                            },
                            "strikethrough": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is struck through"
                            },
                            "underline": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is underlined"
                            },
                            "code": {
                              "type": "boolean",
                              "default": false,
                              "description": "Whether text is code style"
                            },
                            "color": {
                              "type": "string",
                              "enum": [
                                "default",
                                "gray",
                                "brown",
                                "orange",
                                "yellow",
                                "green",
                                "blue",
                                "purple",
                                "pink",
                                "red"
                              ],
                              "default": "default",
                              "description": "Color of the text"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Styling information for the rich text"
                        },
                        "plain_text": {
                          "type": "string",
                          "description": "Plain text without annotations"
                        },
                        "href": {
                          "type": "string",
                          "nullable": true,
                          "description": "URL of any link"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Comment content"
                  }
                },
                "required": [
                  "object",
                  "id",
                  "parent",
                  "discussion_id",
                  "created_time",
                  "last_edited_time",
                  "created_by",
                  "rich_text"
                ],
                "additionalProperties": false,
                "description": "Retrieved comment object"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ],
                "description": "List users operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "users": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "user"
                      ],
                      "description": "Object type"
                    },
                    "id": {
                      "type": "string",
                      "description": "User ID"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "person",
                        "bot"
                      ],
                      "description": "User type"
                    },
                    "name": {
                      "type": "string",
                      "description": "User name"
                    },
                    "avatar_url": {
                      "type": "string",
                      "nullable": true,
                      "description": "Avatar URL"
                    },
                    "person": {
                      "type": "object",
                      "properties": {
                        "email": {
                          "type": "string",
                          "format": "email",
                          "description": "Email address"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Person details"
                    },
                    "bot": {
                      "type": "object",
                      "properties": {
                        "owner": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "workspace",
                                "user"
                              ],
                              "description": "Owner type"
                            },
                            "workspace": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        "workspace_name": {
                          "type": "string",
                          "description": "Workspace name"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Bot details"
                    }
                  },
                  "required": [
                    "object",
                    "id"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of users in the workspace"
              },
              "next_cursor": {
                "type": "string",
                "nullable": true,
                "description": "Cursor for pagination"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether more results exist"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ],
                "description": "Search operation result"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "page",
                        "data_source"
                      ],
                      "description": "Object type (page or data_source)"
                    },
                    "id": {
                      "type": "string",
                      "description": "Object ID"
                    },
                    "created_time": {
                      "type": "string",
                      "description": "ISO 8601 datetime"
                    },
                    "last_edited_time": {
                      "type": "string",
                      "description": "ISO 8601 datetime"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL of the object"
                    },
                    "properties": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Object properties"
                    },
                    "title": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "plain_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": true
                      },
                      "description": "Title (for data sources)"
                    },
                    "parent": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Parent of the object"
                    },
                    "archived": {
                      "type": "boolean",
                      "description": "Whether the object is archived"
                    },
                    "in_trash": {
                      "type": "boolean",
                      "description": "Whether the object is in trash"
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "created_time",
                    "last_edited_time"
                  ],
                  "additionalProperties": true
                },
                "description": "Array of pages and/or data sources matching the search query"
              },
              "next_cursor": {
                "type": "string",
                "nullable": true,
                "description": "Cursor for pagination"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether more results exist"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Create Page example\nconst notion_create_page = new NotionBubble({\n  operation: \"create_page\", // Create a new page in Notion\n  parent: { type: \"page_id\", page_id: \"example string\" }, // Parent page, database, or data source. IMPORTANT: To add a row to a database, use type \"data_source_id\" with the data_source_id (NOT the database_id). If you pass type \"database_id\", it will be auto-resolved to the correct data_source_id via an extra API call. Get the data_source_id from retrieve_database response (data_sources[0].id).\n  properties: {}, // Page properties (required if parent is a data source)\n  children: [], // Array of Notion block objects for page content. Same format as `append_block_children.children`. For tables, the table block must include `children: [table_row, ...]` inline; `table_width` must equal every row's cell count.\n  icon: { type: \"emoji\", emoji: \"example string\" // Emoji character }, // Page icon (emoji or file)\n  cover: { type: \"file\", file: { url: \"example string\" // Authenticated HTTP GET URL to the file, expiry_time: \"example string\" // ISO 8601 date time when the link expires } }, // Page cover image\n});\n\nconst result = await notion_create_page.action();\n// outputSchema for result.data when operation === 'create_page':\n// {\n//   operation: \"create_page\" // Create page operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   page: { object: \"page\" // Object type, id: string // Page ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the page, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the page, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined // Page cover image, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined // Page icon, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } // Parent of the page, archived: boolean // Whether the page is archived, in_trash: boolean | undefined // Whether the page is in trash, properties: Record<string, unknown> // Page properties, url: string // Public URL of the page, public_url: string | null | undefined // Public shareable URL } | undefined // Created page object\n// }\n\n\n// Retrieve Page example\nconst notion_retrieve_page = new NotionBubble({\n  operation: \"retrieve_page\", // Retrieve a page by its ID\n  page_id: \"example string\", // UUID of the Notion page\n  filter_properties: [\"example string\"], // Limit response to specific property IDs\n});\n\nconst result = await notion_retrieve_page.action();\n// outputSchema for result.data when operation === 'retrieve_page':\n// {\n//   operation: \"retrieve_page\" // Retrieve page operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   page: { object: \"page\" // Object type, id: string // Page ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the page, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the page, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined // Page cover image, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined // Page icon, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } // Parent of the page, archived: boolean // Whether the page is archived, in_trash: boolean | undefined // Whether the page is in trash, properties: Record<string, unknown> // Page properties, url: string // Public URL of the page, public_url: string | null | undefined // Public shareable URL } | undefined // Retrieved page object\n// }\n\n\n// Update Page example\nconst notion_update_page = new NotionBubble({\n  operation: \"update_page\", // Update an existing page\n  page_id: \"example string\", // UUID of the Notion page\n  properties: {}, // Page properties to update\n  icon: { type: \"emoji\", emoji: \"example string\" }, // Page icon (emoji or file, null to remove)\n  cover: { type: \"file\", file: { url: \"example string\" // Authenticated HTTP GET URL to the file, expiry_time: \"example string\" // ISO 8601 date time when the link expires } }, // Page cover image (null to remove)\n  archived: true, // Set to true to archive the page\n  in_trash: true, // Set to true to move page to trash\n  is_locked: true, // Control if page can be edited in Notion UI\n});\n\nconst result = await notion_update_page.action();\n// outputSchema for result.data when operation === 'update_page':\n// {\n//   operation: \"update_page\" // Update page operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   page: { object: \"page\" // Object type, id: string // Page ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the page, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the page, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined // Page cover image, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined // Page icon, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } // Parent of the page, archived: boolean // Whether the page is archived, in_trash: boolean | undefined // Whether the page is in trash, properties: Record<string, unknown> // Page properties, url: string // Public URL of the page, public_url: string | null | undefined // Public shareable URL } | undefined // Updated page object\n// }\n\n\n// Retrieve Database example\nconst notion_retrieve_database = new NotionBubble({\n  operation: \"retrieve_database\", // Retrieve a database by its ID. The response includes a data_sources array — use data_sources[0].id as the data_source_id for query_data_source and create_page operations. In Notion API v2025+, database_id and data_source_id are different UUIDs.\n  database_id: \"example string\", // UUID of the Notion database (the 32-character hex ID from the Notion URL)\n});\n\nconst result = await notion_retrieve_database.action();\n// outputSchema for result.data when operation === 'retrieve_database':\n// {\n//   operation: \"retrieve_database\" // Retrieve database operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   database: { object: \"database\" // Object type, id: string // Database ID, To find a database ID, navigate to the database URL in your Notion workspace. The ID is the string of characters in the URL that is between the slash following the workspace name (if applicable) and the question mark. The ID is a 32 characters alphanumeric string., created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, title: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] // Database title, description: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] | undefined // Database description, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined // Database icon, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined // Database cover, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } // Parent of the database, is_inline: boolean | undefined // Whether displayed inline, in_trash: boolean | undefined // Whether in trash, is_locked: boolean | undefined // Whether locked from editing, data_sources: { id: string // Data source ID, name: string // Data source name, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined }[] // Array of data sources in this database, url: string | undefined // URL of the database, public_url: string | null | undefined } | undefined // Retrieved database object (with auto-fetched properties schema from first data source)\n// }\n\n\n// Retrieve Data Source example\nconst notion_retrieve_data_source = new NotionBubble({\n  operation: \"retrieve_data_source\", // Retrieve a data source by its ID to get the schema (properties). Returns the property definitions (names, types, options, etc.) for the data source. NOTE: retrieve_database now auto-fetches this, so you typically don't need this operation.\n  data_source_id: \"example string\", // UUID of the Notion data source. Get this from retrieve_database response (data_sources[0].id).\n});\n\nconst result = await notion_retrieve_data_source.action();\n// outputSchema for result.data when operation === 'retrieve_data_source':\n// {\n//   operation: \"retrieve_data_source\" // Retrieve data source operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   data_source: { object: \"data_source\" // Object type, id: string // Data source ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the data source, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the data source, properties: Record<string, unknown> // Data source properties, parent: { type: \"database_id\", database_id: string } // Parent database, database_parent: Record<string, unknown> | undefined // Database parent information, archived: boolean // Whether the data source is archived, in_trash: boolean | undefined // Whether data source is in trash, is_inline: boolean | undefined // Whether displayed inline, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined // Data source icon, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined // Data source cover, title: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] // Data source title (can be empty array), description: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] | undefined // Data source description, url: string | undefined // URL of the data source, public_url: string | null | undefined // Public shareable URL of the data source } | undefined // Retrieved data source object with properties schema\n// }\n\n\n// Query Data Source example\nconst notion_query_data_source = new NotionBubble({\n  operation: \"query_data_source\", // Query a data source to retrieve pages\n  data_source_id: \"example string\", // UUID of the Notion data source (NOT the database ID). In Notion API v2025+, databases are containers and data sources are the queryable tables inside them — they have different IDs. You can get the data_source_id from retrieve_database response (data_sources[0].id) or from a search result. If you only have a database_id, pass it via the database_id parameter instead and it will be resolved automatically.\n  database_id: \"example string\", // UUID of the Notion database (from the URL). If provided instead of data_source_id, the bubble will automatically resolve the correct data_source_id by calling retrieve_database. This is a convenience parameter — using data_source_id directly is more efficient as it avoids an extra API call.\n  filter: {}, // Filter object for querying\n  sorts: [], // Array of sort objects\n  start_cursor: \"example string\", // Cursor for pagination\n  page_size: 100 // default, // Number of results per page (1-100)\n  filter_properties: [\"example string\"], // Limit response to specific property IDs\n  result_type: \"page\" // options: \"page\", \"data_source\", // Filter results to page or data_source\n});\n\nconst result = await notion_query_data_source.action();\n// outputSchema for result.data when operation === 'query_data_source':\n// {\n//   operation: \"query_data_source\" // Query data source operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   results: { object: \"page\" | \"data_source\" // Object type (page or data_source), id: string // Object ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, url: string | undefined // URL of the object, properties: Record<string, unknown> | undefined // Object properties, title: { plain_text: string | undefined }[] | undefined // Title (for data sources), parent: Record<string, unknown> | undefined // Parent of the object, archived: boolean | undefined // Whether the object is archived, in_trash: boolean | undefined // Whether the object is in trash }[] | undefined // Array of pages or data sources from query,\n//   next_cursor: string | null | undefined // Cursor for pagination,\n//   has_more: boolean | undefined // Whether more results exist\n// }\n\n\n// Create Data Source example\nconst notion_create_data_source = new NotionBubble({\n  operation: \"create_data_source\", // Create a new data source in an existing database\n  parent: { type: \"database_id\" // Parent type, database_id: \"example string\" // ID of the parent database }, // Parent database for the new data source\n  properties: {}, // Property schema for the data source (hash map where keys are property names)\n  title: [{ type: \"text\" // options: \"text\", \"mention\", \"equation\" // Type of rich text, text: { content: \"example string\" // The actual text content, link: { url: \"example string\" // URL for the link } // Optional link object } // Text object (when type is \"text\"), annotations: { bold: false // default // Whether text is bolded, italic: false // default // Whether text is italicized, strikethrough: false // default // Whether text is struck through, underline: false // default // Whether text is underlined, code: false // default // Whether text is code style, color: \"default\" // options: \"default\", \"gray\", \"brown\", \"orange\", \"yellow\", \"green\", \"blue\", \"purple\", \"pink\", \"red\" // Color of the text } // Styling information for the rich text, plain_text: \"example string\" // Plain text without annotations, href: \"example string\" // URL of any link }], // Title of the data source\n  icon: { type: \"emoji\", emoji: \"example string\" // Emoji character }, // Data source icon\n});\n\nconst result = await notion_create_data_source.action();\n// outputSchema for result.data when operation === 'create_data_source':\n// {\n//   operation: \"create_data_source\" // Create data source operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   dataSource: { object: \"data_source\" // Object type, id: string // Data source ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the data source, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the data source, properties: Record<string, unknown> // Data source properties, parent: { type: \"database_id\", database_id: string } // Parent database, database_parent: Record<string, unknown> | undefined // Database parent information, archived: boolean // Whether the data source is archived, in_trash: boolean | undefined // Whether data source is in trash, is_inline: boolean | undefined // Whether displayed inline, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined // Data source icon, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined // Data source cover, title: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] // Data source title (can be empty array), description: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] | undefined // Data source description, url: string | undefined // URL of the data source, public_url: string | null | undefined // Public shareable URL of the data source } | undefined // Created data source object\n// }\n\n\n// Update Data Source example\nconst notion_update_data_source = new NotionBubble({\n  operation: \"update_data_source\", // Update a data source\n  data_source_id: \"example string\", // UUID of the Notion data source\n  properties: {}, // Property schema updates\n  title: [{ type: \"text\" // options: \"text\", \"mention\", \"equation\" // Type of rich text, text: { content: \"example string\" // The actual text content, link: { url: \"example string\" // URL for the link } // Optional link object } // Text object (when type is \"text\"), annotations: { bold: false // default // Whether text is bolded, italic: false // default // Whether text is italicized, strikethrough: false // default // Whether text is struck through, underline: false // default // Whether text is underlined, code: false // default // Whether text is code style, color: \"default\" // options: \"default\", \"gray\", \"brown\", \"orange\", \"yellow\", \"green\", \"blue\", \"purple\", \"pink\", \"red\" // Color of the text } // Styling information for the rich text, plain_text: \"example string\" // Plain text without annotations, href: \"example string\" // URL of any link }], // Updated title\n  description: [{ type: \"text\" // options: \"text\", \"mention\", \"equation\" // Type of rich text, text: { content: \"example string\" // The actual text content, link: { url: \"example string\" // URL for the link } // Optional link object } // Text object (when type is \"text\"), annotations: { bold: false // default // Whether text is bolded, italic: false // default // Whether text is italicized, strikethrough: false // default // Whether text is struck through, underline: false // default // Whether text is underlined, code: false // default // Whether text is code style, color: \"default\" // options: \"default\", \"gray\", \"brown\", \"orange\", \"yellow\", \"green\", \"blue\", \"purple\", \"pink\", \"red\" // Color of the text } // Styling information for the rich text, plain_text: \"example string\" // Plain text without annotations, href: \"example string\" // URL of any link }], // Updated description\n  icon: { type: \"emoji\", emoji: \"example string\" // Emoji character }, // Updated icon (null to remove)\n  in_trash: true, // Set to true to move to trash\n  parent: { type: \"database_id\", database_id: \"example string\" // ID of the destination database }, // New parent database to move data source\n});\n\nconst result = await notion_update_data_source.action();\n// outputSchema for result.data when operation === 'update_data_source':\n// {\n//   operation: \"update_data_source\" // Update data source operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   dataSource: { object: \"data_source\" // Object type, id: string // Data source ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the data source, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the data source, properties: Record<string, unknown> // Data source properties, parent: { type: \"database_id\", database_id: string } // Parent database, database_parent: Record<string, unknown> | undefined // Database parent information, archived: boolean // Whether the data source is archived, in_trash: boolean | undefined // Whether data source is in trash, is_inline: boolean | undefined // Whether displayed inline, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined // Data source icon, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined // Data source cover, title: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] // Data source title (can be empty array), description: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] | undefined // Data source description, url: string | undefined // URL of the data source, public_url: string | null | undefined // Public shareable URL of the data source } | undefined // Updated data source object\n// }\n\n\n// Create Database example\nconst notion_create_database = new NotionBubble({\n  operation: \"create_database\", // Create a new database\n  initial_data_source: { properties: {} // Property schema for the data source (hash map where keys are property names) }, // Initial data source configuration\n  title: [{ type: \"text\" // options: \"text\", \"mention\", \"equation\" // Type of rich text, text: { content: \"example string\" // The actual text content, link: { url: \"example string\" // URL for the link } // Optional link object } // Text object (when type is \"text\"), annotations: { bold: false // default // Whether text is bolded, italic: false // default // Whether text is italicized, strikethrough: false // default // Whether text is struck through, underline: false // default // Whether text is underlined, code: false // default // Whether text is code style, color: \"default\" // options: \"default\", \"gray\", \"brown\", \"orange\", \"yellow\", \"green\", \"blue\", \"purple\", \"pink\", \"red\" // Color of the text } // Styling information for the rich text, plain_text: \"example string\" // Plain text without annotations, href: \"example string\" // URL of any link }], // Title of the database\n  description: [{ type: \"text\" // options: \"text\", \"mention\", \"equation\" // Type of rich text, text: { content: \"example string\" // The actual text content, link: { url: \"example string\" // URL for the link } // Optional link object } // Text object (when type is \"text\"), annotations: { bold: false // default // Whether text is bolded, italic: false // default // Whether text is italicized, strikethrough: false // default // Whether text is struck through, underline: false // default // Whether text is underlined, code: false // default // Whether text is code style, color: \"default\" // options: \"default\", \"gray\", \"brown\", \"orange\", \"yellow\", \"green\", \"blue\", \"purple\", \"pink\", \"red\" // Color of the text } // Styling information for the rich text, plain_text: \"example string\" // Plain text without annotations, href: \"example string\" // URL of any link }], // Description of the database\n  icon: { type: \"emoji\", emoji: \"example string\" }, // Database icon\n  cover: { type: \"file\", file: { url: \"example string\" // Authenticated HTTP GET URL to the file, expiry_time: \"example string\" // ISO 8601 date time when the link expires } }, // Database cover image\n});\n\nconst result = await notion_create_database.action();\n// outputSchema for result.data when operation === 'create_database':\n// {\n//   operation: \"create_database\" // Create database operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   database: { object: \"database\" // Object type, id: string // Database ID, To find a database ID, navigate to the database URL in your Notion workspace. The ID is the string of characters in the URL that is between the slash following the workspace name (if applicable) and the question mark. The ID is a 32 characters alphanumeric string., created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, title: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] // Database title, description: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] | undefined // Database description, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined // Database icon, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined // Database cover, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } // Parent of the database, is_inline: boolean | undefined // Whether displayed inline, in_trash: boolean | undefined // Whether in trash, is_locked: boolean | undefined // Whether locked from editing, data_sources: { id: string // Data source ID, name: string // Data source name, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined }[] // Array of data sources in this database, url: string | undefined // URL of the database, public_url: string | null | undefined } | undefined // Created database object\n// }\n\n\n// Update Database example\nconst notion_update_database = new NotionBubble({\n  operation: \"update_database\", // Update a database\n  database_id: \"example string\", // UUID of the Notion database\n  title: [{ type: \"text\" // options: \"text\", \"mention\", \"equation\" // Type of rich text, text: { content: \"example string\" // The actual text content, link: { url: \"example string\" // URL for the link } // Optional link object } // Text object (when type is \"text\"), annotations: { bold: false // default // Whether text is bolded, italic: false // default // Whether text is italicized, strikethrough: false // default // Whether text is struck through, underline: false // default // Whether text is underlined, code: false // default // Whether text is code style, color: \"default\" // options: \"default\", \"gray\", \"brown\", \"orange\", \"yellow\", \"green\", \"blue\", \"purple\", \"pink\", \"red\" // Color of the text } // Styling information for the rich text, plain_text: \"example string\" // Plain text without annotations, href: \"example string\" // URL of any link }], // Updated title\n  description: [{ type: \"text\" // options: \"text\", \"mention\", \"equation\" // Type of rich text, text: { content: \"example string\" // The actual text content, link: { url: \"example string\" // URL for the link } // Optional link object } // Text object (when type is \"text\"), annotations: { bold: false // default // Whether text is bolded, italic: false // default // Whether text is italicized, strikethrough: false // default // Whether text is struck through, underline: false // default // Whether text is underlined, code: false // default // Whether text is code style, color: \"default\" // options: \"default\", \"gray\", \"brown\", \"orange\", \"yellow\", \"green\", \"blue\", \"purple\", \"pink\", \"red\" // Color of the text } // Styling information for the rich text, plain_text: \"example string\" // Plain text without annotations, href: \"example string\" // URL of any link }], // Updated description\n  icon: { type: \"emoji\", emoji: \"example string\" }, // Updated icon (null to remove)\n  cover: { type: \"file\", file: { url: \"example string\" // Authenticated HTTP GET URL to the file, expiry_time: \"example string\" // ISO 8601 date time when the link expires } }, // Updated cover (null to remove)\n  parent: { type: \"page_id\", page_id: \"example string\" }, // New parent to move database\n  is_inline: true, // Whether database should be displayed inline\n  in_trash: true, // Set to true to move to trash\n  is_locked: true, // Set to true to lock from editing\n});\n\nconst result = await notion_update_database.action();\n// outputSchema for result.data when operation === 'update_database':\n// {\n//   operation: \"update_database\" // Update database operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   database: { object: \"database\" // Object type, id: string // Database ID, To find a database ID, navigate to the database URL in your Notion workspace. The ID is the string of characters in the URL that is between the slash following the workspace name (if applicable) and the question mark. The ID is a 32 characters alphanumeric string., created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, title: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] // Database title, description: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] | undefined // Database description, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined // Database icon, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined // Database cover, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } // Parent of the database, is_inline: boolean | undefined // Whether displayed inline, in_trash: boolean | undefined // Whether in trash, is_locked: boolean | undefined // Whether locked from editing, data_sources: { id: string // Data source ID, name: string // Data source name, icon: { type: \"emoji\" // Emoji icon, emoji: string // Emoji character } | { type: \"external\" // External icon, external: { url: string // URL of the external icon } } | { type: \"file\" // File icon, file: { url: string // URL of the file icon, expiry_time: string // Expiry time of the URL } } | null | undefined, cover: { type: \"file\" // Notion-hosted file type, file: { url: string // Authenticated HTTP GET URL to the file, expiry_time: string // ISO 8601 date time when the link expires } // File object for Notion-hosted files } | { type: \"file_upload\" // File uploaded via API type, file_upload: { id: string // ID of a File Upload object } // File upload object } | { type: \"external\" // External file type, external: { url: string // Link to externally hosted content } // External file object } | null | undefined }[] // Array of data sources in this database, url: string | undefined // URL of the database, public_url: string | null | undefined } | undefined // Updated database object\n// }\n\n\n// Append Block Children example\nconst notion_append_block_children = new NotionBubble({\n  operation: \"append_block_children\", // Append children blocks to a parent block or page\n  block_id: \"example string\", // UUID of the parent block or page\n  children: [], // Array of Notion block objects to append (max 100). Each block is `{ object: \"block\", type: \"<type>\", \"<type>\": { ... } }`. Common examples:\n- Paragraph: { object: \"block\", type: \"paragraph\", paragraph: { rich_text: [{ type: \"text\", text: { content: \"hello\" } }] } }\n- Heading: { object: \"block\", type: \"heading_2\", heading_2: { rich_text: [{ type: \"text\", text: { content: \"Title\" } }] } }\n- Table (rows MUST be supplied inline as children; table_width must equal every row's cell count): { object: \"block\", type: \"table\", table: { table_width: 2, has_column_header: true, has_row_header: false, children: [ { object: \"block\", type: \"table_row\", table_row: { cells: [ [{ type: \"text\", text: { content: \"Name\" } }], [{ type: \"text\", text: { content: \"Status\" } }] ] } }, { object: \"block\", type: \"table_row\", table_row: { cells: [ [{ type: \"text\", text: { content: \"Task A\" } }], [{ type: \"text\", text: { content: \"Done\" } }] ] } } ] } }. You cannot append rows to an empty table later — always include all rows in the initial create call. For an empty cell, use `cells: [..., [], ...]` (an empty array) — Notion rejects rich_text items with empty content strings.\n  after: \"example string\", // ID of block to append after\n});\n\nconst result = await notion_append_block_children.action();\n// outputSchema for result.data when operation === 'append_block_children':\n// {\n//   operation: \"append_block_children\" // Append block children operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   blocks: { object: \"block\" // Object type, id: string // Block ID, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } | undefined // Parent of the block, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the block, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the block, has_children: boolean // Whether the block has children, archived: boolean // Whether the block is archived, in_trash: boolean | undefined // Whether block is in trash, type: string // Type of block (e.g., paragraph, heading_2, etc.) }[] | undefined // Array of appended block objects,\n//   next_cursor: string | null | undefined // Cursor for pagination,\n//   has_more: boolean | undefined // Whether more results exist\n// }\n\n\n// Retrieve Block Children example\nconst notion_retrieve_block_children = new NotionBubble({\n  operation: \"retrieve_block_children\", // Retrieve children blocks of a parent block\n  block_id: \"example string\", // UUID of the parent block\n  start_cursor: \"example string\", // Cursor for pagination\n  page_size: 100 // default, // Number of items per response (max 100)\n});\n\nconst result = await notion_retrieve_block_children.action();\n// outputSchema for result.data when operation === 'retrieve_block_children':\n// {\n//   operation: \"retrieve_block_children\" // Retrieve block children operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   blocks: { object: \"block\" // Object type, id: string // Block ID, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } | undefined // Parent of the block, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the block, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the block, has_children: boolean // Whether the block has children, archived: boolean // Whether the block is archived, in_trash: boolean | undefined // Whether block is in trash, type: string // Type of block (e.g., paragraph, heading_2, etc.) }[] | undefined // Array of block children,\n//   next_cursor: string | null | undefined // Cursor for pagination,\n//   has_more: boolean | undefined // Whether more results exist\n// }\n\n\n// Retrieve Block example\nconst notion_retrieve_block = new NotionBubble({\n  operation: \"retrieve_block\", // Retrieve a block by its ID\n  block_id: \"example string\", // UUID of the Notion block\n});\n\nconst result = await notion_retrieve_block.action();\n// outputSchema for result.data when operation === 'retrieve_block':\n// {\n//   operation: \"retrieve_block\" // Retrieve block operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   block: { object: \"block\" // Object type, id: string // Block ID, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } | undefined // Parent of the block, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the block, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the block, has_children: boolean // Whether the block has children, archived: boolean // Whether the block is archived, in_trash: boolean | undefined // Whether block is in trash, type: string // Type of block (e.g., paragraph, heading_2, etc.) } | undefined // Retrieved block object\n// }\n\n\n// Update Block example\nconst notion_update_block = new NotionBubble({\n  operation: \"update_block\", // Update a block\n  block_id: \"example string\", // UUID of the Notion block\n  archived: true, // Set to true to archive the block\n});\n\nconst result = await notion_update_block.action();\n// outputSchema for result.data when operation === 'update_block':\n// {\n//   operation: \"update_block\" // Update block operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   block: { object: \"block\" // Object type, id: string // Block ID, parent: { type: \"page_id\" // Parent is a page, page_id: string // ID of the parent page } | { type: \"database_id\" // Parent is a database, database_id: string // ID of the parent database } | { type: \"data_source_id\" // Parent is a data source, data_source_id: string // ID of the parent data source, database_id: string | undefined // ID of the database } | { type: \"block_id\" // Parent is a block, block_id: string // ID of the parent block } | { type: \"workspace\" // Parent is the workspace, workspace: true // Workspace parent } | undefined // Parent of the block, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the block, last_edited_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who last edited the block, has_children: boolean // Whether the block has children, archived: boolean // Whether the block is archived, in_trash: boolean | undefined // Whether block is in trash, type: string // Type of block (e.g., paragraph, heading_2, etc.) } | undefined // Updated block object\n// }\n\n\n// Create Comment example\nconst notion_create_comment = new NotionBubble({\n  operation: \"create_comment\", // Create a comment on a page or block\n  parent: { page_id: \"example string\" // ID of parent page, block_id: \"example string\" // ID of parent block }, // Parent page or block ID (one of page_id or block_id is required)\n  rich_text: [{ type: \"text\" // options: \"text\", \"mention\", \"equation\" // Type of rich text, text: { content: \"example string\" // The actual text content, link: { url: \"example string\" // URL for the link } // Optional link object } // Text object (when type is \"text\"), annotations: { bold: false // default // Whether text is bolded, italic: false // default // Whether text is italicized, strikethrough: false // default // Whether text is struck through, underline: false // default // Whether text is underlined, code: false // default // Whether text is code style, color: \"default\" // options: \"default\", \"gray\", \"brown\", \"orange\", \"yellow\", \"green\", \"blue\", \"purple\", \"pink\", \"red\" // Color of the text } // Styling information for the rich text, plain_text: \"example string\" // Plain text without annotations, href: \"example string\" // URL of any link }], // Array of rich text objects for comment content\n  attachments: [{ file_upload_id: \"example string\" // File Upload ID, type: \"file_upload\" }], // Array of file attachments (max 3)\n  display_name: { type: \"integration\" // options: \"integration\", \"user\", \"custom\" // Type of display name, custom: { name: \"example string\" // Custom name for the comment } // Custom name object (required if type is custom) }, // Custom display name for the comment\n});\n\nconst result = await notion_create_comment.action();\n// outputSchema for result.data when operation === 'create_comment':\n// {\n//   operation: \"create_comment\" // Create comment operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   comment: { object: \"comment\" // Object type, id: string // Comment ID, parent: { type: \"page_id\" | \"block_id\", page_id: string | undefined, block_id: string | undefined } // Parent page or block, discussion_id: string // Discussion thread ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the comment, rich_text: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] // Comment content } | undefined // Created comment object\n// }\n\n\n// Retrieve Comment example\nconst notion_retrieve_comment = new NotionBubble({\n  operation: \"retrieve_comment\", // Retrieve a comment by its ID\n  comment_id: \"example string\", // UUID of the Notion comment\n});\n\nconst result = await notion_retrieve_comment.action();\n// outputSchema for result.data when operation === 'retrieve_comment':\n// {\n//   operation: \"retrieve_comment\" // Retrieve comment operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   comment: { object: \"comment\" // Object type, id: string // Comment ID, parent: { type: \"page_id\" | \"block_id\", page_id: string | undefined, block_id: string | undefined } // Parent page or block, discussion_id: string // Discussion thread ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, created_by: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details } // User who created the comment, rich_text: { type: \"text\" | \"mention\" | \"equation\" // Type of rich text, text: { content: string // The actual text content, link: { url: string // URL for the link } | null | undefined // Optional link object } | undefined // Text object (when type is \"text\"), annotations: { bold: boolean // Whether text is bolded, italic: boolean // Whether text is italicized, strikethrough: boolean // Whether text is struck through, underline: boolean // Whether text is underlined, code: boolean // Whether text is code style, color: \"default\" | \"gray\" | \"brown\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\" | \"pink\" | \"red\" // Color of the text } | undefined // Styling information for the rich text, plain_text: string | undefined // Plain text without annotations, href: string | null | undefined // URL of any link }[] // Comment content } | undefined // Retrieved comment object\n// }\n\n\n// List Users example\nconst notion_list_users = new NotionBubble({\n  operation: \"list_users\", // List all users in the workspace\n  start_cursor: \"example string\", // Cursor for pagination\n  page_size: 100 // default, // Number of items per page (max 100)\n});\n\nconst result = await notion_list_users.action();\n// outputSchema for result.data when operation === 'list_users':\n// {\n//   operation: \"list_users\" // List users operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   users: { object: \"user\" // Object type, id: string // User ID, type: \"person\" | \"bot\" | undefined // User type, name: string | undefined // User name, avatar_url: string | null | undefined // Avatar URL, person: { email: string | undefined // Email address } | undefined // Person details, bot: { owner: { type: \"workspace\" | \"user\" // Owner type, workspace: boolean | undefined } | undefined, workspace_name: string | undefined // Workspace name } | undefined // Bot details }[] | undefined // Array of users in the workspace,\n//   next_cursor: string | null | undefined // Cursor for pagination,\n//   has_more: boolean | undefined // Whether more results exist\n// }\n\n\n// Search example\nconst notion_search = new NotionBubble({\n  operation: \"search\", // Search all pages and data sources shared with the integration\n  query: \"example string\", // Text to compare against page and data source titles. If not provided, returns all pages and data sources shared with the integration\n  sort: { direction: \"ascending\" // options: \"ascending\", \"descending\" // Sort direction, timestamp: \"last_edited_time\" // Timestamp field to sort by (only \"last_edited_time\" is supported) }, // Sort criteria. If not provided, most recently edited results are returned first\n  filter: { value: \"page\" // options: \"page\", \"data_source\" // Filter results to only pages or only data sources, property: \"object\" // Property to filter on (only \"object\" is supported) }, // Filter to limit results to either pages or data sources\n  start_cursor: \"example string\", // Cursor for pagination (from previous response)\n  page_size: 100 // default, // Number of items per page (max 100)\n});\n\nconst result = await notion_search.action();\n// outputSchema for result.data when operation === 'search':\n// {\n//   operation: \"search\" // Search operation result,\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   results: { object: \"page\" | \"data_source\" // Object type (page or data_source), id: string // Object ID, created_time: string // ISO 8601 datetime, last_edited_time: string // ISO 8601 datetime, url: string | undefined // URL of the object, properties: Record<string, unknown> | undefined // Object properties, title: { plain_text: string | undefined }[] | undefined // Title (for data sources), parent: Record<string, unknown> | undefined // Parent of the object, archived: boolean | undefined // Whether the object is archived, in_trash: boolean | undefined // Whether the object is in trash }[] | undefined // Array of pages and/or data sources matching the search query,\n//   next_cursor: string | null | undefined // Cursor for pagination,\n//   has_more: boolean | undefined // Whether more results exist\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`notion failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "NOTION_OAUTH_TOKEN",
        "NOTION_API"
      ]
    },
    {
      "name": "database-analyzer",
      "alias": "analyze-db",
      "type": "workflow",
      "shortDescription": "Analyzes database schema structure and metadata",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  success: boolean,\n  error: string,\n  databaseSchema: { rawData: Record<string, unknown>[] | undefined, cleanedJSON: string | undefined, tableCount: number | undefined, tableNames: string[] | undefined } | undefined,\n  analysisSummary: { dataSourceType: string, connectionSuccessful: boolean, analysisTimestamp: unknown } | undefined\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "dataSourceType": {
            "type": "string",
            "enum": [
              "postgresql"
            ],
            "description": "Data source type to analyze"
          },
          "ignoreSSLErrors": {
            "type": "boolean",
            "default": false,
            "description": "Ignore SSL certificate errors"
          },
          "includeMetadata": {
            "type": "boolean",
            "default": true,
            "description": "Include enum values and column constraints"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          },
          "injectedMetadata": {
            "type": "object",
            "properties": {
              "tables": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "tableNotes": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "rules": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false,
            "description": "Additional database context injected from user credentials metadata"
          }
        },
        "required": [
          "dataSourceType"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "error": {
            "type": "string"
          },
          "databaseSchema": {
            "type": "object",
            "properties": {
              "rawData": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "cleanedJSON": {
                "type": "string"
              },
              "tableCount": {
                "type": "number"
              },
              "tableNames": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          },
          "analysisSummary": {
            "type": "object",
            "properties": {
              "dataSourceType": {
                "type": "string"
              },
              "connectionSuccessful": {
                "type": "boolean"
              },
              "analysisTimestamp": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "dataSourceType",
              "connectionSuccessful",
              "analysisTimestamp"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of database-analyzer bubble\nconst databaseAnalyzer = new DatabaseAnalyzerWorkflowBubble({\n  dataSourceType: \"postgresql\", // Data source type to analyze,\n  ignoreSSLErrors: false // default, // Ignore SSL certificate errors,\n  includeMetadata: true // default, // Include enum values and column constraints,\n  injectedMetadata: { tables: { \"example_key\": { \"example_key\": \"example string\" } }, tableNotes: { \"example_key\": \"example string\" }, rules: [\"example string\"] }, // Additional database context injected from user credentials metadata,\n});\n\nconst result = await databaseAnalyzer.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   success: boolean,\n//   error: string,\n//   databaseSchema: { rawData: Record<string, unknown>[] | undefined, cleanedJSON: string | undefined, tableCount: number | undefined, tableNames: string[] | undefined } | undefined,\n//   analysisSummary: { dataSourceType: string, connectionSuccessful: boolean, analysisTimestamp: unknown } | undefined\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "DATABASE_CRED"
      ]
    },
    {
      "name": "slack-notifier",
      "alias": "notify-slack",
      "type": "workflow",
      "shortDescription": "Data analyst-powered Slack notifications that tell compelling stories",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  success: boolean,\n  error: string,\n  messageInfo: { messageTimestamp: string | undefined, channelId: string | undefined, channelName: string | undefined, formattedMessage: string | undefined, messageLength: number | undefined } | undefined,\n  formattingInfo: { modelUsed: string | undefined, wasTruncated: boolean, originalLength: number | undefined } | undefined\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "contentToFormat": {
            "type": "string",
            "description": "Raw content or data to format for Slack"
          },
          "originalUserQuery": {
            "type": "string",
            "description": "Original user question or context"
          },
          "targetChannel": {
            "type": "string",
            "description": "Slack channel name (without #) or channel ID"
          },
          "messageTitle": {
            "type": "string",
            "description": "Custom title for the Slack message"
          },
          "messageStyle": {
            "type": "string",
            "enum": [
              "professional",
              "casual",
              "technical",
              "concise",
              "detailed"
            ],
            "default": "professional",
            "description": "Style and tone for message formatting"
          },
          "includeFormatting": {
            "type": "boolean",
            "default": true,
            "description": "Include emojis and rich Slack formatting"
          },
          "maxMessageLength": {
            "type": "number",
            "default": 3000,
            "description": "Maximum message length for Slack"
          },
          "aiModel": {
            "type": "object",
            "properties": {
              "model": {
                "type": "string",
                "enum": [
                  "openai/gpt-5",
                  "openai/gpt-5-mini",
                  "openai/gpt-5.1",
                  "openai/gpt-5.2",
                  "google/gemini-2.5-pro",
                  "google/gemini-2.5-flash",
                  "google/gemini-2.5-flash-lite",
                  "google/gemini-2.5-flash-image-preview",
                  "google/gemini-3-pro-preview",
                  "google/gemini-3-pro-image-preview",
                  "google/gemini-3-flash-preview",
                  "google/gemini-3.1-pro-preview",
                  "google/gemini-3.1-flash-lite-preview",
                  "anthropic/claude-sonnet-4-5",
                  "anthropic/claude-sonnet-4-6",
                  "anthropic/claude-opus-4-5",
                  "anthropic/claude-opus-4-6",
                  "anthropic/claude-haiku-4-5",
                  "openrouter/x-ai/grok-code-fast-1",
                  "openrouter/z-ai/glm-4.6",
                  "openrouter/z-ai/glm-4.7",
                  "openrouter/anthropic/claude-sonnet-4.5",
                  "openrouter/anthropic/claude-sonnet-4.6",
                  "openrouter/anthropic/claude-opus-4.5",
                  "openrouter/anthropic/claude-opus-4.6",
                  "openrouter/google/gemini-3-pro-preview",
                  "openrouter/morph/morph-v3-large",
                  "openrouter/openai/gpt-oss-120b",
                  "openrouter/openai/o3-deep-research",
                  "openrouter/openai/o4-mini-deep-research",
                  "fireworks/accounts/fireworks/models/kimi-k2p6"
                ],
                "default": "google/gemini-2.5-flash"
              },
              "temperature": {
                "type": "number",
                "minimum": 0,
                "maximum": 1,
                "default": 0.3
              },
              "maxTokens": {
                "type": "number",
                "default": 50000
              }
            },
            "additionalProperties": false,
            "description": "AI model settings for content formatting"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          }
        },
        "required": [
          "contentToFormat",
          "targetChannel"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "error": {
            "type": "string"
          },
          "messageInfo": {
            "type": "object",
            "properties": {
              "messageTimestamp": {
                "type": "string"
              },
              "channelId": {
                "type": "string"
              },
              "channelName": {
                "type": "string"
              },
              "formattedMessage": {
                "type": "string"
              },
              "messageLength": {
                "type": "number"
              }
            },
            "additionalProperties": false
          },
          "formattingInfo": {
            "type": "object",
            "properties": {
              "modelUsed": {
                "type": "string"
              },
              "wasTruncated": {
                "type": "boolean",
                "default": false
              },
              "originalLength": {
                "type": "number"
              }
            },
            "additionalProperties": false
          }
        },
        "required": [
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of slack-notifier bubble\nconst slackNotifier = new SlackNotifierWorkflowBubble({\n  contentToFormat: \"example string\", // Raw content or data to format for Slack,\n  originalUserQuery: \"example string\", // Original user question or context,\n  targetChannel: \"example string\", // Slack channel name (without #) or channel ID,\n  messageTitle: \"example string\", // Custom title for the Slack message,\n  messageStyle: \"professional\" // options: \"professional\", \"casual\", \"technical\", \"concise\", \"detailed\", // Style and tone for message formatting,\n  includeFormatting: true // default, // Include emojis and rich Slack formatting,\n  maxMessageLength: 3000 // default, // Maximum message length for Slack,\n  aiModel: { model: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\", temperature: 0.3 // default, maxTokens: 50000 // default }, // AI model settings for content formatting,\n});\n\nconst result = await slackNotifier.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   success: boolean,\n//   error: string,\n//   messageInfo: { messageTimestamp: string | undefined, channelId: string | undefined, channelName: string | undefined, formattedMessage: string | undefined, messageLength: number | undefined } | undefined,\n//   formattingInfo: { modelUsed: string | undefined, wasTruncated: boolean, originalLength: number | undefined } | undefined\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "SLACK_CRED",
        "SLACK_API",
        "OPENAI_CRED",
        "GOOGLE_GEMINI_CRED",
        "ANTHROPIC_CRED"
      ]
    },
    {
      "name": "slack-data-assistant",
      "alias": "slack-data-bot",
      "type": "workflow",
      "shortDescription": "AI-powered Slack bot that answers data questions by querying databases",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  success: boolean // Whether the workflow completed successfully,\n  error: string // Error message if workflow failed,\n  query: string | undefined // Generated SQL query,\n  queryExplanation: string | undefined // Explanation of the query,\n  queryResults: Record<string, unknown>[] | undefined // Results from the database query,\n  formattedResponse: string | undefined // Formatted response for Slack,\n  slackBlocks: unknown[] | undefined // Slack block kit formatted message,\n  slackMessageTs: string | undefined // Timestamp of sent Slack message,\n  isDataQuestion: boolean | undefined // Whether the question was data-related,\n  metadata: { executionTime: number // Total execution time in milliseconds, rowCount: number | undefined // Number of rows returned, wordCount: number | undefined // Word count of response } | undefined\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "slackChannel": {
            "type": "string",
            "minLength": 1,
            "description": "Slack channel ID where the bot will respond"
          },
          "slackThreadTs": {
            "type": "string",
            "description": "Thread timestamp if replying to a thread"
          },
          "userQuestion": {
            "type": "string",
            "minLength": 1,
            "description": "The user question from Slack"
          },
          "userName": {
            "type": "string",
            "description": "Name of the user asking the question"
          },
          "name": {
            "type": "string",
            "default": "Data Assistant",
            "description": "Name of the AI assistant (e.g., \"DataBot\", \"Analytics Assistant\")"
          },
          "dataSourceType": {
            "type": "string",
            "enum": [
              "postgresql",
              "mysql",
              "sqlite",
              "mariadb",
              "mssql"
            ],
            "default": "postgresql",
            "description": "Type of database to analyze"
          },
          "databaseUrl": {
            "type": "string",
            "description": "Database connection URL (if not using credentials)"
          },
          "ignoreSSLErrors": {
            "type": "boolean",
            "default": false,
            "description": "Ignore SSL certificate errors for database connection"
          },
          "aiModel": {
            "type": "string",
            "enum": [
              "openai/gpt-5",
              "openai/gpt-5-mini",
              "openai/gpt-5.1",
              "openai/gpt-5.2",
              "google/gemini-2.5-pro",
              "google/gemini-2.5-flash",
              "google/gemini-2.5-flash-lite",
              "google/gemini-2.5-flash-image-preview",
              "google/gemini-3-pro-preview",
              "google/gemini-3-pro-image-preview",
              "google/gemini-3-flash-preview",
              "google/gemini-3.1-pro-preview",
              "google/gemini-3.1-flash-lite-preview",
              "anthropic/claude-sonnet-4-5",
              "anthropic/claude-sonnet-4-6",
              "anthropic/claude-opus-4-5",
              "anthropic/claude-opus-4-6",
              "anthropic/claude-haiku-4-5",
              "openrouter/x-ai/grok-code-fast-1",
              "openrouter/z-ai/glm-4.6",
              "openrouter/z-ai/glm-4.7",
              "openrouter/anthropic/claude-sonnet-4.5",
              "openrouter/anthropic/claude-sonnet-4.6",
              "openrouter/anthropic/claude-opus-4.5",
              "openrouter/anthropic/claude-opus-4.6",
              "openrouter/google/gemini-3-pro-preview",
              "openrouter/morph/morph-v3-large",
              "openrouter/openai/gpt-oss-120b",
              "openrouter/openai/o3-deep-research",
              "openrouter/openai/o4-mini-deep-research",
              "fireworks/accounts/fireworks/models/kimi-k2p6"
            ],
            "default": "google/gemini-2.5-flash",
            "description": "AI model to use for query generation"
          },
          "temperature": {
            "type": "number",
            "minimum": 0,
            "maximum": 2,
            "default": 0.3,
            "description": "Temperature for AI responses (lower = more focused)"
          },
          "verbosity": {
            "type": "string",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "default": "3",
            "description": "Response verbosity level (1=concise, 5=comprehensive)"
          },
          "technicality": {
            "type": "string",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "default": "2",
            "description": "Technical complexity level (1=plain English, 5=expert)"
          },
          "includeQuery": {
            "type": "boolean",
            "default": true,
            "description": "Include the SQL query in the response"
          },
          "includeExplanation": {
            "type": "boolean",
            "default": true,
            "description": "Include query explanation in the response"
          },
          "injectedMetadata": {
            "type": "object",
            "properties": {
              "tables": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "tableNotes": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "rules": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false,
            "description": "Additional database context injected from user credentials metadata"
          },
          "additionalContext": {
            "type": "string",
            "description": "Additional context about how to answer the question"
          },
          "maxQueries": {
            "type": "number",
            "default": 20,
            "description": "Maximum number of queries to run"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Credentials for various services"
          }
        },
        "required": [
          "slackChannel",
          "userQuestion"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the workflow completed successfully"
          },
          "error": {
            "type": "string",
            "description": "Error message if workflow failed"
          },
          "query": {
            "type": "string",
            "description": "Generated SQL query"
          },
          "queryExplanation": {
            "type": "string",
            "description": "Explanation of the query"
          },
          "queryResults": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "description": "Results from the database query"
          },
          "formattedResponse": {
            "type": "string",
            "description": "Formatted response for Slack"
          },
          "slackBlocks": {
            "type": "array",
            "items": {},
            "description": "Slack block kit formatted message"
          },
          "slackMessageTs": {
            "type": "string",
            "description": "Timestamp of sent Slack message"
          },
          "isDataQuestion": {
            "type": "boolean",
            "description": "Whether the question was data-related"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "executionTime": {
                "type": "number",
                "description": "Total execution time in milliseconds"
              },
              "rowCount": {
                "type": "number",
                "description": "Number of rows returned"
              },
              "wordCount": {
                "type": "number",
                "description": "Word count of response"
              }
            },
            "required": [
              "executionTime"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of slack-data-assistant bubble\nconst slackDataAssistant = new SlackDataAssistantWorkflow({\n  slackChannel: \"example string\", // Slack channel ID where the bot will respond,\n  slackThreadTs: \"example string\", // Thread timestamp if replying to a thread,\n  userQuestion: \"example string\", // The user question from Slack,\n  userName: \"example string\", // Name of the user asking the question,\n  name: \"Data Assistant\" // default, // Name of the AI assistant (e.g., \"DataBot\", \"Analytics Assistant\"),\n  dataSourceType: \"postgresql\" // options: \"postgresql\", \"mysql\", \"sqlite\", \"mariadb\", \"mssql\", // Type of database to analyze,\n  databaseUrl: \"example string\", // Database connection URL (if not using credentials),\n  ignoreSSLErrors: false // default, // Ignore SSL certificate errors for database connection,\n  aiModel: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\", // AI model to use for query generation,\n  temperature: 0.3 // default, // Temperature for AI responses (lower = more focused),\n  verbosity: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Response verbosity level (1=concise, 5=comprehensive),\n  technicality: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Technical complexity level (1=plain English, 5=expert),\n  includeQuery: true // default, // Include the SQL query in the response,\n  includeExplanation: true // default, // Include query explanation in the response,\n  injectedMetadata: { tables: { \"example_key\": { \"example_key\": \"example string\" } }, tableNotes: { \"example_key\": \"example string\" }, rules: [\"example string\"] }, // Additional database context injected from user credentials metadata,\n  additionalContext: \"example string\", // Additional context about how to answer the question,\n  maxQueries: 20 // default, // Maximum number of queries to run,\n});\n\nconst result = await slackDataAssistant.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   success: boolean // Whether the workflow completed successfully,\n//   error: string // Error message if workflow failed,\n//   query: string | undefined // Generated SQL query,\n//   queryExplanation: string | undefined // Explanation of the query,\n//   queryResults: Record<string, unknown>[] | undefined // Results from the database query,\n//   formattedResponse: string | undefined // Formatted response for Slack,\n//   slackBlocks: unknown[] | undefined // Slack block kit formatted message,\n//   slackMessageTs: string | undefined // Timestamp of sent Slack message,\n//   isDataQuestion: boolean | undefined // Whether the question was data-related,\n//   metadata: { executionTime: number // Total execution time in milliseconds, rowCount: number | undefined // Number of rows returned, wordCount: number | undefined // Word count of response } | undefined\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "DATABASE_CRED",
        "SLACK_CRED",
        "SLACK_API",
        "OPENAI_CRED",
        "GOOGLE_GEMINI_CRED",
        "ANTHROPIC_CRED"
      ]
    },
    {
      "name": "slack-formatter-agent",
      "alias": "slack-format",
      "type": "service",
      "shortDescription": "AI agent for creating well-formatted Slack messages with adjustable verbosity and technicality",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  response: string // The AI agents formatted response in Slack markdown,\n  blocks: { type: \"section\" | \"header\" | \"divider\" | \"context\" | \"actions\" | \"input\" | \"file\" | \"image\" | \"table\", text: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined } | undefined, block_id: string | undefined, accessory: unknown | undefined, fields: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined }[] | undefined, element: unknown | undefined, label: unknown | undefined, hint: unknown | undefined, optional: boolean | undefined, alt_text: string | undefined, image_url: string | undefined, title: { type: \"plain_text\", text: string, emoji: boolean | undefined } | undefined, elements: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined }[] | undefined }[] | undefined // Slack Block Kit formatted blocks for rich message display,\n  metadata: { verbosityLevel: string // Applied verbosity level, technicalityLevel: string // Applied technicality level, wordCount: number // Total word count of response, blockCount: number | undefined // Number of Slack blocks generated } // Metadata about the formatting,\n  toolCalls: { tool: string // Name of the tool that was called, input: unknown // Input parameters passed to the tool, output: unknown // Output returned by the tool }[] | undefined // Array of tool calls made during the conversation,\n  iterations: number // Number of back-and-forth iterations in the agent workflow,\n  error: string // Error message of the run, undefined if successful,\n  success: boolean // Whether the agent execution completed successfully\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "minLength": 1,
            "description": "The message or question to send to the AI agent"
          },
          "verbosity": {
            "type": "string",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "description": "Response verbosity level (1-5): 1=concise bullet points, 5=comprehensive explanations",
            "default": "3"
          },
          "technicality": {
            "type": "string",
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "description": "Technical complexity level (1-5): 1=plain English, 5=expert terminology",
            "default": "3"
          },
          "includeBlockKit": {
            "type": "boolean",
            "default": true,
            "description": "Include Slack Block Kit JSON for rich formatting"
          },
          "includeQuery": {
            "type": "boolean",
            "default": false,
            "description": "Include the query that was executed in the response"
          },
          "includeExplanation": {
            "type": "boolean",
            "default": false,
            "description": "Include explanation of what the query does and why it was chosen"
          },
          "model": {
            "type": "object",
            "properties": {
              "model": {
                "type": "string",
                "enum": [
                  "openai/gpt-5",
                  "openai/gpt-5-mini",
                  "openai/gpt-5.1",
                  "openai/gpt-5.2",
                  "google/gemini-2.5-pro",
                  "google/gemini-2.5-flash",
                  "google/gemini-2.5-flash-lite",
                  "google/gemini-2.5-flash-image-preview",
                  "google/gemini-3-pro-preview",
                  "google/gemini-3-pro-image-preview",
                  "google/gemini-3-flash-preview",
                  "google/gemini-3.1-pro-preview",
                  "google/gemini-3.1-flash-lite-preview",
                  "anthropic/claude-sonnet-4-5",
                  "anthropic/claude-sonnet-4-6",
                  "anthropic/claude-opus-4-5",
                  "anthropic/claude-opus-4-6",
                  "anthropic/claude-haiku-4-5",
                  "openrouter/x-ai/grok-code-fast-1",
                  "openrouter/z-ai/glm-4.6",
                  "openrouter/z-ai/glm-4.7",
                  "openrouter/anthropic/claude-sonnet-4.5",
                  "openrouter/anthropic/claude-sonnet-4.6",
                  "openrouter/anthropic/claude-opus-4.5",
                  "openrouter/anthropic/claude-opus-4.6",
                  "openrouter/google/gemini-3-pro-preview",
                  "openrouter/morph/morph-v3-large",
                  "openrouter/openai/gpt-oss-120b",
                  "openrouter/openai/o3-deep-research",
                  "openrouter/openai/o4-mini-deep-research",
                  "fireworks/accounts/fireworks/models/kimi-k2p6"
                ],
                "default": "google/gemini-3-flash-preview",
                "description": "AI model to use (format: provider/model-name)"
              },
              "temperature": {
                "type": "number",
                "minimum": 0,
                "maximum": 2,
                "default": 0.7,
                "description": "Temperature for response randomness (0 = deterministic, 2 = very random)"
              },
              "maxTokens": {
                "type": "number",
                "exclusiveMinimum": true,
                "minimum": 0,
                "default": 10000,
                "description": "Maximum number of tokens to generate in response"
              }
            },
            "additionalProperties": false,
            "default": {
              "model": "google/gemini-3-flash-preview",
              "temperature": 0.7,
              "maxTokens": 50000
            },
            "description": "AI model configuration including provider, temperature, and tokens"
          },
          "tools": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Name of the tool bubble to enable for the AI agent"
                },
                "credentials": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  },
                  "default": {},
                  "description": "Credential types to use for the tool bubble (injected at runtime)"
                },
                "config": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "Configuration for the tool bubble"
                }
              },
              "required": [
                "name"
              ],
              "additionalProperties": false
            },
            "default": [],
            "description": "Array of tool bubbles the AI agent can use"
          },
          "maxIterations": {
            "type": "number",
            "exclusiveMinimum": true,
            "minimum": 0,
            "default": 10,
            "description": "Maximum number of iterations for the agent workflow"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          },
          "additionalContext": {
            "type": "string",
            "description": "Additional context about how to answer the question"
          }
        },
        "required": [
          "message"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "response": {
            "type": "string",
            "description": "The AI agents formatted response in Slack markdown"
          },
          "blocks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "section",
                    "header",
                    "divider",
                    "context",
                    "actions",
                    "input",
                    "file",
                    "image",
                    "table"
                  ]
                },
                "text": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "plain_text",
                        "mrkdwn"
                      ]
                    },
                    "text": {
                      "type": "string"
                    },
                    "emoji": {
                      "type": "boolean"
                    },
                    "verbatim": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "type",
                    "text"
                  ],
                  "additionalProperties": false
                },
                "block_id": {
                  "type": "string"
                },
                "accessory": {},
                "fields": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "plain_text",
                          "mrkdwn"
                        ]
                      },
                      "text": {
                        "type": "string"
                      },
                      "emoji": {
                        "type": "boolean"
                      },
                      "verbatim": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "type",
                      "text"
                    ],
                    "additionalProperties": false
                  }
                },
                "element": {},
                "label": {},
                "hint": {},
                "optional": {
                  "type": "boolean"
                },
                "alt_text": {
                  "type": "string"
                },
                "image_url": {
                  "type": "string"
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "plain_text"
                      ]
                    },
                    "text": {
                      "type": "string"
                    },
                    "emoji": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "type",
                    "text"
                  ],
                  "additionalProperties": false
                },
                "elements": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "plain_text",
                          "mrkdwn"
                        ]
                      },
                      "text": {
                        "type": "string"
                      },
                      "emoji": {
                        "type": "boolean"
                      },
                      "verbatim": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "type",
                      "text"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "type"
              ],
              "additionalProperties": false
            },
            "description": "Slack Block Kit formatted blocks for rich message display"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "verbosityLevel": {
                "type": "string",
                "description": "Applied verbosity level"
              },
              "technicalityLevel": {
                "type": "string",
                "description": "Applied technicality level"
              },
              "wordCount": {
                "type": "number",
                "description": "Total word count of response"
              },
              "blockCount": {
                "type": "number",
                "description": "Number of Slack blocks generated"
              }
            },
            "required": [
              "verbosityLevel",
              "technicalityLevel",
              "wordCount"
            ],
            "additionalProperties": false,
            "description": "Metadata about the formatting"
          },
          "toolCalls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tool": {
                  "type": "string",
                  "description": "Name of the tool that was called"
                },
                "input": {
                  "description": "Input parameters passed to the tool"
                },
                "output": {
                  "description": "Output returned by the tool"
                }
              },
              "required": [
                "tool"
              ],
              "additionalProperties": false
            },
            "description": "Array of tool calls made during the conversation"
          },
          "iterations": {
            "type": "number",
            "description": "Number of back-and-forth iterations in the agent workflow"
          },
          "error": {
            "type": "string",
            "description": "Error message of the run, undefined if successful"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the agent execution completed successfully"
          }
        },
        "required": [
          "response",
          "metadata",
          "iterations",
          "error",
          "success"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of slack-formatter-agent bubble\nconst slackFormatterAgent = new SlackFormatterAgentBubble({\n  message: \"example string\", // The message or question to send to the AI agent,\n  verbosity: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Response verbosity level (1-5): 1=concise bullet points, 5=comprehensive explanations,\n  technicality: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Technical complexity level (1-5): 1=plain English, 5=expert terminology,\n  includeBlockKit: true // default, // Include Slack Block Kit JSON for rich formatting,\n  includeQuery: false // default, // Include the query that was executed in the response,\n  includeExplanation: false // default, // Include explanation of what the query does and why it was chosen,\n  model: { model: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\" // AI model to use (format: provider/model-name), temperature: 0.7 // default // Temperature for response randomness (0 = deterministic, 2 = very random), maxTokens: 10000 // default // Maximum number of tokens to generate in response } // structure, // AI model configuration including provider, temperature, and tokens,\n  tools: [{ name: \"example string\" // Name of the tool bubble to enable for the AI agent, config: {} // Configuration for the tool bubble }] // example for array, // Array of tool bubbles the AI agent can use,\n  maxIterations: 10 // default, // Maximum number of iterations for the agent workflow,\n  additionalContext: \"example string\", // Additional context about how to answer the question,\n});\n\nconst result = await slackFormatterAgent.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   response: string // The AI agents formatted response in Slack markdown,\n//   blocks: { type: \"section\" | \"header\" | \"divider\" | \"context\" | \"actions\" | \"input\" | \"file\" | \"image\" | \"table\", text: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined } | undefined, block_id: string | undefined, accessory: unknown | undefined, fields: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined }[] | undefined, element: unknown | undefined, label: unknown | undefined, hint: unknown | undefined, optional: boolean | undefined, alt_text: string | undefined, image_url: string | undefined, title: { type: \"plain_text\", text: string, emoji: boolean | undefined } | undefined, elements: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined }[] | undefined }[] | undefined // Slack Block Kit formatted blocks for rich message display,\n//   metadata: { verbosityLevel: string // Applied verbosity level, technicalityLevel: string // Applied technicality level, wordCount: number // Total word count of response, blockCount: number | undefined // Number of Slack blocks generated } // Metadata about the formatting,\n//   toolCalls: { tool: string // Name of the tool that was called, input: unknown // Input parameters passed to the tool, output: unknown // Output returned by the tool }[] | undefined // Array of tool calls made during the conversation,\n//   iterations: number // Number of back-and-forth iterations in the agent workflow,\n//   error: string // Error message of the run, undefined if successful,\n//   success: boolean // Whether the agent execution completed successfully\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "OPENAI_CRED",
        "GOOGLE_GEMINI_CRED",
        "ANTHROPIC_CRED"
      ]
    },
    {
      "name": "pdf-form-operations",
      "alias": "pdf-forms",
      "type": "workflow",
      "shortDescription": "PDF form field operations (discover, fill, analyze, validate, convert-to-images, convert-to-markdown)",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "discover"
                ]
              },
              "pdfData": {
                "type": "string",
                "description": "Base64 encoded PDF data"
              },
              "targetPage": {
                "type": "number",
                "description": "Extract fields from specific page only (default: all pages)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "operation",
              "pdfData"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "fill"
                ]
              },
              "pdfData": {
                "type": "string",
                "description": "Base64 encoded PDF data"
              },
              "fieldValues": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Field name to value mapping"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "operation",
              "pdfData",
              "fieldValues"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "analyze-checkboxes"
                ]
              },
              "pdfData": {
                "type": "string",
                "description": "Base64 encoded PDF data"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "operation",
              "pdfData"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "validate"
                ]
              },
              "pdfData": {
                "type": "string",
                "description": "Base64 encoded PDF data"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "operation",
              "pdfData"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "convert-to-images"
                ]
              },
              "pdfData": {
                "type": "string",
                "description": "Base64 encoded PDF data"
              },
              "format": {
                "type": "string",
                "enum": [
                  "png",
                  "jpeg"
                ],
                "default": "png",
                "description": "Output image format"
              },
              "quality": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 1,
                "default": 0.8,
                "description": "JPEG quality (0.1-1.0, only for JPEG format)"
              },
              "dpi": {
                "type": "number",
                "minimum": 72,
                "maximum": 300,
                "default": 150,
                "description": "Output DPI (dots per inch)"
              },
              "pages": {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "description": "Specific page numbers to convert (1-indexed). If not provided, converts all pages"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "operation",
              "pdfData"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "convert-to-markdown"
                ]
              },
              "pdfData": {
                "type": "string",
                "description": "Base64 encoded PDF data"
              },
              "pages": {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "description": "Specific page numbers to convert (1-indexed). If not provided, converts all pages"
              },
              "includeFormFields": {
                "type": "boolean",
                "default": true,
                "description": "Whether to include form field information in the markdown"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "operation",
              "pdfData"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "discover"
                ]
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number"
                    },
                    "page": {
                      "type": "number"
                    },
                    "name": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "field_type": {
                      "type": "string"
                    },
                    "current_value": {
                      "type": "string"
                    },
                    "choices": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "rect": {
                      "type": "array",
                      "minItems": 4,
                      "maxItems": 4,
                      "items": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "number"
                        }
                      ]
                    },
                    "x": {
                      "type": "number"
                    },
                    "y": {
                      "type": "number"
                    },
                    "width": {
                      "type": "number"
                    },
                    "height": {
                      "type": "number"
                    },
                    "field_flags": {
                      "type": "number"
                    },
                    "label": {
                      "type": "string"
                    },
                    "potential_labels": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "id",
                    "page",
                    "name",
                    "type",
                    "field_type",
                    "current_value",
                    "choices",
                    "rect",
                    "x",
                    "y",
                    "width",
                    "height",
                    "field_flags",
                    "label",
                    "potential_labels"
                  ],
                  "additionalProperties": false
                }
              },
              "totalFields": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "fields",
              "totalFields",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "fill"
                ]
              },
              "filledPdfData": {
                "type": "string",
                "description": "Base64 encoded filled PDF data"
              },
              "filledFields": {
                "type": "number"
              },
              "verification": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "page": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "value",
                    "type",
                    "page"
                  ],
                  "additionalProperties": false
                }
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "filledPdfData",
              "filledFields",
              "verification",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "analyze-checkboxes"
                ]
              },
              "checkboxes": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "number"
                    },
                    "current_value": {
                      "type": "string"
                    },
                    "possible_values": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "field_flags": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "page",
                    "current_value",
                    "possible_values",
                    "field_flags"
                  ],
                  "additionalProperties": false
                }
              },
              "totalCheckboxes": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "checkboxes",
              "totalCheckboxes",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "validate"
                ]
              },
              "fields": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "page": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "value",
                    "type",
                    "page"
                  ],
                  "additionalProperties": false
                }
              },
              "totalFields": {
                "type": "number"
              },
              "filledFields": {
                "type": "number"
              },
              "emptyFields": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "fields",
              "totalFields",
              "filledFields",
              "emptyFields",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "convert-to-images"
                ]
              },
              "images": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "pageNumber": {
                      "type": "number"
                    },
                    "imageData": {
                      "type": "string",
                      "description": "Base64 encoded image data"
                    },
                    "format": {
                      "type": "string"
                    },
                    "width": {
                      "type": "number"
                    },
                    "height": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "pageNumber",
                    "imageData",
                    "format",
                    "width",
                    "height"
                  ],
                  "additionalProperties": false
                }
              },
              "totalPages": {
                "type": "number"
              },
              "convertedPages": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "images",
              "totalPages",
              "convertedPages",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "convert-to-markdown"
                ]
              },
              "markdown": {
                "type": "string",
                "description": "Markdown representation of the PDF content"
              },
              "pages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "pageNumber": {
                      "type": "number"
                    },
                    "markdown": {
                      "type": "string",
                      "description": "Markdown content for this page"
                    },
                    "formFields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "number"
                          },
                          "name": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string"
                          },
                          "value": {
                            "type": "string"
                          },
                          "x": {
                            "type": "number"
                          },
                          "y": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "type",
                          "value",
                          "x",
                          "y"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "pageNumber",
                    "markdown"
                  ],
                  "additionalProperties": false
                }
              },
              "totalPages": {
                "type": "number"
              },
              "convertedPages": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "markdown",
              "pages",
              "totalPages",
              "convertedPages",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Discover example\nconst pdfFormOperations_discover = new PDFFormOperationsWorkflow({\n  operation: \"discover\",\n  pdfData: \"example string\", // Base64 encoded PDF data\n  targetPage: 42, // Extract fields from specific page only (default: all pages)\n});\n\nconst result = await pdfFormOperations_discover.action();\n// outputSchema for result.data when operation === 'discover':\n// {\n//   operation: \"discover\",\n//   fields: { id: number, page: number, name: string, type: string, field_type: string, current_value: string, choices: string[], rect: unknown, x: number, y: number, width: number, height: number, field_flags: number, label: string, potential_labels: string[] }[],\n//   totalFields: number,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Fill example\nconst pdfFormOperations_fill = new PDFFormOperationsWorkflow({\n  operation: \"fill\",\n  pdfData: \"example string\", // Base64 encoded PDF data\n  fieldValues: { \"example_key\": \"example string\" }, // Field name to value mapping\n});\n\nconst result = await pdfFormOperations_fill.action();\n// outputSchema for result.data when operation === 'fill':\n// {\n//   operation: \"fill\",\n//   filledPdfData: string // Base64 encoded filled PDF data,\n//   filledFields: number,\n//   verification: Record<string, { value: string, type: string, page: number }>,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Analyze-checkboxes example\nconst pdfFormOperations_analyze_checkboxes = new PDFFormOperationsWorkflow({\n  operation: \"analyze-checkboxes\",\n  pdfData: \"example string\", // Base64 encoded PDF data\n});\n\nconst result = await pdfFormOperations_analyze_checkboxes.action();\n// outputSchema for result.data when operation === 'analyze-checkboxes':\n// {\n//   operation: \"analyze-checkboxes\",\n//   checkboxes: Record<string, { page: number, current_value: string, possible_values: string[], field_flags: number }>,\n//   totalCheckboxes: number,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Validate example\nconst pdfFormOperations_validate = new PDFFormOperationsWorkflow({\n  operation: \"validate\",\n  pdfData: \"example string\", // Base64 encoded PDF data\n});\n\nconst result = await pdfFormOperations_validate.action();\n// outputSchema for result.data when operation === 'validate':\n// {\n//   operation: \"validate\",\n//   fields: Record<string, { value: string, type: string, page: number }>,\n//   totalFields: number,\n//   filledFields: number,\n//   emptyFields: number,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Convert-to-images example\nconst pdfFormOperations_convert_to_images = new PDFFormOperationsWorkflow({\n  operation: \"convert-to-images\",\n  pdfData: \"example string\", // Base64 encoded PDF data\n  format: \"png\" // options: \"png\", \"jpeg\", // Output image format\n  quality: 0.8 // default, // JPEG quality (0.1-1.0, only for JPEG format)\n  dpi: 150 // default, // Output DPI (dots per inch)\n  pages: [42], // Specific page numbers to convert (1-indexed). If not provided, converts all pages\n});\n\nconst result = await pdfFormOperations_convert_to_images.action();\n// outputSchema for result.data when operation === 'convert-to-images':\n// {\n//   operation: \"convert-to-images\",\n//   images: { pageNumber: number, imageData: string // Base64 encoded image data, format: string, width: number, height: number }[],\n//   totalPages: number,\n//   convertedPages: number,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Convert-to-markdown example\nconst pdfFormOperations_convert_to_markdown = new PDFFormOperationsWorkflow({\n  operation: \"convert-to-markdown\",\n  pdfData: \"example string\", // Base64 encoded PDF data\n  pages: [42], // Specific page numbers to convert (1-indexed). If not provided, converts all pages\n  includeFormFields: true // default, // Whether to include form field information in the markdown\n});\n\nconst result = await pdfFormOperations_convert_to_markdown.action();\n// outputSchema for result.data when operation === 'convert-to-markdown':\n// {\n//   operation: \"convert-to-markdown\",\n//   markdown: string // Markdown representation of the PDF content,\n//   pages: { pageNumber: number, markdown: string // Markdown content for this page, formFields: { id: number, name: string, type: string, value: string, x: number, y: number }[] | undefined }[],\n//   totalPages: number,\n//   convertedPages: number,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`pdf-form-operations failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GOOGLE_GEMINI_CRED",
        "OPENAI_CRED",
        "ANTHROPIC_CRED",
        "OPENROUTER_CRED"
      ]
    },
    {
      "name": "pdf-ocr-workflow",
      "alias": "pdf-ocr",
      "type": "workflow",
      "shortDescription": "PDF OCR workflow: identify fields or autofill forms using AI analysis",
      "useCase": "- **Identify**: Form schema generation, document structure analysis",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "identify"
                ],
                "description": "Identify form fields and generate descriptive names"
              },
              "pdfData": {
                "type": "string",
                "minLength": 1,
                "description": "Base64 encoded PDF data"
              },
              "discoveryOptions": {
                "type": "object",
                "properties": {
                  "targetPage": {
                    "type": "number",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "description": "Extract fields from specific page only (default: all pages)"
                  }
                },
                "additionalProperties": false,
                "default": {},
                "description": "Options for PDF field discovery"
              },
              "imageOptions": {
                "type": "object",
                "properties": {
                  "format": {
                    "type": "string",
                    "enum": [
                      "png",
                      "jpeg"
                    ],
                    "default": "png",
                    "description": "Output image format"
                  },
                  "quality": {
                    "type": "number",
                    "minimum": 0.1,
                    "maximum": 1,
                    "default": 0.8,
                    "description": "JPEG quality (0.1-1.0, only for JPEG format)"
                  },
                  "dpi": {
                    "type": "number",
                    "minimum": 72,
                    "maximum": 300,
                    "default": 150,
                    "description": "Output DPI (dots per inch)"
                  },
                  "pages": {
                    "type": "array",
                    "items": {
                      "type": "number",
                      "exclusiveMinimum": true,
                      "minimum": 0
                    },
                    "description": "Specific page numbers to convert (1-indexed). If not provided, converts all pages"
                  }
                },
                "additionalProperties": false,
                "default": {
                  "format": "png",
                  "quality": 0.8,
                  "dpi": 150
                },
                "description": "Options for PDF to images conversion"
              },
              "aiOptions": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "enum": [
                      "openai/gpt-5",
                      "openai/gpt-5-mini",
                      "openai/gpt-5.1",
                      "openai/gpt-5.2",
                      "google/gemini-2.5-pro",
                      "google/gemini-2.5-flash",
                      "google/gemini-2.5-flash-lite",
                      "google/gemini-2.5-flash-image-preview",
                      "google/gemini-3-pro-preview",
                      "google/gemini-3-pro-image-preview",
                      "google/gemini-3-flash-preview",
                      "google/gemini-3.1-pro-preview",
                      "google/gemini-3.1-flash-lite-preview",
                      "anthropic/claude-sonnet-4-5",
                      "anthropic/claude-sonnet-4-6",
                      "anthropic/claude-opus-4-5",
                      "anthropic/claude-opus-4-6",
                      "anthropic/claude-haiku-4-5",
                      "openrouter/x-ai/grok-code-fast-1",
                      "openrouter/z-ai/glm-4.6",
                      "openrouter/z-ai/glm-4.7",
                      "openrouter/anthropic/claude-sonnet-4.5",
                      "openrouter/anthropic/claude-sonnet-4.6",
                      "openrouter/anthropic/claude-opus-4.5",
                      "openrouter/anthropic/claude-opus-4.6",
                      "openrouter/google/gemini-3-pro-preview",
                      "openrouter/morph/morph-v3-large",
                      "openrouter/openai/gpt-oss-120b",
                      "openrouter/openai/o3-deep-research",
                      "openrouter/openai/o4-mini-deep-research",
                      "fireworks/accounts/fireworks/models/kimi-k2p6"
                    ],
                    "default": "google/gemini-2.5-flash",
                    "description": "AI model to use for field identification"
                  },
                  "temperature": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 2,
                    "default": 0.3,
                    "description": "Temperature for AI responses (lower = more consistent)"
                  },
                  "maxTokens": {
                    "type": "number",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "default": 50000,
                    "description": "Maximum tokens for AI response"
                  },
                  "jsonMode": {
                    "type": "boolean",
                    "default": true,
                    "description": "Enable JSON mode to ensure clean JSON output"
                  }
                },
                "additionalProperties": false,
                "default": {
                  "model": "google/gemini-2.5-flash",
                  "temperature": 0.3,
                  "maxTokens": 50000,
                  "jsonMode": true
                },
                "description": "AI agent configuration options"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for AI model access (GOOGLE_GEMINI_CRED, OPENAI_CRED, etc.)"
              }
            },
            "required": [
              "mode",
              "pdfData"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "autofill"
                ],
                "description": "Identify form fields and autofill with client information"
              },
              "pdfData": {
                "type": "string",
                "minLength": 1,
                "description": "Base64 encoded PDF data"
              },
              "clientInformation": {
                "type": "string",
                "minLength": 1,
                "description": "Free text containing client information to use for autofilling form fields"
              },
              "discoveryOptions": {
                "type": "object",
                "properties": {
                  "targetPage": {
                    "type": "number",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "description": "Extract fields from specific page only (default: all pages)"
                  }
                },
                "additionalProperties": false,
                "default": {},
                "description": "Options for PDF field discovery"
              },
              "imageOptions": {
                "type": "object",
                "properties": {
                  "format": {
                    "type": "string",
                    "enum": [
                      "png",
                      "jpeg"
                    ],
                    "default": "png",
                    "description": "Output image format"
                  },
                  "quality": {
                    "type": "number",
                    "minimum": 0.1,
                    "maximum": 1,
                    "default": 0.8,
                    "description": "JPEG quality (0.1-1.0, only for JPEG format)"
                  },
                  "dpi": {
                    "type": "number",
                    "minimum": 72,
                    "maximum": 300,
                    "default": 150,
                    "description": "Output DPI (dots per inch)"
                  },
                  "pages": {
                    "type": "array",
                    "items": {
                      "type": "number",
                      "exclusiveMinimum": true,
                      "minimum": 0
                    },
                    "description": "Specific page numbers to convert (1-indexed). If not provided, converts all pages"
                  }
                },
                "additionalProperties": false,
                "default": {
                  "format": "png",
                  "quality": 0.8,
                  "dpi": 150
                },
                "description": "Options for PDF to images conversion"
              },
              "aiOptions": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "enum": [
                      "openai/gpt-5",
                      "openai/gpt-5-mini",
                      "openai/gpt-5.1",
                      "openai/gpt-5.2",
                      "google/gemini-2.5-pro",
                      "google/gemini-2.5-flash",
                      "google/gemini-2.5-flash-lite",
                      "google/gemini-2.5-flash-image-preview",
                      "google/gemini-3-pro-preview",
                      "google/gemini-3-pro-image-preview",
                      "google/gemini-3-flash-preview",
                      "google/gemini-3.1-pro-preview",
                      "google/gemini-3.1-flash-lite-preview",
                      "anthropic/claude-sonnet-4-5",
                      "anthropic/claude-sonnet-4-6",
                      "anthropic/claude-opus-4-5",
                      "anthropic/claude-opus-4-6",
                      "anthropic/claude-haiku-4-5",
                      "openrouter/x-ai/grok-code-fast-1",
                      "openrouter/z-ai/glm-4.6",
                      "openrouter/z-ai/glm-4.7",
                      "openrouter/anthropic/claude-sonnet-4.5",
                      "openrouter/anthropic/claude-sonnet-4.6",
                      "openrouter/anthropic/claude-opus-4.5",
                      "openrouter/anthropic/claude-opus-4.6",
                      "openrouter/google/gemini-3-pro-preview",
                      "openrouter/morph/morph-v3-large",
                      "openrouter/openai/gpt-oss-120b",
                      "openrouter/openai/o3-deep-research",
                      "openrouter/openai/o4-mini-deep-research",
                      "fireworks/accounts/fireworks/models/kimi-k2p6"
                    ],
                    "default": "google/gemini-2.5-flash",
                    "description": "AI model to use for field identification and autofill"
                  },
                  "temperature": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 2,
                    "default": 0.3,
                    "description": "Temperature for AI responses (lower = more consistent)"
                  },
                  "maxTokens": {
                    "type": "number",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "default": 50000,
                    "description": "Maximum tokens for AI response"
                  },
                  "jsonMode": {
                    "type": "boolean",
                    "default": true,
                    "description": "Enable JSON mode to ensure clean JSON output"
                  }
                },
                "additionalProperties": false,
                "default": {
                  "model": "google/gemini-2.5-flash",
                  "temperature": 0.3,
                  "maxTokens": 50000,
                  "jsonMode": true
                },
                "description": "AI agent configuration options"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for AI model access (GOOGLE_GEMINI_CRED, OPENAI_CRED, etc.)"
              }
            },
            "required": [
              "mode",
              "pdfData",
              "clientInformation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "identify"
                ],
                "description": "Result from identify mode"
              },
              "extractedFields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Field ID from discovery or auto-generated"
                    },
                    "fieldName": {
                      "type": "string",
                      "description": "Descriptive name generated based on PDF content"
                    },
                    "confidence": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "description": "AI confidence in the field identification (0.0-1.0)"
                    }
                  },
                  "required": [
                    "id",
                    "fieldName",
                    "confidence"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of identified fields with descriptive names"
              },
              "discoveryData": {
                "type": "object",
                "properties": {
                  "totalFields": {
                    "type": "number"
                  },
                  "fieldsWithCoordinates": {
                    "type": "number"
                  },
                  "pages": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  }
                },
                "required": [
                  "totalFields",
                  "fieldsWithCoordinates",
                  "pages"
                ],
                "additionalProperties": false,
                "description": "Summary of field discovery results"
              },
              "imageData": {
                "type": "object",
                "properties": {
                  "totalPages": {
                    "type": "number"
                  },
                  "convertedPages": {
                    "type": "number"
                  },
                  "format": {
                    "type": "string"
                  },
                  "dpi": {
                    "type": "number"
                  }
                },
                "required": [
                  "totalPages",
                  "convertedPages",
                  "format",
                  "dpi"
                ],
                "additionalProperties": false,
                "description": "Summary of image conversion results"
              },
              "aiAnalysis": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string"
                  },
                  "iterations": {
                    "type": "number"
                  },
                  "processingTime": {
                    "type": "number"
                  }
                },
                "required": [
                  "model",
                  "iterations"
                ],
                "additionalProperties": false,
                "description": "AI analysis metadata"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the workflow completed successfully"
              },
              "error": {
                "type": "string",
                "description": "Error message if workflow failed"
              }
            },
            "required": [
              "mode",
              "extractedFields",
              "discoveryData",
              "imageData",
              "aiAnalysis",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "autofill"
                ],
                "description": "Result from autofill mode"
              },
              "extractedFields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Field ID from discovery or auto-generated"
                    },
                    "originalFieldName": {
                      "type": "string",
                      "description": "Original field name from discovery for precise matching"
                    },
                    "fieldName": {
                      "type": "string",
                      "description": "Descriptive name generated based on PDF content"
                    },
                    "value": {
                      "type": "string",
                      "description": "Value to fill in the field based on client information"
                    },
                    "confidence": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "description": "AI confidence in the field identification and value assignment (0.0-1.0)"
                    }
                  },
                  "required": [
                    "id",
                    "fieldName",
                    "value",
                    "confidence"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of identified fields with values for autofill"
              },
              "filledPdfData": {
                "type": "string",
                "description": "Base64 encoded filled PDF data"
              },
              "discoveryData": {
                "type": "object",
                "properties": {
                  "totalFields": {
                    "type": "number"
                  },
                  "fieldsWithCoordinates": {
                    "type": "number"
                  },
                  "pages": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  }
                },
                "required": [
                  "totalFields",
                  "fieldsWithCoordinates",
                  "pages"
                ],
                "additionalProperties": false,
                "description": "Summary of field discovery results"
              },
              "imageData": {
                "type": "object",
                "properties": {
                  "totalPages": {
                    "type": "number"
                  },
                  "convertedPages": {
                    "type": "number"
                  },
                  "format": {
                    "type": "string"
                  },
                  "dpi": {
                    "type": "number"
                  }
                },
                "required": [
                  "totalPages",
                  "convertedPages",
                  "format",
                  "dpi"
                ],
                "additionalProperties": false,
                "description": "Summary of image conversion results"
              },
              "aiAnalysis": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string"
                  },
                  "iterations": {
                    "type": "number"
                  },
                  "processingTime": {
                    "type": "number"
                  }
                },
                "required": [
                  "model",
                  "iterations"
                ],
                "additionalProperties": false,
                "description": "AI analysis metadata"
              },
              "fillResults": {
                "type": "object",
                "properties": {
                  "filledFields": {
                    "type": "number"
                  },
                  "successfullyFilled": {
                    "type": "number"
                  }
                },
                "required": [
                  "filledFields",
                  "successfullyFilled"
                ],
                "additionalProperties": false,
                "description": "Summary of PDF filling results"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the workflow completed successfully"
              },
              "error": {
                "type": "string",
                "description": "Error message if workflow failed"
              }
            },
            "required": [
              "mode",
              "extractedFields",
              "filledPdfData",
              "discoveryData",
              "imageData",
              "aiAnalysis",
              "fillResults",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Identify example\nconst pdfOcrWorkflow_identify = new PDFOcrWorkflow({\n  mode: \"identify\", // Identify form fields and generate descriptive names\n  pdfData: \"example string\", // Base64 encoded PDF data\n  discoveryOptions: { targetPage: 42 // Extract fields from specific page only (default: all pages) } // structure, // Options for PDF field discovery\n  imageOptions: { format: \"png\" // options: \"png\", \"jpeg\" // Output image format, quality: 0.8 // default // JPEG quality (0.1-1.0, only for JPEG format), dpi: 150 // default // Output DPI (dots per inch), pages: [42] // Specific page numbers to convert (1-indexed). If not provided, converts all pages } // structure, // Options for PDF to images conversion\n  aiOptions: { model: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\" // AI model to use for field identification, temperature: 0.3 // default // Temperature for AI responses (lower = more consistent), maxTokens: 50000 // default // Maximum tokens for AI response, jsonMode: true // default // Enable JSON mode to ensure clean JSON output } // structure, // AI agent configuration options\n});\n\nconst result = await pdfOcrWorkflow_identify.action();\n// outputSchema for result.data when operation === 'identify':\n// {\n//   mode: \"identify\" // Result from identify mode,\n//   extractedFields: { id: number // Field ID from discovery or auto-generated, fieldName: string // Descriptive name generated based on PDF content, confidence: number // AI confidence in the field identification (0.0-1.0) }[] // Array of identified fields with descriptive names,\n//   discoveryData: { totalFields: number, fieldsWithCoordinates: number, pages: number[] } // Summary of field discovery results,\n//   imageData: { totalPages: number, convertedPages: number, format: string, dpi: number } // Summary of image conversion results,\n//   aiAnalysis: { model: string, iterations: number, processingTime: number | undefined } // AI analysis metadata,\n//   success: boolean // Whether the workflow completed successfully,\n//   error: string // Error message if workflow failed\n// }\n\n\n// Autofill example\nconst pdfOcrWorkflow_autofill = new PDFOcrWorkflow({\n  mode: \"autofill\", // Identify form fields and autofill with client information\n  pdfData: \"example string\", // Base64 encoded PDF data\n  clientInformation: \"example string\", // Free text containing client information to use for autofilling form fields\n  discoveryOptions: { targetPage: 42 // Extract fields from specific page only (default: all pages) } // structure, // Options for PDF field discovery\n  imageOptions: { format: \"png\" // options: \"png\", \"jpeg\" // Output image format, quality: 0.8 // default // JPEG quality (0.1-1.0, only for JPEG format), dpi: 150 // default // Output DPI (dots per inch), pages: [42] // Specific page numbers to convert (1-indexed). If not provided, converts all pages } // structure, // Options for PDF to images conversion\n  aiOptions: { model: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\" // AI model to use for field identification and autofill, temperature: 0.3 // default // Temperature for AI responses (lower = more consistent), maxTokens: 50000 // default // Maximum tokens for AI response, jsonMode: true // default // Enable JSON mode to ensure clean JSON output } // structure, // AI agent configuration options\n});\n\nconst result = await pdfOcrWorkflow_autofill.action();\n// outputSchema for result.data when operation === 'autofill':\n// {\n//   mode: \"autofill\" // Result from autofill mode,\n//   extractedFields: { id: number // Field ID from discovery or auto-generated, originalFieldName: string | undefined // Original field name from discovery for precise matching, fieldName: string // Descriptive name generated based on PDF content, value: string // Value to fill in the field based on client information, confidence: number // AI confidence in the field identification and value assignment (0.0-1.0) }[] // Array of identified fields with values for autofill,\n//   filledPdfData: string // Base64 encoded filled PDF data,\n//   discoveryData: { totalFields: number, fieldsWithCoordinates: number, pages: number[] } // Summary of field discovery results,\n//   imageData: { totalPages: number, convertedPages: number, format: string, dpi: number } // Summary of image conversion results,\n//   aiAnalysis: { model: string, iterations: number, processingTime: number | undefined } // AI analysis metadata,\n//   fillResults: { filledFields: number, successfullyFilled: number } // Summary of PDF filling results,\n//   success: boolean // Whether the workflow completed successfully,\n//   error: string // Error message if workflow failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`pdf-ocr-workflow failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GOOGLE_GEMINI_CRED",
        "OPENAI_CRED",
        "ANTHROPIC_CRED",
        "OPENROUTER_CRED"
      ]
    },
    {
      "name": "generate-document-workflow",
      "alias": "generate-doc",
      "type": "workflow",
      "shortDescription": "Generate Document workflow: convert markdown to structured formats using AI",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  columns: { name: string // Column name, type: \"string\" | \"number\" | \"integer\" | \"float\" | \"date\" | \"boolean\" // Data type of the column, description: string // Description of what this column contains }[] // Column definitions for the structured data,\n  rows: Record<string, unknown>[] // Array of data rows extracted from documents,\n  metadata: { totalDocuments: number // Number of documents processed, totalRows: number // Number of data rows extracted, totalColumns: number // Number of columns in the result, processingTime: number // Processing time in milliseconds, extractedFrom: string[] // Summary of document sources } // Metadata about the extraction process,\n  generatedFiles: { html: string | undefined // Generated HTML table, csv: string | undefined // Generated CSV data, json: string | undefined // Generated JSON data } // Generated files in requested formats,\n  aiAnalysis: { model: string // AI model used, iterations: number // Number of AI iterations, processingTime: number | undefined // AI processing time } // AI analysis metadata,\n  success: boolean // Whether the workflow completed successfully,\n  error: string // Error message if workflow failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "documents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "content": {
                  "type": "string",
                  "minLength": 1
                },
                "index": {
                  "type": "number",
                  "minimum": 0
                },
                "metadata": {
                  "type": "object",
                  "properties": {
                    "originalFilename": {
                      "type": "string"
                    },
                    "pageCount": {
                      "type": "number"
                    },
                    "uploadedImages": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "pageNumber": {
                            "type": "number"
                          },
                          "fileName": {
                            "type": "string"
                          },
                          "fileUrl": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "pageNumber",
                          "fileName"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": false
                }
              },
              "required": [
                "content",
                "index"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "description": "Array of document objects with content, index, and metadata"
          },
          "outputDescription": {
            "type": "string",
            "minLength": 10,
            "description": "Description of what the user wants to extract (e.g., \"expense tracking with vendor, amount, date, category\")"
          },
          "outputFormat": {
            "type": "string",
            "enum": [
              "html",
              "csv",
              "json"
            ],
            "default": "html",
            "description": "Output format for the structured data"
          },
          "aiOptions": {
            "type": "object",
            "properties": {
              "model": {
                "type": "string",
                "enum": [
                  "openai/gpt-5",
                  "openai/gpt-5-mini",
                  "openai/gpt-5.1",
                  "openai/gpt-5.2",
                  "google/gemini-2.5-pro",
                  "google/gemini-2.5-flash",
                  "google/gemini-2.5-flash-lite",
                  "google/gemini-2.5-flash-image-preview",
                  "google/gemini-3-pro-preview",
                  "google/gemini-3-pro-image-preview",
                  "google/gemini-3-flash-preview",
                  "google/gemini-3.1-pro-preview",
                  "google/gemini-3.1-flash-lite-preview",
                  "anthropic/claude-sonnet-4-5",
                  "anthropic/claude-sonnet-4-6",
                  "anthropic/claude-opus-4-5",
                  "anthropic/claude-opus-4-6",
                  "anthropic/claude-haiku-4-5",
                  "openrouter/x-ai/grok-code-fast-1",
                  "openrouter/z-ai/glm-4.6",
                  "openrouter/z-ai/glm-4.7",
                  "openrouter/anthropic/claude-sonnet-4.5",
                  "openrouter/anthropic/claude-sonnet-4.6",
                  "openrouter/anthropic/claude-opus-4.5",
                  "openrouter/anthropic/claude-opus-4.6",
                  "openrouter/google/gemini-3-pro-preview",
                  "openrouter/morph/morph-v3-large",
                  "openrouter/openai/gpt-oss-120b",
                  "openrouter/openai/o3-deep-research",
                  "openrouter/openai/o4-mini-deep-research",
                  "fireworks/accounts/fireworks/models/kimi-k2p6"
                ],
                "default": "google/gemini-2.5-flash",
                "description": "AI model to use for document analysis"
              },
              "temperature": {
                "type": "number",
                "minimum": 0,
                "maximum": 2,
                "default": 0.1,
                "description": "Temperature for AI responses (lower = more consistent)"
              },
              "maxTokens": {
                "type": "number",
                "exclusiveMinimum": true,
                "minimum": 0,
                "default": 50000,
                "description": "Maximum tokens for AI response"
              },
              "jsonMode": {
                "type": "boolean",
                "default": true,
                "description": "Enable JSON mode to ensure clean JSON output"
              }
            },
            "additionalProperties": false,
            "default": {
              "model": "google/gemini-2.5-flash",
              "temperature": 0.1,
              "maxTokens": 50000,
              "jsonMode": true
            },
            "description": "AI agent configuration options"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Credentials for AI model access (GOOGLE_GEMINI_CRED, OPENAI_CRED, etc.)"
          }
        },
        "required": [
          "documents",
          "outputDescription"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "columns": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Column name"
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "string",
                    "number",
                    "integer",
                    "float",
                    "date",
                    "boolean"
                  ],
                  "description": "Data type of the column"
                },
                "description": {
                  "type": "string",
                  "description": "Description of what this column contains"
                }
              },
              "required": [
                "name",
                "type",
                "description"
              ],
              "additionalProperties": false
            },
            "description": "Column definitions for the structured data"
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  },
                  {
                    "enum": [
                      "null"
                    ],
                    "nullable": true
                  }
                ]
              }
            },
            "description": "Array of data rows extracted from documents"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "totalDocuments": {
                "type": "number",
                "description": "Number of documents processed"
              },
              "totalRows": {
                "type": "number",
                "description": "Number of data rows extracted"
              },
              "totalColumns": {
                "type": "number",
                "description": "Number of columns in the result"
              },
              "processingTime": {
                "type": "number",
                "description": "Processing time in milliseconds"
              },
              "extractedFrom": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Summary of document sources"
              }
            },
            "required": [
              "totalDocuments",
              "totalRows",
              "totalColumns",
              "processingTime",
              "extractedFrom"
            ],
            "additionalProperties": false,
            "description": "Metadata about the extraction process"
          },
          "generatedFiles": {
            "type": "object",
            "properties": {
              "html": {
                "type": "string",
                "description": "Generated HTML table"
              },
              "csv": {
                "type": "string",
                "description": "Generated CSV data"
              },
              "json": {
                "type": "string",
                "description": "Generated JSON data"
              }
            },
            "additionalProperties": false,
            "description": "Generated files in requested formats"
          },
          "aiAnalysis": {
            "type": "object",
            "properties": {
              "model": {
                "type": "string",
                "description": "AI model used"
              },
              "iterations": {
                "type": "number",
                "description": "Number of AI iterations"
              },
              "processingTime": {
                "type": "number",
                "description": "AI processing time"
              }
            },
            "required": [
              "model",
              "iterations"
            ],
            "additionalProperties": false,
            "description": "AI analysis metadata"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the workflow completed successfully"
          },
          "error": {
            "type": "string",
            "description": "Error message if workflow failed"
          }
        },
        "required": [
          "columns",
          "rows",
          "metadata",
          "generatedFiles",
          "aiAnalysis",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of generate-document-workflow bubble\nconst generateDocumentWorkflow = new GenerateDocumentWorkflow({\n  documents: [{ content: \"example string\", index: 42, metadata: { originalFilename: \"example string\", pageCount: 42, uploadedImages: [{ pageNumber: 42, fileName: \"example string\", fileUrl: \"example string\" }] } }], // Array of document objects with content, index, and metadata,\n  outputDescription: \"example string\", // Description of what the user wants to extract (e.g., \"expense tracking with vendor, amount, date, category\"),\n  outputFormat: \"html\" // options: \"html\", \"csv\", \"json\", // Output format for the structured data,\n  aiOptions: { model: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\" // AI model to use for document analysis, temperature: 0.1 // default // Temperature for AI responses (lower = more consistent), maxTokens: 50000 // default // Maximum tokens for AI response, jsonMode: true // default // Enable JSON mode to ensure clean JSON output } // structure, // AI agent configuration options,\n});\n\nconst result = await generateDocumentWorkflow.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   columns: { name: string // Column name, type: \"string\" | \"number\" | \"integer\" | \"float\" | \"date\" | \"boolean\" // Data type of the column, description: string // Description of what this column contains }[] // Column definitions for the structured data,\n//   rows: Record<string, unknown>[] // Array of data rows extracted from documents,\n//   metadata: { totalDocuments: number // Number of documents processed, totalRows: number // Number of data rows extracted, totalColumns: number // Number of columns in the result, processingTime: number // Processing time in milliseconds, extractedFrom: string[] // Summary of document sources } // Metadata about the extraction process,\n//   generatedFiles: { html: string | undefined // Generated HTML table, csv: string | undefined // Generated CSV data, json: string | undefined // Generated JSON data } // Generated files in requested formats,\n//   aiAnalysis: { model: string // AI model used, iterations: number // Number of AI iterations, processingTime: number | undefined // AI processing time } // AI analysis metadata,\n//   success: boolean // Whether the workflow completed successfully,\n//   error: string // Error message if workflow failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GOOGLE_GEMINI_CRED",
        "OPENAI_CRED",
        "ANTHROPIC_CRED",
        "OPENROUTER_CRED"
      ]
    },
    {
      "name": "parse-document-workflow",
      "alias": "parse-doc",
      "type": "workflow",
      "shortDescription": "Parse Document workflow: convert PDFs/images to markdown using AI vision",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  markdown: string // Generated markdown content from the document,\n  pages: { pageNumber: number // Page number (1-indexed), markdown: string // Markdown content for this page, hasCharts: boolean // Whether this page contains charts or graphs, hasTables: boolean // Whether this page contains tables, hasImages: boolean // Whether this page contains images }[] // Per-page analysis results,\n  metadata: { totalPages: number // Total number of pages processed, processedPages: number // Number of pages successfully processed, hasVisualElements: boolean // Whether document contains charts, tables, or images, processingTime: number // Total processing time in milliseconds, imageFormat: string // Image format used for conversion, imageDpi: number // DPI used for image conversion } // Metadata about the parsing process,\n  conversionSummary: { totalCharacters: number // Total characters in generated markdown, tablesExtracted: number // Number of tables converted to markdown, chartsDescribed: number // Number of charts and graphs described, imagesDescribed: number // Number of images described } // Summary of conversion results,\n  aiAnalysis: { model: string // AI model used for analysis, iterations: number // Number of AI iterations, processingTime: number // AI processing time in milliseconds } // AI analysis metadata,\n  uploadedImages: { pageNumber: number, fileName: string, fileUrl: string | undefined, uploaded: boolean }[] | undefined // Information about uploaded page images,\n  success: boolean // Whether the workflow completed successfully,\n  error: string // Error message if workflow failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "documentData": {
            "type": "string",
            "minLength": 1,
            "description": "Base64 encoded document data (PDF or image) OR R2 file URL starting with https://"
          },
          "documentType": {
            "type": "string",
            "enum": [
              "pdf",
              "image"
            ],
            "default": "pdf",
            "description": "Type of document being processed"
          },
          "isFileUrl": {
            "type": "boolean",
            "default": false,
            "description": "Set to true if documentData is an R2 file URL instead of base64"
          },
          "conversionOptions": {
            "type": "object",
            "properties": {
              "preserveStructure": {
                "type": "boolean",
                "default": true,
                "description": "Maintain original document structure and hierarchy"
              },
              "includeVisualDescriptions": {
                "type": "boolean",
                "default": true,
                "description": "Include detailed descriptions of charts, images, and diagrams"
              },
              "extractNumericalData": {
                "type": "boolean",
                "default": true,
                "description": "Extract specific numerical values from charts and tables"
              },
              "combinePages": {
                "type": "boolean",
                "default": false,
                "description": "Deprecated: Pages are always kept separate with clear headers"
              }
            },
            "additionalProperties": false,
            "default": {
              "preserveStructure": true,
              "includeVisualDescriptions": true,
              "extractNumericalData": true,
              "combinePages": false
            },
            "description": "Options for document conversion and parsing"
          },
          "imageOptions": {
            "type": "object",
            "properties": {
              "format": {
                "type": "string",
                "enum": [
                  "png",
                  "jpeg"
                ],
                "default": "png",
                "description": "Output image format for PDF conversion"
              },
              "quality": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 1,
                "default": 0.9,
                "description": "Image quality (0.1-1.0, higher = better quality)"
              },
              "dpi": {
                "type": "number",
                "minimum": 150,
                "maximum": 300,
                "default": 200,
                "description": "Output DPI for PDF conversion (higher = better quality)"
              },
              "pages": {
                "type": "array",
                "items": {
                  "type": "number",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "description": "Specific page numbers to process (1-indexed)"
              }
            },
            "additionalProperties": false,
            "default": {
              "format": "png",
              "quality": 0.9,
              "dpi": 200
            },
            "description": "Options for PDF to images conversion"
          },
          "aiOptions": {
            "type": "object",
            "properties": {
              "model": {
                "type": "string",
                "enum": [
                  "openai/gpt-5",
                  "openai/gpt-5-mini",
                  "openai/gpt-5.1",
                  "openai/gpt-5.2",
                  "google/gemini-2.5-pro",
                  "google/gemini-2.5-flash",
                  "google/gemini-2.5-flash-lite",
                  "google/gemini-2.5-flash-image-preview",
                  "google/gemini-3-pro-preview",
                  "google/gemini-3-pro-image-preview",
                  "google/gemini-3-flash-preview",
                  "google/gemini-3.1-pro-preview",
                  "google/gemini-3.1-flash-lite-preview",
                  "anthropic/claude-sonnet-4-5",
                  "anthropic/claude-sonnet-4-6",
                  "anthropic/claude-opus-4-5",
                  "anthropic/claude-opus-4-6",
                  "anthropic/claude-haiku-4-5",
                  "openrouter/x-ai/grok-code-fast-1",
                  "openrouter/z-ai/glm-4.6",
                  "openrouter/z-ai/glm-4.7",
                  "openrouter/anthropic/claude-sonnet-4.5",
                  "openrouter/anthropic/claude-sonnet-4.6",
                  "openrouter/anthropic/claude-opus-4.5",
                  "openrouter/anthropic/claude-opus-4.6",
                  "openrouter/google/gemini-3-pro-preview",
                  "openrouter/morph/morph-v3-large",
                  "openrouter/openai/gpt-oss-120b",
                  "openrouter/openai/o3-deep-research",
                  "openrouter/openai/o4-mini-deep-research",
                  "fireworks/accounts/fireworks/models/kimi-k2p6"
                ],
                "default": "google/gemini-3.1-flash-lite-preview",
                "description": "AI model to use for document analysis and conversion"
              },
              "temperature": {
                "type": "number",
                "minimum": 0,
                "maximum": 2,
                "default": 0.4,
                "description": "Temperature for AI responses (balanced for accuracy vs recitation)"
              },
              "maxTokens": {
                "type": "number",
                "exclusiveMinimum": true,
                "minimum": 0,
                "default": 2000,
                "description": "Maximum tokens for AI response"
              },
              "jsonMode": {
                "type": "boolean",
                "default": false,
                "description": "Use JSON mode for structured output"
              }
            },
            "additionalProperties": false,
            "default": {
              "model": "google/gemini-3.1-flash-lite-preview",
              "temperature": 0.4,
              "maxTokens": 9000,
              "jsonMode": false
            },
            "description": "AI agent configuration options"
          },
          "storageOptions": {
            "type": "object",
            "properties": {
              "uploadImages": {
                "type": "boolean",
                "default": false,
                "description": "Whether to upload converted page images to S3"
              },
              "bucketName": {
                "type": "string",
                "description": "S3 bucket name for image uploads"
              },
              "pageImageUrls": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "pageNumber": {
                      "type": "number"
                    },
                    "uploadUrl": {
                      "type": "string"
                    },
                    "fileName": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "pageNumber",
                    "uploadUrl",
                    "fileName"
                  ],
                  "additionalProperties": false
                },
                "description": "Pre-generated upload URLs for page images"
              },
              "userId": {
                "type": "string",
                "description": "User ID for secure file isolation"
              }
            },
            "additionalProperties": false,
            "description": "Storage options for uploading page images"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Credentials for AI model access (GOOGLE_GEMINI_CRED, OPENAI_CRED, etc.)"
          }
        },
        "required": [
          "documentData"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "markdown": {
            "type": "string",
            "description": "Generated markdown content from the document"
          },
          "pages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "pageNumber": {
                  "type": "number",
                  "description": "Page number (1-indexed)"
                },
                "markdown": {
                  "type": "string",
                  "description": "Markdown content for this page"
                },
                "hasCharts": {
                  "type": "boolean",
                  "description": "Whether this page contains charts or graphs"
                },
                "hasTables": {
                  "type": "boolean",
                  "description": "Whether this page contains tables"
                },
                "hasImages": {
                  "type": "boolean",
                  "description": "Whether this page contains images"
                }
              },
              "required": [
                "pageNumber",
                "markdown",
                "hasCharts",
                "hasTables",
                "hasImages"
              ],
              "additionalProperties": false
            },
            "description": "Per-page analysis results"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "totalPages": {
                "type": "number",
                "description": "Total number of pages processed"
              },
              "processedPages": {
                "type": "number",
                "description": "Number of pages successfully processed"
              },
              "hasVisualElements": {
                "type": "boolean",
                "description": "Whether document contains charts, tables, or images"
              },
              "processingTime": {
                "type": "number",
                "description": "Total processing time in milliseconds"
              },
              "imageFormat": {
                "type": "string",
                "description": "Image format used for conversion"
              },
              "imageDpi": {
                "type": "number",
                "description": "DPI used for image conversion"
              }
            },
            "required": [
              "totalPages",
              "processedPages",
              "hasVisualElements",
              "processingTime",
              "imageFormat",
              "imageDpi"
            ],
            "additionalProperties": false,
            "description": "Metadata about the parsing process"
          },
          "conversionSummary": {
            "type": "object",
            "properties": {
              "totalCharacters": {
                "type": "number",
                "description": "Total characters in generated markdown"
              },
              "tablesExtracted": {
                "type": "number",
                "description": "Number of tables converted to markdown"
              },
              "chartsDescribed": {
                "type": "number",
                "description": "Number of charts and graphs described"
              },
              "imagesDescribed": {
                "type": "number",
                "description": "Number of images described"
              }
            },
            "required": [
              "totalCharacters",
              "tablesExtracted",
              "chartsDescribed",
              "imagesDescribed"
            ],
            "additionalProperties": false,
            "description": "Summary of conversion results"
          },
          "aiAnalysis": {
            "type": "object",
            "properties": {
              "model": {
                "type": "string",
                "description": "AI model used for analysis"
              },
              "iterations": {
                "type": "number",
                "description": "Number of AI iterations"
              },
              "processingTime": {
                "type": "number",
                "description": "AI processing time in milliseconds"
              }
            },
            "required": [
              "model",
              "iterations",
              "processingTime"
            ],
            "additionalProperties": false,
            "description": "AI analysis metadata"
          },
          "uploadedImages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "pageNumber": {
                  "type": "number"
                },
                "fileName": {
                  "type": "string"
                },
                "fileUrl": {
                  "type": "string"
                },
                "uploaded": {
                  "type": "boolean"
                }
              },
              "required": [
                "pageNumber",
                "fileName",
                "uploaded"
              ],
              "additionalProperties": false
            },
            "description": "Information about uploaded page images"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the workflow completed successfully"
          },
          "error": {
            "type": "string",
            "description": "Error message if workflow failed"
          }
        },
        "required": [
          "markdown",
          "pages",
          "metadata",
          "conversionSummary",
          "aiAnalysis",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of parse-document-workflow bubble\nconst parseDocumentWorkflow = new ParseDocumentWorkflow({\n  documentData: \"example string\", // Base64 encoded document data (PDF or image) OR R2 file URL starting with https://,\n  documentType: \"pdf\" // options: \"pdf\", \"image\", // Type of document being processed,\n  isFileUrl: false // default, // Set to true if documentData is an R2 file URL instead of base64,\n  conversionOptions: { preserveStructure: true // default // Maintain original document structure and hierarchy, includeVisualDescriptions: true // default // Include detailed descriptions of charts, images, and diagrams, extractNumericalData: true // default // Extract specific numerical values from charts and tables, combinePages: false // default // Deprecated: Pages are always kept separate with clear headers } // structure, // Options for document conversion and parsing,\n  imageOptions: { format: \"png\" // options: \"png\", \"jpeg\" // Output image format for PDF conversion, quality: 0.9 // default // Image quality (0.1-1.0, higher = better quality), dpi: 200 // default // Output DPI for PDF conversion (higher = better quality), pages: [42] // Specific page numbers to process (1-indexed) } // structure, // Options for PDF to images conversion,\n  aiOptions: { model: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\" // AI model to use for document analysis and conversion, temperature: 0.4 // default // Temperature for AI responses (balanced for accuracy vs recitation), maxTokens: 2000 // default // Maximum tokens for AI response, jsonMode: false // default // Use JSON mode for structured output } // structure, // AI agent configuration options,\n  storageOptions: { uploadImages: false // default // Whether to upload converted page images to S3, bucketName: \"example string\" // S3 bucket name for image uploads, pageImageUrls: [{ pageNumber: 42, uploadUrl: \"example string\", fileName: \"example string\" }] // Pre-generated upload URLs for page images, userId: \"example string\" // User ID for secure file isolation }, // Storage options for uploading page images,\n});\n\nconst result = await parseDocumentWorkflow.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   markdown: string // Generated markdown content from the document,\n//   pages: { pageNumber: number // Page number (1-indexed), markdown: string // Markdown content for this page, hasCharts: boolean // Whether this page contains charts or graphs, hasTables: boolean // Whether this page contains tables, hasImages: boolean // Whether this page contains images }[] // Per-page analysis results,\n//   metadata: { totalPages: number // Total number of pages processed, processedPages: number // Number of pages successfully processed, hasVisualElements: boolean // Whether document contains charts, tables, or images, processingTime: number // Total processing time in milliseconds, imageFormat: string // Image format used for conversion, imageDpi: number // DPI used for image conversion } // Metadata about the parsing process,\n//   conversionSummary: { totalCharacters: number // Total characters in generated markdown, tablesExtracted: number // Number of tables converted to markdown, chartsDescribed: number // Number of charts and graphs described, imagesDescribed: number // Number of images described } // Summary of conversion results,\n//   aiAnalysis: { model: string // AI model used for analysis, iterations: number // Number of AI iterations, processingTime: number // AI processing time in milliseconds } // AI analysis metadata,\n//   uploadedImages: { pageNumber: number, fileName: string, fileUrl: string | undefined, uploaded: boolean }[] | undefined // Information about uploaded page images,\n//   success: boolean // Whether the workflow completed successfully,\n//   error: string // Error message if workflow failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GOOGLE_GEMINI_CRED",
        "OPENAI_CRED",
        "ANTHROPIC_CRED",
        "OPENROUTER_CRED",
        "CLOUDFLARE_R2_ACCESS_KEY",
        "CLOUDFLARE_R2_SECRET_KEY",
        "CLOUDFLARE_R2_ACCOUNT_ID"
      ]
    },
    {
      "name": "get-bubble-details-tool",
      "alias": "details",
      "type": "tool",
      "shortDescription": "Provides detailed information about a specific bubble, including schema, parameters, and documentation",
      "useCase": "- AI agent understanding of specific bubble capabilities",
      "outputSchema": "{\n  name: string // Name of the bubble,\n  alias: string | undefined // Short alias for the bubble,\n  longDescription: string | undefined // Detailed description of the bubble,\n  inputSchema: string | undefined // String representation of the input parameter schema types,\n  outputSchema: string // String representation of the output schema types,\n  usageExample: string // Code example showing how to use the bubble,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "bubbleName": {
            "type": "string",
            "minLength": 1,
            "description": "The name of the bubble to get details about"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          },
          "config": {
            "type": "object",
            "properties": {
              "includeLongDescription": {
                "type": "boolean"
              },
              "includeInputSchema": {
                "type": "boolean"
              }
            },
            "additionalProperties": false,
            "description": "Tool configuration injected at runtime from AI agent"
          }
        },
        "required": [
          "bubbleName"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the bubble"
          },
          "alias": {
            "type": "string",
            "description": "Short alias for the bubble"
          },
          "longDescription": {
            "type": "string",
            "description": "Detailed description of the bubble"
          },
          "inputSchema": {
            "type": "string",
            "description": "String representation of the input parameter schema types"
          },
          "outputSchema": {
            "type": "string",
            "description": "String representation of the output schema types"
          },
          "usageExample": {
            "type": "string",
            "description": "Code example showing how to use the bubble"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "name",
          "outputSchema",
          "usageExample",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of get-bubble-details-tool bubble\nconst getBubbleDetailsTool = new GetBubbleDetailsTool({\n  bubbleName: \"example string\", // The name of the bubble to get details about,\n  config: { includeLongDescription: true, includeInputSchema: true }, // Tool configuration injected at runtime from AI agent,\n});\n\nconst result = await getBubbleDetailsTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   name: string // Name of the bubble,\n//   alias: string | undefined // Short alias for the bubble,\n//   longDescription: string | undefined // Detailed description of the bubble,\n//   inputSchema: string | undefined // String representation of the input parameter schema types,\n//   outputSchema: string // String representation of the output schema types,\n//   usageExample: string // Code example showing how to use the bubble,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "get-trigger-detail-tool",
      "alias": "trigger",
      "type": "tool",
      "shortDescription": "Provides detailed information about BubbleFlow trigger types including setup guides and payload schemas",
      "useCase": "- Understanding how to configure a specific trigger (Slack, Cron, Webhook)",
      "outputSchema": "{\n  triggerType: string | undefined // The requested trigger type,\n  serviceName: string | undefined // Service name for logo lookup (e.g., Slack, Cron),\n  friendlyName: string | undefined // Human-friendly trigger name,\n  description: string | undefined // Description of what this trigger does,\n  setupGuide: string | undefined // Markdown setup guide for configuring this trigger,\n  payloadSchema: string | undefined // JSON Schema string for the payload,\n  payloadTypeInterface: string | undefined // TypeScript interface name to use for the payload (e.g., SlackMentionEvent),\n  availableTriggers: { type: string, friendlyName: string, description: string }[] | undefined // List of all available triggers (when no specific trigger requested),\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "triggerType": {
            "type": "string",
            "description": "The trigger type to get details about (e.g., 'slack/bot_mentioned', 'webhook/http'). If not provided, returns a list of all available triggers."
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          }
        },
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "triggerType": {
            "type": "string",
            "description": "The requested trigger type"
          },
          "serviceName": {
            "type": "string",
            "description": "Service name for logo lookup (e.g., Slack, Cron)"
          },
          "friendlyName": {
            "type": "string",
            "description": "Human-friendly trigger name"
          },
          "description": {
            "type": "string",
            "description": "Description of what this trigger does"
          },
          "setupGuide": {
            "type": "string",
            "description": "Markdown setup guide for configuring this trigger"
          },
          "payloadSchema": {
            "type": "string",
            "description": "JSON Schema string for the payload"
          },
          "payloadTypeInterface": {
            "type": "string",
            "description": "TypeScript interface name to use for the payload (e.g., SlackMentionEvent)"
          },
          "availableTriggers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "friendlyName": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              },
              "required": [
                "type",
                "friendlyName",
                "description"
              ],
              "additionalProperties": false
            },
            "description": "List of all available triggers (when no specific trigger requested)"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of get-trigger-detail-tool bubble\nconst getTriggerDetailTool = new GetTriggerDetailTool({\n  triggerType: \"example string\", // The trigger type to get details about (e.g., 'slack/bot_mentioned', 'webhook/http'). If not provided, returns a list of all available triggers.,\n});\n\nconst result = await getTriggerDetailTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   triggerType: string | undefined // The requested trigger type,\n//   serviceName: string | undefined // Service name for logo lookup (e.g., Slack, Cron),\n//   friendlyName: string | undefined // Human-friendly trigger name,\n//   description: string | undefined // Description of what this trigger does,\n//   setupGuide: string | undefined // Markdown setup guide for configuring this trigger,\n//   payloadSchema: string | undefined // JSON Schema string for the payload,\n//   payloadTypeInterface: string | undefined // TypeScript interface name to use for the payload (e.g., SlackMentionEvent),\n//   availableTriggers: { type: string, friendlyName: string, description: string }[] | undefined // List of all available triggers (when no specific trigger requested),\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "list-bubbles-tool",
      "alias": "list",
      "type": "tool",
      "shortDescription": "Lists all available bubbles in the registry",
      "useCase": "- AI agent discovery of available capabilities",
      "outputSchema": "{\n  bubbles: { name: string // Name of the bubble, alias: string | undefined // Short alias for the bubble, shortDescription: string // Brief description of the bubble functionality, useCase: string // Primary use cases for the bubble, type: string // Type of bubble (service, workflow, tool) }[] // Array of bubble information objects,\n  totalCount: number // Total number of bubbles in the registry,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "bubbles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Name of the bubble"
                },
                "alias": {
                  "type": "string",
                  "description": "Short alias for the bubble"
                },
                "shortDescription": {
                  "type": "string",
                  "description": "Brief description of the bubble functionality"
                },
                "useCase": {
                  "type": "string",
                  "description": "Primary use cases for the bubble"
                },
                "type": {
                  "type": "string",
                  "description": "Type of bubble (service, workflow, tool)"
                }
              },
              "required": [
                "name",
                "shortDescription",
                "useCase",
                "type"
              ],
              "additionalProperties": false
            },
            "description": "Array of bubble information objects"
          },
          "totalCount": {
            "type": "number",
            "description": "Total number of bubbles in the registry"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "bubbles",
          "totalCount",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of list-bubbles-tool bubble\nconst listBubblesTool = new ListBubblesTool({\n  // Add required parameters here\n});\n\nconst result = await listBubblesTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   bubbles: { name: string // Name of the bubble, alias: string | undefined // Short alias for the bubble, shortDescription: string // Brief description of the bubble functionality, useCase: string // Primary use cases for the bubble, type: string // Type of bubble (service, workflow, tool) }[] // Array of bubble information objects,\n//   totalCount: number // Total number of bubbles in the registry,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "list-capabilities-tool",
      "alias": "list-caps",
      "type": "tool",
      "shortDescription": "Lists all available capabilities that can be attached to AI agents",
      "useCase": "- Discovering available capabilities before building AI agent workflows",
      "outputSchema": "{\n  capabilities: { id: string // Unique identifier for the capability, name: string // Display name of the capability, description: string // What the capability does, category: string | undefined // Category grouping (e.g., knowledge, data), requiredCredentials: string[] // Credential types that must be provided, optionalCredentials: string[] | undefined // Credential types that can optionally be provided, inputs: { name: string, description: string }[] // User-configurable input parameters, tools: { name: string, description: string }[] // Tools provided by this capability, delegationHint: string | undefined // Guidance on when to use this capability }[] // Array of capability summary objects,\n  totalCount: number // Total number of registered capabilities,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "capabilities": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Unique identifier for the capability"
                },
                "name": {
                  "type": "string",
                  "description": "Display name of the capability"
                },
                "description": {
                  "type": "string",
                  "description": "What the capability does"
                },
                "category": {
                  "type": "string",
                  "description": "Category grouping (e.g., knowledge, data)"
                },
                "requiredCredentials": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Credential types that must be provided"
                },
                "optionalCredentials": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Credential types that can optionally be provided"
                },
                "inputs": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name",
                      "description"
                    ],
                    "additionalProperties": false
                  },
                  "description": "User-configurable input parameters"
                },
                "tools": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name",
                      "description"
                    ],
                    "additionalProperties": false
                  },
                  "description": "Tools provided by this capability"
                },
                "delegationHint": {
                  "type": "string",
                  "description": "Guidance on when to use this capability"
                }
              },
              "required": [
                "id",
                "name",
                "description",
                "requiredCredentials",
                "inputs",
                "tools"
              ],
              "additionalProperties": false
            },
            "description": "Array of capability summary objects"
          },
          "totalCount": {
            "type": "number",
            "description": "Total number of registered capabilities"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "capabilities",
          "totalCount",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of list-capabilities-tool bubble\nconst listCapabilitiesTool = new ListCapabilitiesTool({\n  // Add required parameters here\n});\n\nconst result = await listCapabilitiesTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   capabilities: { id: string // Unique identifier for the capability, name: string // Display name of the capability, description: string // What the capability does, category: string | undefined // Category grouping (e.g., knowledge, data), requiredCredentials: string[] // Credential types that must be provided, optionalCredentials: string[] | undefined // Credential types that can optionally be provided, inputs: { name: string, description: string }[] // User-configurable input parameters, tools: { name: string, description: string }[] // Tools provided by this capability, delegationHint: string | undefined // Guidance on when to use this capability }[] // Array of capability summary objects,\n//   totalCount: number // Total number of registered capabilities,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "sql-query-tool",
      "alias": "sql",
      "type": "tool",
      "shortDescription": "Execute read-only SQL queries against PostgreSQL databases for data analysis",
      "useCase": "- AI agents performing iterative database exploration",
      "outputSchema": "{\n  rows: Record<string, unknown>[] | undefined // Array of query result rows as objects,\n  rowCount: number // Number of rows returned by the query,\n  executionTime: number // Query execution time in milliseconds,\n  fields: { name: string // Name of the column, dataTypeID: number | undefined // PostgreSQL data type ID for the column }[] | undefined // Array of column metadata from the query result,\n  success: boolean // Whether the query execution was successful,\n  error: string // Error message if query execution failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "SQL query to execute (SELECT, WITH, EXPLAIN, ANALYZE, SHOW, DESCRIBE only)"
          },
          "reasoning": {
            "type": "string",
            "description": "Explain why you're running this specific query and what you hope to learn from it"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Database credentials (injected at runtime)"
          },
          "config": {
            "type": "object",
            "additionalProperties": {},
            "description": "Configuration for the tool bubble"
          }
        },
        "required": [
          "query",
          "reasoning"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "description": "Array of query result rows as objects"
          },
          "rowCount": {
            "type": "number",
            "description": "Number of rows returned by the query"
          },
          "executionTime": {
            "type": "number",
            "description": "Query execution time in milliseconds"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Name of the column"
                },
                "dataTypeID": {
                  "type": "number",
                  "description": "PostgreSQL data type ID for the column"
                }
              },
              "required": [
                "name"
              ],
              "additionalProperties": false
            },
            "description": "Array of column metadata from the query result"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the query execution was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if query execution failed"
          }
        },
        "required": [
          "rowCount",
          "executionTime",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of sql-query-tool bubble\nconst sqlQueryTool = new SQLQueryTool({\n  query: \"example string\", // SQL query to execute (SELECT, WITH, EXPLAIN, ANALYZE, SHOW, DESCRIBE only),\n  reasoning: \"example string\", // Explain why you're running this specific query and what you hope to learn from it,\n  config: {}, // Configuration for the tool bubble,\n});\n\nconst result = await sqlQueryTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   rows: Record<string, unknown>[] | undefined // Array of query result rows as objects,\n//   rowCount: number // Number of rows returned by the query,\n//   executionTime: number // Query execution time in milliseconds,\n//   fields: { name: string // Name of the column, dataTypeID: number | undefined // PostgreSQL data type ID for the column }[] | undefined // Array of column metadata from the query result,\n//   success: boolean // Whether the query execution was successful,\n//   error: string // Error message if query execution failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "DATABASE_CRED"
      ]
    },
    {
      "name": "chart-js-tool",
      "alias": "chart",
      "type": "tool",
      "shortDescription": "Generate Chart.js configurations from data for interactive visualizations",
      "useCase": "- Converting SQL query results into visual charts",
      "outputSchema": "{\n  chartConfig: Record<string, unknown> // Complete Chart.js configuration object,\n  chartType: string // Chart type that was generated,\n  datasetCount: number // Number of datasets in the chart,\n  dataPointCount: number // Total number of data points,\n  suggestedSize: { width: number, height: number } // Suggested canvas size for the chart,\n  metadata: { xColumn: string | undefined, yColumn: string | undefined, groupByColumn: string | undefined, colorScheme: string, generatedAt: string } // Metadata about chart generation,\n  imageBase64: string | undefined // Base64-encoded PNG image of the chart,\n  tableData: { headers: string[], rows: string[][] } | undefined // Structured table data (when chartType is table),\n  filePath: string | undefined // Path to generated chart file (if generateFile was true),\n  fileExists: boolean | undefined // Whether the generated file exists on disk,\n  fileSize: number | undefined // Size of generated file in bytes,\n  success: boolean,\n  error: string\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "minItems": 1,
            "description": "Array of data objects (typically from SQL query results)"
          },
          "chartType": {
            "type": "string",
            "enum": [
              "line",
              "bar",
              "pie",
              "doughnut",
              "radar",
              "scatter",
              "bubble",
              "polarArea",
              "table"
            ],
            "description": "Type of chart to generate"
          },
          "xColumn": {
            "type": "string",
            "description": "Column name to use for X-axis (auto-detected if not provided)"
          },
          "yColumn": {
            "type": "string",
            "description": "Column name to use for Y-axis (auto-detected if not provided)"
          },
          "groupByColumn": {
            "type": "string",
            "description": "Column to group data by for multiple series"
          },
          "options": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string",
                "description": "Chart title"
              },
              "xAxisLabel": {
                "type": "string",
                "description": "X-axis label"
              },
              "yAxisLabel": {
                "type": "string",
                "description": "Y-axis label"
              },
              "colorScheme": {
                "type": "string",
                "enum": [
                  "default",
                  "viridis",
                  "plasma",
                  "inferno",
                  "magma",
                  "blues",
                  "greens",
                  "reds",
                  "oranges",
                  "categorical"
                ],
                "default": "default",
                "description": "Color scheme for the chart"
              },
              "responsive": {
                "type": "boolean",
                "default": true,
                "description": "Make chart responsive"
              },
              "maintainAspectRatio": {
                "type": "boolean",
                "default": true,
                "description": "Maintain aspect ratio"
              },
              "showLegend": {
                "type": "boolean",
                "default": true,
                "description": "Show chart legend"
              },
              "showTooltips": {
                "type": "boolean",
                "default": true,
                "description": "Show tooltips on hover"
              },
              "stacked": {
                "type": "boolean",
                "default": false,
                "description": "Stack datasets on top of each other (for bar/line charts)"
              }
            },
            "additionalProperties": false,
            "description": "Chart customization options"
          },
          "advancedConfig": {
            "type": "object",
            "additionalProperties": {},
            "description": "Advanced Chart.js configuration object (overrides simple options)"
          },
          "reasoning": {
            "type": "string",
            "description": "Explain why this chart type and configuration was chosen"
          },
          "generateFile": {
            "type": "boolean",
            "default": false,
            "description": "Generate an actual chart image file (PNG format)"
          },
          "filePath": {
            "type": "string",
            "description": "Custom file path for generated chart (defaults to temp directory)"
          },
          "fileName": {
            "type": "string",
            "description": "Custom file name for generated chart (defaults to auto-generated name)"
          },
          "width": {
            "type": "number",
            "default": 800,
            "description": "Chart width in pixels (default: 800)"
          },
          "height": {
            "type": "number",
            "default": 600,
            "description": "Chart height in pixels (default: 600)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Credentials (HIDDEN from AI - injected at runtime)"
          },
          "config": {
            "type": "object",
            "additionalProperties": {},
            "description": "Configuration for the tool bubble (HIDDEN from AI - injected at runtime)"
          }
        },
        "required": [
          "data",
          "chartType",
          "reasoning"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "chartConfig": {
            "type": "object",
            "additionalProperties": {},
            "description": "Complete Chart.js configuration object"
          },
          "chartType": {
            "type": "string",
            "description": "Chart type that was generated"
          },
          "datasetCount": {
            "type": "number",
            "description": "Number of datasets in the chart"
          },
          "dataPointCount": {
            "type": "number",
            "description": "Total number of data points"
          },
          "suggestedSize": {
            "type": "object",
            "properties": {
              "width": {
                "type": "number"
              },
              "height": {
                "type": "number"
              }
            },
            "required": [
              "width",
              "height"
            ],
            "additionalProperties": false,
            "description": "Suggested canvas size for the chart"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "xColumn": {
                "type": "string"
              },
              "yColumn": {
                "type": "string"
              },
              "groupByColumn": {
                "type": "string"
              },
              "colorScheme": {
                "type": "string"
              },
              "generatedAt": {
                "type": "string"
              }
            },
            "required": [
              "colorScheme",
              "generatedAt"
            ],
            "additionalProperties": false,
            "description": "Metadata about chart generation"
          },
          "imageBase64": {
            "type": "string",
            "description": "Base64-encoded PNG image of the chart"
          },
          "tableData": {
            "type": "object",
            "properties": {
              "headers": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "rows": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "required": [
              "headers",
              "rows"
            ],
            "additionalProperties": false,
            "description": "Structured table data (when chartType is table)"
          },
          "filePath": {
            "type": "string",
            "description": "Path to generated chart file (if generateFile was true)"
          },
          "fileExists": {
            "type": "boolean",
            "description": "Whether the generated file exists on disk"
          },
          "fileSize": {
            "type": "number",
            "description": "Size of generated file in bytes"
          },
          "success": {
            "type": "boolean"
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "chartConfig",
          "chartType",
          "datasetCount",
          "dataPointCount",
          "suggestedSize",
          "metadata",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of chart-js-tool bubble\nconst chartJsTool = new ChartJSTool({\n  data: [{}], // Array of data objects (typically from SQL query results),\n  chartType: \"line\" // options: \"line\", \"bar\", \"pie\", \"doughnut\", \"radar\", \"scatter\", \"bubble\", \"polarArea\", \"table\", // Type of chart to generate,\n  xColumn: \"example string\", // Column name to use for X-axis (auto-detected if not provided),\n  yColumn: \"example string\", // Column name to use for Y-axis (auto-detected if not provided),\n  groupByColumn: \"example string\", // Column to group data by for multiple series,\n  options: { title: \"example string\" // Chart title, xAxisLabel: \"example string\" // X-axis label, yAxisLabel: \"example string\" // Y-axis label, colorScheme: \"default\" // options: \"default\", \"viridis\", \"plasma\", \"inferno\", \"magma\", \"blues\", \"greens\", \"reds\", \"oranges\", \"categorical\" // Color scheme for the chart, responsive: true // default // Make chart responsive, maintainAspectRatio: true // default // Maintain aspect ratio, showLegend: true // default // Show chart legend, showTooltips: true // default // Show tooltips on hover, stacked: false // default // Stack datasets on top of each other (for bar/line charts) }, // Chart customization options,\n  advancedConfig: {}, // Advanced Chart.js configuration object (overrides simple options),\n  reasoning: \"example string\", // Explain why this chart type and configuration was chosen,\n  generateFile: false // default, // Generate an actual chart image file (PNG format),\n  filePath: \"example string\", // Custom file path for generated chart (defaults to temp directory),\n  fileName: \"example string\", // Custom file name for generated chart (defaults to auto-generated name),\n  width: 800 // default, // Chart width in pixels (default: 800),\n  height: 600 // default, // Chart height in pixels (default: 600),\n  config: {}, // Configuration for the tool bubble (HIDDEN from AI - injected at runtime),\n});\n\nconst result = await chartJsTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   chartConfig: Record<string, unknown> // Complete Chart.js configuration object,\n//   chartType: string // Chart type that was generated,\n//   datasetCount: number // Number of datasets in the chart,\n//   dataPointCount: number // Total number of data points,\n//   suggestedSize: { width: number, height: number } // Suggested canvas size for the chart,\n//   metadata: { xColumn: string | undefined, yColumn: string | undefined, groupByColumn: string | undefined, colorScheme: string, generatedAt: string } // Metadata about chart generation,\n//   imageBase64: string | undefined // Base64-encoded PNG image of the chart,\n//   tableData: { headers: string[], rows: string[][] } | undefined // Structured table data (when chartType is table),\n//   filePath: string | undefined // Path to generated chart file (if generateFile was true),\n//   fileExists: boolean | undefined // Whether the generated file exists on disk,\n//   fileSize: number | undefined // Size of generated file in bytes,\n//   success: boolean,\n//   error: string\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "bubbleflow-validation-tool",
      "alias": "validate-bubbleflow",
      "type": "tool",
      "shortDescription": "Validates BubbleFlow TypeScript code for syntax and structure",
      "useCase": "- When an AI agent needs to validate user-provided BubbleFlow code",
      "outputSchema": "{\n  valid: boolean // Whether the code is valid,\n  errors: string[] | undefined // List of validation errors if any,\n  bubbleCount: number | undefined // Number of bubbles found in the code,\n  bubbles: { variableName: string // Variable name assigned to the bubble, bubbleName: string // Type of bubble (e.g., postgresql, slack), className: string // Bubble class name (e.g., PostgreSQLBubble), hasAwait: boolean // Whether the bubble call is awaited, hasActionCall: boolean // Whether .action() is called, parameterCount: number // Number of parameters passed to the bubble }[] | undefined,\n  variableTypes: { name: string // Variable name, type: string // Variable type, line: number // Line number, column: number // Column number }[] | undefined // Details about each bubble found,\n  metadata: { validatedAt: string // Timestamp when validation was performed, codeLength: number // Length of the code in characters, strictMode: boolean // Whether strict mode was used },\n  success: boolean // Whether the validation operation was successful,\n  error: string // Error message if validation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "TypeScript code to validate"
          },
          "options": {
            "type": "object",
            "properties": {
              "includeDetails": {
                "type": "boolean",
                "default": true,
                "description": "Include detailed bubble analysis"
              },
              "strictMode": {
                "type": "boolean",
                "default": true,
                "description": "Enable strict TypeScript validation"
              }
            },
            "additionalProperties": false,
            "description": "Validation configuration options"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Credentials (HIDDEN from AI - injected at runtime)"
          },
          "config": {
            "type": "object",
            "additionalProperties": {},
            "description": "Configuration for the validation tool (HIDDEN from AI - injected at runtime)"
          }
        },
        "required": [
          "code"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "valid": {
            "type": "boolean",
            "description": "Whether the code is valid"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of validation errors if any"
          },
          "bubbleCount": {
            "type": "number",
            "description": "Number of bubbles found in the code"
          },
          "bubbles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "variableName": {
                  "type": "string",
                  "description": "Variable name assigned to the bubble"
                },
                "bubbleName": {
                  "type": "string",
                  "description": "Type of bubble (e.g., postgresql, slack)"
                },
                "className": {
                  "type": "string",
                  "description": "Bubble class name (e.g., PostgreSQLBubble)"
                },
                "hasAwait": {
                  "type": "boolean",
                  "description": "Whether the bubble call is awaited"
                },
                "hasActionCall": {
                  "type": "boolean",
                  "description": "Whether .action() is called"
                },
                "parameterCount": {
                  "type": "number",
                  "description": "Number of parameters passed to the bubble"
                }
              },
              "required": [
                "variableName",
                "bubbleName",
                "className",
                "hasAwait",
                "hasActionCall",
                "parameterCount"
              ],
              "additionalProperties": false
            }
          },
          "variableTypes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Variable name"
                },
                "type": {
                  "type": "string",
                  "description": "Variable type"
                },
                "line": {
                  "type": "number",
                  "description": "Line number"
                },
                "column": {
                  "type": "number",
                  "description": "Column number"
                }
              },
              "required": [
                "name",
                "type",
                "line",
                "column"
              ],
              "additionalProperties": false
            },
            "description": "Details about each bubble found"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "validatedAt": {
                "type": "string",
                "description": "Timestamp when validation was performed"
              },
              "codeLength": {
                "type": "number",
                "description": "Length of the code in characters"
              },
              "strictMode": {
                "type": "boolean",
                "description": "Whether strict mode was used"
              }
            },
            "required": [
              "validatedAt",
              "codeLength",
              "strictMode"
            ],
            "additionalProperties": false
          },
          "success": {
            "type": "boolean",
            "description": "Whether the validation operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if validation failed"
          }
        },
        "required": [
          "valid",
          "metadata",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of bubbleflow-validation-tool bubble\nconst bubbleflowValidationTool = new BubbleFlowValidationTool({\n  code: \"example string\", // TypeScript code to validate,\n  options: { includeDetails: true // default // Include detailed bubble analysis, strictMode: true // default // Enable strict TypeScript validation }, // Validation configuration options,\n  config: {}, // Configuration for the validation tool (HIDDEN from AI - injected at runtime),\n});\n\nconst result = await bubbleflowValidationTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   valid: boolean // Whether the code is valid,\n//   errors: string[] | undefined // List of validation errors if any,\n//   bubbleCount: number | undefined // Number of bubbles found in the code,\n//   bubbles: { variableName: string // Variable name assigned to the bubble, bubbleName: string // Type of bubble (e.g., postgresql, slack), className: string // Bubble class name (e.g., PostgreSQLBubble), hasAwait: boolean // Whether the bubble call is awaited, hasActionCall: boolean // Whether .action() is called, parameterCount: number // Number of parameters passed to the bubble }[] | undefined,\n//   variableTypes: { name: string // Variable name, type: string // Variable type, line: number // Line number, column: number // Column number }[] | undefined // Details about each bubble found,\n//   metadata: { validatedAt: string // Timestamp when validation was performed, codeLength: number // Length of the code in characters, strictMode: boolean // Whether strict mode was used },\n//   success: boolean // Whether the validation operation was successful,\n//   error: string // Error message if validation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "code-edit-tool",
      "alias": "code-edit",
      "type": "tool",
      "shortDescription": "Applies code edits to BubbleFlow files using find-and-replace",
      "useCase": "- When an AI agent needs to make edits to BubbleFlow code",
      "outputSchema": "{\n  mergedCode: string // The final code after applying edits,\n  applied: boolean // Whether the edit was successfully applied,\n  success: boolean // Whether the edit operation was successful,\n  error: string // Error message if edit failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "initialCode": {
            "type": "string",
            "description": "The current code to apply the edit to"
          },
          "old_string": {
            "type": "string",
            "description": "The exact text to replace. Must be unique in the code — if not unique, provide more surrounding context to disambiguate."
          },
          "new_string": {
            "type": "string",
            "description": "The replacement text. Must be different from old_string."
          },
          "replace_all": {
            "type": "boolean",
            "default": false,
            "description": "Replace all occurrences of old_string (default false). Use for renaming variables/strings across the file."
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Credentials (HIDDEN from AI - injected at runtime)"
          },
          "config": {
            "type": "object",
            "additionalProperties": {},
            "description": "Configuration for the edit tool (HIDDEN from AI - injected at runtime)"
          }
        },
        "required": [
          "initialCode",
          "old_string",
          "new_string"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "mergedCode": {
            "type": "string",
            "description": "The final code after applying edits"
          },
          "applied": {
            "type": "boolean",
            "description": "Whether the edit was successfully applied"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the edit operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if edit failed"
          }
        },
        "required": [
          "mergedCode",
          "applied",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of code-edit-tool bubble\nconst codeEditTool = new EditBubbleFlowTool({\n  initialCode: \"example string\", // The current code to apply the edit to,\n  old_string: \"example string\", // The exact text to replace. Must be unique in the code — if not unique, provide more surrounding context to disambiguate.,\n  new_string: \"example string\", // The replacement text. Must be different from old_string.,\n  replace_all: false // default, // Replace all occurrences of old_string (default false). Use for renaming variables/strings across the file.,\n  config: {}, // Configuration for the edit tool (HIDDEN from AI - injected at runtime),\n});\n\nconst result = await codeEditTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   mergedCode: string // The final code after applying edits,\n//   applied: boolean // Whether the edit was successfully applied,\n//   success: boolean // Whether the edit operation was successful,\n//   error: string // Error message if edit failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "web-search-tool",
      "alias": "websearch",
      "type": "tool",
      "shortDescription": "Performs web searches using Firecrawl to find current information from the web",
      "useCase": "- Finding current events and news",
      "outputSchema": "{\n  results: { title: string // Title of the search result, url: string // URL of the search result, content: string // Content snippet from the search result }[] // Array of search results with title, URL, and content,\n  query: string // The original search query,\n  totalResults: number // Number of results returned,\n  searchEngine: string // Search engine used (Firecrawl),\n  creditsUsed: number // Number of credits used,\n  success: boolean // Whether the search was successful,\n  error: string // Error message if search failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The search query to execute"
          },
          "limit": {
            "type": "number",
            "maximum": 50,
            "default": 10,
            "description": "Maximum number of search results to return"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "research",
                "pdf",
                "github"
              ]
            },
            "default": [],
            "description": "Categories to find most relevant search results (research, pdf, github)"
          },
          "location": {
            "type": "string",
            "description": "Location parameter for search results (e.g., \"us\", \"uk\")"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials including FIRECRAWL_API_KEY"
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "description": "Title of the search result"
                },
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL of the search result"
                },
                "content": {
                  "type": "string",
                  "description": "Content snippet from the search result"
                }
              },
              "required": [
                "title",
                "url",
                "content"
              ],
              "additionalProperties": false
            },
            "description": "Array of search results with title, URL, and content"
          },
          "query": {
            "type": "string",
            "description": "The original search query"
          },
          "totalResults": {
            "type": "number",
            "description": "Number of results returned"
          },
          "searchEngine": {
            "type": "string",
            "description": "Search engine used (Firecrawl)"
          },
          "creditsUsed": {
            "type": "number",
            "description": "Number of credits used"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the search was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if search failed"
          }
        },
        "required": [
          "results",
          "query",
          "totalResults",
          "searchEngine",
          "creditsUsed",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of web-search-tool bubble\nconst webSearchTool = new WebSearchTool({\n  query: \"example string\", // The search query to execute,\n  limit: 10 // default, // Maximum number of search results to return,\n  categories: [\"research\" // options: \"research\", \"pdf\", \"github\"] // example for array, // Categories to find most relevant search results (research, pdf, github),\n  location: \"example string\", // Location parameter for search results (e.g., \"us\", \"uk\"),\n});\n\nconst result = await webSearchTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   results: { title: string // Title of the search result, url: string // URL of the search result, content: string // Content snippet from the search result }[] // Array of search results with title, URL, and content,\n//   query: string // The original search query,\n//   totalResults: number // Number of results returned,\n//   searchEngine: string // Search engine used (Firecrawl),\n//   creditsUsed: number // Number of credits used,\n//   success: boolean // Whether the search was successful,\n//   error: string // Error message if search failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "FIRECRAWL_API_KEY"
      ]
    },
    {
      "name": "web-scrape-tool",
      "alias": "scrape",
      "type": "tool",
      "shortDescription": "Scrapes content from a single web page. Useful after web-search-tool to get the full content of a page. Also useful if you need to understand a site's structure or content.",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  content: string // Scraped content in requested format,\n  title: string // Page title if available,\n  url: string // The original URL that was scraped,\n  format: string // Format of the returned content,\n  success: boolean // Whether the scraping was successful,\n  error: string // Error message if scraping failed,\n  creditsUsed: number // Number of credits used,\n  metadata: { statusCode: number | undefined, loadTime: number | undefined } | undefined // Additional metadata about the scrape\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The URL to scrape content from"
          },
          "format": {
            "type": "string",
            "enum": [
              "markdown",
              "html"
            ],
            "default": "markdown",
            "description": "Content format to extract (default: markdown), only use html if looking for particular html elements"
          },
          "onlyMainContent": {
            "type": "boolean",
            "default": true,
            "description": "Extract only main content, filtering out navigation/footers"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials including FIRECRAWL_API_KEY"
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "Scraped content in requested format"
          },
          "title": {
            "type": "string",
            "description": "Page title if available"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The original URL that was scraped"
          },
          "format": {
            "type": "string",
            "description": "Format of the returned content"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the scraping was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if scraping failed"
          },
          "creditsUsed": {
            "type": "number",
            "description": "Number of credits used"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "statusCode": {
                "type": "number"
              },
              "loadTime": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "description": "Additional metadata about the scrape"
          }
        },
        "required": [
          "content",
          "title",
          "url",
          "format",
          "success",
          "error",
          "creditsUsed"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of web-scrape-tool bubble\nconst webScrapeTool = new WebScrapeTool({\n  url: \"example string\", // The URL to scrape content from,\n  format: \"markdown\" // options: \"markdown\", \"html\", // Content format to extract (default: markdown), only use html if looking for particular html elements,\n  onlyMainContent: true // default, // Extract only main content, filtering out navigation/footers,\n});\n\nconst result = await webScrapeTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   content: string // Scraped content in requested format,\n//   title: string // Page title if available,\n//   url: string // The original URL that was scraped,\n//   format: string // Format of the returned content,\n//   success: boolean // Whether the scraping was successful,\n//   error: string // Error message if scraping failed,\n//   creditsUsed: number // Number of credits used,\n//   metadata: { statusCode: number | undefined, loadTime: number | undefined } | undefined // Additional metadata about the scrape\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "FIRECRAWL_API_KEY"
      ]
    },
    {
      "name": "web-extract-tool",
      "alias": "extract",
      "type": "tool",
      "shortDescription": "Extracts structured data from web pages using Firecrawl AI-powered extraction with custom prompts and schemas",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  url: string // The original URL that was processed,\n  success: boolean // Whether the extraction was successful,\n  error: string // Error message if extraction failed,\n  extractedData: unknown // The extracted structured data matching the provided schema,\n  metadata: { extractionTime: number | undefined, pageTitle: string | undefined, statusCode: number | undefined } | undefined // Additional metadata about the extraction\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The URL to extract structured data from"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "description": "Detailed prompt describing what data to extract from the web page"
          },
          "schema": {
            "type": "string",
            "minLength": 1,
            "description": "JSON schema string defining the structure of the data to extract"
          },
          "timeout": {
            "type": "number",
            "minimum": 1000,
            "maximum": 60000,
            "default": 30000,
            "description": "Timeout in milliseconds for the extraction (default: 30000)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials including FIRECRAWL_API_KEY"
          }
        },
        "required": [
          "url",
          "prompt",
          "schema"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The original URL that was processed"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the extraction was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if extraction failed"
          },
          "extractedData": {
            "description": "The extracted structured data matching the provided schema"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "extractionTime": {
                "type": "number"
              },
              "pageTitle": {
                "type": "string"
              },
              "statusCode": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "description": "Additional metadata about the extraction"
          }
        },
        "required": [
          "url",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of web-extract-tool bubble\nconst webExtractTool = new WebExtractTool({\n  url: \"example string\", // The URL to extract structured data from,\n  prompt: \"example string\", // Detailed prompt describing what data to extract from the web page,\n  schema: \"example string\", // JSON schema string defining the structure of the data to extract,\n  timeout: 30000 // default, // Timeout in milliseconds for the extraction (default: 30000),\n});\n\nconst result = await webExtractTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   url: string // The original URL that was processed,\n//   success: boolean // Whether the extraction was successful,\n//   error: string // Error message if extraction failed,\n//   extractedData: unknown // The extracted structured data matching the provided schema,\n//   metadata: { extractionTime: number | undefined, pageTitle: string | undefined, statusCode: number | undefined } | undefined // Additional metadata about the extraction\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "FIRECRAWL_API_KEY"
      ]
    },
    {
      "name": "research-agent-tool",
      "alias": "research",
      "type": "tool",
      "shortDescription": "AI-powered research agent that searches and scrapes the internet to gather structured information",
      "useCase": "- Market research with structured competitor analysis",
      "outputSchema": "{\n  result: unknown // The research result matching the expected JSON schema structure, parsed to object,\n  summary: string // 1-2 sentence summary of what research was conducted and completed,\n  sourcesUsed: string[] // Array of URLs and sources that were searched and scraped during research,\n  iterationsUsed: number // Number of AI agent iterations used to complete the research,\n  success: boolean // Whether the research task was completed successfully,\n  error: string // Error message if research failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "task": {
            "type": "string",
            "minLength": 1,
            "description": "The research task that requires searching the internet and gathering information"
          },
          "expectedResultSchema": {
            "anyOf": [
              {},
              {
                "type": "string"
              }
            ],
            "description": "Zod schema that defines the expected structure of the research result. Example: z.object({ trends: z.array(z.string()).describe(\"An array of trends\"), summary: z.string().describe(\"A summary of the trends\") })"
          },
          "model": {
            "type": "string",
            "enum": [
              "openai/gpt-5",
              "openai/gpt-5-mini",
              "openai/gpt-5.1",
              "openai/gpt-5.2",
              "google/gemini-2.5-pro",
              "google/gemini-2.5-flash",
              "google/gemini-2.5-flash-lite",
              "google/gemini-2.5-flash-image-preview",
              "google/gemini-3-pro-preview",
              "google/gemini-3-pro-image-preview",
              "google/gemini-3-flash-preview",
              "google/gemini-3.1-pro-preview",
              "google/gemini-3.1-flash-lite-preview",
              "anthropic/claude-sonnet-4-5",
              "anthropic/claude-sonnet-4-6",
              "anthropic/claude-opus-4-5",
              "anthropic/claude-opus-4-6",
              "anthropic/claude-haiku-4-5",
              "openrouter/x-ai/grok-code-fast-1",
              "openrouter/z-ai/glm-4.6",
              "openrouter/z-ai/glm-4.7",
              "openrouter/anthropic/claude-sonnet-4.5",
              "openrouter/anthropic/claude-sonnet-4.6",
              "openrouter/anthropic/claude-opus-4.5",
              "openrouter/anthropic/claude-opus-4.6",
              "openrouter/google/gemini-3-pro-preview",
              "openrouter/morph/morph-v3-large",
              "openrouter/openai/gpt-oss-120b",
              "openrouter/openai/o3-deep-research",
              "openrouter/openai/o4-mini-deep-research",
              "fireworks/accounts/fireworks/models/kimi-k2p6"
            ],
            "description": "Model to use for the research agent (default: google/gemini-3-pro-preview)",
            "default": "google/gemini-3-pro-preview"
          },
          "maxTokens": {
            "type": "number",
            "minimum": 40000,
            "default": 40000,
            "description": "Maximum number of tokens for the research agent (default: 40000)"
          },
          "maxIterations": {
            "type": "number",
            "minimum": 1,
            "maximum": 4000,
            "default": 400,
            "description": "Maximum number of iterations for the research agent (default: 100)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials"
          }
        },
        "required": [
          "task",
          "expectedResultSchema"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "result": {
            "description": "The research result matching the expected JSON schema structure, parsed to object"
          },
          "summary": {
            "type": "string",
            "description": "1-2 sentence summary of what research was conducted and completed"
          },
          "sourcesUsed": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of URLs and sources that were searched and scraped during research"
          },
          "iterationsUsed": {
            "type": "number",
            "description": "Number of AI agent iterations used to complete the research"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the research task was completed successfully"
          },
          "error": {
            "type": "string",
            "description": "Error message if research failed"
          }
        },
        "required": [
          "summary",
          "sourcesUsed",
          "iterationsUsed",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of research-agent-tool bubble\nconst researchAgentTool = new ResearchAgentTool({\n  task: \"example string\", // The research task that requires searching the internet and gathering information,\n  expectedResultSchema: \"example string\", // Zod schema that defines the expected structure of the research result. Example: z.object({ trends: z.array(z.string()).describe(\"An array of trends\"), summary: z.string().describe(\"A summary of the trends\") }),\n  model: \"openai/gpt-5\" // options: \"openai/gpt-5\", \"openai/gpt-5-mini\", \"openai/gpt-5.1\", \"openai/gpt-5.2\", \"google/gemini-2.5-pro\", \"google/gemini-2.5-flash\", \"google/gemini-2.5-flash-lite\", \"google/gemini-2.5-flash-image-preview\", \"google/gemini-3-pro-preview\", \"google/gemini-3-pro-image-preview\", \"google/gemini-3-flash-preview\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\", \"fireworks/accounts/fireworks/models/kimi-k2p6\", // Model to use for the research agent (default: google/gemini-3-pro-preview),\n  maxTokens: 40000 // default, // Maximum number of tokens for the research agent (default: 40000),\n  maxIterations: 400 // default, // Maximum number of iterations for the research agent (default: 100),\n});\n\nconst result = await researchAgentTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   result: unknown // The research result matching the expected JSON schema structure, parsed to object,\n//   summary: string // 1-2 sentence summary of what research was conducted and completed,\n//   sourcesUsed: string[] // Array of URLs and sources that were searched and scraped during research,\n//   iterationsUsed: number // Number of AI agent iterations used to complete the research,\n//   success: boolean // Whether the research task was completed successfully,\n//   error: string // Error message if research failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "FIRECRAWL_API_KEY",
        "GOOGLE_GEMINI_CRED",
        "OPENAI_CRED",
        "ANTHROPIC_CRED",
        "OPENROUTER_CRED",
        "APIFY_CRED"
      ]
    },
    {
      "name": "reddit-scrape-tool",
      "alias": "reddit",
      "type": "tool",
      "shortDescription": "Scrapes posts from any Reddit subreddit with flexible filtering and sorting options",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  posts: { title: string // Post title, url: string // Post URL (external link or Reddit permalink), author: string // Username of the post author, score: number // Post upvote score, numComments: number // Number of comments on the post, createdUtc: number // Post creation timestamp (Unix UTC), postUrl: string // Reddit url to the post, selftext: string // Post content text (for text posts/self posts). Empty for link posts which don't have text content., subreddit: string // Subreddit name, postHint: string | null | undefined // Post type hint (image, video, link, etc.), isSelf: boolean // Whether this is a text post (true) or link post (false), thumbnail: string | undefined // Thumbnail image URL if available, domain: string | undefined // Domain of external link, flair: string | undefined // Post flair text }[] // Array of scraped Reddit posts,\n  metadata: { subreddit: string // Subreddit that was scraped, requestedLimit: number // Number of posts requested, actualCount: number // Actual number of posts returned, filteredCount: number // Number of posts after filtering, sort: string // Sorting method used, timeFilter: string | undefined // Time filter used (if any), scrapedAt: string // ISO timestamp when scraping occurred, apiEndpoint: string // Reddit API endpoint used } // Metadata about the scraping operation,\n  success: boolean // Whether the scraping was successful,\n  error: string // Error message if scraping failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "subreddit": {
            "allOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "string",
                "pattern": "^[a-zA-Z0-9_]+$"
              }
            ],
            "description": "Name of the subreddit to scrape (with or without r/ prefix)"
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "default": 100,
            "description": "Maximum number of posts to fetch (1-1000, default: 25)"
          },
          "sort": {
            "type": "string",
            "enum": [
              "hot",
              "new",
              "top",
              "rising"
            ],
            "default": "hot",
            "description": "Sorting method for posts (default: hot)"
          },
          "timeFilter": {
            "type": "string",
            "enum": [
              "hour",
              "day",
              "week",
              "month",
              "year",
              "all"
            ],
            "description": "Time filter for \"top\" sort (only applies when sort=top)"
          },
          "filterToday": {
            "type": "boolean",
            "default": false,
            "description": "Filter results to only include posts from today"
          },
          "includeStickied": {
            "type": "boolean",
            "default": false,
            "description": "Include stickied/pinned posts in results"
          },
          "minScore": {
            "type": "number",
            "description": "Minimum upvote score required for posts"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional credentials for enhanced features"
          }
        },
        "required": [
          "subreddit"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "posts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "description": "Post title"
                },
                "url": {
                  "type": "string",
                  "description": "Post URL (external link or Reddit permalink)"
                },
                "author": {
                  "type": "string",
                  "description": "Username of the post author"
                },
                "score": {
                  "type": "number",
                  "description": "Post upvote score"
                },
                "numComments": {
                  "type": "number",
                  "description": "Number of comments on the post"
                },
                "createdUtc": {
                  "type": "number",
                  "description": "Post creation timestamp (Unix UTC)"
                },
                "postUrl": {
                  "type": "string",
                  "description": "Reddit url to the post"
                },
                "selftext": {
                  "type": "string",
                  "description": "Post content text (for text posts/self posts). Empty for link posts which don't have text content."
                },
                "subreddit": {
                  "type": "string",
                  "description": "Subreddit name"
                },
                "postHint": {
                  "type": "string",
                  "nullable": true,
                  "description": "Post type hint (image, video, link, etc.)"
                },
                "isSelf": {
                  "type": "boolean",
                  "description": "Whether this is a text post (true) or link post (false)"
                },
                "thumbnail": {
                  "type": "string",
                  "description": "Thumbnail image URL if available"
                },
                "domain": {
                  "type": "string",
                  "description": "Domain of external link"
                },
                "flair": {
                  "type": "string",
                  "description": "Post flair text"
                }
              },
              "required": [
                "title",
                "url",
                "author",
                "score",
                "numComments",
                "createdUtc",
                "postUrl",
                "selftext",
                "subreddit",
                "isSelf"
              ],
              "additionalProperties": false
            },
            "description": "Array of scraped Reddit posts"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "subreddit": {
                "type": "string",
                "description": "Subreddit that was scraped"
              },
              "requestedLimit": {
                "type": "number",
                "description": "Number of posts requested"
              },
              "actualCount": {
                "type": "number",
                "description": "Actual number of posts returned"
              },
              "filteredCount": {
                "type": "number",
                "description": "Number of posts after filtering"
              },
              "sort": {
                "type": "string",
                "description": "Sorting method used"
              },
              "timeFilter": {
                "type": "string",
                "description": "Time filter used (if any)"
              },
              "scrapedAt": {
                "type": "string",
                "description": "ISO timestamp when scraping occurred"
              },
              "apiEndpoint": {
                "type": "string",
                "description": "Reddit API endpoint used"
              }
            },
            "required": [
              "subreddit",
              "requestedLimit",
              "actualCount",
              "filteredCount",
              "sort",
              "scrapedAt",
              "apiEndpoint"
            ],
            "additionalProperties": false,
            "description": "Metadata about the scraping operation"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the scraping was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if scraping failed"
          }
        },
        "required": [
          "posts",
          "metadata",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of reddit-scrape-tool bubble\nconst redditScrapeTool = new RedditScrapeTool({\n  limit: 100 // default, // Maximum number of posts to fetch (1-1000, default: 25),\n  sort: \"hot\" // options: \"hot\", \"new\", \"top\", \"rising\", // Sorting method for posts (default: hot),\n  timeFilter: \"hour\" // options: \"hour\", \"day\", \"week\", \"month\", \"year\", \"all\", // Time filter for \"top\" sort (only applies when sort=top),\n  filterToday: false // default, // Filter results to only include posts from today,\n  includeStickied: false // default, // Include stickied/pinned posts in results,\n  minScore: 42, // Minimum upvote score required for posts,\n});\n\nconst result = await redditScrapeTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   posts: { title: string // Post title, url: string // Post URL (external link or Reddit permalink), author: string // Username of the post author, score: number // Post upvote score, numComments: number // Number of comments on the post, createdUtc: number // Post creation timestamp (Unix UTC), postUrl: string // Reddit url to the post, selftext: string // Post content text (for text posts/self posts). Empty for link posts which don't have text content., subreddit: string // Subreddit name, postHint: string | null | undefined // Post type hint (image, video, link, etc.), isSelf: boolean // Whether this is a text post (true) or link post (false), thumbnail: string | undefined // Thumbnail image URL if available, domain: string | undefined // Domain of external link, flair: string | undefined // Post flair text }[] // Array of scraped Reddit posts,\n//   metadata: { subreddit: string // Subreddit that was scraped, requestedLimit: number // Number of posts requested, actualCount: number // Actual number of posts returned, filteredCount: number // Number of posts after filtering, sort: string // Sorting method used, timeFilter: string | undefined // Time filter used (if any), scrapedAt: string // ISO timestamp when scraping occurred, apiEndpoint: string // Reddit API endpoint used } // Metadata about the scraping operation,\n//   success: boolean // Whether the scraping was successful,\n//   error: string // Error message if scraping failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "instagram-tool",
      "alias": "ig",
      "type": "tool",
      "shortDescription": "Scrape Instagram profiles and posts with a simple, unified interface. Works with individual user profiles and hashtags.",
      "useCase": "**",
      "outputSchema": "{\n  operation: \"scrapeProfile\" | \"scrapeHashtag\" | \"scrapeReels\" // Operation that was performed,\n  posts: { url: string | null // Post URL, caption: string | null // Post caption text, likesCount: number | null // Number of likes, commentsCount: number | null // Number of comments, ownerUsername: string | null // Post owner username, timestamp: string | null // Post timestamp (ISO format), type: \"image\" | \"video\" | \"carousel\" | null // Post media type, displayUrl: string | null // Main display image URL, hashtags: string[] | null // Hashtags in the post }[] | undefined // Array of Instagram posts scraped (only for scrapeProfile / scrapeHashtag operations — for scrapeReels see the `reels` field),\n  reels: { url: string | null // Reel URL, shortCode: string | null // Instagram short code, caption: string | null // Reel caption, ownerUsername: string | null // Reel owner username, ownerFullName: string | null // Reel owner full name, timestamp: string | null // Reel timestamp (ISO format), videoUrl: string | null // CDN video URL, downloadedVideo: string | null // Direct MP4 download URL — only populated when includeDownloadedVideo=true, videoDuration: number | null // Reel duration in seconds, videoViewCount: number | null // Video view count, videoPlayCount: number | null // Video play count, likesCount: number | null // Number of likes, commentsCount: number | null // Number of comments, sharesCount: number | null // Number of shares — only populated when includeSharesCount=true, hashtags: string[] | null // Hashtags in the reel, mentions: string[] | null // User mentions in the reel, transcript: string | null // Auto-generated speech transcript — only populated when includeTranscript=true, musicArtist: string | null // Music artist name, musicTitle: string | null // Music/song title, displayUrl: string | null // Display thumbnail URL }[] | undefined // Reels with reel-specific fields like transcript, video URL, share count (only for scrapeReels operation),\n  profiles: { username: string // Instagram username, fullName: string | null // Full name, bio: string | null // Profile bio, followersCount: number | null // Number of followers, followingCount: number | null // Number of following, postsCount: number | null // Total posts, isVerified: boolean | null // Verification status, profilePicUrl: string | null // Profile picture URL }[] | undefined // Profile information for each scraped profile (only for scrapeProfile operation),\n  scrapedHashtags: string[] | undefined // List of hashtags that were scraped (only for scrapeHashtag operation),\n  scrapedProfiles: string[] | undefined // List of profile usernames that were scraped (only for scrapeProfile operation),\n  scrapedTargets: string[] | undefined // List of inputs that were scraped (only for scrapeReels operation),\n  totalPosts: number // Total number of posts/reels scraped,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "scrapeProfile",
              "scrapeHashtag",
              "scrapeReels"
            ],
            "description": "Operation to perform: scrapeProfile for user profiles, scrapeHashtag for hashtag posts, scrapeReels for reels (with optional transcript)"
          },
          "profiles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Instagram usernames or profile URLs to scrape (for scrapeProfile operation). Examples: [\"@username\", \"https://www.instagram.com/username/\"]"
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Hashtags to scrape (for scrapeHashtag operation). Examples: [\"ai\", \"tech\"] or [\"https://www.instagram.com/explore/tags/ai\"]"
          },
          "targets": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Instagram usernames, profile URLs, profile IDs, or direct reel URLs (for scrapeReels operation). You can mix forms in one array — e.g., [\"ryanbailey.cb\", \"https://www.instagram.com/p/DXIlvPbj2PY/\"] pulls reels from a profile AND scrapes a specific reel in one call. Other valid examples: [\"ryanbailey.cb\"], [\"https://www.instagram.com/ryanbailey.cb/\"], [\"https://www.instagram.com/p/DXIlvPbj2PY/\"]"
          },
          "includeTranscript": {
            "type": "boolean",
            "description": "For scrapeReels: extract auto-generated speech transcripts of each reel (paid add-on)"
          },
          "includeSharesCount": {
            "type": "boolean",
            "description": "For scrapeReels: extract number of shares for each reel (paid add-on)"
          },
          "includeDownloadedVideo": {
            "type": "boolean",
            "description": "For scrapeReels: include a direct MP4 download URL (a string URL — NOT video bytes — populated in the `downloadedVideo` field of each reel) for each reel. Paid add-on."
          },
          "skipPinnedPosts": {
            "type": "boolean",
            "description": "For scrapeReels: exclude pinned reels from results"
          },
          "onlyPostsNewerThan": {
            "type": "string",
            "description": "For scrapeReels: only return reels posted on or after this date. Accepts YYYY-MM-DD, ISO timestamp, or relative like \"1 day\" / \"2 weeks\""
          },
          "timeoutSecs": {
            "type": "number",
            "minimum": 60,
            "maximum": 1800,
            "description": "For scrapeReels: max seconds to wait for the Apify actor (default 600). Bump if you enable includeTranscript on >2 reels — transcript generation adds ~1-2 min per reel."
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "default": 20,
            "description": "Maximum number of items to fetch (default: 20 for profiles/reels, 50 for hashtags)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "required": [
          "operation"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "scrapeProfile",
              "scrapeHashtag",
              "scrapeReels"
            ],
            "description": "Operation that was performed"
          },
          "posts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "nullable": true,
                  "description": "Post URL"
                },
                "caption": {
                  "type": "string",
                  "nullable": true,
                  "description": "Post caption text"
                },
                "likesCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of likes"
                },
                "commentsCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of comments"
                },
                "ownerUsername": {
                  "type": "string",
                  "nullable": true,
                  "description": "Post owner username"
                },
                "timestamp": {
                  "type": "string",
                  "nullable": true,
                  "description": "Post timestamp (ISO format)"
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "image",
                    "video",
                    "carousel"
                  ],
                  "nullable": true,
                  "description": "Post media type"
                },
                "displayUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Main display image URL"
                },
                "hashtags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Hashtags in the post"
                }
              },
              "required": [
                "url",
                "caption",
                "likesCount",
                "commentsCount",
                "ownerUsername",
                "timestamp",
                "type",
                "displayUrl",
                "hashtags"
              ],
              "additionalProperties": false
            },
            "description": "Array of Instagram posts scraped (only for scrapeProfile / scrapeHashtag operations — for scrapeReels see the `reels` field)"
          },
          "reels": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "nullable": true,
                  "description": "Reel URL"
                },
                "shortCode": {
                  "type": "string",
                  "nullable": true,
                  "description": "Instagram short code"
                },
                "caption": {
                  "type": "string",
                  "nullable": true,
                  "description": "Reel caption"
                },
                "ownerUsername": {
                  "type": "string",
                  "nullable": true,
                  "description": "Reel owner username"
                },
                "ownerFullName": {
                  "type": "string",
                  "nullable": true,
                  "description": "Reel owner full name"
                },
                "timestamp": {
                  "type": "string",
                  "nullable": true,
                  "description": "Reel timestamp (ISO format)"
                },
                "videoUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "CDN video URL"
                },
                "downloadedVideo": {
                  "type": "string",
                  "nullable": true,
                  "description": "Direct MP4 download URL — only populated when includeDownloadedVideo=true"
                },
                "videoDuration": {
                  "type": "number",
                  "nullable": true,
                  "description": "Reel duration in seconds"
                },
                "videoViewCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Video view count"
                },
                "videoPlayCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Video play count"
                },
                "likesCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of likes"
                },
                "commentsCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of comments"
                },
                "sharesCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of shares — only populated when includeSharesCount=true"
                },
                "hashtags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Hashtags in the reel"
                },
                "mentions": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "User mentions in the reel"
                },
                "transcript": {
                  "type": "string",
                  "nullable": true,
                  "description": "Auto-generated speech transcript — only populated when includeTranscript=true"
                },
                "musicArtist": {
                  "type": "string",
                  "nullable": true,
                  "description": "Music artist name"
                },
                "musicTitle": {
                  "type": "string",
                  "nullable": true,
                  "description": "Music/song title"
                },
                "displayUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Display thumbnail URL"
                }
              },
              "required": [
                "url",
                "shortCode",
                "caption",
                "ownerUsername",
                "ownerFullName",
                "timestamp",
                "videoUrl",
                "downloadedVideo",
                "videoDuration",
                "videoViewCount",
                "videoPlayCount",
                "likesCount",
                "commentsCount",
                "sharesCount",
                "hashtags",
                "mentions",
                "transcript",
                "musicArtist",
                "musicTitle",
                "displayUrl"
              ],
              "additionalProperties": false
            },
            "description": "Reels with reel-specific fields like transcript, video URL, share count (only for scrapeReels operation)"
          },
          "profiles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "username": {
                  "type": "string",
                  "description": "Instagram username"
                },
                "fullName": {
                  "type": "string",
                  "nullable": true,
                  "description": "Full name"
                },
                "bio": {
                  "type": "string",
                  "nullable": true,
                  "description": "Profile bio"
                },
                "followersCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of followers"
                },
                "followingCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of following"
                },
                "postsCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Total posts"
                },
                "isVerified": {
                  "type": "boolean",
                  "nullable": true,
                  "description": "Verification status"
                },
                "profilePicUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Profile picture URL"
                }
              },
              "required": [
                "username",
                "fullName",
                "bio",
                "followersCount",
                "followingCount",
                "postsCount",
                "isVerified",
                "profilePicUrl"
              ],
              "additionalProperties": false
            },
            "description": "Profile information for each scraped profile (only for scrapeProfile operation)"
          },
          "scrapedHashtags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of hashtags that were scraped (only for scrapeHashtag operation)"
          },
          "scrapedProfiles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of profile usernames that were scraped (only for scrapeProfile operation)"
          },
          "scrapedTargets": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of inputs that were scraped (only for scrapeReels operation)"
          },
          "totalPosts": {
            "type": "number",
            "description": "Total number of posts/reels scraped"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "operation",
          "totalPosts",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of instagram-tool bubble\nconst instagramTool = new InstagramTool({\n  operation: \"scrapeProfile\" // options: \"scrapeProfile\", \"scrapeHashtag\", \"scrapeReels\", // Operation to perform: scrapeProfile for user profiles, scrapeHashtag for hashtag posts, scrapeReels for reels (with optional transcript),\n  profiles: [\"example string\"], // Instagram usernames or profile URLs to scrape (for scrapeProfile operation). Examples: [\"@username\", \"https://www.instagram.com/username/\"],\n  hashtags: [\"example string\"], // Hashtags to scrape (for scrapeHashtag operation). Examples: [\"ai\", \"tech\"] or [\"https://www.instagram.com/explore/tags/ai\"],\n  targets: [\"example string\"], // Instagram usernames, profile URLs, profile IDs, or direct reel URLs (for scrapeReels operation). You can mix forms in one array — e.g., [\"ryanbailey.cb\", \"https://www.instagram.com/p/DXIlvPbj2PY/\"] pulls reels from a profile AND scrapes a specific reel in one call. Other valid examples: [\"ryanbailey.cb\"], [\"https://www.instagram.com/ryanbailey.cb/\"], [\"https://www.instagram.com/p/DXIlvPbj2PY/\"],\n  includeTranscript: true, // For scrapeReels: extract auto-generated speech transcripts of each reel (paid add-on),\n  includeSharesCount: true, // For scrapeReels: extract number of shares for each reel (paid add-on),\n  includeDownloadedVideo: true, // For scrapeReels: include a direct MP4 download URL (a string URL — NOT video bytes — populated in the `downloadedVideo` field of each reel) for each reel. Paid add-on.,\n  skipPinnedPosts: true, // For scrapeReels: exclude pinned reels from results,\n  onlyPostsNewerThan: \"example string\", // For scrapeReels: only return reels posted on or after this date. Accepts YYYY-MM-DD, ISO timestamp, or relative like \"1 day\" / \"2 weeks\",\n  timeoutSecs: 42, // For scrapeReels: max seconds to wait for the Apify actor (default 600). Bump if you enable includeTranscript on >2 reels — transcript generation adds ~1-2 min per reel.,\n  limit: 20 // default, // Maximum number of items to fetch (default: 20 for profiles/reels, 50 for hashtags),\n});\n\nconst result = await instagramTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"scrapeProfile\" | \"scrapeHashtag\" | \"scrapeReels\" // Operation that was performed,\n//   posts: { url: string | null // Post URL, caption: string | null // Post caption text, likesCount: number | null // Number of likes, commentsCount: number | null // Number of comments, ownerUsername: string | null // Post owner username, timestamp: string | null // Post timestamp (ISO format), type: \"image\" | \"video\" | \"carousel\" | null // Post media type, displayUrl: string | null // Main display image URL, hashtags: string[] | null // Hashtags in the post }[] | undefined // Array of Instagram posts scraped (only for scrapeProfile / scrapeHashtag operations — for scrapeReels see the `reels` field),\n//   reels: { url: string | null // Reel URL, shortCode: string | null // Instagram short code, caption: string | null // Reel caption, ownerUsername: string | null // Reel owner username, ownerFullName: string | null // Reel owner full name, timestamp: string | null // Reel timestamp (ISO format), videoUrl: string | null // CDN video URL, downloadedVideo: string | null // Direct MP4 download URL — only populated when includeDownloadedVideo=true, videoDuration: number | null // Reel duration in seconds, videoViewCount: number | null // Video view count, videoPlayCount: number | null // Video play count, likesCount: number | null // Number of likes, commentsCount: number | null // Number of comments, sharesCount: number | null // Number of shares — only populated when includeSharesCount=true, hashtags: string[] | null // Hashtags in the reel, mentions: string[] | null // User mentions in the reel, transcript: string | null // Auto-generated speech transcript — only populated when includeTranscript=true, musicArtist: string | null // Music artist name, musicTitle: string | null // Music/song title, displayUrl: string | null // Display thumbnail URL }[] | undefined // Reels with reel-specific fields like transcript, video URL, share count (only for scrapeReels operation),\n//   profiles: { username: string // Instagram username, fullName: string | null // Full name, bio: string | null // Profile bio, followersCount: number | null // Number of followers, followingCount: number | null // Number of following, postsCount: number | null // Total posts, isVerified: boolean | null // Verification status, profilePicUrl: string | null // Profile picture URL }[] | undefined // Profile information for each scraped profile (only for scrapeProfile operation),\n//   scrapedHashtags: string[] | undefined // List of hashtags that were scraped (only for scrapeHashtag operation),\n//   scrapedProfiles: string[] | undefined // List of profile usernames that were scraped (only for scrapeProfile operation),\n//   scrapedTargets: string[] | undefined // List of inputs that were scraped (only for scrapeReels operation),\n//   totalPosts: number // Total number of posts/reels scraped,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "APIFY_CRED"
      ]
    },
    {
      "name": "linkedin-tool",
      "alias": "li",
      "type": "tool",
      "shortDescription": "Look up LinkedIn profiles by URL, scrape posts by profile, or search posts/jobs by keyword.",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  operation: \"scrapeProfile\" | \"scrapePosts\" | \"searchPosts\" | \"scrapeJobs\" // Operation that was performed,\n  profile: { id: string | null // LinkedIn member ID, publicIdentifier: string | null // Profile slug (e.g., \"williamhgates\"), linkedinUrl: string | null // Full LinkedIn profile URL, firstName: string | null // First name, lastName: string | null // Last name, headline: string | null // Profile headline, about: string | null // About/summary section, openToWork: boolean | null // Whether open to work, hiring: boolean | null // Whether actively hiring, photo: string | null // Profile photo URL, premium: boolean | null // Whether premium subscriber, influencer: boolean | null // Whether LinkedIn influencer, location: { text: string | null // Location text, countryCode: string | null // Country code, country: string | null // Country, state: string | null // State/region, city: string | null // City } | null // Location information, verified: boolean | null // Whether profile is verified, topSkills: string | null // Top skills summary, connectionsCount: number | null // Number of connections, followerCount: number | null // Number of followers, currentPosition: { companyName: string | null }[] | null // Current company/position, experience: { position: string | null // Job title/position, location: string | null // Job location, employmentType: string | null // Employment type, workplaceType: string | null // Workplace type, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, duration: string | null // Duration text, description: string | null // Role description, skills: string[] | null // Skills for this role, startDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // Start date, endDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // End date }[] | null // Work experience history, education: { schoolName: string | null // School name, schoolLinkedinUrl: string | null // School LinkedIn URL, degree: string | null // Degree type, fieldOfStudy: string | null // Field of study, startDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // Start date, endDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // End date, period: string | null // Period text }[] | null // Education history, certifications: { title: string | null, issuedAt: string | null, issuedBy: string | null }[] | null // Certifications, languages: { name: string | null, proficiency: string | null }[] | null // Languages, skills: { name: string | null }[] | null // All skills } | null | undefined // LinkedIn profile data (only for scrapeProfile operation),\n  jobs: { id: string | null // Job ID, title: string | null // Job title, company: { name: string | null, url: string | null, logo: string | null } | null // Company info, location: string | null // Job location, description: string | null // Job description, employmentType: string | null // Employment type, seniorityLevel: string | null // Seniority level, postedAt: string | null // Posted date, url: string | null // Job URL, applyUrl: string | null // Apply URL, salary: { from: number | null, to: number | null, currency: string | null, period: string | null } | null // Salary info, skills: string[] | null // Required skills }[] | undefined // Array of LinkedIn jobs,\n  posts: { urn: string | null // Post URN, fullUrn: string | null // Full URN with prefix, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null // When post was created, text: string | null // Post text content, url: string | null // Post URL, postType: string | null // Post type (regular, quote, etc), author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null // Post author information, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null // Post engagement statistics, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null // Post media content, article: { url: string | null, title: string | null, subtitle: string | null, thumbnail: string | null } | null // Shared article information, document: { title: string | null, pageCount: number | null, url: string | null, thumbnail: string | null } | null // Shared document information, resharedPost: { urn: string | null, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null, text: string | null, url: string | null, postType: string | null, author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null } | null // Original post that was reshared }[] // Array of LinkedIn posts,\n  username: string | undefined // LinkedIn username that was scraped (only for scrapePosts operation),\n  paginationToken: string | null | undefined // Token for fetching next page of results (only for scrapePosts operation),\n  keyword: string | undefined // Search keyword that was used (only for searchPosts operation),\n  totalResults: number | null | undefined // Total results available (only for searchPosts operation),\n  hasNextPage: boolean | null | undefined // Whether there are more results (only for searchPosts operation),\n  totalPosts: number // Total number of posts found,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "scrapeProfile",
              "scrapePosts",
              "searchPosts",
              "scrapeJobs"
            ],
            "description": "Operation to perform: scrapeProfile (get profile info from LinkedIn URL), scrapePosts (get posts from a profile), searchPosts (search posts by keyword), or scrapeJobs (search jobs)"
          },
          "profileUrl": {
            "type": "string",
            "description": "LinkedIn profile URL or username (for scrapeProfile operation). Examples: \"https://www.linkedin.com/in/williamhgates\", \"williamhgates\""
          },
          "username": {
            "type": "string",
            "description": "LinkedIn username (for scrapePosts operation). Examples: \"satyanadella\", \"billgates\""
          },
          "keyword": {
            "type": "string",
            "description": "Keyword or phrase to search for (for searchPosts/scrapeJobs). Examples: \"AI\", \"hiring\", \"Software Engineer\""
          },
          "location": {
            "type": "string",
            "description": "Location for job search (e.g. \"San Francisco\", \"Remote\") (scrapeJobs only)"
          },
          "jobType": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship"
              ]
            },
            "description": "Filter by job type (scrapeJobs only)"
          },
          "workplaceType": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "on-site",
                "remote",
                "hybrid"
              ]
            },
            "description": "Filter by workplace type (scrapeJobs only)"
          },
          "experienceLevel": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry-level",
                "associate",
                "mid-senior",
                "director",
                "executive"
              ]
            },
            "description": "Filter by experience level (scrapeJobs only)"
          },
          "sortBy": {
            "type": "string",
            "enum": [
              "relevance",
              "date_posted"
            ],
            "default": "relevance",
            "description": "Sort results by relevance or date posted (for searchPosts operation, default: relevance)"
          },
          "dateFilter": {
            "type": "string",
            "enum": [
              "past-24h",
              "past-week",
              "past-month"
            ],
            "description": "Filter posts/jobs by date range (searchPosts/scrapeJobs). Options: past-24h, past-week, past-month. Leave empty for no date filter."
          },
          "limit": {
            "type": "number",
            "maximum": 1000,
            "default": 50,
            "description": "Maximum number of items to fetch (default: 50)"
          },
          "pageNumber": {
            "type": "number",
            "minimum": 1,
            "default": 1,
            "description": "Page number for pagination (default: 1)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "required": [
          "operation"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "scrapeProfile",
              "scrapePosts",
              "searchPosts",
              "scrapeJobs"
            ],
            "description": "Operation that was performed"
          },
          "profile": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "nullable": true,
                "description": "LinkedIn member ID"
              },
              "publicIdentifier": {
                "type": "string",
                "nullable": true,
                "description": "Profile slug (e.g., \"williamhgates\")"
              },
              "linkedinUrl": {
                "type": "string",
                "nullable": true,
                "description": "Full LinkedIn profile URL"
              },
              "firstName": {
                "type": "string",
                "nullable": true,
                "description": "First name"
              },
              "lastName": {
                "type": "string",
                "nullable": true,
                "description": "Last name"
              },
              "headline": {
                "type": "string",
                "nullable": true,
                "description": "Profile headline"
              },
              "about": {
                "type": "string",
                "nullable": true,
                "description": "About/summary section"
              },
              "openToWork": {
                "type": "boolean",
                "nullable": true,
                "description": "Whether open to work"
              },
              "hiring": {
                "type": "boolean",
                "nullable": true,
                "description": "Whether actively hiring"
              },
              "photo": {
                "type": "string",
                "nullable": true,
                "description": "Profile photo URL"
              },
              "premium": {
                "type": "boolean",
                "nullable": true,
                "description": "Whether premium subscriber"
              },
              "influencer": {
                "type": "boolean",
                "nullable": true,
                "description": "Whether LinkedIn influencer"
              },
              "location": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "nullable": true,
                    "description": "Location text"
                  },
                  "countryCode": {
                    "type": "string",
                    "nullable": true,
                    "description": "Country code"
                  },
                  "country": {
                    "type": "string",
                    "nullable": true,
                    "description": "Country"
                  },
                  "state": {
                    "type": "string",
                    "nullable": true,
                    "description": "State/region"
                  },
                  "city": {
                    "type": "string",
                    "nullable": true,
                    "description": "City"
                  }
                },
                "required": [
                  "text",
                  "countryCode",
                  "country",
                  "state",
                  "city"
                ],
                "additionalProperties": false,
                "nullable": true,
                "description": "Location information"
              },
              "verified": {
                "type": "boolean",
                "nullable": true,
                "description": "Whether profile is verified"
              },
              "topSkills": {
                "type": "string",
                "nullable": true,
                "description": "Top skills summary"
              },
              "connectionsCount": {
                "type": "number",
                "nullable": true,
                "description": "Number of connections"
              },
              "followerCount": {
                "type": "number",
                "nullable": true,
                "description": "Number of followers"
              },
              "currentPosition": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "companyName": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "companyName"
                  ],
                  "additionalProperties": false
                },
                "nullable": true,
                "description": "Current company/position"
              },
              "experience": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "position": {
                      "type": "string",
                      "nullable": true,
                      "description": "Job title/position"
                    },
                    "location": {
                      "type": "string",
                      "nullable": true,
                      "description": "Job location"
                    },
                    "employmentType": {
                      "type": "string",
                      "nullable": true,
                      "description": "Employment type"
                    },
                    "workplaceType": {
                      "type": "string",
                      "nullable": true,
                      "description": "Workplace type"
                    },
                    "companyName": {
                      "type": "string",
                      "nullable": true,
                      "description": "Company name"
                    },
                    "companyLinkedinUrl": {
                      "type": "string",
                      "nullable": true,
                      "description": "Company LinkedIn URL"
                    },
                    "duration": {
                      "type": "string",
                      "nullable": true,
                      "description": "Duration text"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Role description"
                    },
                    "skills": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true,
                      "description": "Skills for this role"
                    },
                    "startDate": {
                      "type": "object",
                      "properties": {
                        "month": {
                          "type": "string",
                          "nullable": true,
                          "description": "Month name"
                        },
                        "year": {
                          "type": "number",
                          "nullable": true,
                          "description": "Year"
                        },
                        "text": {
                          "type": "string",
                          "nullable": true,
                          "description": "Formatted date text"
                        }
                      },
                      "required": [
                        "month",
                        "year",
                        "text"
                      ],
                      "additionalProperties": false,
                      "nullable": true,
                      "description": "Start date"
                    },
                    "endDate": {
                      "type": "object",
                      "properties": {
                        "month": {
                          "type": "string",
                          "nullable": true,
                          "description": "Month name"
                        },
                        "year": {
                          "type": "number",
                          "nullable": true,
                          "description": "Year"
                        },
                        "text": {
                          "type": "string",
                          "nullable": true,
                          "description": "Formatted date text"
                        }
                      },
                      "required": [
                        "month",
                        "year",
                        "text"
                      ],
                      "additionalProperties": false,
                      "nullable": true,
                      "description": "End date"
                    }
                  },
                  "required": [
                    "position",
                    "location",
                    "employmentType",
                    "workplaceType",
                    "companyName",
                    "companyLinkedinUrl",
                    "duration",
                    "description",
                    "skills",
                    "startDate",
                    "endDate"
                  ],
                  "additionalProperties": false
                },
                "nullable": true,
                "description": "Work experience history"
              },
              "education": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "schoolName": {
                      "type": "string",
                      "nullable": true,
                      "description": "School name"
                    },
                    "schoolLinkedinUrl": {
                      "type": "string",
                      "nullable": true,
                      "description": "School LinkedIn URL"
                    },
                    "degree": {
                      "type": "string",
                      "nullable": true,
                      "description": "Degree type"
                    },
                    "fieldOfStudy": {
                      "type": "string",
                      "nullable": true,
                      "description": "Field of study"
                    },
                    "startDate": {
                      "type": "object",
                      "properties": {
                        "month": {
                          "type": "string",
                          "nullable": true,
                          "description": "Month name"
                        },
                        "year": {
                          "type": "number",
                          "nullable": true,
                          "description": "Year"
                        },
                        "text": {
                          "type": "string",
                          "nullable": true,
                          "description": "Formatted date text"
                        }
                      },
                      "required": [
                        "month",
                        "year",
                        "text"
                      ],
                      "additionalProperties": false,
                      "nullable": true,
                      "description": "Start date"
                    },
                    "endDate": {
                      "type": "object",
                      "properties": {
                        "month": {
                          "type": "string",
                          "nullable": true,
                          "description": "Month name"
                        },
                        "year": {
                          "type": "number",
                          "nullable": true,
                          "description": "Year"
                        },
                        "text": {
                          "type": "string",
                          "nullable": true,
                          "description": "Formatted date text"
                        }
                      },
                      "required": [
                        "month",
                        "year",
                        "text"
                      ],
                      "additionalProperties": false,
                      "nullable": true,
                      "description": "End date"
                    },
                    "period": {
                      "type": "string",
                      "nullable": true,
                      "description": "Period text"
                    }
                  },
                  "required": [
                    "schoolName",
                    "schoolLinkedinUrl",
                    "degree",
                    "fieldOfStudy",
                    "startDate",
                    "endDate",
                    "period"
                  ],
                  "additionalProperties": false
                },
                "nullable": true,
                "description": "Education history"
              },
              "certifications": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string",
                      "nullable": true
                    },
                    "issuedAt": {
                      "type": "string",
                      "nullable": true
                    },
                    "issuedBy": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "title",
                    "issuedAt",
                    "issuedBy"
                  ],
                  "additionalProperties": false
                },
                "nullable": true,
                "description": "Certifications"
              },
              "languages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "nullable": true
                    },
                    "proficiency": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "name",
                    "proficiency"
                  ],
                  "additionalProperties": false
                },
                "nullable": true,
                "description": "Languages"
              },
              "skills": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "additionalProperties": false
                },
                "nullable": true,
                "description": "All skills"
              }
            },
            "required": [
              "id",
              "publicIdentifier",
              "linkedinUrl",
              "firstName",
              "lastName",
              "headline",
              "about",
              "openToWork",
              "hiring",
              "photo",
              "premium",
              "influencer",
              "location",
              "verified",
              "topSkills",
              "connectionsCount",
              "followerCount",
              "currentPosition",
              "experience",
              "education",
              "certifications",
              "languages",
              "skills"
            ],
            "additionalProperties": false,
            "nullable": true,
            "description": "LinkedIn profile data (only for scrapeProfile operation)"
          },
          "jobs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "nullable": true,
                  "description": "Job ID"
                },
                "title": {
                  "type": "string",
                  "nullable": true,
                  "description": "Job title"
                },
                "company": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "nullable": true
                    },
                    "url": {
                      "type": "string",
                      "nullable": true
                    },
                    "logo": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "name",
                    "url",
                    "logo"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Company info"
                },
                "location": {
                  "type": "string",
                  "nullable": true,
                  "description": "Job location"
                },
                "description": {
                  "type": "string",
                  "nullable": true,
                  "description": "Job description"
                },
                "employmentType": {
                  "type": "string",
                  "nullable": true,
                  "description": "Employment type"
                },
                "seniorityLevel": {
                  "type": "string",
                  "nullable": true,
                  "description": "Seniority level"
                },
                "postedAt": {
                  "type": "string",
                  "nullable": true,
                  "description": "Posted date"
                },
                "url": {
                  "type": "string",
                  "nullable": true,
                  "description": "Job URL"
                },
                "applyUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Apply URL"
                },
                "salary": {
                  "type": "object",
                  "properties": {
                    "from": {
                      "type": "number",
                      "nullable": true
                    },
                    "to": {
                      "type": "number",
                      "nullable": true
                    },
                    "currency": {
                      "type": "string",
                      "nullable": true
                    },
                    "period": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "from",
                    "to",
                    "currency",
                    "period"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Salary info"
                },
                "skills": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Required skills"
                }
              },
              "required": [
                "id",
                "title",
                "company",
                "location",
                "description",
                "employmentType",
                "seniorityLevel",
                "postedAt",
                "url",
                "applyUrl",
                "salary",
                "skills"
              ],
              "additionalProperties": false
            },
            "description": "Array of LinkedIn jobs"
          },
          "posts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "urn": {
                  "type": "string",
                  "nullable": true,
                  "description": "Post URN"
                },
                "fullUrn": {
                  "type": "string",
                  "nullable": true,
                  "description": "Full URN with prefix"
                },
                "postedAt": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string",
                      "nullable": true,
                      "description": "Post date (formatted string)"
                    },
                    "relative": {
                      "type": "string",
                      "nullable": true,
                      "description": "Relative time (e.g., \"2 days ago\")"
                    },
                    "timestamp": {
                      "type": "number",
                      "nullable": true,
                      "description": "Unix timestamp in milliseconds"
                    }
                  },
                  "required": [
                    "date",
                    "relative",
                    "timestamp"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "When post was created"
                },
                "text": {
                  "type": "string",
                  "nullable": true,
                  "description": "Post text content"
                },
                "url": {
                  "type": "string",
                  "nullable": true,
                  "description": "Post URL"
                },
                "postType": {
                  "type": "string",
                  "nullable": true,
                  "description": "Post type (regular, quote, etc)"
                },
                "author": {
                  "type": "object",
                  "properties": {
                    "firstName": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author first name"
                    },
                    "lastName": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author last name"
                    },
                    "headline": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author headline/title"
                    },
                    "username": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author username"
                    },
                    "profileUrl": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author profile URL"
                    },
                    "profilePicture": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author profile picture URL"
                    }
                  },
                  "required": [
                    "firstName",
                    "lastName",
                    "headline",
                    "username",
                    "profileUrl",
                    "profilePicture"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Post author information"
                },
                "stats": {
                  "type": "object",
                  "properties": {
                    "totalReactions": {
                      "type": "number",
                      "nullable": true,
                      "description": "Total number of reactions"
                    },
                    "like": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of likes"
                    },
                    "support": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of support reactions"
                    },
                    "love": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of love reactions"
                    },
                    "insight": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of insight reactions"
                    },
                    "celebrate": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of celebrate reactions"
                    },
                    "funny": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of funny reactions"
                    },
                    "comments": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of comments"
                    },
                    "reposts": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of reposts"
                    }
                  },
                  "required": [
                    "totalReactions",
                    "like",
                    "support",
                    "love",
                    "insight",
                    "celebrate",
                    "funny",
                    "comments",
                    "reposts"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Post engagement statistics"
                },
                "media": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "nullable": true,
                      "description": "Media type (image, video, images)"
                    },
                    "url": {
                      "type": "string",
                      "nullable": true,
                      "description": "Media URL"
                    },
                    "thumbnail": {
                      "type": "string",
                      "nullable": true,
                      "description": "Media thumbnail URL"
                    },
                    "images": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "nullable": true
                          },
                          "width": {
                            "type": "number",
                            "nullable": true
                          },
                          "height": {
                            "type": "number",
                            "nullable": true
                          }
                        },
                        "required": [
                          "url",
                          "width",
                          "height"
                        ],
                        "additionalProperties": false
                      },
                      "nullable": true,
                      "description": "Array of images for multi-image posts"
                    }
                  },
                  "required": [
                    "type",
                    "url",
                    "thumbnail",
                    "images"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Post media content"
                },
                "article": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "nullable": true
                    },
                    "title": {
                      "type": "string",
                      "nullable": true
                    },
                    "subtitle": {
                      "type": "string",
                      "nullable": true
                    },
                    "thumbnail": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "url",
                    "title",
                    "subtitle",
                    "thumbnail"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Shared article information"
                },
                "document": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string",
                      "nullable": true
                    },
                    "pageCount": {
                      "type": "number",
                      "nullable": true
                    },
                    "url": {
                      "type": "string",
                      "nullable": true
                    },
                    "thumbnail": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "title",
                    "pageCount",
                    "url",
                    "thumbnail"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Shared document information"
                },
                "resharedPost": {
                  "type": "object",
                  "properties": {
                    "urn": {
                      "type": "string",
                      "nullable": true
                    },
                    "postedAt": {
                      "type": "object",
                      "properties": {
                        "date": {
                          "type": "string",
                          "nullable": true,
                          "description": "Post date (formatted string)"
                        },
                        "relative": {
                          "type": "string",
                          "nullable": true,
                          "description": "Relative time (e.g., \"2 days ago\")"
                        },
                        "timestamp": {
                          "type": "number",
                          "nullable": true,
                          "description": "Unix timestamp in milliseconds"
                        }
                      },
                      "required": [
                        "date",
                        "relative",
                        "timestamp"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    },
                    "text": {
                      "type": "string",
                      "nullable": true
                    },
                    "url": {
                      "type": "string",
                      "nullable": true
                    },
                    "postType": {
                      "type": "string",
                      "nullable": true
                    },
                    "author": {
                      "type": "object",
                      "properties": {
                        "firstName": {
                          "type": "string",
                          "nullable": true,
                          "description": "Author first name"
                        },
                        "lastName": {
                          "type": "string",
                          "nullable": true,
                          "description": "Author last name"
                        },
                        "headline": {
                          "type": "string",
                          "nullable": true,
                          "description": "Author headline/title"
                        },
                        "username": {
                          "type": "string",
                          "nullable": true,
                          "description": "Author username"
                        },
                        "profileUrl": {
                          "type": "string",
                          "nullable": true,
                          "description": "Author profile URL"
                        },
                        "profilePicture": {
                          "type": "string",
                          "nullable": true,
                          "description": "Author profile picture URL"
                        }
                      },
                      "required": [
                        "firstName",
                        "lastName",
                        "headline",
                        "username",
                        "profileUrl",
                        "profilePicture"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    },
                    "stats": {
                      "type": "object",
                      "properties": {
                        "totalReactions": {
                          "type": "number",
                          "nullable": true,
                          "description": "Total number of reactions"
                        },
                        "like": {
                          "type": "number",
                          "nullable": true,
                          "description": "Number of likes"
                        },
                        "support": {
                          "type": "number",
                          "nullable": true,
                          "description": "Number of support reactions"
                        },
                        "love": {
                          "type": "number",
                          "nullable": true,
                          "description": "Number of love reactions"
                        },
                        "insight": {
                          "type": "number",
                          "nullable": true,
                          "description": "Number of insight reactions"
                        },
                        "celebrate": {
                          "type": "number",
                          "nullable": true,
                          "description": "Number of celebrate reactions"
                        },
                        "funny": {
                          "type": "number",
                          "nullable": true,
                          "description": "Number of funny reactions"
                        },
                        "comments": {
                          "type": "number",
                          "nullable": true,
                          "description": "Number of comments"
                        },
                        "reposts": {
                          "type": "number",
                          "nullable": true,
                          "description": "Number of reposts"
                        }
                      },
                      "required": [
                        "totalReactions",
                        "like",
                        "support",
                        "love",
                        "insight",
                        "celebrate",
                        "funny",
                        "comments",
                        "reposts"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    },
                    "media": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "nullable": true,
                          "description": "Media type (image, video, images)"
                        },
                        "url": {
                          "type": "string",
                          "nullable": true,
                          "description": "Media URL"
                        },
                        "thumbnail": {
                          "type": "string",
                          "nullable": true,
                          "description": "Media thumbnail URL"
                        },
                        "images": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "nullable": true
                              },
                              "width": {
                                "type": "number",
                                "nullable": true
                              },
                              "height": {
                                "type": "number",
                                "nullable": true
                              }
                            },
                            "required": [
                              "url",
                              "width",
                              "height"
                            ],
                            "additionalProperties": false
                          },
                          "nullable": true,
                          "description": "Array of images for multi-image posts"
                        }
                      },
                      "required": [
                        "type",
                        "url",
                        "thumbnail",
                        "images"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    }
                  },
                  "required": [
                    "urn",
                    "postedAt",
                    "text",
                    "url",
                    "postType",
                    "author",
                    "stats",
                    "media"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Original post that was reshared"
                }
              },
              "required": [
                "urn",
                "fullUrn",
                "postedAt",
                "text",
                "url",
                "postType",
                "author",
                "stats",
                "media",
                "article",
                "document",
                "resharedPost"
              ],
              "additionalProperties": false
            },
            "description": "Array of LinkedIn posts"
          },
          "username": {
            "type": "string",
            "description": "LinkedIn username that was scraped (only for scrapePosts operation)"
          },
          "paginationToken": {
            "type": "string",
            "nullable": true,
            "description": "Token for fetching next page of results (only for scrapePosts operation)"
          },
          "keyword": {
            "type": "string",
            "description": "Search keyword that was used (only for searchPosts operation)"
          },
          "totalResults": {
            "type": "number",
            "nullable": true,
            "description": "Total results available (only for searchPosts operation)"
          },
          "hasNextPage": {
            "type": "boolean",
            "nullable": true,
            "description": "Whether there are more results (only for searchPosts operation)"
          },
          "totalPosts": {
            "type": "number",
            "description": "Total number of posts found"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "operation",
          "posts",
          "totalPosts",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of linkedin-tool bubble\nconst linkedinTool = new LinkedInTool({\n  operation: \"scrapeProfile\" // options: \"scrapeProfile\", \"scrapePosts\", \"searchPosts\", \"scrapeJobs\", // Operation to perform: scrapeProfile (get profile info from LinkedIn URL), scrapePosts (get posts from a profile), searchPosts (search posts by keyword), or scrapeJobs (search jobs),\n  profileUrl: \"example string\", // LinkedIn profile URL or username (for scrapeProfile operation). Examples: \"https://www.linkedin.com/in/williamhgates\", \"williamhgates\",\n  username: \"example string\", // LinkedIn username (for scrapePosts operation). Examples: \"satyanadella\", \"billgates\",\n  keyword: \"example string\", // Keyword or phrase to search for (for searchPosts/scrapeJobs). Examples: \"AI\", \"hiring\", \"Software Engineer\",\n  location: \"example string\", // Location for job search (e.g. \"San Francisco\", \"Remote\") (scrapeJobs only),\n  jobType: [\"full-time\" // options: \"full-time\", \"part-time\", \"contract\", \"temporary\", \"internship\"], // Filter by job type (scrapeJobs only),\n  workplaceType: [\"on-site\" // options: \"on-site\", \"remote\", \"hybrid\"], // Filter by workplace type (scrapeJobs only),\n  experienceLevel: [\"internship\" // options: \"internship\", \"entry-level\", \"associate\", \"mid-senior\", \"director\", \"executive\"], // Filter by experience level (scrapeJobs only),\n  sortBy: \"relevance\" // options: \"relevance\", \"date_posted\", // Sort results by relevance or date posted (for searchPosts operation, default: relevance),\n  dateFilter: \"past-24h\" // options: \"past-24h\", \"past-week\", \"past-month\", // Filter posts/jobs by date range (searchPosts/scrapeJobs). Options: past-24h, past-week, past-month. Leave empty for no date filter.,\n  limit: 50 // default, // Maximum number of items to fetch (default: 50),\n  pageNumber: 1 // default, // Page number for pagination (default: 1),\n});\n\nconst result = await linkedinTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"scrapeProfile\" | \"scrapePosts\" | \"searchPosts\" | \"scrapeJobs\" // Operation that was performed,\n//   profile: { id: string | null // LinkedIn member ID, publicIdentifier: string | null // Profile slug (e.g., \"williamhgates\"), linkedinUrl: string | null // Full LinkedIn profile URL, firstName: string | null // First name, lastName: string | null // Last name, headline: string | null // Profile headline, about: string | null // About/summary section, openToWork: boolean | null // Whether open to work, hiring: boolean | null // Whether actively hiring, photo: string | null // Profile photo URL, premium: boolean | null // Whether premium subscriber, influencer: boolean | null // Whether LinkedIn influencer, location: { text: string | null // Location text, countryCode: string | null // Country code, country: string | null // Country, state: string | null // State/region, city: string | null // City } | null // Location information, verified: boolean | null // Whether profile is verified, topSkills: string | null // Top skills summary, connectionsCount: number | null // Number of connections, followerCount: number | null // Number of followers, currentPosition: { companyName: string | null }[] | null // Current company/position, experience: { position: string | null // Job title/position, location: string | null // Job location, employmentType: string | null // Employment type, workplaceType: string | null // Workplace type, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, duration: string | null // Duration text, description: string | null // Role description, skills: string[] | null // Skills for this role, startDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // Start date, endDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // End date }[] | null // Work experience history, education: { schoolName: string | null // School name, schoolLinkedinUrl: string | null // School LinkedIn URL, degree: string | null // Degree type, fieldOfStudy: string | null // Field of study, startDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // Start date, endDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // End date, period: string | null // Period text }[] | null // Education history, certifications: { title: string | null, issuedAt: string | null, issuedBy: string | null }[] | null // Certifications, languages: { name: string | null, proficiency: string | null }[] | null // Languages, skills: { name: string | null }[] | null // All skills } | null | undefined // LinkedIn profile data (only for scrapeProfile operation),\n//   jobs: { id: string | null // Job ID, title: string | null // Job title, company: { name: string | null, url: string | null, logo: string | null } | null // Company info, location: string | null // Job location, description: string | null // Job description, employmentType: string | null // Employment type, seniorityLevel: string | null // Seniority level, postedAt: string | null // Posted date, url: string | null // Job URL, applyUrl: string | null // Apply URL, salary: { from: number | null, to: number | null, currency: string | null, period: string | null } | null // Salary info, skills: string[] | null // Required skills }[] | undefined // Array of LinkedIn jobs,\n//   posts: { urn: string | null // Post URN, fullUrn: string | null // Full URN with prefix, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null // When post was created, text: string | null // Post text content, url: string | null // Post URL, postType: string | null // Post type (regular, quote, etc), author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null // Post author information, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null // Post engagement statistics, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null // Post media content, article: { url: string | null, title: string | null, subtitle: string | null, thumbnail: string | null } | null // Shared article information, document: { title: string | null, pageCount: number | null, url: string | null, thumbnail: string | null } | null // Shared document information, resharedPost: { urn: string | null, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null, text: string | null, url: string | null, postType: string | null, author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null } | null // Original post that was reshared }[] // Array of LinkedIn posts,\n//   username: string | undefined // LinkedIn username that was scraped (only for scrapePosts operation),\n//   paginationToken: string | null | undefined // Token for fetching next page of results (only for scrapePosts operation),\n//   keyword: string | undefined // Search keyword that was used (only for searchPosts operation),\n//   totalResults: number | null | undefined // Total results available (only for searchPosts operation),\n//   hasNextPage: boolean | null | undefined // Whether there are more results (only for searchPosts operation),\n//   totalPosts: number // Total number of posts found,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "APIFY_CRED"
      ]
    },
    {
      "name": "tiktok-tool",
      "alias": "tiktok",
      "type": "tool",
      "shortDescription": "Scrape TikTok profiles, videos, and hashtags.",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  operation: \"scrapeProfile\" | \"scrapeHashtag\" | \"scrapeVideo\" // Operation that was performed,\n  videos: { id: string | null // Video ID, text: string | null // Video caption/description, createTime: number | null // Creation timestamp, createTimeISO: string | null // Creation time (ISO format), author: { id: string | null // Author user ID, uniqueId: string | null // Author username, nickname: string | null // Author display name, avatarThumb: string | null // Author avatar URL, signature: string | null // Author bio/signature, verified: boolean | null // Whether author is verified, followerCount: number | null // Number of followers, followingCount: number | null // Number of following, videoCount: number | null // Total number of videos, heartCount: number | null // Total likes received } | null // Video author information, stats: { diggCount: number | null // Number of likes, shareCount: number | null // Number of shares, commentCount: number | null // Number of comments, playCount: number | null // Number of plays/views, collectCount: number | null // Number of times collected } | null // Video engagement statistics, videoUrl: string | null // Video URL, webVideoUrl: string | null // Web video URL, covers: string[] | null // Array of cover image URLs, hashtags: { name: string | null }[] | null // Hashtags used in the video }[] // Array of scraped videos,\n  totalVideos: number // Total number of videos scraped,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "scrapeProfile",
              "scrapeHashtag",
              "scrapeVideo"
            ],
            "description": "Operation to perform"
          },
          "profiles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "TikTok profile URLs to scrape (for scrapeProfile)"
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Hashtags to scrape (for scrapeHashtag)"
          },
          "videoUrls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Video URLs to scrape (for scrapeVideo)"
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "default": 20,
            "description": "Number of results in total to fetch"
          },
          "shouldDownloadVideos": {
            "type": "boolean",
            "default": false,
            "description": "Whether to download video files"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "required": [
          "operation"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "scrapeProfile",
              "scrapeHashtag",
              "scrapeVideo"
            ],
            "description": "Operation that was performed"
          },
          "videos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "nullable": true,
                  "description": "Video ID"
                },
                "text": {
                  "type": "string",
                  "nullable": true,
                  "description": "Video caption/description"
                },
                "createTime": {
                  "type": "number",
                  "nullable": true,
                  "description": "Creation timestamp"
                },
                "createTimeISO": {
                  "type": "string",
                  "nullable": true,
                  "description": "Creation time (ISO format)"
                },
                "author": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author user ID"
                    },
                    "uniqueId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author username"
                    },
                    "nickname": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author display name"
                    },
                    "avatarThumb": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author avatar URL"
                    },
                    "signature": {
                      "type": "string",
                      "nullable": true,
                      "description": "Author bio/signature"
                    },
                    "verified": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "Whether author is verified"
                    },
                    "followerCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of followers"
                    },
                    "followingCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of following"
                    },
                    "videoCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Total number of videos"
                    },
                    "heartCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Total likes received"
                    }
                  },
                  "required": [
                    "id",
                    "uniqueId",
                    "nickname",
                    "avatarThumb",
                    "signature",
                    "verified",
                    "followerCount",
                    "followingCount",
                    "videoCount",
                    "heartCount"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Video author information"
                },
                "stats": {
                  "type": "object",
                  "properties": {
                    "diggCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of likes"
                    },
                    "shareCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of shares"
                    },
                    "commentCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of comments"
                    },
                    "playCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of plays/views"
                    },
                    "collectCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of times collected"
                    }
                  },
                  "required": [
                    "diggCount",
                    "shareCount",
                    "commentCount",
                    "playCount",
                    "collectCount"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Video engagement statistics"
                },
                "videoUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Video URL"
                },
                "webVideoUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Web video URL"
                },
                "covers": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Array of cover image URLs"
                },
                "hashtags": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "nullable": true
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Hashtags used in the video"
                }
              },
              "required": [
                "id",
                "text",
                "createTime",
                "createTimeISO",
                "author",
                "stats",
                "videoUrl",
                "webVideoUrl",
                "covers",
                "hashtags"
              ],
              "additionalProperties": false
            },
            "description": "Array of scraped videos"
          },
          "totalVideos": {
            "type": "number",
            "description": "Total number of videos scraped"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "operation",
          "videos",
          "totalVideos",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of tiktok-tool bubble\nconst tiktokTool = new TikTokTool({\n  operation: \"scrapeProfile\" // options: \"scrapeProfile\", \"scrapeHashtag\", \"scrapeVideo\", // Operation to perform,\n  profiles: [\"example string\"], // TikTok profile URLs to scrape (for scrapeProfile),\n  hashtags: [\"example string\"], // Hashtags to scrape (for scrapeHashtag),\n  videoUrls: [\"example string\"], // Video URLs to scrape (for scrapeVideo),\n  limit: 20 // default, // Number of results in total to fetch,\n  shouldDownloadVideos: false // default, // Whether to download video files,\n});\n\nconst result = await tiktokTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"scrapeProfile\" | \"scrapeHashtag\" | \"scrapeVideo\" // Operation that was performed,\n//   videos: { id: string | null // Video ID, text: string | null // Video caption/description, createTime: number | null // Creation timestamp, createTimeISO: string | null // Creation time (ISO format), author: { id: string | null // Author user ID, uniqueId: string | null // Author username, nickname: string | null // Author display name, avatarThumb: string | null // Author avatar URL, signature: string | null // Author bio/signature, verified: boolean | null // Whether author is verified, followerCount: number | null // Number of followers, followingCount: number | null // Number of following, videoCount: number | null // Total number of videos, heartCount: number | null // Total likes received } | null // Video author information, stats: { diggCount: number | null // Number of likes, shareCount: number | null // Number of shares, commentCount: number | null // Number of comments, playCount: number | null // Number of plays/views, collectCount: number | null // Number of times collected } | null // Video engagement statistics, videoUrl: string | null // Video URL, webVideoUrl: string | null // Web video URL, covers: string[] | null // Array of cover image URLs, hashtags: { name: string | null }[] | null // Hashtags used in the video }[] // Array of scraped videos,\n//   totalVideos: number // Total number of videos scraped,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "APIFY_CRED"
      ]
    },
    {
      "name": "twitter-tool",
      "alias": "twitter",
      "type": "tool",
      "shortDescription": "Scrape Twitter/X profiles, tweets, and search results with a simple, unified interface.",
      "useCase": "**",
      "outputSchema": "{\n  operation: \"scrapeProfile\" | \"search\" | \"scrapeUrl\" // Operation that was performed,\n  tweets: { id: string | null // Tweet ID, url: string | null // Tweet URL, text: string | null // Tweet text content, author: { id: string | null // User ID, name: string | null // User display name, userName: string | null // User handle (username), description: string | null // User bio, isVerified: boolean | null // Whether user is verified, isBlueVerified: boolean | null // Whether user has Twitter Blue, profilePicture: string | null // Profile picture URL, followers: number | null // Number of followers, following: number | null // Number of following, tweetsCount: number | null // Total number of tweets, url: string | null // Profile URL, createdAt: string | null // Account creation date } | null // Tweet author information, createdAt: string | null // Tweet creation date (ISO format), stats: { retweetCount: number | null, replyCount: number | null, likeCount: number | null, quoteCount: number | null, viewCount: number | null, bookmarkCount: number | null } | null // Tweet engagement statistics, lang: string | null // Tweet language code, media: { type: string | null, url: string | null, width: number | null, height: number | null, duration: number | null }[] | null // Media attachments, entities: { hashtags: string[] | null, urls: string[] | null, mentions: string[] | null } | null // Tweet entities, isRetweet: boolean | null, isQuote: boolean | null, isReply: boolean | null }[] // Array of scraped tweets,\n  totalTweets: number // Total number of tweets scraped,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "scrapeProfile",
              "search",
              "scrapeUrl"
            ],
            "description": "Operation to perform: scrapeProfile (get tweets from user handles), search (search tweets by query), scrapeUrl (scrape specific Twitter URLs)"
          },
          "twitterHandles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[scrapeProfile] Twitter handles/usernames to scrape (without @). Example: [\"elonmusk\", \"OpenAI\"]"
          },
          "searchTerms": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[search] Search queries. Supports advanced search syntax: https://github.com/igorbrigadir/twitter-advanced-search. Example: [\"AI news\", \"#machinelearning\"]"
          },
          "startUrls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[scrapeUrl] Direct Twitter URLs to scrape. Supports Tweet, Profile, Search, or List URLs. Example: [\"https://twitter.com/elonmusk/status/123456\"]"
          },
          "maxItems": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "default": 20,
            "description": "Maximum number of tweets to return (default: 20, max: 1000)"
          },
          "sort": {
            "type": "string",
            "enum": [
              "Top",
              "Latest"
            ],
            "description": "[search only] Sort results by \"Top\" (most relevant) or \"Latest\" (most recent)"
          },
          "tweetLanguage": {
            "type": "string",
            "description": "Filter tweets by language using ISO 639-1 code (e.g., \"en\" for English, \"es\" for Spanish)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "required": [
          "operation"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "scrapeProfile",
              "search",
              "scrapeUrl"
            ],
            "description": "Operation that was performed"
          },
          "tweets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "nullable": true,
                  "description": "Tweet ID"
                },
                "url": {
                  "type": "string",
                  "nullable": true,
                  "description": "Tweet URL"
                },
                "text": {
                  "type": "string",
                  "nullable": true,
                  "description": "Tweet text content"
                },
                "author": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "nullable": true,
                      "description": "User ID"
                    },
                    "name": {
                      "type": "string",
                      "nullable": true,
                      "description": "User display name"
                    },
                    "userName": {
                      "type": "string",
                      "nullable": true,
                      "description": "User handle (username)"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "User bio"
                    },
                    "isVerified": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "Whether user is verified"
                    },
                    "isBlueVerified": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "Whether user has Twitter Blue"
                    },
                    "profilePicture": {
                      "type": "string",
                      "nullable": true,
                      "description": "Profile picture URL"
                    },
                    "followers": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of followers"
                    },
                    "following": {
                      "type": "number",
                      "nullable": true,
                      "description": "Number of following"
                    },
                    "tweetsCount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Total number of tweets"
                    },
                    "url": {
                      "type": "string",
                      "nullable": true,
                      "description": "Profile URL"
                    },
                    "createdAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "Account creation date"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "userName",
                    "description",
                    "isVerified",
                    "isBlueVerified",
                    "profilePicture",
                    "followers",
                    "following",
                    "tweetsCount",
                    "url",
                    "createdAt"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Tweet author information"
                },
                "createdAt": {
                  "type": "string",
                  "nullable": true,
                  "description": "Tweet creation date (ISO format)"
                },
                "stats": {
                  "type": "object",
                  "properties": {
                    "retweetCount": {
                      "type": "number",
                      "nullable": true
                    },
                    "replyCount": {
                      "type": "number",
                      "nullable": true
                    },
                    "likeCount": {
                      "type": "number",
                      "nullable": true
                    },
                    "quoteCount": {
                      "type": "number",
                      "nullable": true
                    },
                    "viewCount": {
                      "type": "number",
                      "nullable": true
                    },
                    "bookmarkCount": {
                      "type": "number",
                      "nullable": true
                    }
                  },
                  "required": [
                    "retweetCount",
                    "replyCount",
                    "likeCount",
                    "quoteCount",
                    "viewCount",
                    "bookmarkCount"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Tweet engagement statistics"
                },
                "lang": {
                  "type": "string",
                  "nullable": true,
                  "description": "Tweet language code"
                },
                "media": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "nullable": true
                      },
                      "url": {
                        "type": "string",
                        "nullable": true
                      },
                      "width": {
                        "type": "number",
                        "nullable": true
                      },
                      "height": {
                        "type": "number",
                        "nullable": true
                      },
                      "duration": {
                        "type": "number",
                        "nullable": true
                      }
                    },
                    "required": [
                      "type",
                      "url",
                      "width",
                      "height",
                      "duration"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Media attachments"
                },
                "entities": {
                  "type": "object",
                  "properties": {
                    "hashtags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "urls": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "mentions": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    }
                  },
                  "required": [
                    "hashtags",
                    "urls",
                    "mentions"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Tweet entities"
                },
                "isRetweet": {
                  "type": "boolean",
                  "nullable": true
                },
                "isQuote": {
                  "type": "boolean",
                  "nullable": true
                },
                "isReply": {
                  "type": "boolean",
                  "nullable": true
                }
              },
              "required": [
                "id",
                "url",
                "text",
                "author",
                "createdAt",
                "stats",
                "lang",
                "media",
                "entities",
                "isRetweet",
                "isQuote",
                "isReply"
              ],
              "additionalProperties": false
            },
            "description": "Array of scraped tweets"
          },
          "totalTweets": {
            "type": "number",
            "description": "Total number of tweets scraped"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "operation",
          "tweets",
          "totalTweets",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of twitter-tool bubble\nconst twitterTool = new TwitterTool({\n  operation: \"scrapeProfile\" // options: \"scrapeProfile\", \"search\", \"scrapeUrl\", // Operation to perform: scrapeProfile (get tweets from user handles), search (search tweets by query), scrapeUrl (scrape specific Twitter URLs),\n  twitterHandles: [\"example string\"], // [scrapeProfile] Twitter handles/usernames to scrape (without @). Example: [\"elonmusk\", \"OpenAI\"],\n  searchTerms: [\"example string\"], // [search] Search queries. Supports advanced search syntax: https://github.com/igorbrigadir/twitter-advanced-search. Example: [\"AI news\", \"#machinelearning\"],\n  startUrls: [\"example string\"], // [scrapeUrl] Direct Twitter URLs to scrape. Supports Tweet, Profile, Search, or List URLs. Example: [\"https://twitter.com/elonmusk/status/123456\"],\n  maxItems: 20 // default, // Maximum number of tweets to return (default: 20, max: 1000),\n  sort: \"Top\" // options: \"Top\", \"Latest\", // [search only] Sort results by \"Top\" (most relevant) or \"Latest\" (most recent),\n  tweetLanguage: \"example string\", // Filter tweets by language using ISO 639-1 code (e.g., \"en\" for English, \"es\" for Spanish),\n});\n\nconst result = await twitterTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"scrapeProfile\" | \"search\" | \"scrapeUrl\" // Operation that was performed,\n//   tweets: { id: string | null // Tweet ID, url: string | null // Tweet URL, text: string | null // Tweet text content, author: { id: string | null // User ID, name: string | null // User display name, userName: string | null // User handle (username), description: string | null // User bio, isVerified: boolean | null // Whether user is verified, isBlueVerified: boolean | null // Whether user has Twitter Blue, profilePicture: string | null // Profile picture URL, followers: number | null // Number of followers, following: number | null // Number of following, tweetsCount: number | null // Total number of tweets, url: string | null // Profile URL, createdAt: string | null // Account creation date } | null // Tweet author information, createdAt: string | null // Tweet creation date (ISO format), stats: { retweetCount: number | null, replyCount: number | null, likeCount: number | null, quoteCount: number | null, viewCount: number | null, bookmarkCount: number | null } | null // Tweet engagement statistics, lang: string | null // Tweet language code, media: { type: string | null, url: string | null, width: number | null, height: number | null, duration: number | null }[] | null // Media attachments, entities: { hashtags: string[] | null, urls: string[] | null, mentions: string[] | null } | null // Tweet entities, isRetweet: boolean | null, isQuote: boolean | null, isReply: boolean | null }[] // Array of scraped tweets,\n//   totalTweets: number // Total number of tweets scraped,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "APIFY_CRED"
      ]
    },
    {
      "name": "google-maps-tool",
      "alias": "maps",
      "type": "tool",
      "shortDescription": "Scrape Google Maps business listings, reviews, and place data.",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  operation: \"search\" // Operation performed,\n  places: { title: string | null // Place name, placeId: string | null // Place ID, url: string | null // Place URL, address: string | null // Full address, category: string | null // Primary category, website: string | null // Website URL, phone: string | null // Phone number, rating: number | null // Average rating, reviewsCount: number | null // Total reviews, priceLevel: string | null // Price level, isAdvertisement: boolean | null // Is sponsored, location: { lat: number | null, lng: number | null } | null // Coordinates, openingHours: { day: string | null, hours: unknown }[] | null // Opening hours, reviews: { name: string | null // Reviewer name, rating: number | null // Rating (1-5), text: string | null // Review text, publishedAtDate: string | null // Publish date, likesCount: number | null // Number of likes, responseFromOwnerText: string | null // Owner response }[] | null // Recent reviews, imageUrls: string[] | null // Image URLs, additionalInfo: Record<string, string[]> | null // Additional attributes (accessibility, amenities, etc.) }[] // Found places,\n  totalPlaces: number // Total places found,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "search"
            ],
            "description": "Operation (only search supported)"
          },
          "queries": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "description": "Search queries (e.g. \"restaurants in NYC\")"
          },
          "location": {
            "type": "string",
            "description": "Location to focus search (e.g. \"New York, USA\")"
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 500,
            "default": 20,
            "description": "Maximum number of places to scrape per query"
          },
          "language": {
            "type": "string",
            "default": "en",
            "description": "Result language"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "required": [
          "operation",
          "queries"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "search"
            ],
            "description": "Operation performed"
          },
          "places": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "nullable": true,
                  "description": "Place name"
                },
                "placeId": {
                  "type": "string",
                  "nullable": true,
                  "description": "Place ID"
                },
                "url": {
                  "type": "string",
                  "nullable": true,
                  "description": "Place URL"
                },
                "address": {
                  "type": "string",
                  "nullable": true,
                  "description": "Full address"
                },
                "category": {
                  "type": "string",
                  "nullable": true,
                  "description": "Primary category"
                },
                "website": {
                  "type": "string",
                  "nullable": true,
                  "description": "Website URL"
                },
                "phone": {
                  "type": "string",
                  "nullable": true,
                  "description": "Phone number"
                },
                "rating": {
                  "type": "number",
                  "nullable": true,
                  "description": "Average rating"
                },
                "reviewsCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Total reviews"
                },
                "priceLevel": {
                  "type": "string",
                  "nullable": true,
                  "description": "Price level"
                },
                "isAdvertisement": {
                  "type": "boolean",
                  "nullable": true,
                  "description": "Is sponsored"
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "lat": {
                      "type": "number",
                      "nullable": true
                    },
                    "lng": {
                      "type": "number",
                      "nullable": true
                    }
                  },
                  "required": [
                    "lat",
                    "lng"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Coordinates"
                },
                "openingHours": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "day": {
                        "type": "string",
                        "nullable": true
                      },
                      "hours": {
                        "anyOf": [
                          {
                            "type": "string",
                            "nullable": true
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true
                          }
                        ]
                      }
                    },
                    "required": [
                      "day",
                      "hours"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Opening hours"
                },
                "reviews": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Reviewer name"
                      },
                      "rating": {
                        "type": "number",
                        "nullable": true,
                        "description": "Rating (1-5)"
                      },
                      "text": {
                        "type": "string",
                        "nullable": true,
                        "description": "Review text"
                      },
                      "publishedAtDate": {
                        "type": "string",
                        "nullable": true,
                        "description": "Publish date"
                      },
                      "likesCount": {
                        "type": "number",
                        "nullable": true,
                        "description": "Number of likes"
                      },
                      "responseFromOwnerText": {
                        "type": "string",
                        "nullable": true,
                        "description": "Owner response"
                      }
                    },
                    "required": [
                      "name",
                      "rating",
                      "text",
                      "publishedAtDate",
                      "likesCount",
                      "responseFromOwnerText"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Recent reviews"
                },
                "imageUrls": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Image URLs"
                },
                "additionalInfo": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "nullable": true,
                  "description": "Additional attributes (accessibility, amenities, etc.)"
                }
              },
              "required": [
                "title",
                "placeId",
                "url",
                "address",
                "category",
                "website",
                "phone",
                "rating",
                "reviewsCount",
                "priceLevel",
                "isAdvertisement",
                "location",
                "openingHours",
                "reviews",
                "imageUrls",
                "additionalInfo"
              ],
              "additionalProperties": false
            },
            "description": "Found places"
          },
          "totalPlaces": {
            "type": "number",
            "description": "Total places found"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "operation",
          "places",
          "totalPlaces",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of google-maps-tool bubble\nconst googleMapsTool = new GoogleMapsTool({\n  operation: \"search\", // Operation (only search supported),\n  queries: [\"example string\"], // Search queries (e.g. \"restaurants in NYC\"),\n  location: \"example string\", // Location to focus search (e.g. \"New York, USA\"),\n  limit: 20 // default, // Maximum number of places to scrape per query,\n  language: \"en\" // default, // Result language,\n});\n\nconst result = await googleMapsTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"search\" // Operation performed,\n//   places: { title: string | null // Place name, placeId: string | null // Place ID, url: string | null // Place URL, address: string | null // Full address, category: string | null // Primary category, website: string | null // Website URL, phone: string | null // Phone number, rating: number | null // Average rating, reviewsCount: number | null // Total reviews, priceLevel: string | null // Price level, isAdvertisement: boolean | null // Is sponsored, location: { lat: number | null, lng: number | null } | null // Coordinates, openingHours: { day: string | null, hours: unknown }[] | null // Opening hours, reviews: { name: string | null // Reviewer name, rating: number | null // Rating (1-5), text: string | null // Review text, publishedAtDate: string | null // Publish date, likesCount: number | null // Number of likes, responseFromOwnerText: string | null // Owner response }[] | null // Recent reviews, imageUrls: string[] | null // Image URLs, additionalInfo: Record<string, string[]> | null // Additional attributes (accessibility, amenities, etc.) }[] // Found places,\n//   totalPlaces: number // Total places found,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "APIFY_CRED"
      ]
    },
    {
      "name": "app-rankings-tool",
      "alias": "app-rankings",
      "type": "tool",
      "shortDescription": "Scrape Apple App Store and Google Play top free, paid, and grossing chart rankings across countries and categories.",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  operation: \"rankings\" // Operation performed,\n  rankings: { store: \"apple\" | \"google\" // Which app store this ranking is from, rank: number // Chart position (1-indexed), appName: string // App display name, appId: string // Unique app identifier, appUrl: string | null // Direct link to store listing, developer: string | null // Developer or publisher name, rating: unknown | null // Average user rating or \"Not enough reviews yet\", ratingCount: unknown | null // Total ratings count, price: string | null // Price (\"Free\" for free apps), category: string // Human-readable category name, chartType: string // Chart type (e.g., \"top-free\"), genres: string | null // Comma-separated genre tags, country: string // ISO country code, releaseDate: string | null // Original release date, iconUrl: string | null // App icon image URL, scrapedAt: string // When data was scraped (ISO 8601) }[] // App rankings,\n  totalApps: number // Total apps returned,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "rankings"
            ],
            "description": "Operation (only rankings supported)"
          },
          "stores": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "apple",
                "google"
              ]
            },
            "minItems": 1,
            "default": [
              "apple",
              "google"
            ],
            "description": "Array of stores to scrape: 'apple', 'google', or both. Default: ['apple', 'google']. Pass ['apple'] for App Store only."
          },
          "countries": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": [
              "us"
            ],
            "description": "Array of ISO 3166-1 alpha-2 country codes. Default: [\"us\"]. Example: [\"us\", \"jp\", \"de\"]"
          },
          "appleCategories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": [
              "overall"
            ],
            "description": "Array of Apple category IDs. Use \"overall\" for all apps. Common IDs: \"6014\" (Games), \"6015\" (Finance), \"6013\" (Health & Fitness), \"6020\" (Medical), \"6016\" (Entertainment), \"6005\" (Social Networking), \"6007\" (Productivity), \"6002\" (Utilities), \"6017\" (Education), \"6008\" (Lifestyle). Default: [\"overall\"]"
          },
          "googleCategories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "default": [
              "APPLICATION"
            ],
            "description": "Array of Google Play category IDs. Use \"APPLICATION\" for all apps. Common values: \"GAME\", \"FINANCE\", \"HEALTH_AND_FITNESS\", \"MEDICAL\", \"ENTERTAINMENT\", \"SOCIAL\", \"PRODUCTIVITY\", \"TOOLS\", \"EDUCATION\", \"LIFESTYLE\". Default: [\"APPLICATION\"]"
          },
          "chartType": {
            "type": "string",
            "enum": [
              "free",
              "paid",
              "grossing"
            ],
            "default": "free",
            "description": "Which chart to scrape. One of: 'free', 'paid', 'grossing'. Default: 'free'"
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 100,
            "default": 100,
            "description": "Number of apps to return per store/country/category combination (1-100, default: 100)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "required": [
          "operation"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "rankings"
            ],
            "description": "Operation performed"
          },
          "rankings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "store": {
                  "type": "string",
                  "enum": [
                    "apple",
                    "google"
                  ],
                  "description": "Which app store this ranking is from"
                },
                "rank": {
                  "type": "number",
                  "description": "Chart position (1-indexed)"
                },
                "appName": {
                  "type": "string",
                  "description": "App display name"
                },
                "appId": {
                  "type": "string",
                  "description": "Unique app identifier"
                },
                "appUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Direct link to store listing"
                },
                "developer": {
                  "type": "string",
                  "nullable": true,
                  "description": "Developer or publisher name"
                },
                "rating": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "nullable": true,
                  "description": "Average user rating or \"Not enough reviews yet\""
                },
                "ratingCount": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "nullable": true,
                  "description": "Total ratings count"
                },
                "price": {
                  "type": "string",
                  "nullable": true,
                  "description": "Price (\"Free\" for free apps)"
                },
                "category": {
                  "type": "string",
                  "description": "Human-readable category name"
                },
                "chartType": {
                  "type": "string",
                  "description": "Chart type (e.g., \"top-free\")"
                },
                "genres": {
                  "type": "string",
                  "nullable": true,
                  "description": "Comma-separated genre tags"
                },
                "country": {
                  "type": "string",
                  "description": "ISO country code"
                },
                "releaseDate": {
                  "type": "string",
                  "nullable": true,
                  "description": "Original release date"
                },
                "iconUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "App icon image URL"
                },
                "scrapedAt": {
                  "type": "string",
                  "description": "When data was scraped (ISO 8601)"
                }
              },
              "required": [
                "store",
                "rank",
                "appName",
                "appId",
                "appUrl",
                "developer",
                "rating",
                "ratingCount",
                "price",
                "category",
                "chartType",
                "genres",
                "country",
                "releaseDate",
                "iconUrl",
                "scrapedAt"
              ],
              "additionalProperties": false
            },
            "description": "App rankings"
          },
          "totalApps": {
            "type": "number",
            "description": "Total apps returned"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "operation",
          "rankings",
          "totalApps",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of app-rankings-tool bubble\nconst appRankingsTool = new AppRankingsTool({\n  operation: \"rankings\", // Operation (only rankings supported),\n  stores: [\"apple\",\"google\"] // default, // Array of stores to scrape: 'apple', 'google', or both. Default: ['apple', 'google']. Pass ['apple'] for App Store only.,\n  countries: [\"us\"] // default, // Array of ISO 3166-1 alpha-2 country codes. Default: [\"us\"]. Example: [\"us\", \"jp\", \"de\"],\n  appleCategories: [\"overall\"] // default, // Array of Apple category IDs. Use \"overall\" for all apps. Common IDs: \"6014\" (Games), \"6015\" (Finance), \"6013\" (Health & Fitness), \"6020\" (Medical), \"6016\" (Entertainment), \"6005\" (Social Networking), \"6007\" (Productivity), \"6002\" (Utilities), \"6017\" (Education), \"6008\" (Lifestyle). Default: [\"overall\"],\n  googleCategories: [\"APPLICATION\"] // default, // Array of Google Play category IDs. Use \"APPLICATION\" for all apps. Common values: \"GAME\", \"FINANCE\", \"HEALTH_AND_FITNESS\", \"MEDICAL\", \"ENTERTAINMENT\", \"SOCIAL\", \"PRODUCTIVITY\", \"TOOLS\", \"EDUCATION\", \"LIFESTYLE\". Default: [\"APPLICATION\"],\n  chartType: \"free\" // options: \"free\", \"paid\", \"grossing\", // Which chart to scrape. One of: 'free', 'paid', 'grossing'. Default: 'free',\n  limit: 100 // default, // Number of apps to return per store/country/category combination (1-100, default: 100),\n});\n\nconst result = await appRankingsTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"rankings\" // Operation performed,\n//   rankings: { store: \"apple\" | \"google\" // Which app store this ranking is from, rank: number // Chart position (1-indexed), appName: string // App display name, appId: string // Unique app identifier, appUrl: string | null // Direct link to store listing, developer: string | null // Developer or publisher name, rating: unknown | null // Average user rating or \"Not enough reviews yet\", ratingCount: unknown | null // Total ratings count, price: string | null // Price (\"Free\" for free apps), category: string // Human-readable category name, chartType: string // Chart type (e.g., \"top-free\"), genres: string | null // Comma-separated genre tags, country: string // ISO country code, releaseDate: string | null // Original release date, iconUrl: string | null // App icon image URL, scrapedAt: string // When data was scraped (ISO 8601) }[] // App rankings,\n//   totalApps: number // Total apps returned,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "APIFY_CRED"
      ]
    },
    {
      "name": "youtube-tool",
      "alias": "yt",
      "type": "tool",
      "shortDescription": "Search YouTube videos, extract transcripts, and scrape channel content with a simple interface",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  operation: \"searchVideos\" | \"getTranscript\" | \"scrapeChannel\" // Operation performed,\n  videos: { title: string | null // Video title, id: string | null // YouTube video ID, url: string | null // Video URL, viewCount: number | null // Number of views, likes: number | null // Number of likes, date: string | null // Upload date (ISO format), channelName: string | null // Channel name, channelUrl: string | null // Channel URL, subscribers: number | null // Number of channel subscribers, duration: string | null // Video duration (HH:MM:SS), description: string | null // Video description, comments: number | null // Number of comments, thumbnail: string | null // Thumbnail URL }[] | undefined // Array of YouTube videos,\n  transcript: { start: string | null // Start time in seconds, duration: string | null // Duration in seconds, text: string | null // Transcript text }[] | undefined // Video transcript with timestamps,\n  fullTranscriptText: string | undefined // Complete transcript as plain text,\n  totalResults: number // Total number of results,\n  success: boolean // Whether operation succeeded,\n  error: string // Error message if failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "searchVideos",
              "getTranscript",
              "scrapeChannel"
            ],
            "description": "Operation: searchVideos for search/URLs, getTranscript for transcripts, scrapeChannel for channel videos. Not all videos will have transcript available."
          },
          "searchQueries": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Search queries for YouTube (for searchVideos). Examples: [\"AI tutorials\", \"react hooks\"]"
          },
          "videoUrls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "Direct YouTube URLs - videos, channels, playlists (for searchVideos or getTranscript)"
          },
          "channelUrl": {
            "type": "string",
            "description": "YouTube channel URL (for scrapeChannel operation)"
          },
          "videoUrl": {
            "type": "string",
            "format": "uri",
            "description": "Single video URL for transcript extraction (for getTranscript)"
          },
          "maxResults": {
            "type": "number",
            "minimum": 0,
            "maximum": 200,
            "default": 20,
            "description": "Max videos to fetch (default: 20)"
          },
          "includeShorts": {
            "type": "boolean",
            "default": false,
            "description": "Include YouTube Shorts in results"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "required": [
          "operation"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "searchVideos",
              "getTranscript",
              "scrapeChannel"
            ],
            "description": "Operation performed"
          },
          "videos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "nullable": true,
                  "description": "Video title"
                },
                "id": {
                  "type": "string",
                  "nullable": true,
                  "description": "YouTube video ID"
                },
                "url": {
                  "type": "string",
                  "nullable": true,
                  "description": "Video URL"
                },
                "viewCount": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of views"
                },
                "likes": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of likes"
                },
                "date": {
                  "type": "string",
                  "nullable": true,
                  "description": "Upload date (ISO format)"
                },
                "channelName": {
                  "type": "string",
                  "nullable": true,
                  "description": "Channel name"
                },
                "channelUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Channel URL"
                },
                "subscribers": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of channel subscribers"
                },
                "duration": {
                  "type": "string",
                  "nullable": true,
                  "description": "Video duration (HH:MM:SS)"
                },
                "description": {
                  "type": "string",
                  "nullable": true,
                  "description": "Video description"
                },
                "comments": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of comments"
                },
                "thumbnail": {
                  "type": "string",
                  "nullable": true,
                  "description": "Thumbnail URL"
                }
              },
              "required": [
                "title",
                "id",
                "url",
                "viewCount",
                "likes",
                "date",
                "channelName",
                "channelUrl",
                "subscribers",
                "duration",
                "description",
                "comments",
                "thumbnail"
              ],
              "additionalProperties": false
            },
            "description": "Array of YouTube videos"
          },
          "transcript": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "start": {
                  "type": "string",
                  "nullable": true,
                  "description": "Start time in seconds"
                },
                "duration": {
                  "type": "string",
                  "nullable": true,
                  "description": "Duration in seconds"
                },
                "text": {
                  "type": "string",
                  "nullable": true,
                  "description": "Transcript text"
                }
              },
              "required": [
                "start",
                "duration",
                "text"
              ],
              "additionalProperties": false
            },
            "description": "Video transcript with timestamps"
          },
          "fullTranscriptText": {
            "type": "string",
            "description": "Complete transcript as plain text"
          },
          "totalResults": {
            "type": "number",
            "description": "Total number of results"
          },
          "success": {
            "type": "boolean",
            "description": "Whether operation succeeded"
          },
          "error": {
            "type": "string",
            "description": "Error message if failed"
          }
        },
        "required": [
          "operation",
          "totalResults",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of youtube-tool bubble\nconst youtubeTool = new YouTubeTool({\n  operation: \"searchVideos\" // options: \"searchVideos\", \"getTranscript\", \"scrapeChannel\", // Operation: searchVideos for search/URLs, getTranscript for transcripts, scrapeChannel for channel videos. Not all videos will have transcript available.,\n  searchQueries: [\"example string\"], // Search queries for YouTube (for searchVideos). Examples: [\"AI tutorials\", \"react hooks\"],\n  videoUrls: [\"example string\"], // Direct YouTube URLs - videos, channels, playlists (for searchVideos or getTranscript),\n  channelUrl: \"example string\", // YouTube channel URL (for scrapeChannel operation),\n  videoUrl: \"example string\", // Single video URL for transcript extraction (for getTranscript),\n  maxResults: 20 // default, // Max videos to fetch (default: 20),\n  includeShorts: false // default, // Include YouTube Shorts in results,\n});\n\nconst result = await youtubeTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"searchVideos\" | \"getTranscript\" | \"scrapeChannel\" // Operation performed,\n//   videos: { title: string | null // Video title, id: string | null // YouTube video ID, url: string | null // Video URL, viewCount: number | null // Number of views, likes: number | null // Number of likes, date: string | null // Upload date (ISO format), channelName: string | null // Channel name, channelUrl: string | null // Channel URL, subscribers: number | null // Number of channel subscribers, duration: string | null // Video duration (HH:MM:SS), description: string | null // Video description, comments: number | null // Number of comments, thumbnail: string | null // Thumbnail URL }[] | undefined // Array of YouTube videos,\n//   transcript: { start: string | null // Start time in seconds, duration: string | null // Duration in seconds, text: string | null // Transcript text }[] | undefined // Video transcript with timestamps,\n//   fullTranscriptText: string | undefined // Complete transcript as plain text,\n//   totalResults: number // Total number of results,\n//   success: boolean // Whether operation succeeded,\n//   error: string // Error message if failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "APIFY_CRED"
      ]
    },
    {
      "name": "web-crawl-tool",
      "alias": "crawl",
      "type": "tool",
      "shortDescription": "Multi-page web crawling tool for exploring entire websites and subdomains.",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  url: string // The original URL that was crawled,\n  success: boolean // Whether the crawl operation was successful,\n  error: string // Error message if crawl failed,\n  pages: { url: string, title: string | undefined, content: string, depth: number | undefined }[] // Array of crawled pages with content,\n  totalPages: number // Total number of pages crawled,\n  creditsUsed: number // Number of credits used,\n  metadata: { loadTime: number | undefined, crawlDepth: number | undefined, maxPagesReached: boolean | undefined } | undefined // Additional metadata about the crawl operation\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The root URL to crawl and extract content from"
          },
          "format": {
            "type": "string",
            "enum": [
              "markdown"
            ],
            "default": "markdown",
            "description": "Output format for crawled content"
          },
          "onlyMainContent": {
            "type": "boolean",
            "default": true,
            "description": "Extract only main content, filtering out navigation/footers"
          },
          "maxPages": {
            "type": "number",
            "minimum": 1,
            "maximum": 100,
            "default": 10,
            "description": "Maximum number of pages to crawl"
          },
          "crawlDepth": {
            "type": "number",
            "minimum": 1,
            "maximum": 5,
            "default": 2,
            "description": "Maximum depth to crawl"
          },
          "includePaths": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "URL patterns to include in crawl (regex patterns), Example: [\"^/blog/.*$\", \"^/docs/.*$\"]"
          },
          "excludePaths": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "URL patterns to exclude from crawl (regex patterns), [\"^/admin/.*$\", \"^/private/.*$\"]"
          },
          "waitFor": {
            "type": "number",
            "minimum": 0,
            "maximum": 30000,
            "default": 3000,
            "description": "Time to wait for dynamic content in milliseconds"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials including FIRECRAWL_API_KEY"
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The original URL that was crawled"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the crawl operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if crawl failed"
          },
          "pages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "title": {
                  "type": "string"
                },
                "content": {
                  "type": "string"
                },
                "depth": {
                  "type": "number"
                }
              },
              "required": [
                "url",
                "content"
              ],
              "additionalProperties": false
            },
            "description": "Array of crawled pages with content"
          },
          "totalPages": {
            "type": "number",
            "description": "Total number of pages crawled"
          },
          "creditsUsed": {
            "type": "number",
            "description": "Number of credits used"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "loadTime": {
                "type": "number"
              },
              "crawlDepth": {
                "type": "number"
              },
              "maxPagesReached": {
                "type": "boolean"
              }
            },
            "additionalProperties": false,
            "description": "Additional metadata about the crawl operation"
          }
        },
        "required": [
          "url",
          "success",
          "error",
          "pages",
          "totalPages",
          "creditsUsed"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of web-crawl-tool bubble\nconst webCrawlTool = new WebCrawlTool({\n  url: \"example string\", // The root URL to crawl and extract content from,\n  format: \"markdown\", // Output format for crawled content,\n  onlyMainContent: true // default, // Extract only main content, filtering out navigation/footers,\n  maxPages: 10 // default, // Maximum number of pages to crawl,\n  crawlDepth: 2 // default, // Maximum depth to crawl,\n  includePaths: [\"example string\"], // URL patterns to include in crawl (regex patterns), Example: [\"^/blog/.*$\", \"^/docs/.*$\"],\n  excludePaths: [\"example string\"], // URL patterns to exclude from crawl (regex patterns), [\"^/admin/.*$\", \"^/private/.*$\"],\n  waitFor: 3000 // default, // Time to wait for dynamic content in milliseconds,\n});\n\nconst result = await webCrawlTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   url: string // The original URL that was crawled,\n//   success: boolean // Whether the crawl operation was successful,\n//   error: string // Error message if crawl failed,\n//   pages: { url: string, title: string | undefined, content: string, depth: number | undefined }[] // Array of crawled pages with content,\n//   totalPages: number // Total number of pages crawled,\n//   creditsUsed: number // Number of credits used,\n//   metadata: { loadTime: number | undefined, crawlDepth: number | undefined, maxPagesReached: boolean | undefined } | undefined // Additional metadata about the crawl operation\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "FIRECRAWL_API_KEY",
        "GOOGLE_GEMINI_CRED"
      ]
    },
    {
      "name": "eleven-labs",
      "alias": "elevenlabs",
      "type": "service",
      "shortDescription": "Eleven Labs integration for Conversational AI",
      "useCase": "- Generate signed URLs for secure WebSocket connections to agents",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_signed_url"
                ],
                "description": "Get a signed URL for authenticated WebSocket connection"
              },
              "agentId": {
                "type": "string",
                "description": "The ID of the agent to connect to"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "agentId"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "trigger_outbound_call"
                ],
                "description": "Trigger an outbound call to a phone number"
              },
              "agentId": {
                "type": "string",
                "description": "The ID of the agent to use for the call"
              },
              "toPhoneNumber": {
                "type": "string",
                "description": "The phone number to call (E.164 format)"
              },
              "phoneNumberId": {
                "type": "string",
                "description": "The ID of the phone number to call from (optional)"
              },
              "variables": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Dynamic variables to pass to the agent"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "agentId",
              "toPhoneNumber"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_agent"
                ],
                "description": "Get details about an agent"
              },
              "agentId": {
                "type": "string",
                "description": "The ID of the agent to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "agentId"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "validate_webhook_signature"
                ],
                "description": "Validate a webhook signature from Eleven Labs"
              },
              "signature": {
                "type": "string",
                "description": "The signature header from the webhook request"
              },
              "timestamp": {
                "type": "string",
                "description": "The timestamp header from the webhook request"
              },
              "body": {
                "type": "string",
                "description": "The raw body of the webhook request"
              },
              "webhookSecret": {
                "type": "string",
                "description": "The webhook secret to validate against"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "signature",
              "timestamp",
              "body",
              "webhookSecret"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_conversation"
                ],
                "description": "Get details of a specific conversation"
              },
              "conversationId": {
                "type": "string",
                "description": "The ID of the conversation to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "conversationId"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_conversations"
                ],
                "description": "Get a list of conversations"
              },
              "agentId": {
                "type": "string",
                "description": "Filter conversations by agent ID"
              },
              "pageSize": {
                "type": "number",
                "description": "Number of conversations to return (default: 30)"
              },
              "cursor": {
                "type": "string",
                "description": "Cursor for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_signed_url"
                ]
              },
              "signedUrl": {
                "type": "string",
                "description": "The signed URL for WebSocket connection"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if the operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "trigger_outbound_call"
                ]
              },
              "callSid": {
                "type": "string",
                "description": "The unique identifier for the call"
              },
              "conversationId": {
                "type": "string",
                "description": "The unique identifier for the conversation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if the operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_agent"
                ]
              },
              "agent": {
                "type": "object",
                "additionalProperties": {},
                "description": "The agent details"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if the operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "validate_webhook_signature"
                ]
              },
              "isValid": {
                "type": "boolean",
                "description": "Whether the signature is valid"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if the operation failed"
              }
            },
            "required": [
              "operation",
              "isValid",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_conversation"
                ]
              },
              "conversation": {
                "type": "object",
                "additionalProperties": {},
                "description": "The conversation details"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if the operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_conversations"
                ]
              },
              "conversations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                },
                "description": "List of conversations"
              },
              "hasMore": {
                "type": "boolean",
                "description": "Whether there are more conversations to retrieve"
              },
              "nextCursor": {
                "type": "string",
                "description": "Cursor for the next page of results"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if the operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Get Signed Url example\nconst elevenLabs_get_signed_url = new ElevenLabsBubble({\n  operation: \"get_signed_url\", // Get a signed URL for authenticated WebSocket connection\n  agentId: \"example string\", // The ID of the agent to connect to\n});\n\nconst result = await elevenLabs_get_signed_url.action();\n// outputSchema for result.data when operation === 'get_signed_url':\n// {\n//   operation: \"get_signed_url\",\n//   signedUrl: string | undefined // The signed URL for WebSocket connection,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if the operation failed\n// }\n\n\n// Trigger Outbound Call example\nconst elevenLabs_trigger_outbound_call = new ElevenLabsBubble({\n  operation: \"trigger_outbound_call\", // Trigger an outbound call to a phone number\n  agentId: \"example string\", // The ID of the agent to use for the call\n  toPhoneNumber: \"example string\", // The phone number to call (E.164 format)\n  phoneNumberId: \"example string\", // The ID of the phone number to call from (optional)\n  variables: { \"example_key\": \"example string\" }, // Dynamic variables to pass to the agent\n});\n\nconst result = await elevenLabs_trigger_outbound_call.action();\n// outputSchema for result.data when operation === 'trigger_outbound_call':\n// {\n//   operation: \"trigger_outbound_call\",\n//   callSid: string | undefined // The unique identifier for the call,\n//   conversationId: string | undefined // The unique identifier for the conversation,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if the operation failed\n// }\n\n\n// Get Agent example\nconst elevenLabs_get_agent = new ElevenLabsBubble({\n  operation: \"get_agent\", // Get details about an agent\n  agentId: \"example string\", // The ID of the agent to retrieve\n});\n\nconst result = await elevenLabs_get_agent.action();\n// outputSchema for result.data when operation === 'get_agent':\n// {\n//   operation: \"get_agent\",\n//   agent: Record<string, unknown> | undefined // The agent details,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if the operation failed\n// }\n\n\n// Validate Webhook Signature example\nconst elevenLabs_validate_webhook_signature = new ElevenLabsBubble({\n  operation: \"validate_webhook_signature\", // Validate a webhook signature from Eleven Labs\n  signature: \"example string\", // The signature header from the webhook request\n  timestamp: \"example string\", // The timestamp header from the webhook request\n  body: \"example string\", // The raw body of the webhook request\n  webhookSecret: \"example string\", // The webhook secret to validate against\n});\n\nconst result = await elevenLabs_validate_webhook_signature.action();\n// outputSchema for result.data when operation === 'validate_webhook_signature':\n// {\n//   operation: \"validate_webhook_signature\",\n//   isValid: boolean // Whether the signature is valid,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if the operation failed\n// }\n\n\n// Get Conversation example\nconst elevenLabs_get_conversation = new ElevenLabsBubble({\n  operation: \"get_conversation\", // Get details of a specific conversation\n  conversationId: \"example string\", // The ID of the conversation to retrieve\n});\n\nconst result = await elevenLabs_get_conversation.action();\n// outputSchema for result.data when operation === 'get_conversation':\n// {\n//   operation: \"get_conversation\",\n//   conversation: Record<string, unknown> | undefined // The conversation details,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if the operation failed\n// }\n\n\n// Get Conversations example\nconst elevenLabs_get_conversations = new ElevenLabsBubble({\n  operation: \"get_conversations\", // Get a list of conversations\n  agentId: \"example string\", // Filter conversations by agent ID\n  pageSize: 42, // Number of conversations to return (default: 30)\n  cursor: \"example string\", // Cursor for pagination\n});\n\nconst result = await elevenLabs_get_conversations.action();\n// outputSchema for result.data when operation === 'get_conversations':\n// {\n//   operation: \"get_conversations\",\n//   conversations: Record<string, unknown>[] | undefined // List of conversations,\n//   hasMore: boolean | undefined // Whether there are more conversations to retrieve,\n//   nextCursor: string | undefined // Cursor for the next page of results,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if the operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`eleven-labs failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "ELEVENLABS_API_KEY"
      ]
    },
    {
      "name": "agi-inc",
      "alias": "agi-inc",
      "type": "service",
      "shortDescription": "AGI Agent integration for browser automation and task execution",
      "useCase": "- Internet research and data extraction",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_session"
                ],
                "description": "Create a new agent session with a browser environment"
              },
              "agent_name": {
                "type": "string",
                "enum": [
                  "agi-0",
                  "agi-0-fast"
                ],
                "description": "Agent model to use",
                "default": "agi-0"
              },
              "webhook_url": {
                "type": "string",
                "format": "uri",
                "description": "URL to receive webhook notifications for session events"
              },
              "restore_from_session_id": {
                "type": "string",
                "format": "uuid",
                "description": "Restore session from a specific session snapshot"
              },
              "restore_default_environment_from_user_id": {
                "type": "string",
                "description": "Restore from user default environment snapshot"
              },
              "enable_memory_snapshot": {
                "type": "boolean",
                "default": true,
                "description": "Enable memory snapshots for faster restoration"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_sessions"
                ],
                "description": "Get all sessions for the authenticated user"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_session"
                ],
                "description": "Get details for a specific session"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_session"
                ],
                "description": "Delete a specific session and cleanup resources"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session to delete"
              },
              "save_snapshot_mode": {
                "type": "string",
                "enum": [
                  "none",
                  "memory",
                  "filesystem"
                ],
                "description": "Snapshot mode when deleting",
                "default": "none"
              },
              "save_as_default": {
                "type": "boolean",
                "default": false,
                "description": "Set snapshot as user default environment"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_all_sessions"
                ],
                "description": "Delete all sessions for the authenticated user"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ],
                "description": "Send a message to the agent to start a task or respond"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session"
              },
              "message": {
                "type": "string",
                "minLength": 1,
                "maxLength": 10000,
                "description": "The message text to send to the agent"
              },
              "start_url": {
                "type": "string",
                "format": "uri",
                "description": "Optional starting URL for the agent to navigate to"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id",
              "message"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_status"
                ],
                "description": "Get the current execution status of a session"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_messages"
                ],
                "description": "Poll for messages and updates from the agent"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session"
              },
              "after_id": {
                "type": "integer",
                "minimum": 0,
                "default": 0,
                "description": "Return only messages with ID greater than this value"
              },
              "sanitize": {
                "type": "boolean",
                "default": true,
                "description": "Filter out system messages and internal prompts"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "pause_session"
                ],
                "description": "Temporarily pause task execution"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session to pause"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "resume_session"
                ],
                "description": "Resume a paused task"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session to resume"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "cancel_session"
                ],
                "description": "Cancel the current task execution"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session to cancel"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "navigate"
                ],
                "description": "Navigate the browser to a specific URL"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "minLength": 1,
                "maxLength": 2000,
                "description": "Absolute URL to navigate to"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id",
              "url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_screenshot"
                ],
                "description": "Capture a screenshot of the current browser state"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "minLength": 1,
                "description": "The UUID of the session"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_session"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "description": "Created session ID"
              },
              "vnc_url": {
                "type": "string",
                "description": "URL to view the browser"
              },
              "agent_name": {
                "type": "string",
                "description": "Agent model being used"
              },
              "status": {
                "type": "string",
                "enum": [
                  "initializing",
                  "ready",
                  "running",
                  "paused",
                  "completed",
                  "error",
                  "terminated"
                ],
                "description": "Session status"
              },
              "created_at": {
                "type": "string",
                "description": "Creation timestamp"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_sessions"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "sessions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "session_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Unique session identifier"
                    },
                    "vnc_url": {
                      "type": "string",
                      "description": "URL to view the browser"
                    },
                    "agent_name": {
                      "type": "string",
                      "description": "Agent model being used"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "initializing",
                        "ready",
                        "running",
                        "paused",
                        "completed",
                        "error",
                        "terminated"
                      ],
                      "description": "Current session status"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "ISO 8601 creation timestamp"
                    }
                  },
                  "required": [
                    "session_id",
                    "agent_name",
                    "status",
                    "created_at"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of sessions"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_session"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "session": {
                "type": "object",
                "properties": {
                  "session_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Unique session identifier"
                  },
                  "vnc_url": {
                    "type": "string",
                    "description": "URL to view the browser"
                  },
                  "agent_name": {
                    "type": "string",
                    "description": "Agent model being used"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "initializing",
                      "ready",
                      "running",
                      "paused",
                      "completed",
                      "error",
                      "terminated"
                    ],
                    "description": "Current session status"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  }
                },
                "required": [
                  "session_id",
                  "agent_name",
                  "status",
                  "created_at"
                ],
                "additionalProperties": false,
                "description": "Session details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_session"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "deleted": {
                "type": "boolean",
                "description": "Whether session was deleted"
              },
              "message": {
                "type": "string",
                "description": "Result message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_all_sessions"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "deleted": {
                "type": "boolean",
                "description": "Whether sessions were deleted"
              },
              "message": {
                "type": "string",
                "description": "Result message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "message": {
                "type": "string",
                "description": "Confirmation message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_status"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "status": {
                "type": "string",
                "enum": [
                  "running",
                  "waiting_for_input",
                  "finished",
                  "error"
                ],
                "description": "Current execution status"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_messages"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "messages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Unique message ID"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "THOUGHT",
                        "QUESTION",
                        "USER",
                        "DONE",
                        "ERROR",
                        "LOG"
                      ],
                      "description": "Message type"
                    },
                    "content": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "object",
                          "additionalProperties": {}
                        }
                      ],
                      "description": "Message content"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "ISO 8601 timestamp"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Additional metadata"
                    }
                  },
                  "required": [
                    "id",
                    "type",
                    "content",
                    "timestamp"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of messages"
              },
              "status": {
                "type": "string",
                "enum": [
                  "running",
                  "waiting_for_input",
                  "finished",
                  "error"
                ],
                "description": "Current execution status"
              },
              "has_agent": {
                "type": "boolean",
                "description": "Whether agent is connected"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "pause_session"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "message": {
                "type": "string",
                "description": "Result message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "resume_session"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "message": {
                "type": "string",
                "description": "Result message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "cancel_session"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "message": {
                "type": "string",
                "description": "Result message"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "navigate"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "current_url": {
                "type": "string",
                "description": "Current URL after navigation"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_screenshot"
                ]
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the API call was successful"
              },
              "screenshot": {
                "type": "string",
                "description": "Base64-encoded JPEG image as data URL"
              },
              "url": {
                "type": "string",
                "description": "Current page URL"
              },
              "title": {
                "type": "string",
                "description": "Current page title"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "error",
              "success"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Create Session example\nconst agiInc_create_session = new AGIIncBubble({\n  operation: \"create_session\", // Create a new agent session with a browser environment\n  agent_name: \"agi-0\" // options: \"agi-0\", \"agi-0-fast\", // Agent model to use\n  webhook_url: \"example string\", // URL to receive webhook notifications for session events\n  restore_from_session_id: \"example string\", // Restore session from a specific session snapshot\n  restore_default_environment_from_user_id: \"example string\", // Restore from user default environment snapshot\n  enable_memory_snapshot: true // default, // Enable memory snapshots for faster restoration\n});\n\nconst result = await agiInc_create_session.action();\n// outputSchema for result.data when operation === 'create_session':\n// {\n//   operation: \"create_session\",\n//   ok: boolean // Whether the API call was successful,\n//   session_id: string | undefined // Created session ID,\n//   vnc_url: string | undefined // URL to view the browser,\n//   agent_name: string | undefined // Agent model being used,\n//   status: \"initializing\" | \"ready\" | \"running\" | \"paused\" | \"completed\" | \"error\" | \"terminated\" | undefined // Session status,\n//   created_at: string | undefined // Creation timestamp,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// List Sessions example\nconst agiInc_list_sessions = new AGIIncBubble({\n  operation: \"list_sessions\", // Get all sessions for the authenticated user\n});\n\nconst result = await agiInc_list_sessions.action();\n// outputSchema for result.data when operation === 'list_sessions':\n// {\n//   operation: \"list_sessions\",\n//   ok: boolean // Whether the API call was successful,\n//   sessions: { session_id: string // Unique session identifier, vnc_url: string | undefined // URL to view the browser, agent_name: string // Agent model being used, status: \"initializing\" | \"ready\" | \"running\" | \"paused\" | \"completed\" | \"error\" | \"terminated\" // Current session status, created_at: string // ISO 8601 creation timestamp }[] | undefined // Array of sessions,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Session example\nconst agiInc_get_session = new AGIIncBubble({\n  operation: \"get_session\", // Get details for a specific session\n  session_id: \"example string\", // The UUID of the session to retrieve\n});\n\nconst result = await agiInc_get_session.action();\n// outputSchema for result.data when operation === 'get_session':\n// {\n//   operation: \"get_session\",\n//   ok: boolean // Whether the API call was successful,\n//   session: { session_id: string // Unique session identifier, vnc_url: string | undefined // URL to view the browser, agent_name: string // Agent model being used, status: \"initializing\" | \"ready\" | \"running\" | \"paused\" | \"completed\" | \"error\" | \"terminated\" // Current session status, created_at: string // ISO 8601 creation timestamp } | undefined // Session details,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Delete Session example\nconst agiInc_delete_session = new AGIIncBubble({\n  operation: \"delete_session\", // Delete a specific session and cleanup resources\n  session_id: \"example string\", // The UUID of the session to delete\n  save_snapshot_mode: \"none\" // options: \"none\", \"memory\", \"filesystem\", // Snapshot mode when deleting\n  save_as_default: false // default, // Set snapshot as user default environment\n});\n\nconst result = await agiInc_delete_session.action();\n// outputSchema for result.data when operation === 'delete_session':\n// {\n//   operation: \"delete_session\",\n//   ok: boolean // Whether the API call was successful,\n//   deleted: boolean | undefined // Whether session was deleted,\n//   message: string | undefined // Result message,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Delete All Sessions example\nconst agiInc_delete_all_sessions = new AGIIncBubble({\n  operation: \"delete_all_sessions\", // Delete all sessions for the authenticated user\n});\n\nconst result = await agiInc_delete_all_sessions.action();\n// outputSchema for result.data when operation === 'delete_all_sessions':\n// {\n//   operation: \"delete_all_sessions\",\n//   ok: boolean // Whether the API call was successful,\n//   deleted: boolean | undefined // Whether sessions were deleted,\n//   message: string | undefined // Result message,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Send Message example\nconst agiInc_send_message = new AGIIncBubble({\n  operation: \"send_message\", // Send a message to the agent to start a task or respond\n  session_id: \"example string\", // The UUID of the session\n  message: \"example string\", // The message text to send to the agent\n  start_url: \"example string\", // Optional starting URL for the agent to navigate to\n});\n\nconst result = await agiInc_send_message.action();\n// outputSchema for result.data when operation === 'send_message':\n// {\n//   operation: \"send_message\",\n//   ok: boolean // Whether the API call was successful,\n//   message: string | undefined // Confirmation message,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Status example\nconst agiInc_get_status = new AGIIncBubble({\n  operation: \"get_status\", // Get the current execution status of a session\n  session_id: \"example string\", // The UUID of the session\n});\n\nconst result = await agiInc_get_status.action();\n// outputSchema for result.data when operation === 'get_status':\n// {\n//   operation: \"get_status\",\n//   ok: boolean // Whether the API call was successful,\n//   status: \"running\" | \"waiting_for_input\" | \"finished\" | \"error\" | undefined // Current execution status,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Messages example\nconst agiInc_get_messages = new AGIIncBubble({\n  operation: \"get_messages\", // Poll for messages and updates from the agent\n  session_id: \"example string\", // The UUID of the session\n  after_id: 0 // default, // Return only messages with ID greater than this value\n  sanitize: true // default, // Filter out system messages and internal prompts\n});\n\nconst result = await agiInc_get_messages.action();\n// outputSchema for result.data when operation === 'get_messages':\n// {\n//   operation: \"get_messages\",\n//   ok: boolean // Whether the API call was successful,\n//   messages: { id: number // Unique message ID, type: \"THOUGHT\" | \"QUESTION\" | \"USER\" | \"DONE\" | \"ERROR\" | \"LOG\" // Message type, content: unknown // Message content, timestamp: string // ISO 8601 timestamp, metadata: Record<string, unknown> | undefined // Additional metadata }[] | undefined // Array of messages,\n//   status: \"running\" | \"waiting_for_input\" | \"finished\" | \"error\" | undefined // Current execution status,\n//   has_agent: boolean | undefined // Whether agent is connected,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Pause Session example\nconst agiInc_pause_session = new AGIIncBubble({\n  operation: \"pause_session\", // Temporarily pause task execution\n  session_id: \"example string\", // The UUID of the session to pause\n});\n\nconst result = await agiInc_pause_session.action();\n// outputSchema for result.data when operation === 'pause_session':\n// {\n//   operation: \"pause_session\",\n//   ok: boolean // Whether the API call was successful,\n//   message: string | undefined // Result message,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Resume Session example\nconst agiInc_resume_session = new AGIIncBubble({\n  operation: \"resume_session\", // Resume a paused task\n  session_id: \"example string\", // The UUID of the session to resume\n});\n\nconst result = await agiInc_resume_session.action();\n// outputSchema for result.data when operation === 'resume_session':\n// {\n//   operation: \"resume_session\",\n//   ok: boolean // Whether the API call was successful,\n//   message: string | undefined // Result message,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Cancel Session example\nconst agiInc_cancel_session = new AGIIncBubble({\n  operation: \"cancel_session\", // Cancel the current task execution\n  session_id: \"example string\", // The UUID of the session to cancel\n});\n\nconst result = await agiInc_cancel_session.action();\n// outputSchema for result.data when operation === 'cancel_session':\n// {\n//   operation: \"cancel_session\",\n//   ok: boolean // Whether the API call was successful,\n//   message: string | undefined // Result message,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Navigate example\nconst agiInc_navigate = new AGIIncBubble({\n  operation: \"navigate\", // Navigate the browser to a specific URL\n  session_id: \"example string\", // The UUID of the session\n  url: \"example string\", // Absolute URL to navigate to\n});\n\nconst result = await agiInc_navigate.action();\n// outputSchema for result.data when operation === 'navigate':\n// {\n//   operation: \"navigate\",\n//   ok: boolean // Whether the API call was successful,\n//   current_url: string | undefined // Current URL after navigation,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Screenshot example\nconst agiInc_get_screenshot = new AGIIncBubble({\n  operation: \"get_screenshot\", // Capture a screenshot of the current browser state\n  session_id: \"example string\", // The UUID of the session\n});\n\nconst result = await agiInc_get_screenshot.action();\n// outputSchema for result.data when operation === 'get_screenshot':\n// {\n//   operation: \"get_screenshot\",\n//   ok: boolean // Whether the API call was successful,\n//   screenshot: string | undefined // Base64-encoded JPEG image as data URL,\n//   url: string | undefined // Current page URL,\n//   title: string | undefined // Current page title,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`agi-inc failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "AGI_API_KEY"
      ]
    },
    {
      "name": "airtable",
      "alias": "airtable",
      "type": "service",
      "shortDescription": "Airtable integration for managing records in bases and tables",
      "useCase": "- List records with filtering, sorting, and pagination",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_records"
                ],
                "description": "List records from an Airtable table with filtering and sorting"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "tableIdOrName": {
                "type": "string",
                "minLength": 1,
                "description": "Table ID (e.g., tblXXXXXXXXXXXXXX) or table name"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of field names to include in results (returns all fields if not specified)"
              },
              "filterByFormula": {
                "type": "string",
                "description": "Airtable formula to filter records (e.g., \"{Status} = 'Done'\")"
              },
              "maxRecords": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "description": "Maximum number of records to return (1-100, returns all if not specified)"
              },
              "pageSize": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Number of records per page for pagination (1-100)"
              },
              "sort": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string",
                      "description": "Field name to sort by"
                    },
                    "direction": {
                      "type": "string",
                      "enum": [
                        "asc",
                        "desc"
                      ],
                      "description": "Sort direction (asc or desc)",
                      "default": "asc"
                    }
                  },
                  "required": [
                    "field"
                  ],
                  "additionalProperties": false,
                  "description": "Sort specification for ordering records"
                },
                "description": "Array of sort specifications to order records"
              },
              "view": {
                "type": "string",
                "description": "View name or ID to use (includes view's filters and sorts)"
              },
              "cellFormat": {
                "type": "string",
                "enum": [
                  "json",
                  "string"
                ],
                "default": "json",
                "description": "Format for cell values: json (structured) or string (formatted). When using \"string\", timeZone and userLocale are required by the Airtable API (defaults to UTC/en-US if omitted)"
              },
              "timeZone": {
                "type": "string",
                "description": "Time zone for date/time fields (e.g., \"America/Los_Angeles\"). Required when cellFormat is \"string\", defaults to \"UTC\""
              },
              "userLocale": {
                "type": "string",
                "description": "Locale for formatting (e.g., \"en-US\"). Required when cellFormat is \"string\", defaults to \"en-US\""
              },
              "offset": {
                "type": "string",
                "description": "Pagination offset from previous response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId",
              "tableIdOrName"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_record"
                ],
                "description": "Retrieve a single record by its ID"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "tableIdOrName": {
                "type": "string",
                "minLength": 1,
                "description": "Table ID (e.g., tblXXXXXXXXXXXXXX) or table name"
              },
              "recordId": {
                "type": "string",
                "minLength": 1,
                "description": "Record ID to retrieve (starts with rec)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId",
              "tableIdOrName",
              "recordId"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_records"
                ],
                "description": "Create one or more new records in an Airtable table"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "tableIdOrName": {
                "type": "string",
                "minLength": 1,
                "description": "Table ID (e.g., tblXXXXXXXXXXXXXX) or table name"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "array",
                            "items": {}
                          },
                          {
                            "type": "object",
                            "additionalProperties": {}
                          },
                          {
                            "enum": [
                              "null"
                            ],
                            "nullable": true
                          }
                        ],
                        "description": "Value for an Airtable field (string, number, boolean, array, object, or null)"
                      },
                      "description": "Field values for the new record"
                    }
                  },
                  "required": [
                    "fields"
                  ],
                  "additionalProperties": false,
                  "description": "Record data to create"
                },
                "minItems": 1,
                "maxItems": 10,
                "description": "Array of records to create (max 10 per request)"
              },
              "typecast": {
                "type": "boolean",
                "default": false,
                "description": "Automatically convert field values to the appropriate type"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId",
              "tableIdOrName",
              "records"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_records"
                ],
                "description": "Update existing records in an Airtable table"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "tableIdOrName": {
                "type": "string",
                "minLength": 1,
                "description": "Table ID (e.g., tblXXXXXXXXXXXXXX) or table name"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Record ID to update (starts with rec)"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "array",
                            "items": {}
                          },
                          {
                            "type": "object",
                            "additionalProperties": {}
                          },
                          {
                            "enum": [
                              "null"
                            ],
                            "nullable": true
                          }
                        ],
                        "description": "Value for an Airtable field (string, number, boolean, array, object, or null)"
                      },
                      "description": "Field values to update (only specified fields will be updated)"
                    }
                  },
                  "required": [
                    "id",
                    "fields"
                  ],
                  "additionalProperties": false,
                  "description": "Record data to update"
                },
                "minItems": 1,
                "maxItems": 10,
                "description": "Array of records to update (max 10 per request)"
              },
              "typecast": {
                "type": "boolean",
                "default": false,
                "description": "Automatically convert field values to the appropriate type"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId",
              "tableIdOrName",
              "records"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_records"
                ],
                "description": "Delete one or more records from an Airtable table"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "tableIdOrName": {
                "type": "string",
                "minLength": 1,
                "description": "Table ID (e.g., tblXXXXXXXXXXXXXX) or table name"
              },
              "recordIds": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "minItems": 1,
                "maxItems": 10,
                "description": "Array of record IDs to delete (max 10 per request)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId",
              "tableIdOrName",
              "recordIds"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_bases"
                ],
                "description": "List all bases accessible with the current API key"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_base_schema"
                ],
                "description": "Get the schema for a specific base including all tables and fields"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_table"
                ],
                "description": "Create a new table in an Airtable base"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name for the new table"
              },
              "description": {
                "type": "string",
                "description": "Optional description for the table"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Field name"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "singleLineText",
                        "multilineText",
                        "richText",
                        "email",
                        "url",
                        "phoneNumber",
                        "number",
                        "percent",
                        "currency",
                        "rating",
                        "duration",
                        "singleSelect",
                        "multipleSelects",
                        "singleCollaborator",
                        "multipleCollaborators",
                        "date",
                        "dateTime",
                        "checkbox",
                        "multipleRecordLinks",
                        "multipleAttachments",
                        "barcode",
                        "button",
                        "formula",
                        "createdTime",
                        "lastModifiedTime",
                        "createdBy",
                        "lastModifiedBy",
                        "autoNumber",
                        "externalSyncSource",
                        "count",
                        "lookup",
                        "rollup"
                      ],
                      "description": "Field type"
                    },
                    "description": {
                      "type": "string",
                      "description": "Field description"
                    },
                    "options": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Field options"
                    }
                  },
                  "required": [
                    "name",
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of field definitions for the table"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId",
              "name",
              "fields"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_table"
                ],
                "description": "Update table properties like name and description"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "tableIdOrName": {
                "type": "string",
                "minLength": 1,
                "description": "Table ID (e.g., tblXXXXXXXXXXXXXX) or table name"
              },
              "name": {
                "type": "string",
                "description": "New name for the table"
              },
              "description": {
                "type": "string",
                "description": "New description for the table"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId",
              "tableIdOrName"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_field"
                ],
                "description": "Create a new field in an Airtable table"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "tableIdOrName": {
                "type": "string",
                "minLength": 1,
                "description": "Table ID (e.g., tblXXXXXXXXXXXXXX) or table name"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name for the new field"
              },
              "type": {
                "type": "string",
                "enum": [
                  "singleLineText",
                  "multilineText",
                  "richText",
                  "email",
                  "url",
                  "phoneNumber",
                  "number",
                  "percent",
                  "currency",
                  "rating",
                  "duration",
                  "singleSelect",
                  "multipleSelects",
                  "singleCollaborator",
                  "multipleCollaborators",
                  "date",
                  "dateTime",
                  "checkbox",
                  "multipleRecordLinks",
                  "multipleAttachments",
                  "barcode",
                  "button",
                  "formula",
                  "createdTime",
                  "lastModifiedTime",
                  "createdBy",
                  "lastModifiedBy",
                  "autoNumber",
                  "externalSyncSource",
                  "count",
                  "lookup",
                  "rollup"
                ],
                "description": "Field type"
              },
              "description": {
                "type": "string",
                "description": "Field description"
              },
              "options": {
                "type": "object",
                "additionalProperties": {},
                "description": "Field-specific options"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId",
              "tableIdOrName",
              "name",
              "type"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_field"
                ],
                "description": "Update field properties like name, type, or description"
              },
              "baseId": {
                "type": "string",
                "minLength": 1,
                "description": "Airtable base ID (e.g., appXXXXXXXXXXXXXX)"
              },
              "tableIdOrName": {
                "type": "string",
                "minLength": 1,
                "description": "Table ID (e.g., tblXXXXXXXXXXXXXX) or table name"
              },
              "fieldIdOrName": {
                "type": "string",
                "minLength": 1,
                "description": "Field ID (e.g., fldXXXXXXXXXXXXXX) or field name"
              },
              "name": {
                "type": "string",
                "description": "New name for the field"
              },
              "description": {
                "type": "string",
                "description": "New description for the field"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "baseId",
              "tableIdOrName",
              "fieldIdOrName"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_records"
                ],
                "description": "List records from an Airtable table with filtering and sorting"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique record identifier (starts with rec)"
                    },
                    "createdTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO 8601 datetime when record was created"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "array",
                            "items": {}
                          },
                          {
                            "type": "object",
                            "additionalProperties": {}
                          },
                          {
                            "enum": [
                              "null"
                            ],
                            "nullable": true
                          }
                        ],
                        "description": "Value for an Airtable field (string, number, boolean, array, object, or null)"
                      },
                      "description": "Record field values as key-value pairs"
                    }
                  },
                  "required": [
                    "id",
                    "createdTime",
                    "fields"
                  ],
                  "additionalProperties": false,
                  "description": "Airtable record with ID, creation time, and field data"
                },
                "description": "Array of record objects"
              },
              "offset": {
                "type": "string",
                "description": "Pagination offset for retrieving next page of results"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_record"
                ],
                "description": "Retrieve a single record by its ID"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "record": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique record identifier (starts with rec)"
                  },
                  "createdTime": {
                    "type": "string",
                    "format": "date-time",
                    "description": "ISO 8601 datetime when record was created"
                  },
                  "fields": {
                    "type": "object",
                    "additionalProperties": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "array",
                          "items": {}
                        },
                        {
                          "type": "object",
                          "additionalProperties": {}
                        },
                        {
                          "enum": [
                            "null"
                          ],
                          "nullable": true
                        }
                      ],
                      "description": "Value for an Airtable field (string, number, boolean, array, object, or null)"
                    },
                    "description": "Record field values as key-value pairs"
                  }
                },
                "required": [
                  "id",
                  "createdTime",
                  "fields"
                ],
                "additionalProperties": false,
                "description": "Record object"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_records"
                ],
                "description": "Create one or more new records in an Airtable table"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique record identifier (starts with rec)"
                    },
                    "createdTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO 8601 datetime when record was created"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "array",
                            "items": {}
                          },
                          {
                            "type": "object",
                            "additionalProperties": {}
                          },
                          {
                            "enum": [
                              "null"
                            ],
                            "nullable": true
                          }
                        ],
                        "description": "Value for an Airtable field (string, number, boolean, array, object, or null)"
                      },
                      "description": "Record field values as key-value pairs"
                    }
                  },
                  "required": [
                    "id",
                    "createdTime",
                    "fields"
                  ],
                  "additionalProperties": false,
                  "description": "Airtable record with ID, creation time, and field data"
                },
                "description": "Array of created record objects"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_records"
                ],
                "description": "Update existing records in an Airtable table"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique record identifier (starts with rec)"
                    },
                    "createdTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO 8601 datetime when record was created"
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "array",
                            "items": {}
                          },
                          {
                            "type": "object",
                            "additionalProperties": {}
                          },
                          {
                            "enum": [
                              "null"
                            ],
                            "nullable": true
                          }
                        ],
                        "description": "Value for an Airtable field (string, number, boolean, array, object, or null)"
                      },
                      "description": "Record field values as key-value pairs"
                    }
                  },
                  "required": [
                    "id",
                    "createdTime",
                    "fields"
                  ],
                  "additionalProperties": false,
                  "description": "Airtable record with ID, creation time, and field data"
                },
                "description": "Array of updated record objects"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_records"
                ],
                "description": "Delete one or more records from an Airtable table"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "ID of deleted record"
                    },
                    "deleted": {
                      "type": "boolean",
                      "description": "Whether the record was deleted"
                    }
                  },
                  "required": [
                    "id",
                    "deleted"
                  ],
                  "additionalProperties": false,
                  "description": "Deletion confirmation object"
                },
                "description": "Array of deletion confirmation objects"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_bases"
                ],
                "description": "List all bases accessible with the current API key"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "bases": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Base ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Base name"
                    },
                    "permissionLevel": {
                      "type": "string",
                      "description": "Permission level for this base"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "permissionLevel"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of base objects"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_base_schema"
                ],
                "description": "Get the schema for a specific base including all tables and fields"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "tables": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Table ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Table name"
                    },
                    "description": {
                      "type": "string",
                      "description": "Table description"
                    },
                    "primaryFieldId": {
                      "type": "string",
                      "description": "ID of the primary field"
                    },
                    "fields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Field ID"
                          },
                          "name": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "type": {
                            "type": "string",
                            "description": "Field type"
                          },
                          "description": {
                            "type": "string",
                            "description": "Field description"
                          },
                          "options": {
                            "type": "object",
                            "additionalProperties": {},
                            "description": "Field options"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "type"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of field definitions"
                    },
                    "views": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "View ID"
                          },
                          "name": {
                            "type": "string",
                            "description": "View name"
                          },
                          "type": {
                            "type": "string",
                            "description": "View type"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "type"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of view definitions"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "primaryFieldId",
                    "fields"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of table schemas"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_table"
                ],
                "description": "Create a new table in an Airtable base"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "table": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Table ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Table name"
                  },
                  "description": {
                    "type": "string",
                    "description": "Table description"
                  },
                  "primaryFieldId": {
                    "type": "string",
                    "description": "ID of the primary field"
                  },
                  "fields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Field ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "Field name"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "singleLineText",
                            "multilineText",
                            "richText",
                            "email",
                            "url",
                            "phoneNumber",
                            "number",
                            "percent",
                            "currency",
                            "rating",
                            "duration",
                            "singleSelect",
                            "multipleSelects",
                            "singleCollaborator",
                            "multipleCollaborators",
                            "date",
                            "dateTime",
                            "checkbox",
                            "multipleRecordLinks",
                            "multipleAttachments",
                            "barcode",
                            "button",
                            "formula",
                            "createdTime",
                            "lastModifiedTime",
                            "createdBy",
                            "lastModifiedBy",
                            "autoNumber",
                            "externalSyncSource",
                            "count",
                            "lookup",
                            "rollup"
                          ],
                          "description": "Field type"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Array of field definitions"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "primaryFieldId",
                  "fields"
                ],
                "additionalProperties": false,
                "description": "Created table object"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_table"
                ],
                "description": "Update table properties like name and description"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "table": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Table ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Table name"
                  },
                  "description": {
                    "type": "string",
                    "description": "Table description"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "Updated table object"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_field"
                ],
                "description": "Create a new field in an Airtable table"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "field": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Field ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Field name"
                  },
                  "type": {
                    "type": "string",
                    "description": "Field type"
                  },
                  "description": {
                    "type": "string",
                    "description": "Field description"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "type"
                ],
                "additionalProperties": false,
                "description": "Created field object"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_field"
                ],
                "description": "Update field properties like name, type, or description"
              },
              "ok": {
                "type": "boolean",
                "description": "Whether the Airtable API call was successful"
              },
              "field": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Field ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Field name"
                  },
                  "type": {
                    "type": "string",
                    "description": "Field type"
                  },
                  "description": {
                    "type": "string",
                    "description": "Field description"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "type"
                ],
                "additionalProperties": false,
                "description": "Updated field object"
              },
              "error": {
                "type": "string",
                "default": "",
                "description": "Error message if operation failed"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              }
            },
            "required": [
              "operation",
              "ok",
              "success"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Records example\nconst airtable_list_records = new AirtableBubble({\n  operation: \"list_records\", // List records from an Airtable table with filtering and sorting\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n  tableIdOrName: \"example string\", // Table ID (e.g., tblXXXXXXXXXXXXXX) or table name\n  fields: [\"example string\"], // Array of field names to include in results (returns all fields if not specified)\n  filterByFormula: \"example string\", // Airtable formula to filter records (e.g., \"{Status} = 'Done'\")\n  maxRecords: 42, // Maximum number of records to return (1-100, returns all if not specified)\n  pageSize: 100 // default, // Number of records per page for pagination (1-100)\n  sort: [{ field: \"example string\" // Field name to sort by, direction: \"asc\" // options: \"asc\", \"desc\" // Sort direction (asc or desc) }], // Array of sort specifications to order records\n  view: \"example string\", // View name or ID to use (includes view's filters and sorts)\n  cellFormat: \"json\" // options: \"json\", \"string\", // Format for cell values: json (structured) or string (formatted). When using \"string\", timeZone and userLocale are required by the Airtable API (defaults to UTC/en-US if omitted)\n  timeZone: \"example string\", // Time zone for date/time fields (e.g., \"America/Los_Angeles\"). Required when cellFormat is \"string\", defaults to \"UTC\"\n  userLocale: \"example string\", // Locale for formatting (e.g., \"en-US\"). Required when cellFormat is \"string\", defaults to \"en-US\"\n  offset: \"example string\", // Pagination offset from previous response\n});\n\nconst result = await airtable_list_records.action();\n// outputSchema for result.data when operation === 'list_records':\n// {\n//   operation: \"list_records\" // List records from an Airtable table with filtering and sorting,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   records: { id: string // Unique record identifier (starts with rec), createdTime: string // ISO 8601 datetime when record was created, fields: Record<string, unknown> // Record field values as key-value pairs }[] | undefined // Array of record objects,\n//   offset: string | undefined // Pagination offset for retrieving next page of results,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Record example\nconst airtable_get_record = new AirtableBubble({\n  operation: \"get_record\", // Retrieve a single record by its ID\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n  tableIdOrName: \"example string\", // Table ID (e.g., tblXXXXXXXXXXXXXX) or table name\n  recordId: \"example string\", // Record ID to retrieve (starts with rec)\n});\n\nconst result = await airtable_get_record.action();\n// outputSchema for result.data when operation === 'get_record':\n// {\n//   operation: \"get_record\" // Retrieve a single record by its ID,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   record: { id: string // Unique record identifier (starts with rec), createdTime: string // ISO 8601 datetime when record was created, fields: Record<string, unknown> // Record field values as key-value pairs } | undefined // Record object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Create Records example\nconst airtable_create_records = new AirtableBubble({\n  operation: \"create_records\", // Create one or more new records in an Airtable table\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n  tableIdOrName: \"example string\", // Table ID (e.g., tblXXXXXXXXXXXXXX) or table name\n  records: [{ fields: { \"example_key\": [] } // Field values for the new record }], // Array of records to create (max 10 per request)\n  typecast: false // default, // Automatically convert field values to the appropriate type\n});\n\nconst result = await airtable_create_records.action();\n// outputSchema for result.data when operation === 'create_records':\n// {\n//   operation: \"create_records\" // Create one or more new records in an Airtable table,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   records: { id: string // Unique record identifier (starts with rec), createdTime: string // ISO 8601 datetime when record was created, fields: Record<string, unknown> // Record field values as key-value pairs }[] | undefined // Array of created record objects,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Update Records example\nconst airtable_update_records = new AirtableBubble({\n  operation: \"update_records\", // Update existing records in an Airtable table\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n  tableIdOrName: \"example string\", // Table ID (e.g., tblXXXXXXXXXXXXXX) or table name\n  records: [{ id: \"example string\" // Record ID to update (starts with rec), fields: { \"example_key\": [] } // Field values to update (only specified fields will be updated) }], // Array of records to update (max 10 per request)\n  typecast: false // default, // Automatically convert field values to the appropriate type\n});\n\nconst result = await airtable_update_records.action();\n// outputSchema for result.data when operation === 'update_records':\n// {\n//   operation: \"update_records\" // Update existing records in an Airtable table,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   records: { id: string // Unique record identifier (starts with rec), createdTime: string // ISO 8601 datetime when record was created, fields: Record<string, unknown> // Record field values as key-value pairs }[] | undefined // Array of updated record objects,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Delete Records example\nconst airtable_delete_records = new AirtableBubble({\n  operation: \"delete_records\", // Delete one or more records from an Airtable table\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n  tableIdOrName: \"example string\", // Table ID (e.g., tblXXXXXXXXXXXXXX) or table name\n  recordIds: [\"example string\"], // Array of record IDs to delete (max 10 per request)\n});\n\nconst result = await airtable_delete_records.action();\n// outputSchema for result.data when operation === 'delete_records':\n// {\n//   operation: \"delete_records\" // Delete one or more records from an Airtable table,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   records: { id: string // ID of deleted record, deleted: boolean // Whether the record was deleted }[] | undefined // Array of deletion confirmation objects,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// List Bases example\nconst airtable_list_bases = new AirtableBubble({\n  operation: \"list_bases\", // List all bases accessible with the current API key\n});\n\nconst result = await airtable_list_bases.action();\n// outputSchema for result.data when operation === 'list_bases':\n// {\n//   operation: \"list_bases\" // List all bases accessible with the current API key,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   bases: { id: string // Base ID, name: string // Base name, permissionLevel: string // Permission level for this base }[] | undefined // Array of base objects,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Get Base Schema example\nconst airtable_get_base_schema = new AirtableBubble({\n  operation: \"get_base_schema\", // Get the schema for a specific base including all tables and fields\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n});\n\nconst result = await airtable_get_base_schema.action();\n// outputSchema for result.data when operation === 'get_base_schema':\n// {\n//   operation: \"get_base_schema\" // Get the schema for a specific base including all tables and fields,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   tables: { id: string // Table ID, name: string // Table name, description: string | undefined // Table description, primaryFieldId: string // ID of the primary field, fields: { id: string // Field ID, name: string // Field name, type: string // Field type, description: string | undefined // Field description, options: Record<string, unknown> | undefined // Field options }[] // Array of field definitions, views: { id: string // View ID, name: string // View name, type: string // View type }[] | undefined // Array of view definitions }[] | undefined // Array of table schemas,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Create Table example\nconst airtable_create_table = new AirtableBubble({\n  operation: \"create_table\", // Create a new table in an Airtable base\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n  name: \"example string\", // Name for the new table\n  description: \"example string\", // Optional description for the table\n  fields: [{ name: \"example string\" // Field name, type: \"singleLineText\" // options: \"singleLineText\", \"multilineText\", \"richText\", \"email\", \"url\", \"phoneNumber\", \"number\", \"percent\", \"currency\", \"rating\", \"duration\", \"singleSelect\", \"multipleSelects\", \"singleCollaborator\", \"multipleCollaborators\", \"date\", \"dateTime\", \"checkbox\", \"multipleRecordLinks\", \"multipleAttachments\", \"barcode\", \"button\", \"formula\", \"createdTime\", \"lastModifiedTime\", \"createdBy\", \"lastModifiedBy\", \"autoNumber\", \"externalSyncSource\", \"count\", \"lookup\", \"rollup\" // Field type, description: \"example string\" // Field description, options: {} // Field options }], // Array of field definitions for the table\n});\n\nconst result = await airtable_create_table.action();\n// outputSchema for result.data when operation === 'create_table':\n// {\n//   operation: \"create_table\" // Create a new table in an Airtable base,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   table: { id: string // Table ID, name: string // Table name, description: string | undefined // Table description, primaryFieldId: string // ID of the primary field, fields: { id: string // Field ID, name: string // Field name, type: \"singleLineText\" | \"multilineText\" | \"richText\" | \"email\" | \"url\" | \"phoneNumber\" | \"number\" | \"percent\" | \"currency\" | \"rating\" | \"duration\" | \"singleSelect\" | \"multipleSelects\" | \"singleCollaborator\" | \"multipleCollaborators\" | \"date\" | \"dateTime\" | \"checkbox\" | \"multipleRecordLinks\" | \"multipleAttachments\" | \"barcode\" | \"button\" | \"formula\" | \"createdTime\" | \"lastModifiedTime\" | \"createdBy\" | \"lastModifiedBy\" | \"autoNumber\" | \"externalSyncSource\" | \"count\" | \"lookup\" | \"rollup\" // Field type }[] // Array of field definitions } | undefined // Created table object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Update Table example\nconst airtable_update_table = new AirtableBubble({\n  operation: \"update_table\", // Update table properties like name and description\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n  tableIdOrName: \"example string\", // Table ID (e.g., tblXXXXXXXXXXXXXX) or table name\n  name: \"example string\", // New name for the table\n  description: \"example string\", // New description for the table\n});\n\nconst result = await airtable_update_table.action();\n// outputSchema for result.data when operation === 'update_table':\n// {\n//   operation: \"update_table\" // Update table properties like name and description,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   table: { id: string // Table ID, name: string // Table name, description: string | undefined // Table description } | undefined // Updated table object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Create Field example\nconst airtable_create_field = new AirtableBubble({\n  operation: \"create_field\", // Create a new field in an Airtable table\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n  tableIdOrName: \"example string\", // Table ID (e.g., tblXXXXXXXXXXXXXX) or table name\n  name: \"example string\", // Name for the new field\n  type: \"singleLineText\" // options: \"singleLineText\", \"multilineText\", \"richText\", \"email\", \"url\", \"phoneNumber\", \"number\", \"percent\", \"currency\", \"rating\", \"duration\", \"singleSelect\", \"multipleSelects\", \"singleCollaborator\", \"multipleCollaborators\", \"date\", \"dateTime\", \"checkbox\", \"multipleRecordLinks\", \"multipleAttachments\", \"barcode\", \"button\", \"formula\", \"createdTime\", \"lastModifiedTime\", \"createdBy\", \"lastModifiedBy\", \"autoNumber\", \"externalSyncSource\", \"count\", \"lookup\", \"rollup\", // Field type\n  description: \"example string\", // Field description\n  options: {}, // Field-specific options\n});\n\nconst result = await airtable_create_field.action();\n// outputSchema for result.data when operation === 'create_field':\n// {\n//   operation: \"create_field\" // Create a new field in an Airtable table,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   field: { id: string // Field ID, name: string // Field name, type: string // Field type, description: string | undefined // Field description } | undefined // Created field object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Update Field example\nconst airtable_update_field = new AirtableBubble({\n  operation: \"update_field\", // Update field properties like name, type, or description\n  baseId: \"example string\", // Airtable base ID (e.g., appXXXXXXXXXXXXXX)\n  tableIdOrName: \"example string\", // Table ID (e.g., tblXXXXXXXXXXXXXX) or table name\n  fieldIdOrName: \"example string\", // Field ID (e.g., fldXXXXXXXXXXXXXX) or field name\n  name: \"example string\", // New name for the field\n  description: \"example string\", // New description for the field\n});\n\nconst result = await airtable_update_field.action();\n// outputSchema for result.data when operation === 'update_field':\n// {\n//   operation: \"update_field\" // Update field properties like name, type, or description,\n//   ok: boolean // Whether the Airtable API call was successful,\n//   field: { id: string // Field ID, name: string // Field name, type: string // Field type, description: string | undefined // Field description } | undefined // Updated field object,\n//   error: string // Error message if operation failed,\n//   success: boolean // Whether the operation was successful\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`airtable failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "AIRTABLE_CRED",
        "AIRTABLE_OAUTH"
      ]
    },
    {
      "name": "firecrawl",
      "alias": "firecrawl",
      "type": "service",
      "shortDescription": "Firecrawl API integration for web crawl operations.",
      "useCase": "- Add web knowledge to your RAG chatbots and AI assistants.",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "maxRetries": {
                "type": "number",
                "description": "Maximum number of retries for the scrape request"
              },
              "backoffFactor": {
                "type": "number",
                "description": "Backoff factor for retry delays"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              },
              "formats": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "markdown",
                        "html",
                        "rawHtml",
                        "links",
                        "images",
                        "screenshot",
                        "summary",
                        "changeTracking",
                        "json",
                        "attributes",
                        "branding"
                      ],
                      "description": "Scrape format"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "markdown",
                            "html",
                            "rawHtml",
                            "links",
                            "images",
                            "screenshot",
                            "summary",
                            "changeTracking",
                            "json",
                            "attributes",
                            "branding"
                          ],
                          "description": "Scrape format"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "json"
                          ]
                        },
                        "prompt": {
                          "type": "string",
                          "description": "Optional prompt for JSON extraction"
                        },
                        "schema": {
                          "anyOf": [
                            {
                              "type": "object",
                              "additionalProperties": {}
                            },
                            {}
                          ],
                          "description": "Optional JSON schema for structured data extraction"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "changeTracking"
                          ]
                        },
                        "modes": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "git-diff",
                              "json"
                            ]
                          },
                          "description": "Modes for change tracking"
                        },
                        "schema": {
                          "type": "object",
                          "additionalProperties": {},
                          "description": "Optional schema for change tracking"
                        },
                        "prompt": {
                          "type": "string",
                          "description": "Optional prompt for change tracking"
                        },
                        "tag": {
                          "type": "string",
                          "description": "Optional tag for change tracking"
                        }
                      },
                      "required": [
                        "type",
                        "modes"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "screenshot"
                          ]
                        },
                        "fullPage": {
                          "type": "boolean",
                          "description": "Whether to capture full page screenshot"
                        },
                        "quality": {
                          "type": "number",
                          "description": "Quality of the screenshot (1-100)"
                        },
                        "viewport": {
                          "type": "object",
                          "properties": {
                            "width": {
                              "type": "number",
                              "description": "Viewport width in pixels"
                            },
                            "height": {
                              "type": "number",
                              "description": "Viewport height in pixels"
                            }
                          },
                          "required": [
                            "width",
                            "height"
                          ],
                          "additionalProperties": false,
                          "description": "Viewport dimensions for the screenshot"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "attributes"
                          ]
                        },
                        "selectors": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "selector": {
                                "type": "string",
                                "description": "CSS selector for the element"
                              },
                              "attribute": {
                                "type": "string",
                                "description": "Attribute name to extract"
                              }
                            },
                            "required": [
                              "selector",
                              "attribute"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Array of selectors and attributes to extract"
                        }
                      },
                      "required": [
                        "type",
                        "selectors"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "default": [
                  "markdown"
                ],
                "description": "Formats to scrape from the URL"
              },
              "headers": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "HTTP headers to include in the request"
              },
              "includeTags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "HTML tags/classes/ids to include in the scrape"
              },
              "excludeTags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "HTML tags/classes/ids to exclude from the scrape"
              },
              "onlyMainContent": {
                "type": "boolean",
                "default": true,
                "description": "Whether to extract only main content or full page content"
              },
              "timeout": {
                "type": "number",
                "default": 30000,
                "description": "Max duration in milliseconds before aborting the request"
              },
              "waitFor": {
                "type": "number",
                "default": 0,
                "description": "Milliseconds of extra wait time before scraping (use sparingly). This waiting time is in addition to Firecrawl’s smart wait feature."
              },
              "mobile": {
                "type": "boolean",
                "description": "Whether to emulate a mobile device"
              },
              "parsers": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "pdf"
                          ]
                        },
                        "maxPages": {
                          "type": "number",
                          "description": "Maximum number of PDF pages to parse"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "description": "Extract structured content from various document formats"
              },
              "actions": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "wait"
                          ]
                        },
                        "milliseconds": {
                          "type": "number",
                          "description": "Time to wait in milliseconds (for wait)"
                        },
                        "selector": {
                          "type": "string",
                          "description": "CSS selector to wait for (for wait)"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "screenshot"
                          ]
                        },
                        "fullPage": {
                          "type": "boolean",
                          "description": "Whether to capture full page screenshot"
                        },
                        "quality": {
                          "type": "number",
                          "description": "Quality of the screenshot (1-100)"
                        },
                        "viewport": {
                          "type": "object",
                          "properties": {
                            "width": {
                              "type": "number",
                              "description": "Viewport width in pixels"
                            },
                            "height": {
                              "type": "number",
                              "description": "Viewport height in pixels"
                            }
                          },
                          "required": [
                            "width",
                            "height"
                          ],
                          "additionalProperties": false,
                          "description": "Viewport dimensions for the screenshot"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "click"
                          ]
                        },
                        "selector": {
                          "type": "string",
                          "description": "CSS selector to click on"
                        }
                      },
                      "required": [
                        "type",
                        "selector"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "write"
                          ]
                        },
                        "text": {
                          "type": "string",
                          "description": "Text to write into the element"
                        }
                      },
                      "required": [
                        "type",
                        "text"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "press"
                          ]
                        },
                        "key": {
                          "type": "string",
                          "description": "Key to press (e.g., \"Enter\")"
                        }
                      },
                      "required": [
                        "type",
                        "key"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "scroll"
                          ]
                        },
                        "direction": {
                          "type": "string",
                          "enum": [
                            "up",
                            "down"
                          ],
                          "description": "Scroll direction (for scroll)"
                        },
                        "selector": {
                          "type": "string",
                          "description": "CSS selector to scroll to (for scroll)"
                        }
                      },
                      "required": [
                        "type",
                        "direction"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "scrape"
                          ]
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "executeJavascript"
                          ]
                        },
                        "script": {
                          "type": "string",
                          "description": "JavaScript code to execute on the page"
                        }
                      },
                      "required": [
                        "type",
                        "script"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "pdf"
                          ]
                        },
                        "format": {
                          "type": "string",
                          "enum": [
                            "A0",
                            "A1",
                            "A2",
                            "A3",
                            "A4",
                            "A5",
                            "A6",
                            "Letter",
                            "Legal",
                            "Tabloid",
                            "Ledger"
                          ],
                          "description": "Page format for PDF generation"
                        },
                        "landscape": {
                          "type": "boolean",
                          "description": "Whether to generate PDF in landscape orientation"
                        },
                        "scale": {
                          "type": "number",
                          "description": "Scale factor for PDF rendering"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "description": "Sequence of browser actions to perform before scraping"
              },
              "location": {
                "type": "object",
                "properties": {
                  "country": {
                    "type": "string",
                    "description": "Country code for proxy location"
                  },
                  "languages": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Preferred languages for proxy location"
                  }
                },
                "additionalProperties": false,
                "description": "Location configuration for proxy location"
              },
              "skipTlsVerification": {
                "type": "boolean",
                "description": "Whether to skip TLS certificate verification"
              },
              "removeBase64Images": {
                "type": "boolean",
                "description": "Whether to remove base64-encoded images from the content"
              },
              "fastMode": {
                "type": "boolean",
                "description": "Whether to enable fast mode for scraping"
              },
              "useMock": {
                "type": "string",
                "description": "Use a mock response for testing purposes"
              },
              "blockAds": {
                "type": "boolean",
                "description": "Whether to block ads during scraping"
              },
              "proxy": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "basic",
                      "stealth",
                      "auto"
                    ]
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "Type of proxy to use for scraping"
              },
              "maxAge": {
                "type": "number",
                "default": 172800000,
                "description": "If a cached version of the page is newer than `maxAge` (in milliseconds), Firecrawl returns it instantly; otherwise it scrapes fresh and updates the cache. Set 0 to always fetch fresh."
              },
              "storeInCache": {
                "type": "boolean",
                "description": "Whether to store the scraped result in cache"
              },
              "integration": {
                "type": "string",
                "description": "Integration identifier for the scrape request"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "scrape"
                ],
                "description": "Scrape a single URL"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "The URL to scrape content from"
              }
            },
            "required": [
              "operation",
              "url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "maxRetries": {
                "type": "number",
                "description": "Maximum number of retries for the scrape request"
              },
              "backoffFactor": {
                "type": "number",
                "description": "Backoff factor for retry delays"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ],
                "description": "Search the web and optionally scrape each result"
              },
              "query": {
                "type": "string",
                "description": "The search query to execute"
              },
              "sources": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "web",
                        "news",
                        "images"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "web",
                            "news",
                            "images"
                          ]
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "description": "Specialized result types to include in addition to regular web results"
              },
              "categories": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "github",
                        "research",
                        "pdf"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "github",
                            "research",
                            "pdf"
                          ]
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "description": "Filter search results by specific categories"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "description": "Maximum number of search results to return"
              },
              "tbs": {
                "type": "string",
                "description": "Filter results by time (e.g., \"qdr:h\" for past hour, \"qdr:m\" for past month)"
              },
              "location": {
                "type": "string",
                "description": "Geographical location to tailor search results"
              },
              "ignoreInvalidURLs": {
                "type": "boolean",
                "description": "Whether to ignore invalid URLs in the search results"
              },
              "timeout": {
                "type": "number",
                "description": "Timeout in milliseconds for the search operation"
              },
              "scrapeOptions": {
                "type": "object",
                "properties": {
                  "formats": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string",
                          "enum": [
                            "markdown",
                            "html",
                            "rawHtml",
                            "links",
                            "images",
                            "screenshot",
                            "summary",
                            "changeTracking",
                            "json",
                            "attributes",
                            "branding"
                          ],
                          "description": "Scrape format"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "markdown",
                                "html",
                                "rawHtml",
                                "links",
                                "images",
                                "screenshot",
                                "summary",
                                "changeTracking",
                                "json",
                                "attributes",
                                "branding"
                              ],
                              "description": "Scrape format"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "json"
                              ]
                            },
                            "prompt": {
                              "type": "string",
                              "description": "Optional prompt for JSON extraction"
                            },
                            "schema": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "additionalProperties": {}
                                },
                                {}
                              ],
                              "description": "Optional JSON schema for structured data extraction"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "changeTracking"
                              ]
                            },
                            "modes": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "enum": [
                                  "git-diff",
                                  "json"
                                ]
                              },
                              "description": "Modes for change tracking"
                            },
                            "schema": {
                              "type": "object",
                              "additionalProperties": {},
                              "description": "Optional schema for change tracking"
                            },
                            "prompt": {
                              "type": "string",
                              "description": "Optional prompt for change tracking"
                            },
                            "tag": {
                              "type": "string",
                              "description": "Optional tag for change tracking"
                            }
                          },
                          "required": [
                            "type",
                            "modes"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "screenshot"
                              ]
                            },
                            "fullPage": {
                              "type": "boolean",
                              "description": "Whether to capture full page screenshot"
                            },
                            "quality": {
                              "type": "number",
                              "description": "Quality of the screenshot (1-100)"
                            },
                            "viewport": {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "description": "Viewport width in pixels"
                                },
                                "height": {
                                  "type": "number",
                                  "description": "Viewport height in pixels"
                                }
                              },
                              "required": [
                                "width",
                                "height"
                              ],
                              "additionalProperties": false,
                              "description": "Viewport dimensions for the screenshot"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "attributes"
                              ]
                            },
                            "selectors": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "selector": {
                                    "type": "string",
                                    "description": "CSS selector for the element"
                                  },
                                  "attribute": {
                                    "type": "string",
                                    "description": "Attribute name to extract"
                                  }
                                },
                                "required": [
                                  "selector",
                                  "attribute"
                                ],
                                "additionalProperties": false
                              },
                              "description": "Array of selectors and attributes to extract"
                            }
                          },
                          "required": [
                            "type",
                            "selectors"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "default": [
                      "markdown"
                    ],
                    "description": "Formats to scrape from the URL"
                  },
                  "headers": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "HTTP headers to include in the request"
                  },
                  "includeTags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "HTML tags/classes/ids to include in the scrape"
                  },
                  "excludeTags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "HTML tags/classes/ids to exclude from the scrape"
                  },
                  "onlyMainContent": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether to extract only main content or full page content"
                  },
                  "timeout": {
                    "type": "number",
                    "default": 30000,
                    "description": "Max duration in milliseconds before aborting the request"
                  },
                  "waitFor": {
                    "type": "number",
                    "default": 0,
                    "description": "Milliseconds of extra wait time before scraping (use sparingly). This waiting time is in addition to Firecrawl’s smart wait feature."
                  },
                  "mobile": {
                    "type": "boolean",
                    "description": "Whether to emulate a mobile device"
                  },
                  "parsers": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "pdf"
                              ]
                            },
                            "maxPages": {
                              "type": "number",
                              "description": "Maximum number of PDF pages to parse"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "description": "Extract structured content from various document formats"
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "wait"
                              ]
                            },
                            "milliseconds": {
                              "type": "number",
                              "description": "Time to wait in milliseconds (for wait)"
                            },
                            "selector": {
                              "type": "string",
                              "description": "CSS selector to wait for (for wait)"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "screenshot"
                              ]
                            },
                            "fullPage": {
                              "type": "boolean",
                              "description": "Whether to capture full page screenshot"
                            },
                            "quality": {
                              "type": "number",
                              "description": "Quality of the screenshot (1-100)"
                            },
                            "viewport": {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "description": "Viewport width in pixels"
                                },
                                "height": {
                                  "type": "number",
                                  "description": "Viewport height in pixels"
                                }
                              },
                              "required": [
                                "width",
                                "height"
                              ],
                              "additionalProperties": false,
                              "description": "Viewport dimensions for the screenshot"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "click"
                              ]
                            },
                            "selector": {
                              "type": "string",
                              "description": "CSS selector to click on"
                            }
                          },
                          "required": [
                            "type",
                            "selector"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "write"
                              ]
                            },
                            "text": {
                              "type": "string",
                              "description": "Text to write into the element"
                            }
                          },
                          "required": [
                            "type",
                            "text"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "press"
                              ]
                            },
                            "key": {
                              "type": "string",
                              "description": "Key to press (e.g., \"Enter\")"
                            }
                          },
                          "required": [
                            "type",
                            "key"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "scroll"
                              ]
                            },
                            "direction": {
                              "type": "string",
                              "enum": [
                                "up",
                                "down"
                              ],
                              "description": "Scroll direction (for scroll)"
                            },
                            "selector": {
                              "type": "string",
                              "description": "CSS selector to scroll to (for scroll)"
                            }
                          },
                          "required": [
                            "type",
                            "direction"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "scrape"
                              ]
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "executeJavascript"
                              ]
                            },
                            "script": {
                              "type": "string",
                              "description": "JavaScript code to execute on the page"
                            }
                          },
                          "required": [
                            "type",
                            "script"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "pdf"
                              ]
                            },
                            "format": {
                              "type": "string",
                              "enum": [
                                "A0",
                                "A1",
                                "A2",
                                "A3",
                                "A4",
                                "A5",
                                "A6",
                                "Letter",
                                "Legal",
                                "Tabloid",
                                "Ledger"
                              ],
                              "description": "Page format for PDF generation"
                            },
                            "landscape": {
                              "type": "boolean",
                              "description": "Whether to generate PDF in landscape orientation"
                            },
                            "scale": {
                              "type": "number",
                              "description": "Scale factor for PDF rendering"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "description": "Sequence of browser actions to perform before scraping"
                  },
                  "location": {
                    "type": "object",
                    "properties": {
                      "country": {
                        "type": "string",
                        "description": "Country code for proxy location"
                      },
                      "languages": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Preferred languages for proxy location"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Location configuration for proxy location"
                  },
                  "skipTlsVerification": {
                    "type": "boolean",
                    "description": "Whether to skip TLS certificate verification"
                  },
                  "removeBase64Images": {
                    "type": "boolean",
                    "description": "Whether to remove base64-encoded images from the content"
                  },
                  "fastMode": {
                    "type": "boolean",
                    "description": "Whether to enable fast mode for scraping"
                  },
                  "useMock": {
                    "type": "string",
                    "description": "Use a mock response for testing purposes"
                  },
                  "blockAds": {
                    "type": "boolean",
                    "description": "Whether to block ads during scraping"
                  },
                  "proxy": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "basic",
                          "stealth",
                          "auto"
                        ]
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "description": "Type of proxy to use for scraping"
                  },
                  "maxAge": {
                    "type": "number",
                    "default": 172800000,
                    "description": "If a cached version of the page is newer than `maxAge` (in milliseconds), Firecrawl returns it instantly; otherwise it scrapes fresh and updates the cache. Set 0 to always fetch fresh."
                  },
                  "storeInCache": {
                    "type": "boolean",
                    "description": "Whether to store the scraped result in cache"
                  },
                  "integration": {
                    "type": "string",
                    "description": "Integration identifier for the scrape request"
                  }
                },
                "additionalProperties": false,
                "description": "Scrape options to apply to each search result"
              },
              "integration": {
                "type": "string",
                "description": "Integration identifier for the search request"
              }
            },
            "required": [
              "operation",
              "query"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "maxRetries": {
                "type": "number",
                "description": "Maximum number of retries for the scrape request"
              },
              "backoffFactor": {
                "type": "number",
                "description": "Backoff factor for retry delays"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "map"
                ],
                "description": "Map a site to discover URLs"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "The base URL of the site to map"
              },
              "search": {
                "type": "string",
                "description": "Search for specific urls inside a website"
              },
              "sitemap": {
                "type": "string",
                "enum": [
                  "only",
                  "include",
                  "skip"
                ],
                "description": "Sitemap handling strategy"
              },
              "includeSubdomains": {
                "type": "boolean",
                "description": "Whether to include subdomains in the site map"
              },
              "limit": {
                "type": "number",
                "description": "Maximum number of URLs to discover"
              },
              "timeout": {
                "type": "number",
                "description": "Timeout in milliseconds for the mapping operation"
              },
              "integration": {
                "type": "string",
                "description": "Integration identifier for the map request"
              },
              "location": {
                "type": "object",
                "properties": {
                  "country": {
                    "type": "string",
                    "description": "Country code for proxy location"
                  },
                  "languages": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Preferred languages for proxy location"
                  }
                },
                "additionalProperties": false,
                "description": "Location configuration for proxy location"
              }
            },
            "required": [
              "operation",
              "url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "maxRetries": {
                "type": "number",
                "description": "Maximum number of retries for the scrape request"
              },
              "backoffFactor": {
                "type": "number",
                "description": "Backoff factor for retry delays"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "crawl"
                ],
                "description": "Recursively search through a urls subdomains, and gather the content"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "The URL to crawl"
              },
              "prompt": {
                "type": "string",
                "description": "Optional prompt to guide the crawl behavior"
              },
              "excludePaths": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of URL paths to exclude from the crawl"
              },
              "includePaths": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of URL paths to include in the crawl"
              },
              "maxDiscoveryDepth": {
                "type": "number",
                "description": "Maximum depth for link discovery during the crawl"
              },
              "sitemap": {
                "type": "string",
                "enum": [
                  "skip",
                  "include"
                ],
                "description": "Sitemap handling strategy during the crawl"
              },
              "ignoreQueryParameters": {
                "type": "boolean",
                "description": "Whether to ignore query parameters when crawling URLs"
              },
              "limit": {
                "type": "number",
                "description": "Maximum number of pages to crawl"
              },
              "crawlEntireDomain": {
                "type": "boolean",
                "description": "Whether to crawl the entire domain including subdomains"
              },
              "allowExternalLinks": {
                "type": "boolean",
                "description": "Whether to allow crawling external links"
              },
              "allowSubdomains": {
                "type": "boolean",
                "description": "Whether to include subdomains in the crawl"
              },
              "delay": {
                "type": "number",
                "description": "Delay in milliseconds between requests during the crawl"
              },
              "maxConcurrency": {
                "type": "number",
                "description": "Maximum number of concurrent requests during the crawl"
              },
              "webhook": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uri",
                    "description": "Webhook URL to send crawl results to"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Webhook URL to send crawl results to"
                      },
                      "headers": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string"
                        },
                        "description": "HTTP headers to include in the webhook request"
                      },
                      "metadata": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string"
                        },
                        "description": "Additional metadata to include in the webhook payload"
                      },
                      "events": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "completed",
                            "failed",
                            "page",
                            "started"
                          ]
                        },
                        "description": "Events that trigger the webhook"
                      }
                    },
                    "required": [
                      "url"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Webhook configuration for crawl events"
              },
              "scrapeOptions": {
                "type": "object",
                "properties": {
                  "formats": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string",
                          "enum": [
                            "markdown",
                            "html",
                            "rawHtml",
                            "links",
                            "images",
                            "screenshot",
                            "summary",
                            "changeTracking",
                            "json",
                            "attributes",
                            "branding"
                          ],
                          "description": "Scrape format"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "markdown",
                                "html",
                                "rawHtml",
                                "links",
                                "images",
                                "screenshot",
                                "summary",
                                "changeTracking",
                                "json",
                                "attributes",
                                "branding"
                              ],
                              "description": "Scrape format"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "json"
                              ]
                            },
                            "prompt": {
                              "type": "string",
                              "description": "Optional prompt for JSON extraction"
                            },
                            "schema": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "additionalProperties": {}
                                },
                                {}
                              ],
                              "description": "Optional JSON schema for structured data extraction"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "changeTracking"
                              ]
                            },
                            "modes": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "enum": [
                                  "git-diff",
                                  "json"
                                ]
                              },
                              "description": "Modes for change tracking"
                            },
                            "schema": {
                              "type": "object",
                              "additionalProperties": {},
                              "description": "Optional schema for change tracking"
                            },
                            "prompt": {
                              "type": "string",
                              "description": "Optional prompt for change tracking"
                            },
                            "tag": {
                              "type": "string",
                              "description": "Optional tag for change tracking"
                            }
                          },
                          "required": [
                            "type",
                            "modes"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "screenshot"
                              ]
                            },
                            "fullPage": {
                              "type": "boolean",
                              "description": "Whether to capture full page screenshot"
                            },
                            "quality": {
                              "type": "number",
                              "description": "Quality of the screenshot (1-100)"
                            },
                            "viewport": {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "description": "Viewport width in pixels"
                                },
                                "height": {
                                  "type": "number",
                                  "description": "Viewport height in pixels"
                                }
                              },
                              "required": [
                                "width",
                                "height"
                              ],
                              "additionalProperties": false,
                              "description": "Viewport dimensions for the screenshot"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "attributes"
                              ]
                            },
                            "selectors": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "selector": {
                                    "type": "string",
                                    "description": "CSS selector for the element"
                                  },
                                  "attribute": {
                                    "type": "string",
                                    "description": "Attribute name to extract"
                                  }
                                },
                                "required": [
                                  "selector",
                                  "attribute"
                                ],
                                "additionalProperties": false
                              },
                              "description": "Array of selectors and attributes to extract"
                            }
                          },
                          "required": [
                            "type",
                            "selectors"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "default": [
                      "markdown"
                    ],
                    "description": "Formats to scrape from the URL"
                  },
                  "headers": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "HTTP headers to include in the request"
                  },
                  "includeTags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "HTML tags/classes/ids to include in the scrape"
                  },
                  "excludeTags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "HTML tags/classes/ids to exclude from the scrape"
                  },
                  "onlyMainContent": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether to extract only main content or full page content"
                  },
                  "timeout": {
                    "type": "number",
                    "default": 30000,
                    "description": "Max duration in milliseconds before aborting the request"
                  },
                  "waitFor": {
                    "type": "number",
                    "default": 0,
                    "description": "Milliseconds of extra wait time before scraping (use sparingly). This waiting time is in addition to Firecrawl’s smart wait feature."
                  },
                  "mobile": {
                    "type": "boolean",
                    "description": "Whether to emulate a mobile device"
                  },
                  "parsers": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "pdf"
                              ]
                            },
                            "maxPages": {
                              "type": "number",
                              "description": "Maximum number of PDF pages to parse"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "description": "Extract structured content from various document formats"
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "wait"
                              ]
                            },
                            "milliseconds": {
                              "type": "number",
                              "description": "Time to wait in milliseconds (for wait)"
                            },
                            "selector": {
                              "type": "string",
                              "description": "CSS selector to wait for (for wait)"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "screenshot"
                              ]
                            },
                            "fullPage": {
                              "type": "boolean",
                              "description": "Whether to capture full page screenshot"
                            },
                            "quality": {
                              "type": "number",
                              "description": "Quality of the screenshot (1-100)"
                            },
                            "viewport": {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "description": "Viewport width in pixels"
                                },
                                "height": {
                                  "type": "number",
                                  "description": "Viewport height in pixels"
                                }
                              },
                              "required": [
                                "width",
                                "height"
                              ],
                              "additionalProperties": false,
                              "description": "Viewport dimensions for the screenshot"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "click"
                              ]
                            },
                            "selector": {
                              "type": "string",
                              "description": "CSS selector to click on"
                            }
                          },
                          "required": [
                            "type",
                            "selector"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "write"
                              ]
                            },
                            "text": {
                              "type": "string",
                              "description": "Text to write into the element"
                            }
                          },
                          "required": [
                            "type",
                            "text"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "press"
                              ]
                            },
                            "key": {
                              "type": "string",
                              "description": "Key to press (e.g., \"Enter\")"
                            }
                          },
                          "required": [
                            "type",
                            "key"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "scroll"
                              ]
                            },
                            "direction": {
                              "type": "string",
                              "enum": [
                                "up",
                                "down"
                              ],
                              "description": "Scroll direction (for scroll)"
                            },
                            "selector": {
                              "type": "string",
                              "description": "CSS selector to scroll to (for scroll)"
                            }
                          },
                          "required": [
                            "type",
                            "direction"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "scrape"
                              ]
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "executeJavascript"
                              ]
                            },
                            "script": {
                              "type": "string",
                              "description": "JavaScript code to execute on the page"
                            }
                          },
                          "required": [
                            "type",
                            "script"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "pdf"
                              ]
                            },
                            "format": {
                              "type": "string",
                              "enum": [
                                "A0",
                                "A1",
                                "A2",
                                "A3",
                                "A4",
                                "A5",
                                "A6",
                                "Letter",
                                "Legal",
                                "Tabloid",
                                "Ledger"
                              ],
                              "description": "Page format for PDF generation"
                            },
                            "landscape": {
                              "type": "boolean",
                              "description": "Whether to generate PDF in landscape orientation"
                            },
                            "scale": {
                              "type": "number",
                              "description": "Scale factor for PDF rendering"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "description": "Sequence of browser actions to perform before scraping"
                  },
                  "location": {
                    "type": "object",
                    "properties": {
                      "country": {
                        "type": "string",
                        "description": "Country code for proxy location"
                      },
                      "languages": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Preferred languages for proxy location"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Location configuration for proxy location"
                  },
                  "skipTlsVerification": {
                    "type": "boolean",
                    "description": "Whether to skip TLS certificate verification"
                  },
                  "removeBase64Images": {
                    "type": "boolean",
                    "description": "Whether to remove base64-encoded images from the content"
                  },
                  "fastMode": {
                    "type": "boolean",
                    "description": "Whether to enable fast mode for scraping"
                  },
                  "useMock": {
                    "type": "string",
                    "description": "Use a mock response for testing purposes"
                  },
                  "blockAds": {
                    "type": "boolean",
                    "description": "Whether to block ads during scraping"
                  },
                  "proxy": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "basic",
                          "stealth",
                          "auto"
                        ]
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "description": "Type of proxy to use for scraping"
                  },
                  "maxAge": {
                    "type": "number",
                    "default": 172800000,
                    "description": "If a cached version of the page is newer than `maxAge` (in milliseconds), Firecrawl returns it instantly; otherwise it scrapes fresh and updates the cache. Set 0 to always fetch fresh."
                  },
                  "storeInCache": {
                    "type": "boolean",
                    "description": "Whether to store the scraped result in cache"
                  },
                  "integration": {
                    "type": "string",
                    "description": "Integration identifier for the scrape request"
                  }
                },
                "additionalProperties": false,
                "description": "Scrape options to apply to each crawled page"
              },
              "zeroDataRetention": {
                "type": "boolean",
                "description": "Whether to retain zero data from the crawl"
              },
              "integration": {
                "type": "string",
                "description": "Integration identifier for the crawl request"
              },
              "pollInterval": {
                "type": "number",
                "description": "Interval in milliseconds to poll for crawl status"
              },
              "timeout": {
                "type": "number",
                "description": "Timeout in milliseconds for the crawl operation"
              }
            },
            "required": [
              "operation",
              "url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "maxRetries": {
                "type": "number",
                "description": "Maximum number of retries for the scrape request"
              },
              "backoffFactor": {
                "type": "number",
                "description": "Backoff factor for retry delays"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "extract"
                ],
                "description": "Extract structured data from a URL"
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "description": "Array of URLs to extract data from"
              },
              "prompt": {
                "type": "string",
                "description": "Optional prompt to guide the extraction process"
              },
              "schema": {
                "anyOf": [
                  {
                    "type": "object",
                    "additionalProperties": {}
                  },
                  {}
                ],
                "description": "Optional schema to structure the extracted data"
              },
              "systemPrompt": {
                "type": "string",
                "description": "Optional system prompt for the extraction AI agent"
              },
              "allowExternalLinks": {
                "type": "boolean",
                "description": "Whether to allow extraction from external links found on the page"
              },
              "enableWebSearch": {
                "type": "boolean",
                "description": "Whether to enable web search to supplement extraction"
              },
              "showSources": {
                "type": "boolean",
                "description": "Whether to include source URLs in the extraction results"
              },
              "scrapeOptions": {
                "type": "object",
                "properties": {
                  "formats": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string",
                          "enum": [
                            "markdown",
                            "html",
                            "rawHtml",
                            "links",
                            "images",
                            "screenshot",
                            "summary",
                            "changeTracking",
                            "json",
                            "attributes",
                            "branding"
                          ],
                          "description": "Scrape format"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "markdown",
                                "html",
                                "rawHtml",
                                "links",
                                "images",
                                "screenshot",
                                "summary",
                                "changeTracking",
                                "json",
                                "attributes",
                                "branding"
                              ],
                              "description": "Scrape format"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "json"
                              ]
                            },
                            "prompt": {
                              "type": "string",
                              "description": "Optional prompt for JSON extraction"
                            },
                            "schema": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "additionalProperties": {}
                                },
                                {}
                              ],
                              "description": "Optional JSON schema for structured data extraction"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "changeTracking"
                              ]
                            },
                            "modes": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "enum": [
                                  "git-diff",
                                  "json"
                                ]
                              },
                              "description": "Modes for change tracking"
                            },
                            "schema": {
                              "type": "object",
                              "additionalProperties": {},
                              "description": "Optional schema for change tracking"
                            },
                            "prompt": {
                              "type": "string",
                              "description": "Optional prompt for change tracking"
                            },
                            "tag": {
                              "type": "string",
                              "description": "Optional tag for change tracking"
                            }
                          },
                          "required": [
                            "type",
                            "modes"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "screenshot"
                              ]
                            },
                            "fullPage": {
                              "type": "boolean",
                              "description": "Whether to capture full page screenshot"
                            },
                            "quality": {
                              "type": "number",
                              "description": "Quality of the screenshot (1-100)"
                            },
                            "viewport": {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "description": "Viewport width in pixels"
                                },
                                "height": {
                                  "type": "number",
                                  "description": "Viewport height in pixels"
                                }
                              },
                              "required": [
                                "width",
                                "height"
                              ],
                              "additionalProperties": false,
                              "description": "Viewport dimensions for the screenshot"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "attributes"
                              ]
                            },
                            "selectors": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "selector": {
                                    "type": "string",
                                    "description": "CSS selector for the element"
                                  },
                                  "attribute": {
                                    "type": "string",
                                    "description": "Attribute name to extract"
                                  }
                                },
                                "required": [
                                  "selector",
                                  "attribute"
                                ],
                                "additionalProperties": false
                              },
                              "description": "Array of selectors and attributes to extract"
                            }
                          },
                          "required": [
                            "type",
                            "selectors"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "default": [
                      "markdown"
                    ],
                    "description": "Formats to scrape from the URL"
                  },
                  "headers": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "HTTP headers to include in the request"
                  },
                  "includeTags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "HTML tags/classes/ids to include in the scrape"
                  },
                  "excludeTags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "HTML tags/classes/ids to exclude from the scrape"
                  },
                  "onlyMainContent": {
                    "type": "boolean",
                    "default": true,
                    "description": "Whether to extract only main content or full page content"
                  },
                  "timeout": {
                    "type": "number",
                    "default": 30000,
                    "description": "Max duration in milliseconds before aborting the request"
                  },
                  "waitFor": {
                    "type": "number",
                    "default": 0,
                    "description": "Milliseconds of extra wait time before scraping (use sparingly). This waiting time is in addition to Firecrawl’s smart wait feature."
                  },
                  "mobile": {
                    "type": "boolean",
                    "description": "Whether to emulate a mobile device"
                  },
                  "parsers": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "pdf"
                              ]
                            },
                            "maxPages": {
                              "type": "number",
                              "description": "Maximum number of PDF pages to parse"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "description": "Extract structured content from various document formats"
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "wait"
                              ]
                            },
                            "milliseconds": {
                              "type": "number",
                              "description": "Time to wait in milliseconds (for wait)"
                            },
                            "selector": {
                              "type": "string",
                              "description": "CSS selector to wait for (for wait)"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "screenshot"
                              ]
                            },
                            "fullPage": {
                              "type": "boolean",
                              "description": "Whether to capture full page screenshot"
                            },
                            "quality": {
                              "type": "number",
                              "description": "Quality of the screenshot (1-100)"
                            },
                            "viewport": {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "description": "Viewport width in pixels"
                                },
                                "height": {
                                  "type": "number",
                                  "description": "Viewport height in pixels"
                                }
                              },
                              "required": [
                                "width",
                                "height"
                              ],
                              "additionalProperties": false,
                              "description": "Viewport dimensions for the screenshot"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "click"
                              ]
                            },
                            "selector": {
                              "type": "string",
                              "description": "CSS selector to click on"
                            }
                          },
                          "required": [
                            "type",
                            "selector"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "write"
                              ]
                            },
                            "text": {
                              "type": "string",
                              "description": "Text to write into the element"
                            }
                          },
                          "required": [
                            "type",
                            "text"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "press"
                              ]
                            },
                            "key": {
                              "type": "string",
                              "description": "Key to press (e.g., \"Enter\")"
                            }
                          },
                          "required": [
                            "type",
                            "key"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "scroll"
                              ]
                            },
                            "direction": {
                              "type": "string",
                              "enum": [
                                "up",
                                "down"
                              ],
                              "description": "Scroll direction (for scroll)"
                            },
                            "selector": {
                              "type": "string",
                              "description": "CSS selector to scroll to (for scroll)"
                            }
                          },
                          "required": [
                            "type",
                            "direction"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "scrape"
                              ]
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "executeJavascript"
                              ]
                            },
                            "script": {
                              "type": "string",
                              "description": "JavaScript code to execute on the page"
                            }
                          },
                          "required": [
                            "type",
                            "script"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "pdf"
                              ]
                            },
                            "format": {
                              "type": "string",
                              "enum": [
                                "A0",
                                "A1",
                                "A2",
                                "A3",
                                "A4",
                                "A5",
                                "A6",
                                "Letter",
                                "Legal",
                                "Tabloid",
                                "Ledger"
                              ],
                              "description": "Page format for PDF generation"
                            },
                            "landscape": {
                              "type": "boolean",
                              "description": "Whether to generate PDF in landscape orientation"
                            },
                            "scale": {
                              "type": "number",
                              "description": "Scale factor for PDF rendering"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "description": "Sequence of browser actions to perform before scraping"
                  },
                  "location": {
                    "type": "object",
                    "properties": {
                      "country": {
                        "type": "string",
                        "description": "Country code for proxy location"
                      },
                      "languages": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Preferred languages for proxy location"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Location configuration for proxy location"
                  },
                  "skipTlsVerification": {
                    "type": "boolean",
                    "description": "Whether to skip TLS certificate verification"
                  },
                  "removeBase64Images": {
                    "type": "boolean",
                    "description": "Whether to remove base64-encoded images from the content"
                  },
                  "fastMode": {
                    "type": "boolean",
                    "description": "Whether to enable fast mode for scraping"
                  },
                  "useMock": {
                    "type": "string",
                    "description": "Use a mock response for testing purposes"
                  },
                  "blockAds": {
                    "type": "boolean",
                    "description": "Whether to block ads during scraping"
                  },
                  "proxy": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "basic",
                          "stealth",
                          "auto"
                        ]
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "description": "Type of proxy to use for scraping"
                  },
                  "maxAge": {
                    "type": "number",
                    "default": 172800000,
                    "description": "If a cached version of the page is newer than `maxAge` (in milliseconds), Firecrawl returns it instantly; otherwise it scrapes fresh and updates the cache. Set 0 to always fetch fresh."
                  },
                  "storeInCache": {
                    "type": "boolean",
                    "description": "Whether to store the scraped result in cache"
                  },
                  "integration": {
                    "type": "string",
                    "description": "Integration identifier for the scrape request"
                  }
                },
                "additionalProperties": false,
                "description": "Optional scrape options to apply to the extraction process"
              },
              "ignoreInvalidURLs": {
                "type": "boolean",
                "description": "Whether to ignore invalid URLs in the input list"
              },
              "integration": {
                "type": "string",
                "description": "Integration identifier for the extraction process"
              },
              "agent": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "enum": [
                      "FIRE-1"
                    ],
                    "description": "AI model to use for extraction"
                  }
                },
                "required": [
                  "model"
                ],
                "additionalProperties": false,
                "description": "Agent to use for the extraction process"
              },
              "pollInterval": {
                "type": "number",
                "description": "Interval in milliseconds to poll for extraction status"
              },
              "timeout": {
                "type": "number",
                "description": "Timeout in milliseconds for the extraction operation"
              }
            },
            "required": [
              "operation",
              "urls"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "markdown": {
                "type": "string",
                "description": "Document content in markdown format"
              },
              "html": {
                "type": "string",
                "description": "Document content in HTML format"
              },
              "rawHtml": {
                "type": "string",
                "description": "Document content in raw HTML format"
              },
              "json": {
                "description": "Document content in structured JSON format"
              },
              "summary": {
                "type": "string",
                "description": "Summary of the document content"
              },
              "metadata": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "description": "Title of the document"
                  },
                  "description": {
                    "type": "string",
                    "description": "Description of the document"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "URL of the document"
                  },
                  "language": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ],
                    "description": "Language of the document"
                  },
                  "keywords": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ],
                    "description": "Keywords associated with the document"
                  },
                  "robots": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ],
                    "description": "Robots meta tag content"
                  },
                  "ogTitle": {
                    "type": "string",
                    "description": "Open Graph title"
                  },
                  "ogDescription": {
                    "type": "string",
                    "description": "Open Graph description"
                  },
                  "ogUrl": {
                    "type": "string",
                    "description": "Open Graph URL"
                  },
                  "ogImage": {
                    "type": "string",
                    "description": "Open Graph image URL"
                  },
                  "ogAudio": {
                    "type": "string",
                    "description": "Open Graph audio URL"
                  },
                  "ogDeterminer": {
                    "type": "string",
                    "description": "Open Graph determiner"
                  },
                  "ogLocale": {
                    "type": "string",
                    "description": "Open Graph locale"
                  },
                  "ogLocaleAlternate": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Alternate Open Graph locales"
                  },
                  "ogSiteName": {
                    "type": "string",
                    "description": "Open Graph site name"
                  },
                  "ogVideo": {
                    "type": "string",
                    "description": "Open Graph video URL"
                  },
                  "favicon": {
                    "type": "string",
                    "description": "Favicon URL"
                  },
                  "dcTermsCreated": {
                    "type": "string",
                    "description": "Dublin Core terms created"
                  },
                  "dcDateCreated": {
                    "type": "string",
                    "description": "Dublin Core date created"
                  },
                  "dcDate": {
                    "type": "string",
                    "description": "Dublin Core date"
                  },
                  "dcTermsType": {
                    "type": "string",
                    "description": "Dublin Core terms type"
                  },
                  "dcType": {
                    "type": "string",
                    "description": "Dublin Core type"
                  },
                  "dcTermsAudience": {
                    "type": "string",
                    "description": "Dublin Core terms audience"
                  },
                  "dcTermsSubject": {
                    "type": "string",
                    "description": "Dublin Core terms subject"
                  },
                  "dcSubject": {
                    "type": "string",
                    "description": "Dublin Core subject"
                  },
                  "dcDescription": {
                    "type": "string",
                    "description": "Dublin Core description"
                  },
                  "dcTermsKeywords": {
                    "type": "string",
                    "description": "Dublin Core terms keywords"
                  },
                  "modifiedTime": {
                    "type": "string",
                    "description": "Last modified time"
                  },
                  "publishedTime": {
                    "type": "string",
                    "description": "Published time"
                  },
                  "articleTag": {
                    "type": "string",
                    "description": "Article tag"
                  },
                  "articleSection": {
                    "type": "string",
                    "description": "Article section"
                  },
                  "sourceURL": {
                    "type": "string",
                    "format": "uri",
                    "description": "Source URL"
                  },
                  "statusCode": {
                    "type": "number",
                    "description": "HTTP status code"
                  },
                  "scrapeId": {
                    "type": "string",
                    "description": "Scrape identifier"
                  },
                  "numPages": {
                    "type": "number",
                    "description": "Number of pages scraped"
                  },
                  "contentType": {
                    "type": "string",
                    "description": "Content type of the document"
                  },
                  "proxyUsed": {
                    "type": "string",
                    "enum": [
                      "basic",
                      "stealth"
                    ],
                    "description": "Type of proxy used"
                  },
                  "cacheState": {
                    "type": "string",
                    "enum": [
                      "hit",
                      "miss"
                    ],
                    "description": "Cache state"
                  },
                  "cachedAt": {
                    "type": "string",
                    "description": "Cache timestamp"
                  },
                  "creditsUsed": {
                    "type": "number",
                    "description": "Number of credits used"
                  },
                  "error": {
                    "type": "string",
                    "description": "Error message if any"
                  }
                },
                "additionalProperties": {},
                "description": "Metadata associated with the document"
              },
              "links": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "description": "Array of links found in the document"
              },
              "images": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "description": "Array of image URLs found in the document"
              },
              "screenshot": {
                "type": "string",
                "description": "Base64-encoded screenshot of the document"
              },
              "attributes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "selector": {
                      "type": "string",
                      "description": "CSS selector for the element"
                    },
                    "attribute": {
                      "type": "string",
                      "description": "Attribute name to extract"
                    },
                    "values": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Extracted attribute values"
                    }
                  },
                  "required": [
                    "selector",
                    "attribute",
                    "values"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of extracted attributes from the document"
              },
              "actions": {
                "type": "object",
                "additionalProperties": {},
                "description": "Record of actions performed on the document"
              },
              "warning": {
                "type": "string",
                "description": "Warning message if any"
              },
              "changeTracking": {
                "type": "object",
                "additionalProperties": {},
                "description": "Change tracking information for the document"
              },
              "branding": {
                "type": "object",
                "properties": {
                  "colorScheme": {
                    "type": "string",
                    "enum": [
                      "light",
                      "dark"
                    ],
                    "description": "The detected color scheme (\"light\" or \"dark\")"
                  },
                  "logo": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true,
                    "description": "URL of the primary logo"
                  },
                  "fonts": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "family": {
                          "type": "string",
                          "description": "Font family name"
                        }
                      },
                      "required": [
                        "family"
                      ],
                      "additionalProperties": {}
                    },
                    "description": "Array of font families used on the page"
                  },
                  "colors": {
                    "type": "object",
                    "properties": {
                      "primary": {
                        "type": "string",
                        "description": "Primary brand color"
                      },
                      "secondary": {
                        "type": "string",
                        "description": "Secondary brand color"
                      },
                      "accent": {
                        "type": "string",
                        "description": "Accent brand color"
                      },
                      "background": {
                        "type": "string",
                        "description": "UI Background color"
                      },
                      "textPrimary": {
                        "type": "string",
                        "description": "UI Primary text color"
                      },
                      "textSecondary": {
                        "type": "string",
                        "description": "UI Secondary text color"
                      },
                      "link": {
                        "type": "string",
                        "description": "Semantic Link color"
                      },
                      "success": {
                        "type": "string",
                        "description": "Semantic Success color"
                      },
                      "warning": {
                        "type": "string",
                        "description": "Semantic Warning color"
                      },
                      "error": {
                        "type": "string",
                        "description": "Semantic Error color"
                      }
                    },
                    "additionalProperties": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "not": {}
                        }
                      ]
                    },
                    "description": "Object containing brand colors"
                  },
                  "typography": {
                    "type": "object",
                    "properties": {
                      "fontFamilies": {
                        "type": "object",
                        "properties": {
                          "primary": {
                            "type": "string",
                            "description": "Primary font family"
                          },
                          "heading": {
                            "type": "string",
                            "description": "Heading font family"
                          },
                          "code": {
                            "type": "string",
                            "description": "Code font family"
                          }
                        },
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "not": {}
                            }
                          ]
                        },
                        "description": "Primary, heading, and code font families"
                      },
                      "fontStacks": {
                        "type": "object",
                        "properties": {
                          "primary": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Primary font stack array"
                          },
                          "heading": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Heading font stack array"
                          },
                          "body": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Body font stack array"
                          },
                          "paragraph": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Paragraph font stack array"
                          }
                        },
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "not": {}
                            }
                          ]
                        },
                        "description": "Font stack arrays for primary, heading, body, and paragraph"
                      },
                      "fontSizes": {
                        "type": "object",
                        "properties": {
                          "h1": {
                            "type": "string",
                            "description": "H1 font size"
                          },
                          "h2": {
                            "type": "string",
                            "description": "H2 font size"
                          },
                          "h3": {
                            "type": "string",
                            "description": "H3 font size"
                          },
                          "body": {
                            "type": "string",
                            "description": "Body font size"
                          },
                          "small": {
                            "type": "string",
                            "description": "Small text font size"
                          }
                        },
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "not": {}
                            }
                          ]
                        },
                        "description": "Size definitions for headings and body text"
                      },
                      "lineHeights": {
                        "type": "object",
                        "properties": {
                          "heading": {
                            "type": "number",
                            "description": "Heading line height"
                          },
                          "body": {
                            "type": "number",
                            "description": "Body text line height"
                          }
                        },
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "not": {}
                            }
                          ]
                        },
                        "description": "Line height values for different text types"
                      },
                      "fontWeights": {
                        "type": "object",
                        "properties": {
                          "light": {
                            "type": "number",
                            "description": "Light font weight"
                          },
                          "regular": {
                            "type": "number",
                            "description": "Regular font weight"
                          },
                          "medium": {
                            "type": "number",
                            "description": "Medium font weight"
                          },
                          "bold": {
                            "type": "number",
                            "description": "Bold font weight"
                          }
                        },
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "not": {}
                            }
                          ]
                        },
                        "description": "Weight definitions (light, regular, medium, bold)"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Detailed typography information"
                  },
                  "spacing": {
                    "type": "object",
                    "properties": {
                      "baseUnit": {
                        "type": "number",
                        "description": "Base spacing unit in pixels"
                      },
                      "padding": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "number"
                        },
                        "description": "Padding spacing values"
                      },
                      "margins": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "number"
                        },
                        "description": "Margin spacing values"
                      },
                      "gridGutter": {
                        "type": "number",
                        "description": "Grid gutter size in pixels"
                      },
                      "borderRadius": {
                        "type": "string",
                        "description": "Default border radius"
                      }
                    },
                    "additionalProperties": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        },
                        {
                          "type": "object",
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        {
                          "not": {}
                        }
                      ]
                    },
                    "description": "Spacing and layout information"
                  },
                  "components": {
                    "type": "object",
                    "properties": {
                      "buttonPrimary": {
                        "type": "object",
                        "properties": {
                          "background": {
                            "type": "string",
                            "description": "Button background color"
                          },
                          "textColor": {
                            "type": "string",
                            "description": "Button text color"
                          },
                          "borderColor": {
                            "type": "string",
                            "description": "Button border color"
                          },
                          "borderRadius": {
                            "type": "string",
                            "description": "Button border radius"
                          }
                        },
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "not": {}
                            }
                          ]
                        },
                        "description": "Primary button styles"
                      },
                      "buttonSecondary": {
                        "type": "object",
                        "properties": {
                          "background": {
                            "type": "string",
                            "description": "Button background color"
                          },
                          "textColor": {
                            "type": "string",
                            "description": "Button text color"
                          },
                          "borderColor": {
                            "type": "string",
                            "description": "Button border color"
                          },
                          "borderRadius": {
                            "type": "string",
                            "description": "Button border radius"
                          }
                        },
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "not": {}
                            }
                          ]
                        },
                        "description": "Secondary button styles"
                      },
                      "input": {
                        "type": "object",
                        "properties": {
                          "borderColor": {
                            "type": "string",
                            "description": "Input border color"
                          },
                          "focusBorderColor": {
                            "type": "string",
                            "description": "Input focus border color"
                          },
                          "borderRadius": {
                            "type": "string",
                            "description": "Input border radius"
                          }
                        },
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "not": {}
                            }
                          ]
                        },
                        "description": "Input field styles"
                      }
                    },
                    "additionalProperties": {},
                    "description": "UI component styles"
                  },
                  "icons": {
                    "type": "object",
                    "properties": {
                      "style": {
                        "type": "string",
                        "description": "Icon style"
                      },
                      "primaryColor": {
                        "type": "string",
                        "description": "Primary icon color"
                      }
                    },
                    "additionalProperties": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "not": {}
                        }
                      ]
                    },
                    "description": "Icon style information"
                  },
                  "images": {
                    "type": "object",
                    "properties": {
                      "logo": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true,
                        "description": "Logo image URL"
                      },
                      "favicon": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true,
                        "description": "Favicon image URL"
                      },
                      "ogImage": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true,
                        "description": "Open Graph image URL"
                      }
                    },
                    "additionalProperties": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "enum": [
                            "null"
                          ],
                          "nullable": true
                        },
                        {
                          "not": {}
                        }
                      ]
                    },
                    "description": "Brand images (logo, favicon, og:image)"
                  },
                  "animations": {
                    "type": "object",
                    "properties": {
                      "transitionDuration": {
                        "type": "string",
                        "description": "Transition duration for animations"
                      },
                      "easing": {
                        "type": "string",
                        "description": "Easing function for animations"
                      }
                    },
                    "additionalProperties": {},
                    "description": "Animation and transition settings"
                  },
                  "layout": {
                    "type": "object",
                    "properties": {
                      "grid": {
                        "type": "object",
                        "properties": {
                          "columns": {
                            "type": "number",
                            "description": "Number of grid columns"
                          },
                          "maxWidth": {
                            "type": "string",
                            "description": "Maximum grid width"
                          }
                        },
                        "additionalProperties": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "string"
                            },
                            {
                              "not": {}
                            }
                          ]
                        },
                        "description": "Grid layout configuration"
                      },
                      "headerHeight": {
                        "type": "string",
                        "description": "Header height"
                      },
                      "footerHeight": {
                        "type": "string",
                        "description": "Footer height"
                      }
                    },
                    "additionalProperties": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        },
                        {
                          "type": "object",
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "string"
                              },
                              {
                                "not": {}
                              }
                            ]
                          }
                        },
                        {
                          "not": {}
                        }
                      ]
                    },
                    "description": "Layout configuration (grid, header/footer heights)"
                  },
                  "tone": {
                    "type": "object",
                    "properties": {
                      "voice": {
                        "type": "string",
                        "description": "Brand voice tone"
                      },
                      "emojiUsage": {
                        "type": "string",
                        "description": "Emoji usage style"
                      }
                    },
                    "additionalProperties": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "not": {}
                        }
                      ]
                    },
                    "description": "Tone and voice characteristics"
                  },
                  "personality": {
                    "type": "object",
                    "properties": {
                      "tone": {
                        "type": "string",
                        "enum": [
                          "professional",
                          "playful",
                          "modern",
                          "traditional",
                          "minimalist",
                          "bold"
                        ],
                        "description": "Brand tone"
                      },
                      "energy": {
                        "type": "string",
                        "enum": [
                          "low",
                          "medium",
                          "high"
                        ],
                        "description": "Brand energy level"
                      },
                      "targetAudience": {
                        "type": "string",
                        "description": "Description of the target audience"
                      }
                    },
                    "required": [
                      "tone",
                      "energy",
                      "targetAudience"
                    ],
                    "additionalProperties": false,
                    "description": "Brand personality traits (tone, energy, target audience)"
                  }
                },
                "additionalProperties": {},
                "description": "Branding profile associated with the document"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "scrape"
                ],
                "description": "Scrape a single URL"
              }
            },
            "required": [
              "success",
              "error",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ],
                "description": "Search the web and optionally scrape each result"
              },
              "web": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Result URL"
                        },
                        "title": {
                          "type": "string",
                          "description": "Result title"
                        },
                        "description": {
                          "type": "string",
                          "description": "Result description"
                        },
                        "category": {
                          "type": "string",
                          "description": "Result category"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "markdown": {
                          "type": "string",
                          "description": "Document content in markdown format"
                        },
                        "html": {
                          "type": "string",
                          "description": "Document content in HTML format"
                        },
                        "rawHtml": {
                          "type": "string",
                          "description": "Document content in raw HTML format"
                        },
                        "json": {
                          "description": "Document content in structured JSON format"
                        },
                        "summary": {
                          "type": "string",
                          "description": "Summary of the document content"
                        },
                        "metadata": {
                          "type": "object",
                          "properties": {
                            "title": {
                              "type": "string",
                              "description": "Title of the document"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the document"
                            },
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL of the document"
                            },
                            "language": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              ],
                              "description": "Language of the document"
                            },
                            "keywords": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              ],
                              "description": "Keywords associated with the document"
                            },
                            "robots": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              ],
                              "description": "Robots meta tag content"
                            },
                            "ogTitle": {
                              "type": "string",
                              "description": "Open Graph title"
                            },
                            "ogDescription": {
                              "type": "string",
                              "description": "Open Graph description"
                            },
                            "ogUrl": {
                              "type": "string",
                              "description": "Open Graph URL"
                            },
                            "ogImage": {
                              "type": "string",
                              "description": "Open Graph image URL"
                            },
                            "ogAudio": {
                              "type": "string",
                              "description": "Open Graph audio URL"
                            },
                            "ogDeterminer": {
                              "type": "string",
                              "description": "Open Graph determiner"
                            },
                            "ogLocale": {
                              "type": "string",
                              "description": "Open Graph locale"
                            },
                            "ogLocaleAlternate": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "Alternate Open Graph locales"
                            },
                            "ogSiteName": {
                              "type": "string",
                              "description": "Open Graph site name"
                            },
                            "ogVideo": {
                              "type": "string",
                              "description": "Open Graph video URL"
                            },
                            "favicon": {
                              "type": "string",
                              "description": "Favicon URL"
                            },
                            "dcTermsCreated": {
                              "type": "string",
                              "description": "Dublin Core terms created"
                            },
                            "dcDateCreated": {
                              "type": "string",
                              "description": "Dublin Core date created"
                            },
                            "dcDate": {
                              "type": "string",
                              "description": "Dublin Core date"
                            },
                            "dcTermsType": {
                              "type": "string",
                              "description": "Dublin Core terms type"
                            },
                            "dcType": {
                              "type": "string",
                              "description": "Dublin Core type"
                            },
                            "dcTermsAudience": {
                              "type": "string",
                              "description": "Dublin Core terms audience"
                            },
                            "dcTermsSubject": {
                              "type": "string",
                              "description": "Dublin Core terms subject"
                            },
                            "dcSubject": {
                              "type": "string",
                              "description": "Dublin Core subject"
                            },
                            "dcDescription": {
                              "type": "string",
                              "description": "Dublin Core description"
                            },
                            "dcTermsKeywords": {
                              "type": "string",
                              "description": "Dublin Core terms keywords"
                            },
                            "modifiedTime": {
                              "type": "string",
                              "description": "Last modified time"
                            },
                            "publishedTime": {
                              "type": "string",
                              "description": "Published time"
                            },
                            "articleTag": {
                              "type": "string",
                              "description": "Article tag"
                            },
                            "articleSection": {
                              "type": "string",
                              "description": "Article section"
                            },
                            "sourceURL": {
                              "type": "string",
                              "format": "uri",
                              "description": "Source URL"
                            },
                            "statusCode": {
                              "type": "number",
                              "description": "HTTP status code"
                            },
                            "scrapeId": {
                              "type": "string",
                              "description": "Scrape identifier"
                            },
                            "numPages": {
                              "type": "number",
                              "description": "Number of pages scraped"
                            },
                            "contentType": {
                              "type": "string",
                              "description": "Content type of the document"
                            },
                            "proxyUsed": {
                              "type": "string",
                              "enum": [
                                "basic",
                                "stealth"
                              ],
                              "description": "Type of proxy used"
                            },
                            "cacheState": {
                              "type": "string",
                              "enum": [
                                "hit",
                                "miss"
                              ],
                              "description": "Cache state"
                            },
                            "cachedAt": {
                              "type": "string",
                              "description": "Cache timestamp"
                            },
                            "creditsUsed": {
                              "type": "number",
                              "description": "Number of credits used"
                            },
                            "error": {
                              "type": "string",
                              "description": "Error message if any"
                            }
                          },
                          "additionalProperties": {},
                          "description": "Metadata associated with the document"
                        },
                        "links": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          },
                          "description": "Array of links found in the document"
                        },
                        "images": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          },
                          "description": "Array of image URLs found in the document"
                        },
                        "screenshot": {
                          "type": "string",
                          "description": "Base64-encoded screenshot of the document"
                        },
                        "attributes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "selector": {
                                "type": "string",
                                "description": "CSS selector for the element"
                              },
                              "attribute": {
                                "type": "string",
                                "description": "Attribute name to extract"
                              },
                              "values": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Extracted attribute values"
                              }
                            },
                            "required": [
                              "selector",
                              "attribute",
                              "values"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Array of extracted attributes from the document"
                        },
                        "actions": {
                          "type": "object",
                          "additionalProperties": {},
                          "description": "Record of actions performed on the document"
                        },
                        "warning": {
                          "type": "string",
                          "description": "Warning message if any"
                        },
                        "changeTracking": {
                          "type": "object",
                          "additionalProperties": {},
                          "description": "Change tracking information for the document"
                        },
                        "branding": {
                          "type": "object",
                          "properties": {
                            "colorScheme": {
                              "type": "string",
                              "enum": [
                                "light",
                                "dark"
                              ],
                              "description": "The detected color scheme (\"light\" or \"dark\")"
                            },
                            "logo": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "URL of the primary logo"
                            },
                            "fonts": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "family": {
                                    "type": "string",
                                    "description": "Font family name"
                                  }
                                },
                                "required": [
                                  "family"
                                ],
                                "additionalProperties": {}
                              },
                              "description": "Array of font families used on the page"
                            },
                            "colors": {
                              "type": "object",
                              "properties": {
                                "primary": {
                                  "type": "string",
                                  "description": "Primary brand color"
                                },
                                "secondary": {
                                  "type": "string",
                                  "description": "Secondary brand color"
                                },
                                "accent": {
                                  "type": "string",
                                  "description": "Accent brand color"
                                },
                                "background": {
                                  "type": "string",
                                  "description": "UI Background color"
                                },
                                "textPrimary": {
                                  "type": "string",
                                  "description": "UI Primary text color"
                                },
                                "textSecondary": {
                                  "type": "string",
                                  "description": "UI Secondary text color"
                                },
                                "link": {
                                  "type": "string",
                                  "description": "Semantic Link color"
                                },
                                "success": {
                                  "type": "string",
                                  "description": "Semantic Success color"
                                },
                                "warning": {
                                  "type": "string",
                                  "description": "Semantic Warning color"
                                },
                                "error": {
                                  "type": "string",
                                  "description": "Semantic Error color"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Object containing brand colors"
                            },
                            "typography": {
                              "type": "object",
                              "properties": {
                                "fontFamilies": {
                                  "type": "object",
                                  "properties": {
                                    "primary": {
                                      "type": "string",
                                      "description": "Primary font family"
                                    },
                                    "heading": {
                                      "type": "string",
                                      "description": "Heading font family"
                                    },
                                    "code": {
                                      "type": "string",
                                      "description": "Code font family"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Primary, heading, and code font families"
                                },
                                "fontStacks": {
                                  "type": "object",
                                  "properties": {
                                    "primary": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Primary font stack array"
                                    },
                                    "heading": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Heading font stack array"
                                    },
                                    "body": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Body font stack array"
                                    },
                                    "paragraph": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Paragraph font stack array"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Font stack arrays for primary, heading, body, and paragraph"
                                },
                                "fontSizes": {
                                  "type": "object",
                                  "properties": {
                                    "h1": {
                                      "type": "string",
                                      "description": "H1 font size"
                                    },
                                    "h2": {
                                      "type": "string",
                                      "description": "H2 font size"
                                    },
                                    "h3": {
                                      "type": "string",
                                      "description": "H3 font size"
                                    },
                                    "body": {
                                      "type": "string",
                                      "description": "Body font size"
                                    },
                                    "small": {
                                      "type": "string",
                                      "description": "Small text font size"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Size definitions for headings and body text"
                                },
                                "lineHeights": {
                                  "type": "object",
                                  "properties": {
                                    "heading": {
                                      "type": "number",
                                      "description": "Heading line height"
                                    },
                                    "body": {
                                      "type": "number",
                                      "description": "Body text line height"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Line height values for different text types"
                                },
                                "fontWeights": {
                                  "type": "object",
                                  "properties": {
                                    "light": {
                                      "type": "number",
                                      "description": "Light font weight"
                                    },
                                    "regular": {
                                      "type": "number",
                                      "description": "Regular font weight"
                                    },
                                    "medium": {
                                      "type": "number",
                                      "description": "Medium font weight"
                                    },
                                    "bold": {
                                      "type": "number",
                                      "description": "Bold font weight"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Weight definitions (light, regular, medium, bold)"
                                }
                              },
                              "additionalProperties": false,
                              "description": "Detailed typography information"
                            },
                            "spacing": {
                              "type": "object",
                              "properties": {
                                "baseUnit": {
                                  "type": "number",
                                  "description": "Base spacing unit in pixels"
                                },
                                "padding": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "number"
                                  },
                                  "description": "Padding spacing values"
                                },
                                "margins": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "number"
                                  },
                                  "description": "Margin spacing values"
                                },
                                "gridGutter": {
                                  "type": "number",
                                  "description": "Grid gutter size in pixels"
                                },
                                "borderRadius": {
                                  "type": "string",
                                  "description": "Default border radius"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "string"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Spacing and layout information"
                            },
                            "components": {
                              "type": "object",
                              "properties": {
                                "buttonPrimary": {
                                  "type": "object",
                                  "properties": {
                                    "background": {
                                      "type": "string",
                                      "description": "Button background color"
                                    },
                                    "textColor": {
                                      "type": "string",
                                      "description": "Button text color"
                                    },
                                    "borderColor": {
                                      "type": "string",
                                      "description": "Button border color"
                                    },
                                    "borderRadius": {
                                      "type": "string",
                                      "description": "Button border radius"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Primary button styles"
                                },
                                "buttonSecondary": {
                                  "type": "object",
                                  "properties": {
                                    "background": {
                                      "type": "string",
                                      "description": "Button background color"
                                    },
                                    "textColor": {
                                      "type": "string",
                                      "description": "Button text color"
                                    },
                                    "borderColor": {
                                      "type": "string",
                                      "description": "Button border color"
                                    },
                                    "borderRadius": {
                                      "type": "string",
                                      "description": "Button border radius"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Secondary button styles"
                                },
                                "input": {
                                  "type": "object",
                                  "properties": {
                                    "borderColor": {
                                      "type": "string",
                                      "description": "Input border color"
                                    },
                                    "focusBorderColor": {
                                      "type": "string",
                                      "description": "Input focus border color"
                                    },
                                    "borderRadius": {
                                      "type": "string",
                                      "description": "Input border radius"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Input field styles"
                                }
                              },
                              "additionalProperties": {},
                              "description": "UI component styles"
                            },
                            "icons": {
                              "type": "object",
                              "properties": {
                                "style": {
                                  "type": "string",
                                  "description": "Icon style"
                                },
                                "primaryColor": {
                                  "type": "string",
                                  "description": "Primary icon color"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Icon style information"
                            },
                            "images": {
                              "type": "object",
                              "properties": {
                                "logo": {
                                  "type": "string",
                                  "format": "uri",
                                  "nullable": true,
                                  "description": "Logo image URL"
                                },
                                "favicon": {
                                  "type": "string",
                                  "format": "uri",
                                  "nullable": true,
                                  "description": "Favicon image URL"
                                },
                                "ogImage": {
                                  "type": "string",
                                  "format": "uri",
                                  "nullable": true,
                                  "description": "Open Graph image URL"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "enum": [
                                      "null"
                                    ],
                                    "nullable": true
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Brand images (logo, favicon, og:image)"
                            },
                            "animations": {
                              "type": "object",
                              "properties": {
                                "transitionDuration": {
                                  "type": "string",
                                  "description": "Transition duration for animations"
                                },
                                "easing": {
                                  "type": "string",
                                  "description": "Easing function for animations"
                                }
                              },
                              "additionalProperties": {},
                              "description": "Animation and transition settings"
                            },
                            "layout": {
                              "type": "object",
                              "properties": {
                                "grid": {
                                  "type": "object",
                                  "properties": {
                                    "columns": {
                                      "type": "number",
                                      "description": "Number of grid columns"
                                    },
                                    "maxWidth": {
                                      "type": "string",
                                      "description": "Maximum grid width"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Grid layout configuration"
                                },
                                "headerHeight": {
                                  "type": "string",
                                  "description": "Header height"
                                },
                                "footerHeight": {
                                  "type": "string",
                                  "description": "Footer height"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "not": {}
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Layout configuration (grid, header/footer heights)"
                            },
                            "tone": {
                              "type": "object",
                              "properties": {
                                "voice": {
                                  "type": "string",
                                  "description": "Brand voice tone"
                                },
                                "emojiUsage": {
                                  "type": "string",
                                  "description": "Emoji usage style"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Tone and voice characteristics"
                            },
                            "personality": {
                              "type": "object",
                              "properties": {
                                "tone": {
                                  "type": "string",
                                  "enum": [
                                    "professional",
                                    "playful",
                                    "modern",
                                    "traditional",
                                    "minimalist",
                                    "bold"
                                  ],
                                  "description": "Brand tone"
                                },
                                "energy": {
                                  "type": "string",
                                  "enum": [
                                    "low",
                                    "medium",
                                    "high"
                                  ],
                                  "description": "Brand energy level"
                                },
                                "targetAudience": {
                                  "type": "string",
                                  "description": "Description of the target audience"
                                }
                              },
                              "required": [
                                "tone",
                                "energy",
                                "targetAudience"
                              ],
                              "additionalProperties": false,
                              "description": "Brand personality traits (tone, energy, target audience)"
                            }
                          },
                          "additionalProperties": {},
                          "description": "Branding profile associated with the document"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                },
                "description": "Web search results"
              },
              "news": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "description": "Result title"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Result URL"
                        },
                        "snippet": {
                          "type": "string",
                          "description": "Result snippet"
                        },
                        "date": {
                          "type": "string",
                          "description": "Result date"
                        },
                        "imageUrl": {
                          "type": "string",
                          "format": "uri",
                          "description": "Result image URL"
                        },
                        "position": {
                          "type": "number",
                          "description": "Result position"
                        },
                        "category": {
                          "type": "string",
                          "description": "Result category"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "markdown": {
                          "type": "string",
                          "description": "Document content in markdown format"
                        },
                        "html": {
                          "type": "string",
                          "description": "Document content in HTML format"
                        },
                        "rawHtml": {
                          "type": "string",
                          "description": "Document content in raw HTML format"
                        },
                        "json": {
                          "description": "Document content in structured JSON format"
                        },
                        "summary": {
                          "type": "string",
                          "description": "Summary of the document content"
                        },
                        "metadata": {
                          "type": "object",
                          "properties": {
                            "title": {
                              "type": "string",
                              "description": "Title of the document"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the document"
                            },
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL of the document"
                            },
                            "language": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              ],
                              "description": "Language of the document"
                            },
                            "keywords": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              ],
                              "description": "Keywords associated with the document"
                            },
                            "robots": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              ],
                              "description": "Robots meta tag content"
                            },
                            "ogTitle": {
                              "type": "string",
                              "description": "Open Graph title"
                            },
                            "ogDescription": {
                              "type": "string",
                              "description": "Open Graph description"
                            },
                            "ogUrl": {
                              "type": "string",
                              "description": "Open Graph URL"
                            },
                            "ogImage": {
                              "type": "string",
                              "description": "Open Graph image URL"
                            },
                            "ogAudio": {
                              "type": "string",
                              "description": "Open Graph audio URL"
                            },
                            "ogDeterminer": {
                              "type": "string",
                              "description": "Open Graph determiner"
                            },
                            "ogLocale": {
                              "type": "string",
                              "description": "Open Graph locale"
                            },
                            "ogLocaleAlternate": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "Alternate Open Graph locales"
                            },
                            "ogSiteName": {
                              "type": "string",
                              "description": "Open Graph site name"
                            },
                            "ogVideo": {
                              "type": "string",
                              "description": "Open Graph video URL"
                            },
                            "favicon": {
                              "type": "string",
                              "description": "Favicon URL"
                            },
                            "dcTermsCreated": {
                              "type": "string",
                              "description": "Dublin Core terms created"
                            },
                            "dcDateCreated": {
                              "type": "string",
                              "description": "Dublin Core date created"
                            },
                            "dcDate": {
                              "type": "string",
                              "description": "Dublin Core date"
                            },
                            "dcTermsType": {
                              "type": "string",
                              "description": "Dublin Core terms type"
                            },
                            "dcType": {
                              "type": "string",
                              "description": "Dublin Core type"
                            },
                            "dcTermsAudience": {
                              "type": "string",
                              "description": "Dublin Core terms audience"
                            },
                            "dcTermsSubject": {
                              "type": "string",
                              "description": "Dublin Core terms subject"
                            },
                            "dcSubject": {
                              "type": "string",
                              "description": "Dublin Core subject"
                            },
                            "dcDescription": {
                              "type": "string",
                              "description": "Dublin Core description"
                            },
                            "dcTermsKeywords": {
                              "type": "string",
                              "description": "Dublin Core terms keywords"
                            },
                            "modifiedTime": {
                              "type": "string",
                              "description": "Last modified time"
                            },
                            "publishedTime": {
                              "type": "string",
                              "description": "Published time"
                            },
                            "articleTag": {
                              "type": "string",
                              "description": "Article tag"
                            },
                            "articleSection": {
                              "type": "string",
                              "description": "Article section"
                            },
                            "sourceURL": {
                              "type": "string",
                              "format": "uri",
                              "description": "Source URL"
                            },
                            "statusCode": {
                              "type": "number",
                              "description": "HTTP status code"
                            },
                            "scrapeId": {
                              "type": "string",
                              "description": "Scrape identifier"
                            },
                            "numPages": {
                              "type": "number",
                              "description": "Number of pages scraped"
                            },
                            "contentType": {
                              "type": "string",
                              "description": "Content type of the document"
                            },
                            "proxyUsed": {
                              "type": "string",
                              "enum": [
                                "basic",
                                "stealth"
                              ],
                              "description": "Type of proxy used"
                            },
                            "cacheState": {
                              "type": "string",
                              "enum": [
                                "hit",
                                "miss"
                              ],
                              "description": "Cache state"
                            },
                            "cachedAt": {
                              "type": "string",
                              "description": "Cache timestamp"
                            },
                            "creditsUsed": {
                              "type": "number",
                              "description": "Number of credits used"
                            },
                            "error": {
                              "type": "string",
                              "description": "Error message if any"
                            }
                          },
                          "additionalProperties": {},
                          "description": "Metadata associated with the document"
                        },
                        "links": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          },
                          "description": "Array of links found in the document"
                        },
                        "images": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          },
                          "description": "Array of image URLs found in the document"
                        },
                        "screenshot": {
                          "type": "string",
                          "description": "Base64-encoded screenshot of the document"
                        },
                        "attributes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "selector": {
                                "type": "string",
                                "description": "CSS selector for the element"
                              },
                              "attribute": {
                                "type": "string",
                                "description": "Attribute name to extract"
                              },
                              "values": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Extracted attribute values"
                              }
                            },
                            "required": [
                              "selector",
                              "attribute",
                              "values"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Array of extracted attributes from the document"
                        },
                        "actions": {
                          "type": "object",
                          "additionalProperties": {},
                          "description": "Record of actions performed on the document"
                        },
                        "warning": {
                          "type": "string",
                          "description": "Warning message if any"
                        },
                        "changeTracking": {
                          "type": "object",
                          "additionalProperties": {},
                          "description": "Change tracking information for the document"
                        },
                        "branding": {
                          "type": "object",
                          "properties": {
                            "colorScheme": {
                              "type": "string",
                              "enum": [
                                "light",
                                "dark"
                              ],
                              "description": "The detected color scheme (\"light\" or \"dark\")"
                            },
                            "logo": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "URL of the primary logo"
                            },
                            "fonts": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "family": {
                                    "type": "string",
                                    "description": "Font family name"
                                  }
                                },
                                "required": [
                                  "family"
                                ],
                                "additionalProperties": {}
                              },
                              "description": "Array of font families used on the page"
                            },
                            "colors": {
                              "type": "object",
                              "properties": {
                                "primary": {
                                  "type": "string",
                                  "description": "Primary brand color"
                                },
                                "secondary": {
                                  "type": "string",
                                  "description": "Secondary brand color"
                                },
                                "accent": {
                                  "type": "string",
                                  "description": "Accent brand color"
                                },
                                "background": {
                                  "type": "string",
                                  "description": "UI Background color"
                                },
                                "textPrimary": {
                                  "type": "string",
                                  "description": "UI Primary text color"
                                },
                                "textSecondary": {
                                  "type": "string",
                                  "description": "UI Secondary text color"
                                },
                                "link": {
                                  "type": "string",
                                  "description": "Semantic Link color"
                                },
                                "success": {
                                  "type": "string",
                                  "description": "Semantic Success color"
                                },
                                "warning": {
                                  "type": "string",
                                  "description": "Semantic Warning color"
                                },
                                "error": {
                                  "type": "string",
                                  "description": "Semantic Error color"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Object containing brand colors"
                            },
                            "typography": {
                              "type": "object",
                              "properties": {
                                "fontFamilies": {
                                  "type": "object",
                                  "properties": {
                                    "primary": {
                                      "type": "string",
                                      "description": "Primary font family"
                                    },
                                    "heading": {
                                      "type": "string",
                                      "description": "Heading font family"
                                    },
                                    "code": {
                                      "type": "string",
                                      "description": "Code font family"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Primary, heading, and code font families"
                                },
                                "fontStacks": {
                                  "type": "object",
                                  "properties": {
                                    "primary": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Primary font stack array"
                                    },
                                    "heading": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Heading font stack array"
                                    },
                                    "body": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Body font stack array"
                                    },
                                    "paragraph": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Paragraph font stack array"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Font stack arrays for primary, heading, body, and paragraph"
                                },
                                "fontSizes": {
                                  "type": "object",
                                  "properties": {
                                    "h1": {
                                      "type": "string",
                                      "description": "H1 font size"
                                    },
                                    "h2": {
                                      "type": "string",
                                      "description": "H2 font size"
                                    },
                                    "h3": {
                                      "type": "string",
                                      "description": "H3 font size"
                                    },
                                    "body": {
                                      "type": "string",
                                      "description": "Body font size"
                                    },
                                    "small": {
                                      "type": "string",
                                      "description": "Small text font size"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Size definitions for headings and body text"
                                },
                                "lineHeights": {
                                  "type": "object",
                                  "properties": {
                                    "heading": {
                                      "type": "number",
                                      "description": "Heading line height"
                                    },
                                    "body": {
                                      "type": "number",
                                      "description": "Body text line height"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Line height values for different text types"
                                },
                                "fontWeights": {
                                  "type": "object",
                                  "properties": {
                                    "light": {
                                      "type": "number",
                                      "description": "Light font weight"
                                    },
                                    "regular": {
                                      "type": "number",
                                      "description": "Regular font weight"
                                    },
                                    "medium": {
                                      "type": "number",
                                      "description": "Medium font weight"
                                    },
                                    "bold": {
                                      "type": "number",
                                      "description": "Bold font weight"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Weight definitions (light, regular, medium, bold)"
                                }
                              },
                              "additionalProperties": false,
                              "description": "Detailed typography information"
                            },
                            "spacing": {
                              "type": "object",
                              "properties": {
                                "baseUnit": {
                                  "type": "number",
                                  "description": "Base spacing unit in pixels"
                                },
                                "padding": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "number"
                                  },
                                  "description": "Padding spacing values"
                                },
                                "margins": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "number"
                                  },
                                  "description": "Margin spacing values"
                                },
                                "gridGutter": {
                                  "type": "number",
                                  "description": "Grid gutter size in pixels"
                                },
                                "borderRadius": {
                                  "type": "string",
                                  "description": "Default border radius"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "string"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Spacing and layout information"
                            },
                            "components": {
                              "type": "object",
                              "properties": {
                                "buttonPrimary": {
                                  "type": "object",
                                  "properties": {
                                    "background": {
                                      "type": "string",
                                      "description": "Button background color"
                                    },
                                    "textColor": {
                                      "type": "string",
                                      "description": "Button text color"
                                    },
                                    "borderColor": {
                                      "type": "string",
                                      "description": "Button border color"
                                    },
                                    "borderRadius": {
                                      "type": "string",
                                      "description": "Button border radius"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Primary button styles"
                                },
                                "buttonSecondary": {
                                  "type": "object",
                                  "properties": {
                                    "background": {
                                      "type": "string",
                                      "description": "Button background color"
                                    },
                                    "textColor": {
                                      "type": "string",
                                      "description": "Button text color"
                                    },
                                    "borderColor": {
                                      "type": "string",
                                      "description": "Button border color"
                                    },
                                    "borderRadius": {
                                      "type": "string",
                                      "description": "Button border radius"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Secondary button styles"
                                },
                                "input": {
                                  "type": "object",
                                  "properties": {
                                    "borderColor": {
                                      "type": "string",
                                      "description": "Input border color"
                                    },
                                    "focusBorderColor": {
                                      "type": "string",
                                      "description": "Input focus border color"
                                    },
                                    "borderRadius": {
                                      "type": "string",
                                      "description": "Input border radius"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Input field styles"
                                }
                              },
                              "additionalProperties": {},
                              "description": "UI component styles"
                            },
                            "icons": {
                              "type": "object",
                              "properties": {
                                "style": {
                                  "type": "string",
                                  "description": "Icon style"
                                },
                                "primaryColor": {
                                  "type": "string",
                                  "description": "Primary icon color"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Icon style information"
                            },
                            "images": {
                              "type": "object",
                              "properties": {
                                "logo": {
                                  "type": "string",
                                  "format": "uri",
                                  "nullable": true,
                                  "description": "Logo image URL"
                                },
                                "favicon": {
                                  "type": "string",
                                  "format": "uri",
                                  "nullable": true,
                                  "description": "Favicon image URL"
                                },
                                "ogImage": {
                                  "type": "string",
                                  "format": "uri",
                                  "nullable": true,
                                  "description": "Open Graph image URL"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "enum": [
                                      "null"
                                    ],
                                    "nullable": true
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Brand images (logo, favicon, og:image)"
                            },
                            "animations": {
                              "type": "object",
                              "properties": {
                                "transitionDuration": {
                                  "type": "string",
                                  "description": "Transition duration for animations"
                                },
                                "easing": {
                                  "type": "string",
                                  "description": "Easing function for animations"
                                }
                              },
                              "additionalProperties": {},
                              "description": "Animation and transition settings"
                            },
                            "layout": {
                              "type": "object",
                              "properties": {
                                "grid": {
                                  "type": "object",
                                  "properties": {
                                    "columns": {
                                      "type": "number",
                                      "description": "Number of grid columns"
                                    },
                                    "maxWidth": {
                                      "type": "string",
                                      "description": "Maximum grid width"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Grid layout configuration"
                                },
                                "headerHeight": {
                                  "type": "string",
                                  "description": "Header height"
                                },
                                "footerHeight": {
                                  "type": "string",
                                  "description": "Footer height"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "not": {}
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Layout configuration (grid, header/footer heights)"
                            },
                            "tone": {
                              "type": "object",
                              "properties": {
                                "voice": {
                                  "type": "string",
                                  "description": "Brand voice tone"
                                },
                                "emojiUsage": {
                                  "type": "string",
                                  "description": "Emoji usage style"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Tone and voice characteristics"
                            },
                            "personality": {
                              "type": "object",
                              "properties": {
                                "tone": {
                                  "type": "string",
                                  "enum": [
                                    "professional",
                                    "playful",
                                    "modern",
                                    "traditional",
                                    "minimalist",
                                    "bold"
                                  ],
                                  "description": "Brand tone"
                                },
                                "energy": {
                                  "type": "string",
                                  "enum": [
                                    "low",
                                    "medium",
                                    "high"
                                  ],
                                  "description": "Brand energy level"
                                },
                                "targetAudience": {
                                  "type": "string",
                                  "description": "Description of the target audience"
                                }
                              },
                              "required": [
                                "tone",
                                "energy",
                                "targetAudience"
                              ],
                              "additionalProperties": false,
                              "description": "Brand personality traits (tone, energy, target audience)"
                            }
                          },
                          "additionalProperties": {},
                          "description": "Branding profile associated with the document"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                },
                "description": "News search results"
              },
              "images": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "description": "Result title"
                        },
                        "imageUrl": {
                          "type": "string",
                          "format": "uri",
                          "description": "Result image URL"
                        },
                        "imageWidth": {
                          "type": "number",
                          "description": "Result image width in pixels"
                        },
                        "imageHeight": {
                          "type": "number",
                          "description": "Result image height in pixels"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Result URL"
                        },
                        "position": {
                          "type": "number",
                          "description": "Result position"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "markdown": {
                          "type": "string",
                          "description": "Document content in markdown format"
                        },
                        "html": {
                          "type": "string",
                          "description": "Document content in HTML format"
                        },
                        "rawHtml": {
                          "type": "string",
                          "description": "Document content in raw HTML format"
                        },
                        "json": {
                          "description": "Document content in structured JSON format"
                        },
                        "summary": {
                          "type": "string",
                          "description": "Summary of the document content"
                        },
                        "metadata": {
                          "type": "object",
                          "properties": {
                            "title": {
                              "type": "string",
                              "description": "Title of the document"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the document"
                            },
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "URL of the document"
                            },
                            "language": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              ],
                              "description": "Language of the document"
                            },
                            "keywords": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              ],
                              "description": "Keywords associated with the document"
                            },
                            "robots": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              ],
                              "description": "Robots meta tag content"
                            },
                            "ogTitle": {
                              "type": "string",
                              "description": "Open Graph title"
                            },
                            "ogDescription": {
                              "type": "string",
                              "description": "Open Graph description"
                            },
                            "ogUrl": {
                              "type": "string",
                              "description": "Open Graph URL"
                            },
                            "ogImage": {
                              "type": "string",
                              "description": "Open Graph image URL"
                            },
                            "ogAudio": {
                              "type": "string",
                              "description": "Open Graph audio URL"
                            },
                            "ogDeterminer": {
                              "type": "string",
                              "description": "Open Graph determiner"
                            },
                            "ogLocale": {
                              "type": "string",
                              "description": "Open Graph locale"
                            },
                            "ogLocaleAlternate": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "Alternate Open Graph locales"
                            },
                            "ogSiteName": {
                              "type": "string",
                              "description": "Open Graph site name"
                            },
                            "ogVideo": {
                              "type": "string",
                              "description": "Open Graph video URL"
                            },
                            "favicon": {
                              "type": "string",
                              "description": "Favicon URL"
                            },
                            "dcTermsCreated": {
                              "type": "string",
                              "description": "Dublin Core terms created"
                            },
                            "dcDateCreated": {
                              "type": "string",
                              "description": "Dublin Core date created"
                            },
                            "dcDate": {
                              "type": "string",
                              "description": "Dublin Core date"
                            },
                            "dcTermsType": {
                              "type": "string",
                              "description": "Dublin Core terms type"
                            },
                            "dcType": {
                              "type": "string",
                              "description": "Dublin Core type"
                            },
                            "dcTermsAudience": {
                              "type": "string",
                              "description": "Dublin Core terms audience"
                            },
                            "dcTermsSubject": {
                              "type": "string",
                              "description": "Dublin Core terms subject"
                            },
                            "dcSubject": {
                              "type": "string",
                              "description": "Dublin Core subject"
                            },
                            "dcDescription": {
                              "type": "string",
                              "description": "Dublin Core description"
                            },
                            "dcTermsKeywords": {
                              "type": "string",
                              "description": "Dublin Core terms keywords"
                            },
                            "modifiedTime": {
                              "type": "string",
                              "description": "Last modified time"
                            },
                            "publishedTime": {
                              "type": "string",
                              "description": "Published time"
                            },
                            "articleTag": {
                              "type": "string",
                              "description": "Article tag"
                            },
                            "articleSection": {
                              "type": "string",
                              "description": "Article section"
                            },
                            "sourceURL": {
                              "type": "string",
                              "format": "uri",
                              "description": "Source URL"
                            },
                            "statusCode": {
                              "type": "number",
                              "description": "HTTP status code"
                            },
                            "scrapeId": {
                              "type": "string",
                              "description": "Scrape identifier"
                            },
                            "numPages": {
                              "type": "number",
                              "description": "Number of pages scraped"
                            },
                            "contentType": {
                              "type": "string",
                              "description": "Content type of the document"
                            },
                            "proxyUsed": {
                              "type": "string",
                              "enum": [
                                "basic",
                                "stealth"
                              ],
                              "description": "Type of proxy used"
                            },
                            "cacheState": {
                              "type": "string",
                              "enum": [
                                "hit",
                                "miss"
                              ],
                              "description": "Cache state"
                            },
                            "cachedAt": {
                              "type": "string",
                              "description": "Cache timestamp"
                            },
                            "creditsUsed": {
                              "type": "number",
                              "description": "Number of credits used"
                            },
                            "error": {
                              "type": "string",
                              "description": "Error message if any"
                            }
                          },
                          "additionalProperties": {},
                          "description": "Metadata associated with the document"
                        },
                        "links": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          },
                          "description": "Array of links found in the document"
                        },
                        "images": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          },
                          "description": "Array of image URLs found in the document"
                        },
                        "screenshot": {
                          "type": "string",
                          "description": "Base64-encoded screenshot of the document"
                        },
                        "attributes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "selector": {
                                "type": "string",
                                "description": "CSS selector for the element"
                              },
                              "attribute": {
                                "type": "string",
                                "description": "Attribute name to extract"
                              },
                              "values": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Extracted attribute values"
                              }
                            },
                            "required": [
                              "selector",
                              "attribute",
                              "values"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Array of extracted attributes from the document"
                        },
                        "actions": {
                          "type": "object",
                          "additionalProperties": {},
                          "description": "Record of actions performed on the document"
                        },
                        "warning": {
                          "type": "string",
                          "description": "Warning message if any"
                        },
                        "changeTracking": {
                          "type": "object",
                          "additionalProperties": {},
                          "description": "Change tracking information for the document"
                        },
                        "branding": {
                          "type": "object",
                          "properties": {
                            "colorScheme": {
                              "type": "string",
                              "enum": [
                                "light",
                                "dark"
                              ],
                              "description": "The detected color scheme (\"light\" or \"dark\")"
                            },
                            "logo": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "URL of the primary logo"
                            },
                            "fonts": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "family": {
                                    "type": "string",
                                    "description": "Font family name"
                                  }
                                },
                                "required": [
                                  "family"
                                ],
                                "additionalProperties": {}
                              },
                              "description": "Array of font families used on the page"
                            },
                            "colors": {
                              "type": "object",
                              "properties": {
                                "primary": {
                                  "type": "string",
                                  "description": "Primary brand color"
                                },
                                "secondary": {
                                  "type": "string",
                                  "description": "Secondary brand color"
                                },
                                "accent": {
                                  "type": "string",
                                  "description": "Accent brand color"
                                },
                                "background": {
                                  "type": "string",
                                  "description": "UI Background color"
                                },
                                "textPrimary": {
                                  "type": "string",
                                  "description": "UI Primary text color"
                                },
                                "textSecondary": {
                                  "type": "string",
                                  "description": "UI Secondary text color"
                                },
                                "link": {
                                  "type": "string",
                                  "description": "Semantic Link color"
                                },
                                "success": {
                                  "type": "string",
                                  "description": "Semantic Success color"
                                },
                                "warning": {
                                  "type": "string",
                                  "description": "Semantic Warning color"
                                },
                                "error": {
                                  "type": "string",
                                  "description": "Semantic Error color"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Object containing brand colors"
                            },
                            "typography": {
                              "type": "object",
                              "properties": {
                                "fontFamilies": {
                                  "type": "object",
                                  "properties": {
                                    "primary": {
                                      "type": "string",
                                      "description": "Primary font family"
                                    },
                                    "heading": {
                                      "type": "string",
                                      "description": "Heading font family"
                                    },
                                    "code": {
                                      "type": "string",
                                      "description": "Code font family"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Primary, heading, and code font families"
                                },
                                "fontStacks": {
                                  "type": "object",
                                  "properties": {
                                    "primary": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Primary font stack array"
                                    },
                                    "heading": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Heading font stack array"
                                    },
                                    "body": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Body font stack array"
                                    },
                                    "paragraph": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Paragraph font stack array"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Font stack arrays for primary, heading, body, and paragraph"
                                },
                                "fontSizes": {
                                  "type": "object",
                                  "properties": {
                                    "h1": {
                                      "type": "string",
                                      "description": "H1 font size"
                                    },
                                    "h2": {
                                      "type": "string",
                                      "description": "H2 font size"
                                    },
                                    "h3": {
                                      "type": "string",
                                      "description": "H3 font size"
                                    },
                                    "body": {
                                      "type": "string",
                                      "description": "Body font size"
                                    },
                                    "small": {
                                      "type": "string",
                                      "description": "Small text font size"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Size definitions for headings and body text"
                                },
                                "lineHeights": {
                                  "type": "object",
                                  "properties": {
                                    "heading": {
                                      "type": "number",
                                      "description": "Heading line height"
                                    },
                                    "body": {
                                      "type": "number",
                                      "description": "Body text line height"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Line height values for different text types"
                                },
                                "fontWeights": {
                                  "type": "object",
                                  "properties": {
                                    "light": {
                                      "type": "number",
                                      "description": "Light font weight"
                                    },
                                    "regular": {
                                      "type": "number",
                                      "description": "Regular font weight"
                                    },
                                    "medium": {
                                      "type": "number",
                                      "description": "Medium font weight"
                                    },
                                    "bold": {
                                      "type": "number",
                                      "description": "Bold font weight"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Weight definitions (light, regular, medium, bold)"
                                }
                              },
                              "additionalProperties": false,
                              "description": "Detailed typography information"
                            },
                            "spacing": {
                              "type": "object",
                              "properties": {
                                "baseUnit": {
                                  "type": "number",
                                  "description": "Base spacing unit in pixels"
                                },
                                "padding": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "number"
                                  },
                                  "description": "Padding spacing values"
                                },
                                "margins": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "number"
                                  },
                                  "description": "Margin spacing values"
                                },
                                "gridGutter": {
                                  "type": "number",
                                  "description": "Grid gutter size in pixels"
                                },
                                "borderRadius": {
                                  "type": "string",
                                  "description": "Default border radius"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "string"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Spacing and layout information"
                            },
                            "components": {
                              "type": "object",
                              "properties": {
                                "buttonPrimary": {
                                  "type": "object",
                                  "properties": {
                                    "background": {
                                      "type": "string",
                                      "description": "Button background color"
                                    },
                                    "textColor": {
                                      "type": "string",
                                      "description": "Button text color"
                                    },
                                    "borderColor": {
                                      "type": "string",
                                      "description": "Button border color"
                                    },
                                    "borderRadius": {
                                      "type": "string",
                                      "description": "Button border radius"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Primary button styles"
                                },
                                "buttonSecondary": {
                                  "type": "object",
                                  "properties": {
                                    "background": {
                                      "type": "string",
                                      "description": "Button background color"
                                    },
                                    "textColor": {
                                      "type": "string",
                                      "description": "Button text color"
                                    },
                                    "borderColor": {
                                      "type": "string",
                                      "description": "Button border color"
                                    },
                                    "borderRadius": {
                                      "type": "string",
                                      "description": "Button border radius"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Secondary button styles"
                                },
                                "input": {
                                  "type": "object",
                                  "properties": {
                                    "borderColor": {
                                      "type": "string",
                                      "description": "Input border color"
                                    },
                                    "focusBorderColor": {
                                      "type": "string",
                                      "description": "Input focus border color"
                                    },
                                    "borderRadius": {
                                      "type": "string",
                                      "description": "Input border radius"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Input field styles"
                                }
                              },
                              "additionalProperties": {},
                              "description": "UI component styles"
                            },
                            "icons": {
                              "type": "object",
                              "properties": {
                                "style": {
                                  "type": "string",
                                  "description": "Icon style"
                                },
                                "primaryColor": {
                                  "type": "string",
                                  "description": "Primary icon color"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Icon style information"
                            },
                            "images": {
                              "type": "object",
                              "properties": {
                                "logo": {
                                  "type": "string",
                                  "format": "uri",
                                  "nullable": true,
                                  "description": "Logo image URL"
                                },
                                "favicon": {
                                  "type": "string",
                                  "format": "uri",
                                  "nullable": true,
                                  "description": "Favicon image URL"
                                },
                                "ogImage": {
                                  "type": "string",
                                  "format": "uri",
                                  "nullable": true,
                                  "description": "Open Graph image URL"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "enum": [
                                      "null"
                                    ],
                                    "nullable": true
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Brand images (logo, favicon, og:image)"
                            },
                            "animations": {
                              "type": "object",
                              "properties": {
                                "transitionDuration": {
                                  "type": "string",
                                  "description": "Transition duration for animations"
                                },
                                "easing": {
                                  "type": "string",
                                  "description": "Easing function for animations"
                                }
                              },
                              "additionalProperties": {},
                              "description": "Animation and transition settings"
                            },
                            "layout": {
                              "type": "object",
                              "properties": {
                                "grid": {
                                  "type": "object",
                                  "properties": {
                                    "columns": {
                                      "type": "number",
                                      "description": "Number of grid columns"
                                    },
                                    "maxWidth": {
                                      "type": "string",
                                      "description": "Maximum grid width"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "not": {}
                                      }
                                    ]
                                  },
                                  "description": "Grid layout configuration"
                                },
                                "headerHeight": {
                                  "type": "string",
                                  "description": "Header height"
                                },
                                "footerHeight": {
                                  "type": "string",
                                  "description": "Footer height"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "not": {}
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Layout configuration (grid, header/footer heights)"
                            },
                            "tone": {
                              "type": "object",
                              "properties": {
                                "voice": {
                                  "type": "string",
                                  "description": "Brand voice tone"
                                },
                                "emojiUsage": {
                                  "type": "string",
                                  "description": "Emoji usage style"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Tone and voice characteristics"
                            },
                            "personality": {
                              "type": "object",
                              "properties": {
                                "tone": {
                                  "type": "string",
                                  "enum": [
                                    "professional",
                                    "playful",
                                    "modern",
                                    "traditional",
                                    "minimalist",
                                    "bold"
                                  ],
                                  "description": "Brand tone"
                                },
                                "energy": {
                                  "type": "string",
                                  "enum": [
                                    "low",
                                    "medium",
                                    "high"
                                  ],
                                  "description": "Brand energy level"
                                },
                                "targetAudience": {
                                  "type": "string",
                                  "description": "Description of the target audience"
                                }
                              },
                              "required": [
                                "tone",
                                "energy",
                                "targetAudience"
                              ],
                              "additionalProperties": false,
                              "description": "Brand personality traits (tone, energy, target audience)"
                            }
                          },
                          "additionalProperties": {},
                          "description": "Branding profile associated with the document"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                },
                "description": "Image search results"
              },
              "other": {
                "type": "array",
                "items": {},
                "description": "Unknown mystery search results"
              }
            },
            "required": [
              "success",
              "error",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "map"
                ],
                "description": "Map a site to discover URLs"
              },
              "links": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "Discovered URL"
                    },
                    "title": {
                      "type": "string",
                      "description": "Page title"
                    },
                    "description": {
                      "type": "string",
                      "description": "Page description"
                    },
                    "category": {
                      "type": "string",
                      "description": "URL category"
                    }
                  },
                  "required": [
                    "url"
                  ],
                  "additionalProperties": false
                },
                "description": "Discovered links"
              }
            },
            "required": [
              "success",
              "error",
              "operation",
              "links"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "crawl"
                ],
                "description": "Recursively search through a urls subdomains, and gather the content"
              },
              "status": {
                "type": "string",
                "enum": [
                  "scraping",
                  "completed",
                  "failed",
                  "cancelled"
                ],
                "description": "Status of the crawl job"
              },
              "total": {
                "type": "number",
                "description": "Total number of pages to crawl"
              },
              "completed": {
                "type": "number",
                "description": "Number of pages crawled"
              },
              "creditsUsed": {
                "type": "number",
                "description": "Number of credits used"
              },
              "expiresAt": {
                "type": "string",
                "description": "Expiration time of the crawl job"
              },
              "data": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "type": "string",
                      "description": "Document content in markdown format"
                    },
                    "html": {
                      "type": "string",
                      "description": "Document content in HTML format"
                    },
                    "rawHtml": {
                      "type": "string",
                      "description": "Document content in raw HTML format"
                    },
                    "json": {
                      "description": "Document content in structured JSON format"
                    },
                    "summary": {
                      "type": "string",
                      "description": "Summary of the document content"
                    },
                    "metadata": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "description": "Title of the document"
                        },
                        "description": {
                          "type": "string",
                          "description": "Description of the document"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "URL of the document"
                        },
                        "language": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          ],
                          "description": "Language of the document"
                        },
                        "keywords": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          ],
                          "description": "Keywords associated with the document"
                        },
                        "robots": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          ],
                          "description": "Robots meta tag content"
                        },
                        "ogTitle": {
                          "type": "string",
                          "description": "Open Graph title"
                        },
                        "ogDescription": {
                          "type": "string",
                          "description": "Open Graph description"
                        },
                        "ogUrl": {
                          "type": "string",
                          "description": "Open Graph URL"
                        },
                        "ogImage": {
                          "type": "string",
                          "description": "Open Graph image URL"
                        },
                        "ogAudio": {
                          "type": "string",
                          "description": "Open Graph audio URL"
                        },
                        "ogDeterminer": {
                          "type": "string",
                          "description": "Open Graph determiner"
                        },
                        "ogLocale": {
                          "type": "string",
                          "description": "Open Graph locale"
                        },
                        "ogLocaleAlternate": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Alternate Open Graph locales"
                        },
                        "ogSiteName": {
                          "type": "string",
                          "description": "Open Graph site name"
                        },
                        "ogVideo": {
                          "type": "string",
                          "description": "Open Graph video URL"
                        },
                        "favicon": {
                          "type": "string",
                          "description": "Favicon URL"
                        },
                        "dcTermsCreated": {
                          "type": "string",
                          "description": "Dublin Core terms created"
                        },
                        "dcDateCreated": {
                          "type": "string",
                          "description": "Dublin Core date created"
                        },
                        "dcDate": {
                          "type": "string",
                          "description": "Dublin Core date"
                        },
                        "dcTermsType": {
                          "type": "string",
                          "description": "Dublin Core terms type"
                        },
                        "dcType": {
                          "type": "string",
                          "description": "Dublin Core type"
                        },
                        "dcTermsAudience": {
                          "type": "string",
                          "description": "Dublin Core terms audience"
                        },
                        "dcTermsSubject": {
                          "type": "string",
                          "description": "Dublin Core terms subject"
                        },
                        "dcSubject": {
                          "type": "string",
                          "description": "Dublin Core subject"
                        },
                        "dcDescription": {
                          "type": "string",
                          "description": "Dublin Core description"
                        },
                        "dcTermsKeywords": {
                          "type": "string",
                          "description": "Dublin Core terms keywords"
                        },
                        "modifiedTime": {
                          "type": "string",
                          "description": "Last modified time"
                        },
                        "publishedTime": {
                          "type": "string",
                          "description": "Published time"
                        },
                        "articleTag": {
                          "type": "string",
                          "description": "Article tag"
                        },
                        "articleSection": {
                          "type": "string",
                          "description": "Article section"
                        },
                        "sourceURL": {
                          "type": "string",
                          "format": "uri",
                          "description": "Source URL"
                        },
                        "statusCode": {
                          "type": "number",
                          "description": "HTTP status code"
                        },
                        "scrapeId": {
                          "type": "string",
                          "description": "Scrape identifier"
                        },
                        "numPages": {
                          "type": "number",
                          "description": "Number of pages scraped"
                        },
                        "contentType": {
                          "type": "string",
                          "description": "Content type of the document"
                        },
                        "proxyUsed": {
                          "type": "string",
                          "enum": [
                            "basic",
                            "stealth"
                          ],
                          "description": "Type of proxy used"
                        },
                        "cacheState": {
                          "type": "string",
                          "enum": [
                            "hit",
                            "miss"
                          ],
                          "description": "Cache state"
                        },
                        "cachedAt": {
                          "type": "string",
                          "description": "Cache timestamp"
                        },
                        "creditsUsed": {
                          "type": "number",
                          "description": "Number of credits used"
                        },
                        "error": {
                          "type": "string",
                          "description": "Error message if any"
                        }
                      },
                      "additionalProperties": {},
                      "description": "Metadata associated with the document"
                    },
                    "links": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "format": "uri"
                      },
                      "description": "Array of links found in the document"
                    },
                    "images": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "format": "uri"
                      },
                      "description": "Array of image URLs found in the document"
                    },
                    "screenshot": {
                      "type": "string",
                      "description": "Base64-encoded screenshot of the document"
                    },
                    "attributes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "selector": {
                            "type": "string",
                            "description": "CSS selector for the element"
                          },
                          "attribute": {
                            "type": "string",
                            "description": "Attribute name to extract"
                          },
                          "values": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Extracted attribute values"
                          }
                        },
                        "required": [
                          "selector",
                          "attribute",
                          "values"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of extracted attributes from the document"
                    },
                    "actions": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Record of actions performed on the document"
                    },
                    "warning": {
                      "type": "string",
                      "description": "Warning message if any"
                    },
                    "changeTracking": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Change tracking information for the document"
                    },
                    "branding": {
                      "type": "object",
                      "properties": {
                        "colorScheme": {
                          "type": "string",
                          "enum": [
                            "light",
                            "dark"
                          ],
                          "description": "The detected color scheme (\"light\" or \"dark\")"
                        },
                        "logo": {
                          "type": "string",
                          "format": "uri",
                          "nullable": true,
                          "description": "URL of the primary logo"
                        },
                        "fonts": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "family": {
                                "type": "string",
                                "description": "Font family name"
                              }
                            },
                            "required": [
                              "family"
                            ],
                            "additionalProperties": {}
                          },
                          "description": "Array of font families used on the page"
                        },
                        "colors": {
                          "type": "object",
                          "properties": {
                            "primary": {
                              "type": "string",
                              "description": "Primary brand color"
                            },
                            "secondary": {
                              "type": "string",
                              "description": "Secondary brand color"
                            },
                            "accent": {
                              "type": "string",
                              "description": "Accent brand color"
                            },
                            "background": {
                              "type": "string",
                              "description": "UI Background color"
                            },
                            "textPrimary": {
                              "type": "string",
                              "description": "UI Primary text color"
                            },
                            "textSecondary": {
                              "type": "string",
                              "description": "UI Secondary text color"
                            },
                            "link": {
                              "type": "string",
                              "description": "Semantic Link color"
                            },
                            "success": {
                              "type": "string",
                              "description": "Semantic Success color"
                            },
                            "warning": {
                              "type": "string",
                              "description": "Semantic Warning color"
                            },
                            "error": {
                              "type": "string",
                              "description": "Semantic Error color"
                            }
                          },
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "not": {}
                              }
                            ]
                          },
                          "description": "Object containing brand colors"
                        },
                        "typography": {
                          "type": "object",
                          "properties": {
                            "fontFamilies": {
                              "type": "object",
                              "properties": {
                                "primary": {
                                  "type": "string",
                                  "description": "Primary font family"
                                },
                                "heading": {
                                  "type": "string",
                                  "description": "Heading font family"
                                },
                                "code": {
                                  "type": "string",
                                  "description": "Code font family"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Primary, heading, and code font families"
                            },
                            "fontStacks": {
                              "type": "object",
                              "properties": {
                                "primary": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  },
                                  "description": "Primary font stack array"
                                },
                                "heading": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  },
                                  "description": "Heading font stack array"
                                },
                                "body": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  },
                                  "description": "Body font stack array"
                                },
                                "paragraph": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  },
                                  "description": "Paragraph font stack array"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Font stack arrays for primary, heading, body, and paragraph"
                            },
                            "fontSizes": {
                              "type": "object",
                              "properties": {
                                "h1": {
                                  "type": "string",
                                  "description": "H1 font size"
                                },
                                "h2": {
                                  "type": "string",
                                  "description": "H2 font size"
                                },
                                "h3": {
                                  "type": "string",
                                  "description": "H3 font size"
                                },
                                "body": {
                                  "type": "string",
                                  "description": "Body font size"
                                },
                                "small": {
                                  "type": "string",
                                  "description": "Small text font size"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Size definitions for headings and body text"
                            },
                            "lineHeights": {
                              "type": "object",
                              "properties": {
                                "heading": {
                                  "type": "number",
                                  "description": "Heading line height"
                                },
                                "body": {
                                  "type": "number",
                                  "description": "Body text line height"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Line height values for different text types"
                            },
                            "fontWeights": {
                              "type": "object",
                              "properties": {
                                "light": {
                                  "type": "number",
                                  "description": "Light font weight"
                                },
                                "regular": {
                                  "type": "number",
                                  "description": "Regular font weight"
                                },
                                "medium": {
                                  "type": "number",
                                  "description": "Medium font weight"
                                },
                                "bold": {
                                  "type": "number",
                                  "description": "Bold font weight"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Weight definitions (light, regular, medium, bold)"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Detailed typography information"
                        },
                        "spacing": {
                          "type": "object",
                          "properties": {
                            "baseUnit": {
                              "type": "number",
                              "description": "Base spacing unit in pixels"
                            },
                            "padding": {
                              "type": "object",
                              "additionalProperties": {
                                "type": "number"
                              },
                              "description": "Padding spacing values"
                            },
                            "margins": {
                              "type": "object",
                              "additionalProperties": {
                                "type": "number"
                              },
                              "description": "Margin spacing values"
                            },
                            "gridGutter": {
                              "type": "number",
                              "description": "Grid gutter size in pixels"
                            },
                            "borderRadius": {
                              "type": "string",
                              "description": "Default border radius"
                            }
                          },
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "string"
                              },
                              {
                                "type": "object",
                                "additionalProperties": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              {
                                "not": {}
                              }
                            ]
                          },
                          "description": "Spacing and layout information"
                        },
                        "components": {
                          "type": "object",
                          "properties": {
                            "buttonPrimary": {
                              "type": "object",
                              "properties": {
                                "background": {
                                  "type": "string",
                                  "description": "Button background color"
                                },
                                "textColor": {
                                  "type": "string",
                                  "description": "Button text color"
                                },
                                "borderColor": {
                                  "type": "string",
                                  "description": "Button border color"
                                },
                                "borderRadius": {
                                  "type": "string",
                                  "description": "Button border radius"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Primary button styles"
                            },
                            "buttonSecondary": {
                              "type": "object",
                              "properties": {
                                "background": {
                                  "type": "string",
                                  "description": "Button background color"
                                },
                                "textColor": {
                                  "type": "string",
                                  "description": "Button text color"
                                },
                                "borderColor": {
                                  "type": "string",
                                  "description": "Button border color"
                                },
                                "borderRadius": {
                                  "type": "string",
                                  "description": "Button border radius"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Secondary button styles"
                            },
                            "input": {
                              "type": "object",
                              "properties": {
                                "borderColor": {
                                  "type": "string",
                                  "description": "Input border color"
                                },
                                "focusBorderColor": {
                                  "type": "string",
                                  "description": "Input focus border color"
                                },
                                "borderRadius": {
                                  "type": "string",
                                  "description": "Input border radius"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Input field styles"
                            }
                          },
                          "additionalProperties": {},
                          "description": "UI component styles"
                        },
                        "icons": {
                          "type": "object",
                          "properties": {
                            "style": {
                              "type": "string",
                              "description": "Icon style"
                            },
                            "primaryColor": {
                              "type": "string",
                              "description": "Primary icon color"
                            }
                          },
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "not": {}
                              }
                            ]
                          },
                          "description": "Icon style information"
                        },
                        "images": {
                          "type": "object",
                          "properties": {
                            "logo": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "Logo image URL"
                            },
                            "favicon": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "Favicon image URL"
                            },
                            "ogImage": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "Open Graph image URL"
                            }
                          },
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "enum": [
                                  "null"
                                ],
                                "nullable": true
                              },
                              {
                                "not": {}
                              }
                            ]
                          },
                          "description": "Brand images (logo, favicon, og:image)"
                        },
                        "animations": {
                          "type": "object",
                          "properties": {
                            "transitionDuration": {
                              "type": "string",
                              "description": "Transition duration for animations"
                            },
                            "easing": {
                              "type": "string",
                              "description": "Easing function for animations"
                            }
                          },
                          "additionalProperties": {},
                          "description": "Animation and transition settings"
                        },
                        "layout": {
                          "type": "object",
                          "properties": {
                            "grid": {
                              "type": "object",
                              "properties": {
                                "columns": {
                                  "type": "number",
                                  "description": "Number of grid columns"
                                },
                                "maxWidth": {
                                  "type": "string",
                                  "description": "Maximum grid width"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "not": {}
                                  }
                                ]
                              },
                              "description": "Grid layout configuration"
                            },
                            "headerHeight": {
                              "type": "string",
                              "description": "Header height"
                            },
                            "footerHeight": {
                              "type": "string",
                              "description": "Footer height"
                            }
                          },
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "string"
                              },
                              {
                                "type": "object",
                                "additionalProperties": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "not": {}
                                    }
                                  ]
                                }
                              },
                              {
                                "not": {}
                              }
                            ]
                          },
                          "description": "Layout configuration (grid, header/footer heights)"
                        },
                        "tone": {
                          "type": "object",
                          "properties": {
                            "voice": {
                              "type": "string",
                              "description": "Brand voice tone"
                            },
                            "emojiUsage": {
                              "type": "string",
                              "description": "Emoji usage style"
                            }
                          },
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "not": {}
                              }
                            ]
                          },
                          "description": "Tone and voice characteristics"
                        },
                        "personality": {
                          "type": "object",
                          "properties": {
                            "tone": {
                              "type": "string",
                              "enum": [
                                "professional",
                                "playful",
                                "modern",
                                "traditional",
                                "minimalist",
                                "bold"
                              ],
                              "description": "Brand tone"
                            },
                            "energy": {
                              "type": "string",
                              "enum": [
                                "low",
                                "medium",
                                "high"
                              ],
                              "description": "Brand energy level"
                            },
                            "targetAudience": {
                              "type": "string",
                              "description": "Description of the target audience"
                            }
                          },
                          "required": [
                            "tone",
                            "energy",
                            "targetAudience"
                          ],
                          "additionalProperties": false,
                          "description": "Brand personality traits (tone, energy, target audience)"
                        }
                      },
                      "additionalProperties": {},
                      "description": "Branding profile associated with the document"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "Crawled documents"
              }
            },
            "required": [
              "success",
              "error",
              "operation",
              "status",
              "total",
              "completed",
              "data"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "operation": {
                "type": "string",
                "enum": [
                  "extract"
                ],
                "description": "Extract structured data from a URL"
              },
              "id": {
                "type": "string",
                "description": "Extraction job identifier"
              },
              "status": {
                "type": "string",
                "enum": [
                  "processing",
                  "completed",
                  "failed",
                  "cancelled"
                ],
                "description": "Status of the extraction job"
              },
              "data": {
                "description": "Extracted structured data"
              },
              "warning": {
                "type": "string",
                "description": "Warning message if any"
              },
              "sources": {
                "type": "object",
                "additionalProperties": {},
                "description": "Extraction sources"
              },
              "expiresAt": {
                "type": "string",
                "description": "Expiration time of the extraction job"
              }
            },
            "required": [
              "success",
              "error",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Scrape example\nconst firecrawl_scrape = new FirecrawlBubble({\n  maxRetries: 42, // Maximum number of retries for the scrape request\n  backoffFactor: 42, // Backoff factor for retry delays\n  formats: [\"markdown\"] // default, // Formats to scrape from the URL\n  headers: { \"example_key\": \"example string\" }, // HTTP headers to include in the request\n  includeTags: [\"example string\"], // HTML tags/classes/ids to include in the scrape\n  excludeTags: [\"example string\"], // HTML tags/classes/ids to exclude from the scrape\n  onlyMainContent: true // default, // Whether to extract only main content or full page content\n  timeout: 30000 // default, // Max duration in milliseconds before aborting the request\n  waitFor: 0 // default, // Milliseconds of extra wait time before scraping (use sparingly). This waiting time is in addition to Firecrawl’s smart wait feature.\n  mobile: true, // Whether to emulate a mobile device\n  parsers: [{ type: \"pdf\", maxPages: 42 // Maximum number of PDF pages to parse }], // Extract structured content from various document formats\n  actions: [{ type: \"wait\", milliseconds: 42 // Time to wait in milliseconds (for wait), selector: \"example string\" // CSS selector to wait for (for wait) }], // Sequence of browser actions to perform before scraping\n  location: { country: \"example string\" // Country code for proxy location, languages: [\"example string\"] // Preferred languages for proxy location }, // Location configuration for proxy location\n  skipTlsVerification: true, // Whether to skip TLS certificate verification\n  removeBase64Images: true, // Whether to remove base64-encoded images from the content\n  fastMode: true, // Whether to enable fast mode for scraping\n  useMock: \"example string\", // Use a mock response for testing purposes\n  blockAds: true, // Whether to block ads during scraping\n  proxy: \"example string\", // Type of proxy to use for scraping\n  maxAge: 172800000 // default, // If a cached version of the page is newer than `maxAge` (in milliseconds), Firecrawl returns it instantly; otherwise it scrapes fresh and updates the cache. Set 0 to always fetch fresh.\n  storeInCache: true, // Whether to store the scraped result in cache\n  integration: \"example string\", // Integration identifier for the scrape request\n  operation: \"scrape\", // Scrape a single URL\n  url: \"example string\", // The URL to scrape content from\n});\n\nconst result = await firecrawl_scrape.action();\n// outputSchema for result.data when operation === 'scrape':\n// {\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   markdown: string | undefined // Document content in markdown format,\n//   html: string | undefined // Document content in HTML format,\n//   rawHtml: string | undefined // Document content in raw HTML format,\n//   json: unknown | undefined // Document content in structured JSON format,\n//   summary: string | undefined // Summary of the document content,\n//   metadata: { title: string | undefined // Title of the document, description: string | undefined // Description of the document, url: string | undefined // URL of the document, language: unknown | undefined // Language of the document, keywords: unknown | undefined // Keywords associated with the document, robots: unknown | undefined // Robots meta tag content, ogTitle: string | undefined // Open Graph title, ogDescription: string | undefined // Open Graph description, ogUrl: string | undefined // Open Graph URL, ogImage: string | undefined // Open Graph image URL, ogAudio: string | undefined // Open Graph audio URL, ogDeterminer: string | undefined // Open Graph determiner, ogLocale: string | undefined // Open Graph locale, ogLocaleAlternate: string[] | undefined // Alternate Open Graph locales, ogSiteName: string | undefined // Open Graph site name, ogVideo: string | undefined // Open Graph video URL, favicon: string | undefined // Favicon URL, dcTermsCreated: string | undefined // Dublin Core terms created, dcDateCreated: string | undefined // Dublin Core date created, dcDate: string | undefined // Dublin Core date, dcTermsType: string | undefined // Dublin Core terms type, dcType: string | undefined // Dublin Core type, dcTermsAudience: string | undefined // Dublin Core terms audience, dcTermsSubject: string | undefined // Dublin Core terms subject, dcSubject: string | undefined // Dublin Core subject, dcDescription: string | undefined // Dublin Core description, dcTermsKeywords: string | undefined // Dublin Core terms keywords, modifiedTime: string | undefined // Last modified time, publishedTime: string | undefined // Published time, articleTag: string | undefined // Article tag, articleSection: string | undefined // Article section, sourceURL: string | undefined // Source URL, statusCode: number | undefined // HTTP status code, scrapeId: string | undefined // Scrape identifier, numPages: number | undefined // Number of pages scraped, contentType: string | undefined // Content type of the document, proxyUsed: \"basic\" | \"stealth\" | undefined // Type of proxy used, cacheState: \"hit\" | \"miss\" | undefined // Cache state, cachedAt: string | undefined // Cache timestamp, creditsUsed: number | undefined // Number of credits used, error: string | undefined // Error message if any } | undefined // Metadata associated with the document,\n//   links: string[] | undefined // Array of links found in the document,\n//   images: string[] | undefined // Array of image URLs found in the document,\n//   screenshot: string | undefined // Base64-encoded screenshot of the document,\n//   attributes: { selector: string // CSS selector for the element, attribute: string // Attribute name to extract, values: string[] // Extracted attribute values }[] | undefined // Array of extracted attributes from the document,\n//   actions: Record<string, unknown> | undefined // Record of actions performed on the document,\n//   warning: string | undefined // Warning message if any,\n//   changeTracking: Record<string, unknown> | undefined // Change tracking information for the document,\n//   branding: { colorScheme: \"light\" | \"dark\" | undefined // The detected color scheme (\"light\" or \"dark\"), logo: string | null | undefined // URL of the primary logo, fonts: { family: string // Font family name }[] | undefined // Array of font families used on the page, colors: { primary: string | undefined // Primary brand color, secondary: string | undefined // Secondary brand color, accent: string | undefined // Accent brand color, background: string | undefined // UI Background color, textPrimary: string | undefined // UI Primary text color, textSecondary: string | undefined // UI Secondary text color, link: string | undefined // Semantic Link color, success: string | undefined // Semantic Success color, warning: string | undefined // Semantic Warning color, error: string | undefined // Semantic Error color } | undefined // Object containing brand colors, typography: { fontFamilies: { primary: string | undefined // Primary font family, heading: string | undefined // Heading font family, code: string | undefined // Code font family } | undefined // Primary, heading, and code font families, fontStacks: { primary: string[] | undefined // Primary font stack array, heading: string[] | undefined // Heading font stack array, body: string[] | undefined // Body font stack array, paragraph: string[] | undefined // Paragraph font stack array } | undefined // Font stack arrays for primary, heading, body, and paragraph, fontSizes: { h1: string | undefined // H1 font size, h2: string | undefined // H2 font size, h3: string | undefined // H3 font size, body: string | undefined // Body font size, small: string | undefined // Small text font size } | undefined // Size definitions for headings and body text, lineHeights: { heading: number | undefined // Heading line height, body: number | undefined // Body text line height } | undefined // Line height values for different text types, fontWeights: { light: number | undefined // Light font weight, regular: number | undefined // Regular font weight, medium: number | undefined // Medium font weight, bold: number | undefined // Bold font weight } | undefined // Weight definitions (light, regular, medium, bold) } | undefined // Detailed typography information, spacing: { baseUnit: number | undefined // Base spacing unit in pixels, padding: Record<string, number> | undefined // Padding spacing values, margins: Record<string, number> | undefined // Margin spacing values, gridGutter: number | undefined // Grid gutter size in pixels, borderRadius: string | undefined // Default border radius } | undefined // Spacing and layout information, components: { buttonPrimary: { background: string | undefined // Button background color, textColor: string | undefined // Button text color, borderColor: string | undefined // Button border color, borderRadius: string | undefined // Button border radius } | undefined // Primary button styles, buttonSecondary: { background: string | undefined // Button background color, textColor: string | undefined // Button text color, borderColor: string | undefined // Button border color, borderRadius: string | undefined // Button border radius } | undefined // Secondary button styles, input: { borderColor: string | undefined // Input border color, focusBorderColor: string | undefined // Input focus border color, borderRadius: string | undefined // Input border radius } | undefined // Input field styles } | undefined // UI component styles, icons: { style: string | undefined // Icon style, primaryColor: string | undefined // Primary icon color } | undefined // Icon style information, images: { logo: string | null | undefined // Logo image URL, favicon: string | null | undefined // Favicon image URL, ogImage: string | null | undefined // Open Graph image URL } | undefined // Brand images (logo, favicon, og:image), animations: { transitionDuration: string | undefined // Transition duration for animations, easing: string | undefined // Easing function for animations } | undefined // Animation and transition settings, layout: { grid: { columns: number | undefined // Number of grid columns, maxWidth: string | undefined // Maximum grid width } | undefined // Grid layout configuration, headerHeight: string | undefined // Header height, footerHeight: string | undefined // Footer height } | undefined // Layout configuration (grid, header/footer heights), tone: { voice: string | undefined // Brand voice tone, emojiUsage: string | undefined // Emoji usage style } | undefined // Tone and voice characteristics, personality: { tone: \"professional\" | \"playful\" | \"modern\" | \"traditional\" | \"minimalist\" | \"bold\" // Brand tone, energy: \"low\" | \"medium\" | \"high\" // Brand energy level, targetAudience: string // Description of the target audience } | undefined // Brand personality traits (tone, energy, target audience) } | undefined // Branding profile associated with the document,\n//   operation: \"scrape\" // Scrape a single URL\n// }\n\n\n// Search example\nconst firecrawl_search = new FirecrawlBubble({\n  maxRetries: 42, // Maximum number of retries for the scrape request\n  backoffFactor: 42, // Backoff factor for retry delays\n  operation: \"search\", // Search the web and optionally scrape each result\n  query: \"example string\", // The search query to execute\n  sources: [{ type: \"web\" // options: \"web\", \"news\", \"images\" }], // Specialized result types to include in addition to regular web results\n  categories: [{ type: \"github\" // options: \"github\", \"research\", \"pdf\" }], // Filter search results by specific categories\n  limit: 42, // Maximum number of search results to return\n  tbs: \"example string\", // Filter results by time (e.g., \"qdr:h\" for past hour, \"qdr:m\" for past month)\n  location: \"example string\", // Geographical location to tailor search results\n  ignoreInvalidURLs: true, // Whether to ignore invalid URLs in the search results\n  timeout: 42, // Timeout in milliseconds for the search operation\n  scrapeOptions: { formats: [\"markdown\"] // default // Formats to scrape from the URL, headers: { \"example_key\": \"example string\" } // HTTP headers to include in the request, includeTags: [\"example string\"] // HTML tags/classes/ids to include in the scrape, excludeTags: [\"example string\"] // HTML tags/classes/ids to exclude from the scrape, onlyMainContent: true // default // Whether to extract only main content or full page content, timeout: 30000 // default // Max duration in milliseconds before aborting the request, waitFor: 0 // default // Milliseconds of extra wait time before scraping (use sparingly). This waiting time is in addition to Firecrawl’s smart wait feature., mobile: true // Whether to emulate a mobile device, parsers: [{ type: \"pdf\", maxPages: 42 // Maximum number of PDF pages to parse }] // Extract structured content from various document formats, actions: [{ type: \"wait\", milliseconds: 42 // Time to wait in milliseconds (for wait), selector: \"example string\" // CSS selector to wait for (for wait) }] // Sequence of browser actions to perform before scraping, location: { country: \"example string\" // Country code for proxy location, languages: [\"example string\"] // Preferred languages for proxy location } // Location configuration for proxy location, skipTlsVerification: true // Whether to skip TLS certificate verification, removeBase64Images: true // Whether to remove base64-encoded images from the content, fastMode: true // Whether to enable fast mode for scraping, useMock: \"example string\" // Use a mock response for testing purposes, blockAds: true // Whether to block ads during scraping, proxy: \"example string\" // Type of proxy to use for scraping, maxAge: 172800000 // default // If a cached version of the page is newer than `maxAge` (in milliseconds), Firecrawl returns it instantly; otherwise it scrapes fresh and updates the cache. Set 0 to always fetch fresh., storeInCache: true // Whether to store the scraped result in cache, integration: \"example string\" // Integration identifier for the scrape request }, // Scrape options to apply to each search result\n  integration: \"example string\", // Integration identifier for the search request\n});\n\nconst result = await firecrawl_search.action();\n// outputSchema for result.data when operation === 'search':\n// {\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   operation: \"search\" // Search the web and optionally scrape each result,\n//   web: unknown[] | undefined // Web search results,\n//   news: unknown[] | undefined // News search results,\n//   images: unknown[] | undefined // Image search results,\n//   other: unknown[] | undefined // Unknown mystery search results\n// }\n\n\n// Map example\nconst firecrawl_map = new FirecrawlBubble({\n  maxRetries: 42, // Maximum number of retries for the scrape request\n  backoffFactor: 42, // Backoff factor for retry delays\n  operation: \"map\", // Map a site to discover URLs\n  url: \"example string\", // The base URL of the site to map\n  search: \"example string\", // Search for specific urls inside a website\n  sitemap: \"only\" // options: \"only\", \"include\", \"skip\", // Sitemap handling strategy\n  includeSubdomains: true, // Whether to include subdomains in the site map\n  limit: 42, // Maximum number of URLs to discover\n  timeout: 42, // Timeout in milliseconds for the mapping operation\n  integration: \"example string\", // Integration identifier for the map request\n  location: { country: \"example string\" // Country code for proxy location, languages: [\"example string\"] // Preferred languages for proxy location }, // Location configuration for proxy location\n});\n\nconst result = await firecrawl_map.action();\n// outputSchema for result.data when operation === 'map':\n// {\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   operation: \"map\" // Map a site to discover URLs,\n//   links: { url: string // Discovered URL, title: string | undefined // Page title, description: string | undefined // Page description, category: string | undefined // URL category }[] // Discovered links\n// }\n\n\n// Crawl example\nconst firecrawl_crawl = new FirecrawlBubble({\n  maxRetries: 42, // Maximum number of retries for the scrape request\n  backoffFactor: 42, // Backoff factor for retry delays\n  operation: \"crawl\", // Recursively search through a urls subdomains, and gather the content\n  url: \"example string\", // The URL to crawl\n  prompt: \"example string\", // Optional prompt to guide the crawl behavior\n  excludePaths: [\"example string\"], // List of URL paths to exclude from the crawl\n  includePaths: [\"example string\"], // List of URL paths to include in the crawl\n  maxDiscoveryDepth: 42, // Maximum depth for link discovery during the crawl\n  sitemap: \"skip\" // options: \"skip\", \"include\", // Sitemap handling strategy during the crawl\n  ignoreQueryParameters: true, // Whether to ignore query parameters when crawling URLs\n  limit: 42, // Maximum number of pages to crawl\n  crawlEntireDomain: true, // Whether to crawl the entire domain including subdomains\n  allowExternalLinks: true, // Whether to allow crawling external links\n  allowSubdomains: true, // Whether to include subdomains in the crawl\n  delay: 42, // Delay in milliseconds between requests during the crawl\n  maxConcurrency: 42, // Maximum number of concurrent requests during the crawl\n  webhook: { url: \"example string\" // Webhook URL to send crawl results to, headers: { \"example_key\": \"example string\" } // HTTP headers to include in the webhook request, metadata: { \"example_key\": \"example string\" } // Additional metadata to include in the webhook payload, events: [\"completed\" // options: \"completed\", \"failed\", \"page\", \"started\"] // Events that trigger the webhook }, // Webhook configuration for crawl events\n  scrapeOptions: { formats: [\"markdown\"] // default // Formats to scrape from the URL, headers: { \"example_key\": \"example string\" } // HTTP headers to include in the request, includeTags: [\"example string\"] // HTML tags/classes/ids to include in the scrape, excludeTags: [\"example string\"] // HTML tags/classes/ids to exclude from the scrape, onlyMainContent: true // default // Whether to extract only main content or full page content, timeout: 30000 // default // Max duration in milliseconds before aborting the request, waitFor: 0 // default // Milliseconds of extra wait time before scraping (use sparingly). This waiting time is in addition to Firecrawl’s smart wait feature., mobile: true // Whether to emulate a mobile device, parsers: [{ type: \"pdf\", maxPages: 42 // Maximum number of PDF pages to parse }] // Extract structured content from various document formats, actions: [{ type: \"wait\", milliseconds: 42 // Time to wait in milliseconds (for wait), selector: \"example string\" // CSS selector to wait for (for wait) }] // Sequence of browser actions to perform before scraping, location: { country: \"example string\" // Country code for proxy location, languages: [\"example string\"] // Preferred languages for proxy location } // Location configuration for proxy location, skipTlsVerification: true // Whether to skip TLS certificate verification, removeBase64Images: true // Whether to remove base64-encoded images from the content, fastMode: true // Whether to enable fast mode for scraping, useMock: \"example string\" // Use a mock response for testing purposes, blockAds: true // Whether to block ads during scraping, proxy: \"example string\" // Type of proxy to use for scraping, maxAge: 172800000 // default // If a cached version of the page is newer than `maxAge` (in milliseconds), Firecrawl returns it instantly; otherwise it scrapes fresh and updates the cache. Set 0 to always fetch fresh., storeInCache: true // Whether to store the scraped result in cache, integration: \"example string\" // Integration identifier for the scrape request }, // Scrape options to apply to each crawled page\n  zeroDataRetention: true, // Whether to retain zero data from the crawl\n  integration: \"example string\", // Integration identifier for the crawl request\n  pollInterval: 42, // Interval in milliseconds to poll for crawl status\n  timeout: 42, // Timeout in milliseconds for the crawl operation\n});\n\nconst result = await firecrawl_crawl.action();\n// outputSchema for result.data when operation === 'crawl':\n// {\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   operation: \"crawl\" // Recursively search through a urls subdomains, and gather the content,\n//   status: \"scraping\" | \"completed\" | \"failed\" | \"cancelled\" // Status of the crawl job,\n//   total: number // Total number of pages to crawl,\n//   completed: number // Number of pages crawled,\n//   creditsUsed: number | undefined // Number of credits used,\n//   expiresAt: string | undefined // Expiration time of the crawl job,\n//   data: { markdown: string | undefined // Document content in markdown format, html: string | undefined // Document content in HTML format, rawHtml: string | undefined // Document content in raw HTML format, json: unknown | undefined // Document content in structured JSON format, summary: string | undefined // Summary of the document content, metadata: { title: string | undefined // Title of the document, description: string | undefined // Description of the document, url: string | undefined // URL of the document, language: unknown | undefined // Language of the document, keywords: unknown | undefined // Keywords associated with the document, robots: unknown | undefined // Robots meta tag content, ogTitle: string | undefined // Open Graph title, ogDescription: string | undefined // Open Graph description, ogUrl: string | undefined // Open Graph URL, ogImage: string | undefined // Open Graph image URL, ogAudio: string | undefined // Open Graph audio URL, ogDeterminer: string | undefined // Open Graph determiner, ogLocale: string | undefined // Open Graph locale, ogLocaleAlternate: string[] | undefined // Alternate Open Graph locales, ogSiteName: string | undefined // Open Graph site name, ogVideo: string | undefined // Open Graph video URL, favicon: string | undefined // Favicon URL, dcTermsCreated: string | undefined // Dublin Core terms created, dcDateCreated: string | undefined // Dublin Core date created, dcDate: string | undefined // Dublin Core date, dcTermsType: string | undefined // Dublin Core terms type, dcType: string | undefined // Dublin Core type, dcTermsAudience: string | undefined // Dublin Core terms audience, dcTermsSubject: string | undefined // Dublin Core terms subject, dcSubject: string | undefined // Dublin Core subject, dcDescription: string | undefined // Dublin Core description, dcTermsKeywords: string | undefined // Dublin Core terms keywords, modifiedTime: string | undefined // Last modified time, publishedTime: string | undefined // Published time, articleTag: string | undefined // Article tag, articleSection: string | undefined // Article section, sourceURL: string | undefined // Source URL, statusCode: number | undefined // HTTP status code, scrapeId: string | undefined // Scrape identifier, numPages: number | undefined // Number of pages scraped, contentType: string | undefined // Content type of the document, proxyUsed: \"basic\" | \"stealth\" | undefined // Type of proxy used, cacheState: \"hit\" | \"miss\" | undefined // Cache state, cachedAt: string | undefined // Cache timestamp, creditsUsed: number | undefined // Number of credits used, error: string | undefined // Error message if any } | undefined // Metadata associated with the document, links: string[] | undefined // Array of links found in the document, images: string[] | undefined // Array of image URLs found in the document, screenshot: string | undefined // Base64-encoded screenshot of the document, attributes: { selector: string // CSS selector for the element, attribute: string // Attribute name to extract, values: string[] // Extracted attribute values }[] | undefined // Array of extracted attributes from the document, actions: Record<string, unknown> | undefined // Record of actions performed on the document, warning: string | undefined // Warning message if any, changeTracking: Record<string, unknown> | undefined // Change tracking information for the document, branding: { colorScheme: \"light\" | \"dark\" | undefined // The detected color scheme (\"light\" or \"dark\"), logo: string | null | undefined // URL of the primary logo, fonts: { family: string // Font family name }[] | undefined // Array of font families used on the page, colors: { primary: string | undefined // Primary brand color, secondary: string | undefined // Secondary brand color, accent: string | undefined // Accent brand color, background: string | undefined // UI Background color, textPrimary: string | undefined // UI Primary text color, textSecondary: string | undefined // UI Secondary text color, link: string | undefined // Semantic Link color, success: string | undefined // Semantic Success color, warning: string | undefined // Semantic Warning color, error: string | undefined // Semantic Error color } | undefined // Object containing brand colors, typography: { fontFamilies: { primary: string | undefined // Primary font family, heading: string | undefined // Heading font family, code: string | undefined // Code font family } | undefined // Primary, heading, and code font families, fontStacks: { primary: string[] | undefined // Primary font stack array, heading: string[] | undefined // Heading font stack array, body: string[] | undefined // Body font stack array, paragraph: string[] | undefined // Paragraph font stack array } | undefined // Font stack arrays for primary, heading, body, and paragraph, fontSizes: { h1: string | undefined // H1 font size, h2: string | undefined // H2 font size, h3: string | undefined // H3 font size, body: string | undefined // Body font size, small: string | undefined // Small text font size } | undefined // Size definitions for headings and body text, lineHeights: { heading: number | undefined // Heading line height, body: number | undefined // Body text line height } | undefined // Line height values for different text types, fontWeights: { light: number | undefined // Light font weight, regular: number | undefined // Regular font weight, medium: number | undefined // Medium font weight, bold: number | undefined // Bold font weight } | undefined // Weight definitions (light, regular, medium, bold) } | undefined // Detailed typography information, spacing: { baseUnit: number | undefined // Base spacing unit in pixels, padding: Record<string, number> | undefined // Padding spacing values, margins: Record<string, number> | undefined // Margin spacing values, gridGutter: number | undefined // Grid gutter size in pixels, borderRadius: string | undefined // Default border radius } | undefined // Spacing and layout information, components: { buttonPrimary: { background: string | undefined // Button background color, textColor: string | undefined // Button text color, borderColor: string | undefined // Button border color, borderRadius: string | undefined // Button border radius } | undefined // Primary button styles, buttonSecondary: { background: string | undefined // Button background color, textColor: string | undefined // Button text color, borderColor: string | undefined // Button border color, borderRadius: string | undefined // Button border radius } | undefined // Secondary button styles, input: { borderColor: string | undefined // Input border color, focusBorderColor: string | undefined // Input focus border color, borderRadius: string | undefined // Input border radius } | undefined // Input field styles } | undefined // UI component styles, icons: { style: string | undefined // Icon style, primaryColor: string | undefined // Primary icon color } | undefined // Icon style information, images: { logo: string | null | undefined // Logo image URL, favicon: string | null | undefined // Favicon image URL, ogImage: string | null | undefined // Open Graph image URL } | undefined // Brand images (logo, favicon, og:image), animations: { transitionDuration: string | undefined // Transition duration for animations, easing: string | undefined // Easing function for animations } | undefined // Animation and transition settings, layout: { grid: { columns: number | undefined // Number of grid columns, maxWidth: string | undefined // Maximum grid width } | undefined // Grid layout configuration, headerHeight: string | undefined // Header height, footerHeight: string | undefined // Footer height } | undefined // Layout configuration (grid, header/footer heights), tone: { voice: string | undefined // Brand voice tone, emojiUsage: string | undefined // Emoji usage style } | undefined // Tone and voice characteristics, personality: { tone: \"professional\" | \"playful\" | \"modern\" | \"traditional\" | \"minimalist\" | \"bold\" // Brand tone, energy: \"low\" | \"medium\" | \"high\" // Brand energy level, targetAudience: string // Description of the target audience } | undefined // Brand personality traits (tone, energy, target audience) } | undefined // Branding profile associated with the document }[] // Crawled documents\n// }\n\n\n// Extract example\nconst firecrawl_extract = new FirecrawlBubble({\n  maxRetries: 42, // Maximum number of retries for the scrape request\n  backoffFactor: 42, // Backoff factor for retry delays\n  operation: \"extract\", // Extract structured data from a URL\n  urls: [\"example string\"], // Array of URLs to extract data from\n  prompt: \"example string\", // Optional prompt to guide the extraction process\n  schema: {}, // Optional schema to structure the extracted data\n  systemPrompt: \"example string\", // Optional system prompt for the extraction AI agent\n  allowExternalLinks: true, // Whether to allow extraction from external links found on the page\n  enableWebSearch: true, // Whether to enable web search to supplement extraction\n  showSources: true, // Whether to include source URLs in the extraction results\n  scrapeOptions: { formats: [\"markdown\"] // default // Formats to scrape from the URL, headers: { \"example_key\": \"example string\" } // HTTP headers to include in the request, includeTags: [\"example string\"] // HTML tags/classes/ids to include in the scrape, excludeTags: [\"example string\"] // HTML tags/classes/ids to exclude from the scrape, onlyMainContent: true // default // Whether to extract only main content or full page content, timeout: 30000 // default // Max duration in milliseconds before aborting the request, waitFor: 0 // default // Milliseconds of extra wait time before scraping (use sparingly). This waiting time is in addition to Firecrawl’s smart wait feature., mobile: true // Whether to emulate a mobile device, parsers: [{ type: \"pdf\", maxPages: 42 // Maximum number of PDF pages to parse }] // Extract structured content from various document formats, actions: [{ type: \"wait\", milliseconds: 42 // Time to wait in milliseconds (for wait), selector: \"example string\" // CSS selector to wait for (for wait) }] // Sequence of browser actions to perform before scraping, location: { country: \"example string\" // Country code for proxy location, languages: [\"example string\"] // Preferred languages for proxy location } // Location configuration for proxy location, skipTlsVerification: true // Whether to skip TLS certificate verification, removeBase64Images: true // Whether to remove base64-encoded images from the content, fastMode: true // Whether to enable fast mode for scraping, useMock: \"example string\" // Use a mock response for testing purposes, blockAds: true // Whether to block ads during scraping, proxy: \"example string\" // Type of proxy to use for scraping, maxAge: 172800000 // default // If a cached version of the page is newer than `maxAge` (in milliseconds), Firecrawl returns it instantly; otherwise it scrapes fresh and updates the cache. Set 0 to always fetch fresh., storeInCache: true // Whether to store the scraped result in cache, integration: \"example string\" // Integration identifier for the scrape request }, // Optional scrape options to apply to the extraction process\n  ignoreInvalidURLs: true, // Whether to ignore invalid URLs in the input list\n  integration: \"example string\", // Integration identifier for the extraction process\n  agent: { model: \"FIRE-1\" // AI model to use for extraction }, // Agent to use for the extraction process\n  pollInterval: 42, // Interval in milliseconds to poll for extraction status\n  timeout: 42, // Timeout in milliseconds for the extraction operation\n});\n\nconst result = await firecrawl_extract.action();\n// outputSchema for result.data when operation === 'extract':\n// {\n//   success: boolean // Whether the operation succeeded,\n//   error: string // Error message if operation failed,\n//   operation: \"extract\" // Extract structured data from a URL,\n//   id: string | undefined // Extraction job identifier,\n//   status: \"processing\" | \"completed\" | \"failed\" | \"cancelled\" | undefined // Status of the extraction job,\n//   data: unknown | undefined // Extracted structured data,\n//   warning: string | undefined // Warning message if any,\n//   sources: Record<string, unknown> | undefined // Extraction sources,\n//   expiresAt: string | undefined // Expiration time of the extraction job\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`firecrawl failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "FIRECRAWL_API_KEY"
      ]
    },
    {
      "name": "insforge-db",
      "alias": "insforge",
      "type": "service",
      "shortDescription": "InsForge is the backend built for AI-assisted development. Connect InsForge with any agent. Add authentication, database, storage, functions, and AI integrations to your app in seconds.",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  rows: Record<string, unknown>[] // Array of result rows,\n  rowCount: number | null // Number of rows affected by the query,\n  command: string // SQL command that was executed,\n  executionTime: number // Query execution time in milliseconds,\n  success: boolean // Whether the query executed successfully,\n  error: string // Error message if query execution failed,\n  cleanedJSONString: string // Clean JSON string representation of the row data\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "SQL query to execute against the InsForge database"
          },
          "allowedOperations": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "SELECT",
                "INSERT",
                "UPDATE",
                "DELETE",
                "CREATE",
                "WITH",
                "EXPLAIN"
              ]
            },
            "default": [
              "SELECT",
              "WITH"
            ],
            "description": "List of allowed SQL operations for security (defaults to read-only operations)"
          },
          "parameters": {
            "type": "array",
            "items": {},
            "default": [],
            "description": "Parameters for parameterized queries (e.g., [value1, value2] for $1, $2)"
          },
          "timeout": {
            "type": "number",
            "exclusiveMinimum": true,
            "minimum": 0,
            "default": 30000,
            "description": "Query timeout in milliseconds (default: 30 seconds)"
          },
          "maxRows": {
            "type": "number",
            "exclusiveMinimum": true,
            "minimum": 0,
            "default": 1000,
            "description": "Maximum number of rows to return (default: 1000)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (injected at runtime)"
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "description": "Array of result rows"
          },
          "rowCount": {
            "type": "number",
            "nullable": true,
            "description": "Number of rows affected by the query"
          },
          "command": {
            "type": "string",
            "description": "SQL command that was executed"
          },
          "executionTime": {
            "type": "number",
            "description": "Query execution time in milliseconds"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the query executed successfully"
          },
          "error": {
            "type": "string",
            "description": "Error message if query execution failed"
          },
          "cleanedJSONString": {
            "type": "string",
            "description": "Clean JSON string representation of the row data"
          }
        },
        "required": [
          "rows",
          "rowCount",
          "command",
          "executionTime",
          "success",
          "error",
          "cleanedJSONString"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of insforge-db bubble\nconst insforgeDb = new InsForgeDbBubble({\n  query: \"example string\", // SQL query to execute against the InsForge database,\n  allowedOperations: [\"SELECT\",\"WITH\"] // default, // List of allowed SQL operations for security (defaults to read-only operations),\n  parameters: [] // default, // Parameters for parameterized queries (e.g., [value1, value2] for $1, $2),\n  timeout: 30000 // default, // Query timeout in milliseconds (default: 30 seconds),\n  maxRows: 1000 // default, // Maximum number of rows to return (default: 1000),\n});\n\nconst result = await insforgeDb.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   rows: Record<string, unknown>[] // Array of result rows,\n//   rowCount: number | null // Number of rows affected by the query,\n//   command: string // SQL command that was executed,\n//   executionTime: number // Query execution time in milliseconds,\n//   success: boolean // Whether the query executed successfully,\n//   error: string // Error message if query execution failed,\n//   cleanedJSONString: string // Clean JSON string representation of the row data\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "INSFORGE_BASE_URL",
        "INSFORGE_API_KEY"
      ]
    },
    {
      "name": "browserbase",
      "alias": "browser",
      "type": "service",
      "shortDescription": "Browser automation service using BrowserBase cloud browsers",
      "useCase": "- Automated shopping workflows (Amazon, etc.)",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "start_session"
                ],
                "description": "Create a new BrowserBase browser session"
              },
              "context_id": {
                "type": "string",
                "description": "Existing context ID for session persistence"
              },
              "cookies": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Cookie name"
                    },
                    "value": {
                      "type": "string",
                      "description": "Cookie value"
                    },
                    "domain": {
                      "type": "string",
                      "description": "Cookie domain"
                    },
                    "path": {
                      "type": "string",
                      "description": "Cookie path"
                    },
                    "expires": {
                      "type": "number",
                      "description": "Expiration timestamp"
                    },
                    "httpOnly": {
                      "type": "boolean",
                      "description": "HTTP only flag"
                    },
                    "secure": {
                      "type": "boolean",
                      "description": "Secure flag"
                    }
                  },
                  "required": [
                    "name",
                    "value",
                    "domain",
                    "path",
                    "expires",
                    "httpOnly",
                    "secure"
                  ],
                  "additionalProperties": false
                },
                "description": "Cookies to inject into the session"
              },
              "viewport_width": {
                "type": "number",
                "minimum": 320,
                "default": 1280,
                "description": "Browser viewport width"
              },
              "viewport_height": {
                "type": "number",
                "minimum": 240,
                "default": 900,
                "description": "Browser viewport height"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials including AMAZON_CRED for browser session data"
              },
              "proxies": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  },
                  {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "browserbase"
                              ],
                              "description": "Use BrowserBase built-in proxies"
                            },
                            "geolocation": {
                              "type": "object",
                              "properties": {
                                "city": {
                                  "type": "string",
                                  "description": "City name (e.g., \"NEW_YORK\", \"LONDON\")"
                                },
                                "state": {
                                  "type": "string",
                                  "description": "State code for US locations (e.g., \"NY\", \"CA\")"
                                },
                                "country": {
                                  "type": "string",
                                  "description": "ISO 3166-1 alpha-2 country code (e.g., \"US\", \"GB\", \"JP\")"
                                }
                              },
                              "required": [
                                "country"
                              ],
                              "additionalProperties": false,
                              "description": "Proxy geolocation settings"
                            },
                            "domainPattern": {
                              "type": "string",
                              "description": "Regex pattern for domains to route through this proxy"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "external"
                              ],
                              "description": "Use custom external proxy"
                            },
                            "server": {
                              "type": "string",
                              "description": "Proxy server URL (e.g., \"http://proxy.example.com:8080\")"
                            },
                            "username": {
                              "type": "string",
                              "description": "Proxy authentication username"
                            },
                            "password": {
                              "type": "string",
                              "description": "Proxy authentication password"
                            },
                            "domainPattern": {
                              "type": "string",
                              "description": "Regex pattern for domains to route through this proxy"
                            }
                          },
                          "required": [
                            "type",
                            "server"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  }
                ],
                "description": "Proxy configuration: true for built-in proxies, or array of proxy configs with routing rules"
              },
              "stealth": {
                "type": "object",
                "properties": {
                  "advancedStealth": {
                    "type": "boolean",
                    "default": false,
                    "description": "Enable Advanced Stealth Mode with custom Chromium for better anti-bot avoidance (Scale Plan only)"
                  },
                  "solveCaptchas": {
                    "type": "boolean",
                    "default": true,
                    "description": "Enable automatic CAPTCHA solving (enabled by default)"
                  },
                  "captchaImageSelector": {
                    "type": "string",
                    "description": "CSS selector for custom CAPTCHA image element"
                  },
                  "captchaInputSelector": {
                    "type": "string",
                    "description": "CSS selector for custom CAPTCHA input field"
                  }
                },
                "additionalProperties": false,
                "description": "Stealth mode configuration for anti-bot avoidance and CAPTCHA solving"
              },
              "timeout_seconds": {
                "type": "number",
                "minimum": 60,
                "maximum": 21600,
                "description": "Session timeout in seconds. Duration after which the session automatically ends (60-21600)."
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "navigate"
                ],
                "description": "Navigate to a URL"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Active browser session ID"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "URL to navigate to"
              },
              "wait_until": {
                "type": "string",
                "enum": [
                  "load",
                  "domcontentloaded",
                  "networkidle0",
                  "networkidle2"
                ],
                "default": "domcontentloaded",
                "description": "Wait condition for navigation"
              },
              "timeout": {
                "type": "number",
                "minimum": 1000,
                "default": 30000,
                "description": "Navigation timeout in milliseconds"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id",
              "url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "click"
                ],
                "description": "Click an element on the page"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Active browser session ID"
              },
              "selector": {
                "type": "string",
                "minLength": 1,
                "description": "CSS selector of element to click"
              },
              "wait_for_navigation": {
                "type": "boolean",
                "default": false,
                "description": "Wait for navigation after click"
              },
              "timeout": {
                "type": "number",
                "minimum": 1000,
                "default": 5000,
                "description": "Element wait timeout in milliseconds"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id",
              "selector"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "type"
                ],
                "description": "Type text into an input element"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Active browser session ID"
              },
              "selector": {
                "type": "string",
                "minLength": 1,
                "description": "CSS selector of input element"
              },
              "text": {
                "type": "string",
                "description": "Text to type"
              },
              "clear_first": {
                "type": "boolean",
                "default": false,
                "description": "Clear the input before typing"
              },
              "delay": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Delay between keystrokes in milliseconds"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id",
              "selector",
              "text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "select"
                ],
                "description": "Select an option in a dropdown/select element"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Active browser session ID"
              },
              "selector": {
                "type": "string",
                "minLength": 1,
                "description": "CSS selector of the <select> element"
              },
              "value": {
                "type": "string",
                "description": "Value of the option to select"
              },
              "timeout": {
                "type": "number",
                "minimum": 1000,
                "default": 5000,
                "description": "Element wait timeout in milliseconds"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id",
              "selector",
              "value"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "evaluate"
                ],
                "description": "Execute JavaScript in page context"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Active browser session ID"
              },
              "script": {
                "type": "string",
                "minLength": 1,
                "description": "JavaScript code to execute (will be wrapped in a function)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id",
              "script"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_content"
                ],
                "description": "Get page or element content"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Active browser session ID"
              },
              "selector": {
                "type": "string",
                "description": "CSS selector for specific element (optional, defaults to body)"
              },
              "content_type": {
                "type": "string",
                "enum": [
                  "html",
                  "text",
                  "outer_html"
                ],
                "default": "text",
                "description": "Type of content to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "screenshot"
                ],
                "description": "Take a screenshot of the page"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Active browser session ID"
              },
              "selector": {
                "type": "string",
                "description": "CSS selector for specific element (optional, defaults to full page)"
              },
              "full_page": {
                "type": "boolean",
                "default": false,
                "description": "Capture full scrollable page"
              },
              "format": {
                "type": "string",
                "enum": [
                  "png",
                  "jpeg",
                  "webp"
                ],
                "default": "png",
                "description": "Screenshot image format"
              },
              "quality": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "Image quality for jpeg/webp (0-100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "wait"
                ],
                "description": "Wait for a condition"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Active browser session ID"
              },
              "wait_type": {
                "type": "string",
                "enum": [
                  "selector",
                  "timeout",
                  "navigation"
                ],
                "description": "Type of wait condition"
              },
              "selector": {
                "type": "string",
                "description": "CSS selector to wait for (for selector wait_type)"
              },
              "timeout": {
                "type": "number",
                "minimum": 0,
                "default": 5000,
                "description": "Wait timeout in milliseconds"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id",
              "wait_type"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_cookies"
                ],
                "description": "Get cookies from the browser"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Active browser session ID"
              },
              "domain_filter": {
                "type": "string",
                "description": "Filter cookies by domain (partial match)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "end_session"
                ],
                "description": "Close browser session and release resources"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "Session ID to close"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "start_session"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "session_id": {
                "type": "string",
                "description": "Created session ID"
              },
              "context_id": {
                "type": "string",
                "description": "Context ID for persistence"
              },
              "debug_url": {
                "type": "string",
                "description": "Debug URL for live viewing"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "navigate"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "url": {
                "type": "string",
                "description": "Final URL after navigation"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "click"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "type"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "select"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "evaluate"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "result": {
                "description": "Result of JavaScript execution"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_content"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "content": {
                "type": "string",
                "description": "Retrieved content"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "screenshot"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "data": {
                "type": "string",
                "description": "Base64-encoded screenshot data"
              },
              "format": {
                "type": "string",
                "description": "Image format"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "wait"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_cookies"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "cookies": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Cookie name"
                    },
                    "value": {
                      "type": "string",
                      "description": "Cookie value"
                    },
                    "domain": {
                      "type": "string",
                      "description": "Cookie domain"
                    },
                    "path": {
                      "type": "string",
                      "description": "Cookie path"
                    },
                    "expires": {
                      "type": "number",
                      "description": "Expiration timestamp"
                    },
                    "httpOnly": {
                      "type": "boolean",
                      "description": "HTTP only flag"
                    },
                    "secure": {
                      "type": "boolean",
                      "description": "Secure flag"
                    }
                  },
                  "required": [
                    "name",
                    "value",
                    "domain",
                    "path",
                    "expires",
                    "httpOnly",
                    "secure"
                  ],
                  "additionalProperties": false
                },
                "description": "Retrieved cookies"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "end_session"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Start Session example\nconst browserbase_start_session = new BrowserBaseBubble({\n  operation: \"start_session\", // Create a new BrowserBase browser session\n  context_id: \"example string\", // Existing context ID for session persistence\n  cookies: [{ name: \"example string\" // Cookie name, value: \"example string\" // Cookie value, domain: \"example string\" // Cookie domain, path: \"example string\" // Cookie path, expires: 42 // Expiration timestamp, httpOnly: true // HTTP only flag, secure: true // Secure flag }], // Cookies to inject into the session\n  viewport_width: 1280 // default, // Browser viewport width\n  viewport_height: 900 // default, // Browser viewport height\n  proxies: [{ type: \"browserbase\", geolocation: { city: \"example string\" // City name (e.g., \"NEW_YORK\", \"LONDON\"), state: \"example string\" // State code for US locations (e.g., \"NY\", \"CA\"), country: \"example string\" // ISO 3166-1 alpha-2 country code (e.g., \"US\", \"GB\", \"JP\") }, domainPattern: \"example string\" }], // Proxy configuration: true for built-in proxies, or array of proxy configs with routing rules\n  stealth: { advancedStealth: false // default // Enable Advanced Stealth Mode with custom Chromium for better anti-bot avoidance (Scale Plan only), solveCaptchas: true // default // Enable automatic CAPTCHA solving (enabled by default), captchaImageSelector: \"example string\" // CSS selector for custom CAPTCHA image element, captchaInputSelector: \"example string\" // CSS selector for custom CAPTCHA input field }, // Stealth mode configuration for anti-bot avoidance and CAPTCHA solving\n  timeout_seconds: 42, // Session timeout in seconds. Duration after which the session automatically ends (60-21600).\n});\n\nconst result = await browserbase_start_session.action();\n// outputSchema for result.data when operation === 'start_session':\n// {\n//   operation: \"start_session\",\n//   success: boolean // Whether the operation was successful,\n//   session_id: string | undefined // Created session ID,\n//   context_id: string | undefined // Context ID for persistence,\n//   debug_url: string | undefined // Debug URL for live viewing,\n//   error: string // Error message if operation failed\n// }\n\n\n// Navigate example\nconst browserbase_navigate = new BrowserBaseBubble({\n  operation: \"navigate\", // Navigate to a URL\n  session_id: \"example string\", // Active browser session ID\n  url: \"example string\", // URL to navigate to\n  wait_until: \"load\" // options: \"load\", \"domcontentloaded\", \"networkidle0\", \"networkidle2\", // Wait condition for navigation\n  timeout: 30000 // default, // Navigation timeout in milliseconds\n});\n\nconst result = await browserbase_navigate.action();\n// outputSchema for result.data when operation === 'navigate':\n// {\n//   operation: \"navigate\",\n//   success: boolean // Whether the operation was successful,\n//   url: string | undefined // Final URL after navigation,\n//   error: string // Error message if operation failed\n// }\n\n\n// Click example\nconst browserbase_click = new BrowserBaseBubble({\n  operation: \"click\", // Click an element on the page\n  session_id: \"example string\", // Active browser session ID\n  selector: \"example string\", // CSS selector of element to click\n  wait_for_navigation: false // default, // Wait for navigation after click\n  timeout: 5000 // default, // Element wait timeout in milliseconds\n});\n\nconst result = await browserbase_click.action();\n// outputSchema for result.data when operation === 'click':\n// {\n//   operation: \"click\",\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n\n// Type example\nconst browserbase_type = new BrowserBaseBubble({\n  operation: \"type\", // Type text into an input element\n  session_id: \"example string\", // Active browser session ID\n  selector: \"example string\", // CSS selector of input element\n  text: \"example string\", // Text to type\n  clear_first: false // default, // Clear the input before typing\n  delay: 0 // default, // Delay between keystrokes in milliseconds\n});\n\nconst result = await browserbase_type.action();\n// outputSchema for result.data when operation === 'type':\n// {\n//   operation: \"type\",\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n\n// Select example\nconst browserbase_select = new BrowserBaseBubble({\n  operation: \"select\", // Select an option in a dropdown/select element\n  session_id: \"example string\", // Active browser session ID\n  selector: \"example string\", // CSS selector of the <select> element\n  value: \"example string\", // Value of the option to select\n  timeout: 5000 // default, // Element wait timeout in milliseconds\n});\n\nconst result = await browserbase_select.action();\n// outputSchema for result.data when operation === 'select':\n// {\n//   operation: \"select\",\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n\n// Evaluate example\nconst browserbase_evaluate = new BrowserBaseBubble({\n  operation: \"evaluate\", // Execute JavaScript in page context\n  session_id: \"example string\", // Active browser session ID\n  script: \"example string\", // JavaScript code to execute (will be wrapped in a function)\n});\n\nconst result = await browserbase_evaluate.action();\n// outputSchema for result.data when operation === 'evaluate':\n// {\n//   operation: \"evaluate\",\n//   success: boolean // Whether the operation was successful,\n//   result: unknown | undefined // Result of JavaScript execution,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Content example\nconst browserbase_get_content = new BrowserBaseBubble({\n  operation: \"get_content\", // Get page or element content\n  session_id: \"example string\", // Active browser session ID\n  selector: \"example string\", // CSS selector for specific element (optional, defaults to body)\n  content_type: \"html\" // options: \"html\", \"text\", \"outer_html\", // Type of content to retrieve\n});\n\nconst result = await browserbase_get_content.action();\n// outputSchema for result.data when operation === 'get_content':\n// {\n//   operation: \"get_content\",\n//   success: boolean // Whether the operation was successful,\n//   content: string | undefined // Retrieved content,\n//   error: string // Error message if operation failed\n// }\n\n\n// Screenshot example\nconst browserbase_screenshot = new BrowserBaseBubble({\n  operation: \"screenshot\", // Take a screenshot of the page\n  session_id: \"example string\", // Active browser session ID\n  selector: \"example string\", // CSS selector for specific element (optional, defaults to full page)\n  full_page: false // default, // Capture full scrollable page\n  format: \"png\" // options: \"png\", \"jpeg\", \"webp\", // Screenshot image format\n  quality: 42, // Image quality for jpeg/webp (0-100)\n});\n\nconst result = await browserbase_screenshot.action();\n// outputSchema for result.data when operation === 'screenshot':\n// {\n//   operation: \"screenshot\",\n//   success: boolean // Whether the operation was successful,\n//   data: string | undefined // Base64-encoded screenshot data,\n//   format: string | undefined // Image format,\n//   error: string // Error message if operation failed\n// }\n\n\n// Wait example\nconst browserbase_wait = new BrowserBaseBubble({\n  operation: \"wait\", // Wait for a condition\n  session_id: \"example string\", // Active browser session ID\n  wait_type: \"selector\" // options: \"selector\", \"timeout\", \"navigation\", // Type of wait condition\n  selector: \"example string\", // CSS selector to wait for (for selector wait_type)\n  timeout: 5000 // default, // Wait timeout in milliseconds\n});\n\nconst result = await browserbase_wait.action();\n// outputSchema for result.data when operation === 'wait':\n// {\n//   operation: \"wait\",\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Cookies example\nconst browserbase_get_cookies = new BrowserBaseBubble({\n  operation: \"get_cookies\", // Get cookies from the browser\n  session_id: \"example string\", // Active browser session ID\n  domain_filter: \"example string\", // Filter cookies by domain (partial match)\n});\n\nconst result = await browserbase_get_cookies.action();\n// outputSchema for result.data when operation === 'get_cookies':\n// {\n//   operation: \"get_cookies\",\n//   success: boolean // Whether the operation was successful,\n//   cookies: { name: string // Cookie name, value: string // Cookie value, domain: string // Cookie domain, path: string // Cookie path, expires: number // Expiration timestamp, httpOnly: boolean // HTTP only flag, secure: boolean // Secure flag }[] | undefined // Retrieved cookies,\n//   error: string // Error message if operation failed\n// }\n\n\n// End Session example\nconst browserbase_end_session = new BrowserBaseBubble({\n  operation: \"end_session\", // Close browser session and release resources\n  session_id: \"example string\", // Session ID to close\n});\n\nconst result = await browserbase_end_session.action();\n// outputSchema for result.data when operation === 'end_session':\n// {\n//   operation: \"end_session\",\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`browserbase failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "AMAZON_CRED",
        "CLOUDFLARE_R2_ACCESS_KEY",
        "CLOUDFLARE_R2_SECRET_KEY",
        "CLOUDFLARE_R2_ACCOUNT_ID",
        "GOOGLE_GEMINI_CRED"
      ]
    },
    {
      "name": "people-search-tool",
      "alias": "people",
      "type": "tool",
      "shortDescription": "Comprehensive people search by company, title, location, skills, with optional email enrichment",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  people: { name: string | null // Full name, title: string | null // Current job title, headline: string | null // LinkedIn headline, linkedinUrl: string | null // LinkedIn profile URL, profilePictureUrl: string | null // Profile picture URL, emails: string[] | null // Email addresses, twitterHandle: string | null // Twitter/X handle, websites: string[] | null // Personal/professional websites. Crustdata-only — always null on FullEnrich results., enrichedWorkEmail: string | null | undefined // Work email found via FullEnrich, enrichedPersonalEmail: string | null | undefined // Personal email found via FullEnrich, enrichedWorkEmails: { email: string, status: string | undefined }[] | null | undefined // All work emails found via FullEnrich, enrichedPersonalEmails: { email: string, status: string | undefined }[] | null | undefined // All personal emails found via FullEnrich, seniorityLevel: string | null // Seniority level (CXO, Vice President, Director, etc.), yearsOfExperience: number | null // Total years of professional experience. Crustdata-only — always null on FullEnrich results., recentlyChangedJobs: boolean | null // Whether this person recently changed jobs. Crustdata-only — always null on FullEnrich results., location: string | null // Location/region, locationCity: string | null // City, locationCountry: string | null // Country, skills: string[] | null // Professional skills, languages: string[] | null // Languages spoken, summary: string | null // Professional summary, numConnections: number | null // Number of LinkedIn connections. Crustdata-only — always null on FullEnrich results., currentEmployers: { title: string | null // Job title, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, companyDomainUrl: string | null // Company website domain, seniorityLevel: string | null // Seniority level, functionCategory: string | null // Function category, startDate: unknown | null // Start date, yearsAtCompany: number | null // Years at company, companyHeadcount: number | null // Company headcount, companyIndustries: string[] | null // Company industries }[] | null // Current employment, pastEmployers: { title: string | null // Job title, companyName: string | null // Company name, startDate: unknown | null // Start date, endDate: unknown | null // End date }[] | null // Past employment, education: { instituteName: string | null // Institution name, degreeName: string | null // Degree name, fieldOfStudy: string | null // Field of study }[] | null // Education history }[] // List of people found,\n  totalCount: number // Total number of people available,\n  nextCursor: string | undefined // Pagination cursor for fetching the next page. Pass this as the cursor parameter in the next request. Undefined when no more results are available.,\n  warnings: string[] | undefined // Non-fatal signals from the tool — e.g. filters that were requested but the chosen provider does not support (and were therefore ignored). Useful for surfacing why a search returned fewer results than expected.,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "crustdata",
              "fullenrich"
            ],
            "default": "fullenrich",
            "description": "Search provider. Default: 'fullenrich'. Leave unset unless you need a filter FullEnrich cannot honor. On the FullEnrich provider every string filter is sent with exact_match=true so results are strictly scoped (e.g. companyName='Stripe' will NOT also return 'Stripes' or ex-Stripe folks). Filters the FullEnrich provider DOES NOT SUPPORT (the tool returns a hard error if any of these are set while provider='fullenrich'): locationRadius, minYearsExperience, maxYearsExperience, minConnections, excludeCompanies, excludeProfiles, companyLinkedinUrl. Enumerated filters (seniorityLevels, functionCategories, companyIndustries) are validated against FullEnrich's taxonomy and return a hard error with the accepted values if an unknown value is passed — no silent soft-match. Everything else — including languages, schoolName, pastJobTitle, minYearsAtCompany, recentlyChangedJobs — is supported on BOTH providers."
          },
          "companyName": {
            "type": "string",
            "description": "Current company name to search within (e.g., \"Google\", \"Microsoft\")"
          },
          "companyLinkedinUrl": {
            "type": "string",
            "description": "Company LinkedIn URL for precise matching (e.g., \"https://www.linkedin.com/company/google\")"
          },
          "jobTitle": {
            "type": "string",
            "description": "Current job title to search for (e.g., \"Software Engineer\", \"CEO\"). Use jobTitles array for multiple titles."
          },
          "jobTitles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Multiple job titles to search for with OR logic (e.g., [\"Senior Hardware Engineer\", \"Technical Product Manager\"]). Use this when searching for people with any of several roles."
          },
          "location": {
            "type": "string",
            "description": "Location/region to filter by with fuzzy matching (e.g., \"San Francisco Bay Area\", \"New York\")"
          },
          "locationRadius": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "Center point location (e.g., \"San Francisco\", \"New York City\")"
              },
              "radiusMiles": {
                "type": "number",
                "exclusiveMinimum": true,
                "minimum": 0,
                "description": "Search radius in miles (e.g., 75)"
              }
            },
            "required": [
              "location",
              "radiusMiles"
            ],
            "additionalProperties": false,
            "description": "Geographic radius search - find people within X miles of a location"
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Skills to filter by (e.g., [\"Python\", \"Machine Learning\", \"React\"])"
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Languages spoken (e.g., [\"English\", \"Spanish\", \"Mandarin\"])"
          },
          "minYearsExperience": {
            "type": "number",
            "description": "Minimum total years of professional experience"
          },
          "maxYearsExperience": {
            "type": "number",
            "description": "Maximum total years of professional experience"
          },
          "seniorityLevels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Seniority levels. Valid values: Owner / Partner, CXO, Vice President, Director, Experienced Manager, Entry Level Manager, Strategic, Senior, Entry Level, In Training. Examples: [\"CXO\", \"Vice President\", \"Director\", \"Experienced Manager\", \"Senior\"]"
          },
          "functionCategories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Job function categories. Valid values: Accounting, Administrative, Arts and Design, Business Development, Community and Social Services, Consulting, Education, Engineering, Entrepreneurship, Finance, Healthcare Services, Human Resources, Information Technology, Legal, Marketing, Media and Communication, Military and Protective Services, Operations, Product Management, Program and Project Management, Purchasing, Quality Assurance, Real Estate, Research, Sales, Customer Success and Support. Examples: [\"Engineering\", \"Sales\", \"Marketing\", \"Finance\", \"Operations\", \"Human Resources\"]"
          },
          "companyIndustries": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Company industries to filter by with fuzzy matching (e.g., [\"Technology\", \"SaaS\", \"Finance\", \"Fintech\"]). Uses fuzzy text search, so partial terms like \"Technology\" will match \"IT Services and IT Consulting\", \"Software Development\", etc. Multiple values use OR logic."
          },
          "minCompanyHeadcount": {
            "type": "number",
            "description": "Minimum company employee count (e.g., 100 for companies with 100+ employees)"
          },
          "maxCompanyHeadcount": {
            "type": "number",
            "description": "Maximum company employee count (e.g., 1000 for companies under 1000 employees)"
          },
          "minYearsAtCompany": {
            "type": "number",
            "description": "Minimum years at current company (tenure filter)"
          },
          "pastCompanyName": {
            "type": "string",
            "description": "Past company name - find people who previously worked at a company"
          },
          "pastJobTitle": {
            "type": "string",
            "description": "Past job title - find people who previously held a specific title"
          },
          "schoolName": {
            "type": "string",
            "description": "School/university name (e.g., \"Stanford University\", \"MIT\")"
          },
          "country": {
            "type": "string",
            "description": "Country to filter by (e.g., \"United States\", \"United Kingdom\", \"Germany\")"
          },
          "city": {
            "type": "string",
            "description": "City to filter by (e.g., \"San Francisco\", \"New York\", \"London\")"
          },
          "recentlyChangedJobs": {
            "type": "boolean",
            "description": "Filter to people who recently changed jobs (useful for outreach)"
          },
          "minConnections": {
            "type": "number",
            "description": "Minimum number of LinkedIn connections"
          },
          "excludeCompanies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Company names to exclude from results"
          },
          "excludeProfiles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "LinkedIn profile URLs to exclude from results"
          },
          "limit": {
            "type": "number",
            "maximum": 1000,
            "default": 100,
            "description": "Maximum results to return (default: 100, max: 1000)"
          },
          "cursor": {
            "type": "string",
            "description": "Pagination cursor from previous response. Use to fetch the next page of results."
          },
          "enrichEmails": {
            "type": "boolean",
            "default": false,
            "description": "Enrich emails for found people via FullEnrich bulk enrichment as a post step. Applies to BOTH providers. Requires FULLENRICH_API_KEY credential. Costs 1 credit per work email, 3 credits per personal email. IMPORTANT: this is a SLOW operation — FullEnrich's bulk pipeline typically takes 30–120 seconds per batch (polls every 5s up to a 120s cap). If the cap trips, affected people are returned without emails and the result's `warnings` array explains which batches timed out. Consider surfacing a progress UI on user-facing flows."
          },
          "includePersonalEmails": {
            "type": "boolean",
            "default": false,
            "description": "When enrichEmails is true, also search for personal emails (costs 3 additional credits per person)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "people": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "nullable": true,
                  "description": "Full name"
                },
                "title": {
                  "type": "string",
                  "nullable": true,
                  "description": "Current job title"
                },
                "headline": {
                  "type": "string",
                  "nullable": true,
                  "description": "LinkedIn headline"
                },
                "linkedinUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "LinkedIn profile URL"
                },
                "profilePictureUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Profile picture URL"
                },
                "emails": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Email addresses"
                },
                "twitterHandle": {
                  "type": "string",
                  "nullable": true,
                  "description": "Twitter/X handle"
                },
                "websites": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Personal/professional websites. Crustdata-only — always null on FullEnrich results."
                },
                "enrichedWorkEmail": {
                  "type": "string",
                  "nullable": true,
                  "description": "Work email found via FullEnrich"
                },
                "enrichedPersonalEmail": {
                  "type": "string",
                  "nullable": true,
                  "description": "Personal email found via FullEnrich"
                },
                "enrichedWorkEmails": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "email"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "All work emails found via FullEnrich"
                },
                "enrichedPersonalEmails": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "email"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "All personal emails found via FullEnrich"
                },
                "seniorityLevel": {
                  "type": "string",
                  "nullable": true,
                  "description": "Seniority level (CXO, Vice President, Director, etc.)"
                },
                "yearsOfExperience": {
                  "type": "number",
                  "nullable": true,
                  "description": "Total years of professional experience. Crustdata-only — always null on FullEnrich results."
                },
                "recentlyChangedJobs": {
                  "type": "boolean",
                  "nullable": true,
                  "description": "Whether this person recently changed jobs. Crustdata-only — always null on FullEnrich results."
                },
                "location": {
                  "type": "string",
                  "nullable": true,
                  "description": "Location/region"
                },
                "locationCity": {
                  "type": "string",
                  "nullable": true,
                  "description": "City"
                },
                "locationCountry": {
                  "type": "string",
                  "nullable": true,
                  "description": "Country"
                },
                "skills": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Professional skills"
                },
                "languages": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Languages spoken"
                },
                "summary": {
                  "type": "string",
                  "nullable": true,
                  "description": "Professional summary"
                },
                "numConnections": {
                  "type": "number",
                  "nullable": true,
                  "description": "Number of LinkedIn connections. Crustdata-only — always null on FullEnrich results."
                },
                "currentEmployers": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "nullable": true,
                        "description": "Job title"
                      },
                      "companyName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Company name"
                      },
                      "companyLinkedinUrl": {
                        "type": "string",
                        "nullable": true,
                        "description": "Company LinkedIn URL"
                      },
                      "companyDomainUrl": {
                        "type": "string",
                        "nullable": true,
                        "description": "Company website domain"
                      },
                      "seniorityLevel": {
                        "type": "string",
                        "nullable": true,
                        "description": "Seniority level"
                      },
                      "functionCategory": {
                        "type": "string",
                        "nullable": true,
                        "description": "Function category"
                      },
                      "startDate": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ],
                        "nullable": true,
                        "description": "Start date"
                      },
                      "yearsAtCompany": {
                        "type": "number",
                        "nullable": true,
                        "description": "Years at company"
                      },
                      "companyHeadcount": {
                        "type": "number",
                        "nullable": true,
                        "description": "Company headcount"
                      },
                      "companyIndustries": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "nullable": true,
                        "description": "Company industries"
                      }
                    },
                    "required": [
                      "title",
                      "companyName",
                      "companyLinkedinUrl",
                      "companyDomainUrl",
                      "seniorityLevel",
                      "functionCategory",
                      "startDate",
                      "yearsAtCompany",
                      "companyHeadcount",
                      "companyIndustries"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Current employment"
                },
                "pastEmployers": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "nullable": true,
                        "description": "Job title"
                      },
                      "companyName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Company name"
                      },
                      "startDate": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ],
                        "nullable": true,
                        "description": "Start date"
                      },
                      "endDate": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ],
                        "nullable": true,
                        "description": "End date"
                      }
                    },
                    "required": [
                      "title",
                      "companyName",
                      "startDate",
                      "endDate"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Past employment"
                },
                "education": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "instituteName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Institution name"
                      },
                      "degreeName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Degree name"
                      },
                      "fieldOfStudy": {
                        "type": "string",
                        "nullable": true,
                        "description": "Field of study"
                      }
                    },
                    "required": [
                      "instituteName",
                      "degreeName",
                      "fieldOfStudy"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Education history"
                }
              },
              "required": [
                "name",
                "title",
                "headline",
                "linkedinUrl",
                "profilePictureUrl",
                "emails",
                "twitterHandle",
                "websites",
                "seniorityLevel",
                "yearsOfExperience",
                "recentlyChangedJobs",
                "location",
                "locationCity",
                "locationCountry",
                "skills",
                "languages",
                "summary",
                "numConnections",
                "currentEmployers",
                "pastEmployers",
                "education"
              ],
              "additionalProperties": false
            },
            "description": "List of people found"
          },
          "totalCount": {
            "type": "number",
            "description": "Total number of people available"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pagination cursor for fetching the next page. Pass this as the cursor parameter in the next request. Undefined when no more results are available."
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Non-fatal signals from the tool — e.g. filters that were requested but the chosen provider does not support (and were therefore ignored). Useful for surfacing why a search returned fewer results than expected."
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "people",
          "totalCount",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of people-search-tool bubble\nconst peopleSearchTool = new PeopleSearchTool({\n  provider: \"crustdata\" // options: \"crustdata\", \"fullenrich\", // Search provider. Default: 'fullenrich'. Leave unset unless you need a filter FullEnrich cannot honor. On the FullEnrich provider every string filter is sent with exact_match=true so results are strictly scoped (e.g. companyName='Stripe' will NOT also return 'Stripes' or ex-Stripe folks). Filters the FullEnrich provider DOES NOT SUPPORT (the tool returns a hard error if any of these are set while provider='fullenrich'): locationRadius, minYearsExperience, maxYearsExperience, minConnections, excludeCompanies, excludeProfiles, companyLinkedinUrl. Enumerated filters (seniorityLevels, functionCategories, companyIndustries) are validated against FullEnrich's taxonomy and return a hard error with the accepted values if an unknown value is passed — no silent soft-match. Everything else — including languages, schoolName, pastJobTitle, minYearsAtCompany, recentlyChangedJobs — is supported on BOTH providers.,\n  companyName: \"example string\", // Current company name to search within (e.g., \"Google\", \"Microsoft\"),\n  companyLinkedinUrl: \"example string\", // Company LinkedIn URL for precise matching (e.g., \"https://www.linkedin.com/company/google\"),\n  jobTitle: \"example string\", // Current job title to search for (e.g., \"Software Engineer\", \"CEO\"). Use jobTitles array for multiple titles.,\n  jobTitles: [\"example string\"], // Multiple job titles to search for with OR logic (e.g., [\"Senior Hardware Engineer\", \"Technical Product Manager\"]). Use this when searching for people with any of several roles.,\n  location: \"example string\", // Location/region to filter by with fuzzy matching (e.g., \"San Francisco Bay Area\", \"New York\"),\n  locationRadius: { location: \"example string\" // Center point location (e.g., \"San Francisco\", \"New York City\"), radiusMiles: 42 // Search radius in miles (e.g., 75) }, // Geographic radius search - find people within X miles of a location,\n  skills: [\"example string\"], // Skills to filter by (e.g., [\"Python\", \"Machine Learning\", \"React\"]),\n  languages: [\"example string\"], // Languages spoken (e.g., [\"English\", \"Spanish\", \"Mandarin\"]),\n  minYearsExperience: 42, // Minimum total years of professional experience,\n  maxYearsExperience: 42, // Maximum total years of professional experience,\n  seniorityLevels: [\"example string\"], // Seniority levels. Valid values: Owner / Partner, CXO, Vice President, Director, Experienced Manager, Entry Level Manager, Strategic, Senior, Entry Level, In Training. Examples: [\"CXO\", \"Vice President\", \"Director\", \"Experienced Manager\", \"Senior\"],\n  functionCategories: [\"example string\"], // Job function categories. Valid values: Accounting, Administrative, Arts and Design, Business Development, Community and Social Services, Consulting, Education, Engineering, Entrepreneurship, Finance, Healthcare Services, Human Resources, Information Technology, Legal, Marketing, Media and Communication, Military and Protective Services, Operations, Product Management, Program and Project Management, Purchasing, Quality Assurance, Real Estate, Research, Sales, Customer Success and Support. Examples: [\"Engineering\", \"Sales\", \"Marketing\", \"Finance\", \"Operations\", \"Human Resources\"],\n  companyIndustries: [\"example string\"], // Company industries to filter by with fuzzy matching (e.g., [\"Technology\", \"SaaS\", \"Finance\", \"Fintech\"]). Uses fuzzy text search, so partial terms like \"Technology\" will match \"IT Services and IT Consulting\", \"Software Development\", etc. Multiple values use OR logic.,\n  minCompanyHeadcount: 42, // Minimum company employee count (e.g., 100 for companies with 100+ employees),\n  maxCompanyHeadcount: 42, // Maximum company employee count (e.g., 1000 for companies under 1000 employees),\n  minYearsAtCompany: 42, // Minimum years at current company (tenure filter),\n  pastCompanyName: \"example string\", // Past company name - find people who previously worked at a company,\n  pastJobTitle: \"example string\", // Past job title - find people who previously held a specific title,\n  schoolName: \"example string\", // School/university name (e.g., \"Stanford University\", \"MIT\"),\n  country: \"example string\", // Country to filter by (e.g., \"United States\", \"United Kingdom\", \"Germany\"),\n  city: \"example string\", // City to filter by (e.g., \"San Francisco\", \"New York\", \"London\"),\n  recentlyChangedJobs: true, // Filter to people who recently changed jobs (useful for outreach),\n  minConnections: 42, // Minimum number of LinkedIn connections,\n  excludeCompanies: [\"example string\"], // Company names to exclude from results,\n  excludeProfiles: [\"example string\"], // LinkedIn profile URLs to exclude from results,\n  limit: 100 // default, // Maximum results to return (default: 100, max: 1000),\n  cursor: \"example string\", // Pagination cursor from previous response. Use to fetch the next page of results.,\n  enrichEmails: false // default, // Enrich emails for found people via FullEnrich bulk enrichment as a post step. Applies to BOTH providers. Requires FULLENRICH_API_KEY credential. Costs 1 credit per work email, 3 credits per personal email. IMPORTANT: this is a SLOW operation — FullEnrich's bulk pipeline typically takes 30–120 seconds per batch (polls every 5s up to a 120s cap). If the cap trips, affected people are returned without emails and the result's `warnings` array explains which batches timed out. Consider surfacing a progress UI on user-facing flows.,\n  includePersonalEmails: false // default, // When enrichEmails is true, also search for personal emails (costs 3 additional credits per person),\n});\n\nconst result = await peopleSearchTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   people: { name: string | null // Full name, title: string | null // Current job title, headline: string | null // LinkedIn headline, linkedinUrl: string | null // LinkedIn profile URL, profilePictureUrl: string | null // Profile picture URL, emails: string[] | null // Email addresses, twitterHandle: string | null // Twitter/X handle, websites: string[] | null // Personal/professional websites. Crustdata-only — always null on FullEnrich results., enrichedWorkEmail: string | null | undefined // Work email found via FullEnrich, enrichedPersonalEmail: string | null | undefined // Personal email found via FullEnrich, enrichedWorkEmails: { email: string, status: string | undefined }[] | null | undefined // All work emails found via FullEnrich, enrichedPersonalEmails: { email: string, status: string | undefined }[] | null | undefined // All personal emails found via FullEnrich, seniorityLevel: string | null // Seniority level (CXO, Vice President, Director, etc.), yearsOfExperience: number | null // Total years of professional experience. Crustdata-only — always null on FullEnrich results., recentlyChangedJobs: boolean | null // Whether this person recently changed jobs. Crustdata-only — always null on FullEnrich results., location: string | null // Location/region, locationCity: string | null // City, locationCountry: string | null // Country, skills: string[] | null // Professional skills, languages: string[] | null // Languages spoken, summary: string | null // Professional summary, numConnections: number | null // Number of LinkedIn connections. Crustdata-only — always null on FullEnrich results., currentEmployers: { title: string | null // Job title, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, companyDomainUrl: string | null // Company website domain, seniorityLevel: string | null // Seniority level, functionCategory: string | null // Function category, startDate: unknown | null // Start date, yearsAtCompany: number | null // Years at company, companyHeadcount: number | null // Company headcount, companyIndustries: string[] | null // Company industries }[] | null // Current employment, pastEmployers: { title: string | null // Job title, companyName: string | null // Company name, startDate: unknown | null // Start date, endDate: unknown | null // End date }[] | null // Past employment, education: { instituteName: string | null // Institution name, degreeName: string | null // Degree name, fieldOfStudy: string | null // Field of study }[] | null // Education history }[] // List of people found,\n//   totalCount: number // Total number of people available,\n//   nextCursor: string | undefined // Pagination cursor for fetching the next page. Pass this as the cursor parameter in the next request. Undefined when no more results are available.,\n//   warnings: string[] | undefined // Non-fatal signals from the tool — e.g. filters that were requested but the chosen provider does not support (and were therefore ignored). Useful for surfacing why a search returned fewer results than expected.,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "CRUSTDATA_API_KEY",
        "FULLENRICH_API_KEY"
      ]
    },
    {
      "name": "amazon-shopping-tool",
      "alias": "amazon",
      "type": "tool",
      "shortDescription": "Amazon shopping automation - add to cart, view cart, checkout, search products",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_to_cart"
                ],
                "description": "Add a product to the Amazon shopping cart"
              },
              "product_url": {
                "type": "string",
                "minLength": 1,
                "description": "Amazon product URL or ASIN (e.g., https://amazon.com/dp/B08N5WRWNW or B08N5WRWNW)"
              },
              "quantity": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Number of items to add (default: 1)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Required: AMAZON_CRED for authenticated Amazon session"
              }
            },
            "required": [
              "operation",
              "product_url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_cart"
                ],
                "description": "View current Amazon cart contents"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Required: AMAZON_CRED for authenticated Amazon session"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "checkout"
                ],
                "description": "Complete the checkout process (requires saved payment method)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Required: AMAZON_CRED for authenticated Amazon session"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ],
                "description": "Search for products on Amazon"
              },
              "query": {
                "type": "string",
                "minLength": 1,
                "description": "Search query"
              },
              "max_results": {
                "type": "number",
                "minimum": 1,
                "maximum": 20,
                "default": 5,
                "description": "Maximum number of results to return"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Required: AMAZON_CRED for authenticated Amazon session"
              }
            },
            "required": [
              "operation",
              "query"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_product"
                ],
                "description": "Get detailed information about a product"
              },
              "product_url": {
                "type": "string",
                "minLength": 1,
                "description": "Amazon product URL or ASIN"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Required: AMAZON_CRED for authenticated Amazon session"
              }
            },
            "required": [
              "operation",
              "product_url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "screenshot"
                ],
                "description": "Take a screenshot of the current page and upload to cloud storage"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Optional URL to navigate to before taking screenshot"
              },
              "full_page": {
                "type": "boolean",
                "default": false,
                "description": "Whether to capture the full scrollable page"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Required: AMAZON_CRED for browser session, CLOUDFLARE_R2_* for storage"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_to_cart"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "message": {
                "type": "string",
                "description": "Success or status message"
              },
              "cart_count": {
                "type": "number",
                "description": "Total items in cart after adding"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_cart"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "asin": {
                      "type": "string",
                      "description": "Amazon Standard Identification Number"
                    },
                    "title": {
                      "type": "string",
                      "description": "Product title"
                    },
                    "price": {
                      "type": "string",
                      "description": "Product price as displayed"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity in cart"
                    },
                    "image": {
                      "type": "string",
                      "description": "Product image URL"
                    },
                    "url": {
                      "type": "string",
                      "description": "Product URL"
                    }
                  },
                  "required": [
                    "asin",
                    "title",
                    "price",
                    "quantity"
                  ],
                  "additionalProperties": false
                },
                "description": "Items in the cart"
              },
              "subtotal": {
                "type": "string",
                "description": "Cart subtotal"
              },
              "total_items": {
                "type": "number",
                "description": "Total number of items"
              },
              "screenshot_url": {
                "type": "string",
                "description": "URL to screenshot image of cart confirmation"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "checkout"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "order_number": {
                "type": "string",
                "description": "Order confirmation number"
              },
              "estimated_delivery": {
                "type": "string",
                "description": "Estimated delivery date"
              },
              "total": {
                "type": "string",
                "description": "Order total"
              },
              "subtotal": {
                "type": "string",
                "description": "Order subtotal before tax/shipping"
              },
              "shipping_cost": {
                "type": "string",
                "description": "Shipping cost"
              },
              "tax": {
                "type": "string",
                "description": "Tax amount"
              },
              "shipping_address": {
                "type": "string",
                "description": "Shipping address"
              },
              "payment_method": {
                "type": "string",
                "description": "Payment method used"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string",
                      "description": "Item title"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity ordered"
                    },
                    "price": {
                      "type": "string",
                      "description": "Item price"
                    }
                  },
                  "required": [
                    "title"
                  ],
                  "additionalProperties": false
                },
                "description": "Items in the order"
              },
              "screenshot_url": {
                "type": "string",
                "description": "URL to screenshot image of order confirmation"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "asin": {
                      "type": "string",
                      "description": "Amazon Standard Identification Number"
                    },
                    "title": {
                      "type": "string",
                      "description": "Product title"
                    },
                    "price": {
                      "type": "string",
                      "description": "Product price"
                    },
                    "rating": {
                      "type": "string",
                      "description": "Product rating"
                    },
                    "reviews_count": {
                      "type": "string",
                      "description": "Number of reviews"
                    },
                    "url": {
                      "type": "string",
                      "description": "Product URL"
                    },
                    "image": {
                      "type": "string",
                      "description": "Product image URL"
                    },
                    "prime": {
                      "type": "boolean",
                      "description": "Whether product has Prime delivery"
                    }
                  },
                  "required": [
                    "asin",
                    "title",
                    "url"
                  ],
                  "additionalProperties": false
                },
                "description": "Search results"
              },
              "total_results": {
                "type": "number",
                "description": "Total number of results found"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_product"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "product": {
                "type": "object",
                "properties": {
                  "asin": {
                    "type": "string",
                    "description": "Amazon Standard Identification Number"
                  },
                  "title": {
                    "type": "string",
                    "description": "Product title"
                  },
                  "price": {
                    "type": "string",
                    "description": "Product price"
                  },
                  "rating": {
                    "type": "string",
                    "description": "Product rating"
                  },
                  "reviews_count": {
                    "type": "string",
                    "description": "Number of reviews"
                  },
                  "description": {
                    "type": "string",
                    "description": "Product description"
                  },
                  "features": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Product features/bullet points"
                  },
                  "availability": {
                    "type": "string",
                    "description": "Stock availability status"
                  },
                  "url": {
                    "type": "string",
                    "description": "Product URL"
                  },
                  "images": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Product image URLs"
                  }
                },
                "required": [
                  "asin",
                  "title",
                  "url"
                ],
                "additionalProperties": false,
                "description": "Product details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "screenshot"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "screenshot_url": {
                "type": "string",
                "description": "URL to the uploaded screenshot image"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Add To Cart example\nconst amazonShoppingTool_add_to_cart = new AmazonShoppingTool({\n  operation: \"add_to_cart\", // Add a product to the Amazon shopping cart\n  product_url: \"example string\", // Amazon product URL or ASIN (e.g., https://amazon.com/dp/B08N5WRWNW or B08N5WRWNW)\n  quantity: 1 // default, // Number of items to add (default: 1)\n});\n\nconst result = await amazonShoppingTool_add_to_cart.action();\n// outputSchema for result.data when operation === 'add_to_cart':\n// {\n//   operation: \"add_to_cart\",\n//   success: boolean // Whether the operation was successful,\n//   message: string | undefined // Success or status message,\n//   cart_count: number | undefined // Total items in cart after adding,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Cart example\nconst amazonShoppingTool_get_cart = new AmazonShoppingTool({\n  operation: \"get_cart\", // View current Amazon cart contents\n});\n\nconst result = await amazonShoppingTool_get_cart.action();\n// outputSchema for result.data when operation === 'get_cart':\n// {\n//   operation: \"get_cart\",\n//   success: boolean // Whether the operation was successful,\n//   items: { asin: string // Amazon Standard Identification Number, title: string // Product title, price: string // Product price as displayed, quantity: number // Quantity in cart, image: string | undefined // Product image URL, url: string | undefined // Product URL }[] | undefined // Items in the cart,\n//   subtotal: string | undefined // Cart subtotal,\n//   total_items: number | undefined // Total number of items,\n//   screenshot_url: string | undefined // URL to screenshot image of cart confirmation,\n//   error: string // Error message if operation failed\n// }\n\n\n// Checkout example\nconst amazonShoppingTool_checkout = new AmazonShoppingTool({\n  operation: \"checkout\", // Complete the checkout process (requires saved payment method)\n});\n\nconst result = await amazonShoppingTool_checkout.action();\n// outputSchema for result.data when operation === 'checkout':\n// {\n//   operation: \"checkout\",\n//   success: boolean // Whether the operation was successful,\n//   order_number: string | undefined // Order confirmation number,\n//   estimated_delivery: string | undefined // Estimated delivery date,\n//   total: string | undefined // Order total,\n//   subtotal: string | undefined // Order subtotal before tax/shipping,\n//   shipping_cost: string | undefined // Shipping cost,\n//   tax: string | undefined // Tax amount,\n//   shipping_address: string | undefined // Shipping address,\n//   payment_method: string | undefined // Payment method used,\n//   items: { title: string // Item title, quantity: number | undefined // Quantity ordered, price: string | undefined // Item price }[] | undefined // Items in the order,\n//   screenshot_url: string | undefined // URL to screenshot image of order confirmation,\n//   error: string // Error message if operation failed\n// }\n\n\n// Search example\nconst amazonShoppingTool_search = new AmazonShoppingTool({\n  operation: \"search\", // Search for products on Amazon\n  query: \"example string\", // Search query\n  max_results: 5 // default, // Maximum number of results to return\n});\n\nconst result = await amazonShoppingTool_search.action();\n// outputSchema for result.data when operation === 'search':\n// {\n//   operation: \"search\",\n//   success: boolean // Whether the operation was successful,\n//   results: { asin: string // Amazon Standard Identification Number, title: string // Product title, price: string | undefined // Product price, rating: string | undefined // Product rating, reviews_count: string | undefined // Number of reviews, url: string // Product URL, image: string | undefined // Product image URL, prime: boolean | undefined // Whether product has Prime delivery }[] | undefined // Search results,\n//   total_results: number | undefined // Total number of results found,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Product example\nconst amazonShoppingTool_get_product = new AmazonShoppingTool({\n  operation: \"get_product\", // Get detailed information about a product\n  product_url: \"example string\", // Amazon product URL or ASIN\n});\n\nconst result = await amazonShoppingTool_get_product.action();\n// outputSchema for result.data when operation === 'get_product':\n// {\n//   operation: \"get_product\",\n//   success: boolean // Whether the operation was successful,\n//   product: { asin: string // Amazon Standard Identification Number, title: string // Product title, price: string | undefined // Product price, rating: string | undefined // Product rating, reviews_count: string | undefined // Number of reviews, description: string | undefined // Product description, features: string[] | undefined // Product features/bullet points, availability: string | undefined // Stock availability status, url: string // Product URL, images: string[] | undefined // Product image URLs } | undefined // Product details,\n//   error: string // Error message if operation failed\n// }\n\n\n// Screenshot example\nconst amazonShoppingTool_screenshot = new AmazonShoppingTool({\n  operation: \"screenshot\", // Take a screenshot of the current page and upload to cloud storage\n  url: \"example string\", // Optional URL to navigate to before taking screenshot\n  full_page: false // default, // Whether to capture the full scrollable page\n});\n\nconst result = await amazonShoppingTool_screenshot.action();\n// outputSchema for result.data when operation === 'screenshot':\n// {\n//   operation: \"screenshot\",\n//   success: boolean // Whether the operation was successful,\n//   screenshot_url: string | undefined // URL to the uploaded screenshot image,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`amazon-shopping-tool failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "AMAZON_CRED",
        "CLOUDFLARE_R2_ACCESS_KEY",
        "CLOUDFLARE_R2_SECRET_KEY",
        "CLOUDFLARE_R2_ACCOUNT_ID",
        "GOOGLE_GEMINI_CRED"
      ]
    },
    {
      "name": "crustdata",
      "type": "service",
      "shortDescription": "Crustdata API for company data enrichment and people search",
      "useCase": "- Lead generation and sales prospecting",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "identify"
                ],
                "description": "Identify a company and get its Crustdata ID (FREE)"
              },
              "query_company_name": {
                "type": "string",
                "description": "Company name to search for"
              },
              "query_company_website": {
                "type": "string",
                "description": "Company website domain (e.g., \"stripe.com\")"
              },
              "query_company_linkedin_url": {
                "type": "string",
                "description": "Company LinkedIn URL"
              },
              "count": {
                "type": "number",
                "maximum": 25,
                "default": 1,
                "description": "Maximum number of results to return (default: 1, max: 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "enrich"
                ],
                "description": "Enrich company data with contacts (1 credit)"
              },
              "company_domain": {
                "type": "string",
                "description": "Company website domain (e.g., \"stripe.com\")"
              },
              "company_linkedin_url": {
                "type": "string",
                "description": "Company LinkedIn URL"
              },
              "company_id": {
                "type": "number",
                "description": "Crustdata company ID (from identify operation)"
              },
              "fields": {
                "type": "string",
                "default": "decision_makers,cxos,founders.profiles",
                "description": "Comma-separated fields to retrieve (default: \"decision_makers,cxos,founders.profiles\")"
              },
              "enrich_realtime": {
                "type": "boolean",
                "default": false,
                "description": "If true, fetch fresh data from LinkedIn (slower but more accurate)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "person_search_db"
                ],
                "description": "Search people in database with advanced filtering (3 credits per 100 results)"
              },
              "filters": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "column": {
                        "type": "string",
                        "description": "Field to filter on (e.g., \"current_employers.title\", \"current_employers.function_category\", \"region\"). For function_category, use PersonFunctionEnum values. For seniority_level, use PersonSeniorityLevelEnum values."
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "=",
                          "!=",
                          "in",
                          "not_in",
                          ">",
                          "<",
                          "=>",
                          "=<",
                          "(.)",
                          "[.]",
                          "geo_distance"
                        ],
                        "description": "Filter operator"
                      },
                      "value": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "number"
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "location": {
                                "type": "string",
                                "description": "Center point location name (e.g., \"San Francisco\")"
                              },
                              "distance": {
                                "type": "number",
                                "exclusiveMinimum": true,
                                "minimum": 0,
                                "description": "Radius distance"
                              },
                              "unit": {
                                "type": "string",
                                "enum": [
                                  "km",
                                  "mi",
                                  "miles",
                                  "m",
                                  "meters",
                                  "ft",
                                  "feet"
                                ],
                                "default": "km",
                                "description": "Distance unit (default: km)"
                              }
                            },
                            "required": [
                              "location",
                              "distance"
                            ],
                            "additionalProperties": false
                          }
                        ],
                        "description": "Value(s) to match. For function_category and seniority_level, use enum values."
                      }
                    },
                    "required": [
                      "column",
                      "type",
                      "value"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "op": {
                        "type": "string",
                        "enum": [
                          "and",
                          "or"
                        ],
                        "description": "Logical operator to combine conditions"
                      },
                      "conditions": {
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "column": {
                                  "type": "string",
                                  "description": "Field to filter on (e.g., \"current_employers.title\", \"current_employers.function_category\", \"region\"). For function_category, use PersonFunctionEnum values. For seniority_level, use PersonSeniorityLevelEnum values."
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "=",
                                    "!=",
                                    "in",
                                    "not_in",
                                    ">",
                                    "<",
                                    "=>",
                                    "=<",
                                    "(.)",
                                    "[.]",
                                    "geo_distance"
                                  ],
                                  "description": "Filter operator"
                                },
                                "value": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "boolean"
                                    },
                                    {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    {
                                      "type": "array",
                                      "items": {
                                        "type": "number"
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "location": {
                                          "type": "string",
                                          "description": "Center point location name (e.g., \"San Francisco\")"
                                        },
                                        "distance": {
                                          "type": "number",
                                          "exclusiveMinimum": true,
                                          "minimum": 0,
                                          "description": "Radius distance"
                                        },
                                        "unit": {
                                          "type": "string",
                                          "enum": [
                                            "km",
                                            "mi",
                                            "miles",
                                            "m",
                                            "meters",
                                            "ft",
                                            "feet"
                                          ],
                                          "default": "km",
                                          "description": "Distance unit (default: km)"
                                        }
                                      },
                                      "required": [
                                        "location",
                                        "distance"
                                      ],
                                      "additionalProperties": false
                                    }
                                  ],
                                  "description": "Value(s) to match. For function_category and seniority_level, use enum values."
                                }
                              },
                              "required": [
                                "column",
                                "type",
                                "value"
                              ],
                              "additionalProperties": false
                            },
                            {}
                          ]
                        },
                        "description": "Array of conditions or nested groups"
                      }
                    },
                    "required": [
                      "op",
                      "conditions"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Filter conditions - single condition or nested AND/OR groups"
              },
              "sorts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "column": {
                      "type": "string",
                      "description": "Field to sort by (e.g., \"years_of_experience_raw\", \"num_of_connections\")"
                    },
                    "order": {
                      "type": "string",
                      "enum": [
                        "asc",
                        "desc"
                      ],
                      "description": "Sort order"
                    }
                  },
                  "required": [
                    "column",
                    "order"
                  ],
                  "additionalProperties": false
                },
                "description": "Sort criteria to order results"
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor from previous response"
              },
              "limit": {
                "type": "number",
                "maximum": 1000,
                "default": 20,
                "description": "Results per page (default: 20, max: 1,000)"
              },
              "preview": {
                "type": "boolean",
                "default": false,
                "description": "Preview mode returns basic profile details (0 credits)"
              },
              "post_processing": {
                "type": "object",
                "properties": {
                  "exclude_profiles": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 50000,
                    "description": "LinkedIn profile URLs to exclude (max 50,000)"
                  },
                  "exclude_names": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Names to exclude from results"
                  }
                },
                "additionalProperties": false,
                "description": "Post-processing options like excluding profiles or names"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "filters"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "person_enrich"
                ],
                "description": "Enrich LinkedIn profiles with comprehensive data (3-5 credits per profile)"
              },
              "linkedin_profile_url": {
                "type": "string",
                "description": "Comma-separated LinkedIn profile URLs to enrich (max 25). Example: \"https://www.linkedin.com/in/dvdhsu/\""
              },
              "business_email": {
                "type": "string",
                "description": "Comma-separated business emails for reverse lookup (max 25). Mutually exclusive with linkedin_profile_url."
              },
              "enrich_realtime": {
                "type": "boolean",
                "default": false,
                "description": "If true, fetch fresh data from LinkedIn in real-time (5 credits vs 3 for database)"
              },
              "fields": {
                "type": "string",
                "description": "Comma-separated fields to include in response. Use \"business_email\" to discover work emails (+2 credits). Default returns standard profile fields."
              },
              "preview": {
                "type": "boolean",
                "default": false,
                "description": "Preview mode returns basic profile details only (0 credits, access controlled)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "identify"
                ],
                "description": "Company identification operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "company_id": {
                      "type": "number",
                      "nullable": true
                    },
                    "company_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "linkedin_profile_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "company_website_domain": {
                      "type": "string",
                      "nullable": true
                    },
                    "linkedin_headcount": {
                      "type": "number",
                      "nullable": true
                    },
                    "score": {
                      "type": "number",
                      "nullable": true
                    }
                  },
                  "additionalProperties": true,
                  "description": "Company identification result"
                },
                "description": "Array of matching companies"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "enrich"
                ],
                "description": "Company enrichment operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "company": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "nullable": true
                  },
                  "linkedin_id": {
                    "type": "string",
                    "nullable": true
                  },
                  "linkedin_profile_url": {
                    "type": "string",
                    "nullable": true
                  },
                  "company_website_domain": {
                    "type": "string",
                    "nullable": true
                  },
                  "company_website": {
                    "type": "string",
                    "nullable": true
                  },
                  "hq_country": {
                    "type": "string",
                    "nullable": true
                  },
                  "hq_city": {
                    "type": "string",
                    "nullable": true
                  },
                  "year_founded": {
                    "type": "string",
                    "nullable": true
                  },
                  "headcount": {
                    "type": "number",
                    "nullable": true
                  },
                  "linkedin_headcount": {
                    "type": "number",
                    "nullable": true
                  },
                  "linkedin_followers": {
                    "type": "number",
                    "nullable": true
                  },
                  "industry": {
                    "type": "string",
                    "nullable": true
                  },
                  "description": {
                    "type": "string",
                    "nullable": true
                  },
                  "all_industries": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "nullable": true
                  },
                  "estimated_revenue": {
                    "type": "string",
                    "nullable": true
                  },
                  "funding_stage": {
                    "type": "string",
                    "nullable": true
                  },
                  "total_funding": {
                    "type": "string",
                    "nullable": true
                  },
                  "last_funding_round_date": {
                    "type": "string",
                    "nullable": true
                  },
                  "last_funding_round_type": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "additionalProperties": true,
                "description": "Enriched company information",
                "nullable": true
              },
              "decision_makers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "linkedin_profile_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "linkedin_flagship_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "name": {
                      "type": "string",
                      "nullable": true
                    },
                    "first_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "last_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "headline": {
                      "type": "string",
                      "nullable": true
                    },
                    "location": {
                      "type": "string",
                      "nullable": true
                    },
                    "profile_picture_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "title": {
                      "type": "string",
                      "nullable": true
                    },
                    "emails": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "twitter_handle": {
                      "type": "string",
                      "nullable": true
                    },
                    "github_profile_id": {
                      "type": "string",
                      "nullable": true
                    },
                    "skills": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "languages": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "summary": {
                      "type": "string",
                      "nullable": true
                    },
                    "current_positions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_linkedin_url": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "description": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": false
                      },
                      "nullable": true
                    },
                    "past_positions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "end_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          }
                        },
                        "additionalProperties": false
                      },
                      "nullable": true
                    },
                    "education": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "institute_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "degree_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "field_of_study": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": false
                      },
                      "nullable": true
                    }
                  },
                  "additionalProperties": true,
                  "description": "Person profile from Crustdata"
                },
                "nullable": true,
                "description": "Decision makers at the company"
              },
              "cxos": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "linkedin_profile_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "linkedin_flagship_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "name": {
                      "type": "string",
                      "nullable": true
                    },
                    "first_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "last_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "headline": {
                      "type": "string",
                      "nullable": true
                    },
                    "location": {
                      "type": "string",
                      "nullable": true
                    },
                    "profile_picture_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "title": {
                      "type": "string",
                      "nullable": true
                    },
                    "emails": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "twitter_handle": {
                      "type": "string",
                      "nullable": true
                    },
                    "github_profile_id": {
                      "type": "string",
                      "nullable": true
                    },
                    "skills": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "languages": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "summary": {
                      "type": "string",
                      "nullable": true
                    },
                    "current_positions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_linkedin_url": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "description": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": false
                      },
                      "nullable": true
                    },
                    "past_positions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "end_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          }
                        },
                        "additionalProperties": false
                      },
                      "nullable": true
                    },
                    "education": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "institute_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "degree_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "field_of_study": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": false
                      },
                      "nullable": true
                    }
                  },
                  "additionalProperties": true,
                  "description": "Person profile from Crustdata"
                },
                "nullable": true,
                "description": "C-level executives at the company"
              },
              "founders": {
                "type": "object",
                "properties": {
                  "profiles": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "linkedin_profile_url": {
                          "type": "string",
                          "nullable": true
                        },
                        "linkedin_flagship_url": {
                          "type": "string",
                          "nullable": true
                        },
                        "name": {
                          "type": "string",
                          "nullable": true
                        },
                        "first_name": {
                          "type": "string",
                          "nullable": true
                        },
                        "last_name": {
                          "type": "string",
                          "nullable": true
                        },
                        "headline": {
                          "type": "string",
                          "nullable": true
                        },
                        "location": {
                          "type": "string",
                          "nullable": true
                        },
                        "profile_picture_url": {
                          "type": "string",
                          "nullable": true
                        },
                        "title": {
                          "type": "string",
                          "nullable": true
                        },
                        "emails": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "nullable": true
                        },
                        "twitter_handle": {
                          "type": "string",
                          "nullable": true
                        },
                        "github_profile_id": {
                          "type": "string",
                          "nullable": true
                        },
                        "skills": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "nullable": true
                        },
                        "languages": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "nullable": true
                        },
                        "summary": {
                          "type": "string",
                          "nullable": true
                        },
                        "current_positions": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "title": {
                                "type": "string",
                                "nullable": true
                              },
                              "company_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "company_linkedin_url": {
                                "type": "string",
                                "nullable": true
                              },
                              "start_date": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  }
                                ],
                                "nullable": true
                              },
                              "description": {
                                "type": "string",
                                "nullable": true
                              }
                            },
                            "additionalProperties": false
                          },
                          "nullable": true
                        },
                        "past_positions": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "title": {
                                "type": "string",
                                "nullable": true
                              },
                              "company_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "start_date": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  }
                                ],
                                "nullable": true
                              },
                              "end_date": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  }
                                ],
                                "nullable": true
                              }
                            },
                            "additionalProperties": false
                          },
                          "nullable": true
                        },
                        "education": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "institute_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "degree_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "field_of_study": {
                                "type": "string",
                                "nullable": true
                              }
                            },
                            "additionalProperties": false
                          },
                          "nullable": true
                        }
                      },
                      "additionalProperties": true,
                      "description": "Person profile from Crustdata"
                    },
                    "nullable": true
                  }
                },
                "additionalProperties": false,
                "nullable": true,
                "description": "Founders of the company"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "person_search_db"
                ],
                "description": "PersonDB search operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "profiles": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "person_id": {
                      "type": "number"
                    },
                    "name": {
                      "type": "string",
                      "nullable": true
                    },
                    "first_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "last_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "headline": {
                      "type": "string",
                      "nullable": true
                    },
                    "summary": {
                      "type": "string",
                      "nullable": true
                    },
                    "region": {
                      "type": "string",
                      "nullable": true
                    },
                    "location_details": {
                      "type": "object",
                      "properties": {
                        "city": {
                          "type": "string",
                          "nullable": true
                        },
                        "state": {
                          "type": "string",
                          "nullable": true
                        },
                        "country": {
                          "type": "string",
                          "nullable": true
                        },
                        "continent": {
                          "type": "string",
                          "nullable": true
                        }
                      },
                      "additionalProperties": true,
                      "nullable": true
                    },
                    "location_city": {
                      "type": "string",
                      "nullable": true
                    },
                    "location_state": {
                      "type": "string",
                      "nullable": true
                    },
                    "location_country": {
                      "type": "string",
                      "nullable": true
                    },
                    "linkedin_profile_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "flagship_profile_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "profile_picture_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "num_of_connections": {
                      "type": "number",
                      "nullable": true
                    },
                    "years_of_experience_raw": {
                      "type": "number",
                      "nullable": true
                    },
                    "recently_changed_jobs": {
                      "type": "boolean",
                      "nullable": true
                    },
                    "skills": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "languages": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "current_employers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "name": {
                            "type": "string",
                            "nullable": true
                          },
                          "linkedin_id": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_linkedin_profile_url": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_website_domain": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_hq_location": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_type": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_headcount_latest": {
                            "type": "number",
                            "nullable": true
                          },
                          "company_headcount_range": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_industries": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true
                          },
                          "seniority_level": {
                            "type": "string",
                            "nullable": true
                          },
                          "function_category": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "end_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "years_at_company_raw": {
                            "type": "number",
                            "nullable": true
                          },
                          "description": {
                            "type": "string",
                            "nullable": true
                          },
                          "location": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "past_employers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "name": {
                            "type": "string",
                            "nullable": true
                          },
                          "linkedin_id": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_linkedin_profile_url": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_website_domain": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_hq_location": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_type": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_headcount_latest": {
                            "type": "number",
                            "nullable": true
                          },
                          "company_headcount_range": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_industries": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true
                          },
                          "seniority_level": {
                            "type": "string",
                            "nullable": true
                          },
                          "function_category": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "end_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "years_at_company_raw": {
                            "type": "number",
                            "nullable": true
                          },
                          "description": {
                            "type": "string",
                            "nullable": true
                          },
                          "location": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "all_employers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "name": {
                            "type": "string",
                            "nullable": true
                          },
                          "linkedin_id": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_linkedin_profile_url": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_website_domain": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_hq_location": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_type": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_headcount_latest": {
                            "type": "number",
                            "nullable": true
                          },
                          "company_headcount_range": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_industries": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true
                          },
                          "seniority_level": {
                            "type": "string",
                            "nullable": true
                          },
                          "function_category": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "end_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "years_at_company_raw": {
                            "type": "number",
                            "nullable": true
                          },
                          "description": {
                            "type": "string",
                            "nullable": true
                          },
                          "location": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "education_background": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "degree_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "institute_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "field_of_study": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "end_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "certifications": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "nullable": true
                          },
                          "issued_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "issuing_authority": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "honors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "nullable": true
                          },
                          "issued_date": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ],
                            "nullable": true
                          },
                          "issuer": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "emails": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "websites": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "twitter_handle": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "additionalProperties": true,
                  "description": "PersonDB profile from Crustdata in-database search"
                },
                "description": "Array of people profiles found"
              },
              "total_count": {
                "type": "number",
                "description": "Total number of profiles matching the search criteria"
              },
              "next_cursor": {
                "type": "string",
                "description": "Cursor for fetching the next page of results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "person_enrich"
                ],
                "description": "Person enrichment operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "profiles": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "linkedin_profile_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "linkedin_flagship_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "name": {
                      "type": "string",
                      "nullable": true
                    },
                    "location": {
                      "type": "string",
                      "nullable": true
                    },
                    "email": {
                      "type": "string",
                      "nullable": true
                    },
                    "title": {
                      "type": "string",
                      "nullable": true
                    },
                    "last_updated": {
                      "type": "string",
                      "nullable": true
                    },
                    "headline": {
                      "type": "string",
                      "nullable": true
                    },
                    "summary": {
                      "type": "string",
                      "nullable": true
                    },
                    "num_of_connections": {
                      "type": "number",
                      "nullable": true
                    },
                    "profile_picture_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "profile_picture_permalink": {
                      "type": "string",
                      "nullable": true
                    },
                    "twitter_handle": {
                      "type": "string",
                      "nullable": true
                    },
                    "languages": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "linkedin_joined_date": {
                      "type": "string",
                      "nullable": true
                    },
                    "linkedin_verifications": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "linkedin_open_to_cards": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "skills": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "all_employers": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "all_employers_company_id": {
                      "type": "array",
                      "items": {
                        "type": "number"
                      },
                      "nullable": true
                    },
                    "all_titles": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "all_schools": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "all_degrees": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "current_employers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "employer_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "employer_linkedin_id": {
                            "type": "string",
                            "nullable": true
                          },
                          "employer_logo_url": {
                            "type": "string",
                            "nullable": true
                          },
                          "employer_linkedin_description": {
                            "type": "string",
                            "nullable": true
                          },
                          "employer_company_id": {
                            "type": "array",
                            "items": {
                              "type": "number"
                            },
                            "nullable": true
                          },
                          "employer_company_website_domain": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true
                          },
                          "domains": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true
                          },
                          "employee_position_id": {
                            "type": "number",
                            "nullable": true
                          },
                          "employee_title": {
                            "type": "string",
                            "nullable": true
                          },
                          "employee_description": {
                            "type": "string",
                            "nullable": true
                          },
                          "employee_location": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "end_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "is_default": {
                            "type": "boolean",
                            "nullable": true
                          },
                          "business_emails": {
                            "type": "object",
                            "additionalProperties": {
                              "type": "object",
                              "properties": {
                                "verification_status": {
                                  "type": "string",
                                  "nullable": true,
                                  "description": "Email verification status"
                                },
                                "last_validated_at": {
                                  "type": "string",
                                  "nullable": true,
                                  "description": "Last validation date"
                                }
                              },
                              "additionalProperties": false
                            },
                            "nullable": true,
                            "description": "Business emails with verification metadata"
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "past_employers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "employer_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "employer_linkedin_id": {
                            "type": "string",
                            "nullable": true
                          },
                          "employer_logo_url": {
                            "type": "string",
                            "nullable": true
                          },
                          "employer_linkedin_description": {
                            "type": "string",
                            "nullable": true
                          },
                          "employer_company_id": {
                            "type": "array",
                            "items": {
                              "type": "number"
                            },
                            "nullable": true
                          },
                          "employer_company_website_domain": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true
                          },
                          "domains": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true
                          },
                          "employee_position_id": {
                            "type": "number",
                            "nullable": true
                          },
                          "employee_title": {
                            "type": "string",
                            "nullable": true
                          },
                          "employee_description": {
                            "type": "string",
                            "nullable": true
                          },
                          "employee_location": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "end_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "is_default": {
                            "type": "boolean",
                            "nullable": true
                          },
                          "business_emails": {
                            "type": "object",
                            "additionalProperties": {
                              "type": "object",
                              "properties": {
                                "verification_status": {
                                  "type": "string",
                                  "nullable": true,
                                  "description": "Email verification status"
                                },
                                "last_validated_at": {
                                  "type": "string",
                                  "nullable": true,
                                  "description": "Last validation date"
                                }
                              },
                              "additionalProperties": false
                            },
                            "nullable": true,
                            "description": "Business emails with verification metadata"
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "education_background": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "degree_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "institute_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "institute_linkedin_id": {
                            "type": "string",
                            "nullable": true
                          },
                          "institute_linkedin_url": {
                            "type": "string",
                            "nullable": true
                          },
                          "institute_logo_url": {
                            "type": "string",
                            "nullable": true
                          },
                          "field_of_study": {
                            "type": "string",
                            "nullable": true
                          },
                          "start_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "end_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "activities_and_societies": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "certifications": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "nullable": true
                          },
                          "issued_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "expiration_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "url": {
                            "type": "string",
                            "nullable": true
                          },
                          "issuer_organization": {
                            "type": "string",
                            "nullable": true
                          },
                          "issuer_organization_linkedin_id": {
                            "type": "string",
                            "nullable": true
                          },
                          "certification_id": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "honors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "nullable": true
                          },
                          "issued_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "description": {
                            "type": "string",
                            "nullable": true
                          },
                          "issuer": {
                            "type": "string",
                            "nullable": true
                          },
                          "media_urls": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true
                          },
                          "associated_organization_linkedin_id": {
                            "type": "string",
                            "nullable": true
                          },
                          "associated_organization": {
                            "type": "string",
                            "nullable": true
                          }
                        },
                        "additionalProperties": true
                      },
                      "nullable": true
                    },
                    "business_email": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "enriched_realtime": {
                      "type": "boolean",
                      "nullable": true
                    },
                    "query_linkedin_profile_urn_or_slug": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true
                    },
                    "score": {
                      "type": "number",
                      "nullable": true
                    }
                  },
                  "additionalProperties": true,
                  "description": "Enriched person profile from Crustdata People Enrichment API"
                },
                "description": "Array of enriched person profiles"
              },
              "errors": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "linkedin_profile_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "business_email": {
                      "type": "string",
                      "nullable": true
                    },
                    "error": {
                      "type": "string"
                    },
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": true
                },
                "description": "Array of errors for profiles that could not be enriched"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Identify example\nconst crustdata_identify = new CrustdataBubble({\n  operation: \"identify\", // Identify a company and get its Crustdata ID (FREE)\n  query_company_name: \"example string\", // Company name to search for\n  query_company_website: \"example string\", // Company website domain (e.g., \"stripe.com\")\n  query_company_linkedin_url: \"example string\", // Company LinkedIn URL\n  count: 1 // default, // Maximum number of results to return (default: 1, max: 25)\n});\n\nconst result = await crustdata_identify.action();\n// outputSchema for result.data when operation === 'identify':\n// {\n//   operation: \"identify\" // Company identification operation,\n//   success: boolean // Whether the operation was successful,\n//   results: { company_id: number | null | undefined, company_name: string | null | undefined, linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, linkedin_headcount: number | null | undefined, score: number | null | undefined }[] | undefined // Array of matching companies,\n//   error: string // Error message if operation failed\n// }\n\n\n// Enrich example\nconst crustdata_enrich = new CrustdataBubble({\n  operation: \"enrich\", // Enrich company data with contacts (1 credit)\n  company_domain: \"example string\", // Company website domain (e.g., \"stripe.com\")\n  company_linkedin_url: \"example string\", // Company LinkedIn URL\n  company_id: 42, // Crustdata company ID (from identify operation)\n  fields: \"decision_makers,cxos,founders.profiles\" // default, // Comma-separated fields to retrieve (default: \"decision_makers,cxos,founders.profiles\")\n  enrich_realtime: false // default, // If true, fetch fresh data from LinkedIn (slower but more accurate)\n});\n\nconst result = await crustdata_enrich.action();\n// outputSchema for result.data when operation === 'enrich':\n// {\n//   operation: \"enrich\" // Company enrichment operation,\n//   success: boolean // Whether the operation was successful,\n//   company: { name: string | null | undefined, linkedin_id: string | null | undefined, linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, company_website: string | null | undefined, hq_country: string | null | undefined, hq_city: string | null | undefined, year_founded: string | null | undefined, headcount: number | null | undefined, linkedin_headcount: number | null | undefined, linkedin_followers: number | null | undefined, industry: string | null | undefined, description: string | null | undefined, all_industries: string[] | null | undefined, estimated_revenue: string | null | undefined, funding_stage: string | null | undefined, total_funding: string | null | undefined, last_funding_round_date: string | null | undefined, last_funding_round_type: string | null | undefined } | null | undefined // Enriched company information,\n//   decision_makers: { linkedin_profile_url: string | null | undefined, linkedin_flagship_url: string | null | undefined, name: string | null | undefined, first_name: string | null | undefined, last_name: string | null | undefined, headline: string | null | undefined, location: string | null | undefined, profile_picture_url: string | null | undefined, title: string | null | undefined, emails: string[] | null | undefined, twitter_handle: string | null | undefined, github_profile_id: string | null | undefined, skills: string[] | null | undefined, languages: string[] | null | undefined, summary: string | null | undefined, current_positions: { title: string | null | undefined, company_name: string | null | undefined, company_linkedin_url: string | null | undefined, start_date: unknown | null | undefined, description: string | null | undefined }[] | null | undefined, past_positions: { title: string | null | undefined, company_name: string | null | undefined, start_date: unknown | null | undefined, end_date: unknown | null | undefined }[] | null | undefined, education: { institute_name: string | null | undefined, degree_name: string | null | undefined, field_of_study: string | null | undefined }[] | null | undefined }[] | null | undefined // Decision makers at the company,\n//   cxos: { linkedin_profile_url: string | null | undefined, linkedin_flagship_url: string | null | undefined, name: string | null | undefined, first_name: string | null | undefined, last_name: string | null | undefined, headline: string | null | undefined, location: string | null | undefined, profile_picture_url: string | null | undefined, title: string | null | undefined, emails: string[] | null | undefined, twitter_handle: string | null | undefined, github_profile_id: string | null | undefined, skills: string[] | null | undefined, languages: string[] | null | undefined, summary: string | null | undefined, current_positions: { title: string | null | undefined, company_name: string | null | undefined, company_linkedin_url: string | null | undefined, start_date: unknown | null | undefined, description: string | null | undefined }[] | null | undefined, past_positions: { title: string | null | undefined, company_name: string | null | undefined, start_date: unknown | null | undefined, end_date: unknown | null | undefined }[] | null | undefined, education: { institute_name: string | null | undefined, degree_name: string | null | undefined, field_of_study: string | null | undefined }[] | null | undefined }[] | null | undefined // C-level executives at the company,\n//   founders: { profiles: { linkedin_profile_url: string | null | undefined, linkedin_flagship_url: string | null | undefined, name: string | null | undefined, first_name: string | null | undefined, last_name: string | null | undefined, headline: string | null | undefined, location: string | null | undefined, profile_picture_url: string | null | undefined, title: string | null | undefined, emails: string[] | null | undefined, twitter_handle: string | null | undefined, github_profile_id: string | null | undefined, skills: string[] | null | undefined, languages: string[] | null | undefined, summary: string | null | undefined, current_positions: { title: string | null | undefined, company_name: string | null | undefined, company_linkedin_url: string | null | undefined, start_date: unknown | null | undefined, description: string | null | undefined }[] | null | undefined, past_positions: { title: string | null | undefined, company_name: string | null | undefined, start_date: unknown | null | undefined, end_date: unknown | null | undefined }[] | null | undefined, education: { institute_name: string | null | undefined, degree_name: string | null | undefined, field_of_study: string | null | undefined }[] | null | undefined }[] | null | undefined } | null | undefined // Founders of the company,\n//   error: string // Error message if operation failed\n// }\n\n\n// Person Search Db example\nconst crustdata_person_search_db = new CrustdataBubble({\n  operation: \"person_search_db\", // Search people in database with advanced filtering (3 credits per 100 results)\n  filters: { column: \"example string\" // Field to filter on (e.g., \"current_employers.title\", \"current_employers.function_category\", \"region\"). For function_category, use PersonFunctionEnum values. For seniority_level, use PersonSeniorityLevelEnum values., type: \"=\" // options: \"=\", \"!=\", \"in\", \"not_in\", \">\", \"<\", \"=>\", \"=<\", \"(.)\", \"[.]\", \"geo_distance\" // Filter operator, value: { location: \"example string\" // Center point location name (e.g., \"San Francisco\"), distance: 42 // Radius distance, unit: \"km\" // options: \"km\", \"mi\", \"miles\", \"m\", \"meters\", \"ft\", \"feet\" // Distance unit (default: km) } // Value(s) to match. For function_category and seniority_level, use enum values. }, // Filter conditions - single condition or nested AND/OR groups\n  sorts: [{ column: \"example string\" // Field to sort by (e.g., \"years_of_experience_raw\", \"num_of_connections\"), order: \"asc\" // options: \"asc\", \"desc\" // Sort order }], // Sort criteria to order results\n  cursor: \"example string\", // Pagination cursor from previous response\n  limit: 20 // default, // Results per page (default: 20, max: 1,000)\n  preview: false // default, // Preview mode returns basic profile details (0 credits)\n  post_processing: { exclude_profiles: [\"example string\"] // LinkedIn profile URLs to exclude (max 50,000), exclude_names: [\"example string\"] // Names to exclude from results }, // Post-processing options like excluding profiles or names\n});\n\nconst result = await crustdata_person_search_db.action();\n// outputSchema for result.data when operation === 'person_search_db':\n// {\n//   operation: \"person_search_db\" // PersonDB search operation,\n//   success: boolean // Whether the operation was successful,\n//   profiles: { person_id: number | undefined, name: string | null | undefined, first_name: string | null | undefined, last_name: string | null | undefined, headline: string | null | undefined, summary: string | null | undefined, region: string | null | undefined, location_details: { city: string | null | undefined, state: string | null | undefined, country: string | null | undefined, continent: string | null | undefined } | null | undefined, location_city: string | null | undefined, location_state: string | null | undefined, location_country: string | null | undefined, linkedin_profile_url: string | null | undefined, flagship_profile_url: string | null | undefined, profile_picture_url: string | null | undefined, num_of_connections: number | null | undefined, years_of_experience_raw: number | null | undefined, recently_changed_jobs: boolean | null | undefined, skills: string[] | null | undefined, languages: string[] | null | undefined, current_employers: { title: string | null | undefined, company_name: string | null | undefined, name: string | null | undefined, linkedin_id: string | null | undefined, company_linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, company_hq_location: string | null | undefined, company_type: string | null | undefined, company_headcount_latest: number | null | undefined, company_headcount_range: string | null | undefined, company_industries: string[] | null | undefined, seniority_level: string | null | undefined, function_category: string | null | undefined, start_date: unknown | null | undefined, end_date: unknown | null | undefined, years_at_company_raw: number | null | undefined, description: string | null | undefined, location: string | null | undefined }[] | null | undefined, past_employers: { title: string | null | undefined, company_name: string | null | undefined, name: string | null | undefined, linkedin_id: string | null | undefined, company_linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, company_hq_location: string | null | undefined, company_type: string | null | undefined, company_headcount_latest: number | null | undefined, company_headcount_range: string | null | undefined, company_industries: string[] | null | undefined, seniority_level: string | null | undefined, function_category: string | null | undefined, start_date: unknown | null | undefined, end_date: unknown | null | undefined, years_at_company_raw: number | null | undefined, description: string | null | undefined, location: string | null | undefined }[] | null | undefined, all_employers: { title: string | null | undefined, company_name: string | null | undefined, name: string | null | undefined, linkedin_id: string | null | undefined, company_linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, company_hq_location: string | null | undefined, company_type: string | null | undefined, company_headcount_latest: number | null | undefined, company_headcount_range: string | null | undefined, company_industries: string[] | null | undefined, seniority_level: string | null | undefined, function_category: string | null | undefined, start_date: unknown | null | undefined, end_date: unknown | null | undefined, years_at_company_raw: number | null | undefined, description: string | null | undefined, location: string | null | undefined }[] | null | undefined, education_background: { degree_name: string | null | undefined, institute_name: string | null | undefined, field_of_study: string | null | undefined, start_date: unknown | null | undefined, end_date: unknown | null | undefined }[] | null | undefined, certifications: { name: string | null | undefined, issued_date: unknown | null | undefined, issuing_authority: string | null | undefined }[] | null | undefined, honors: { title: string | null | undefined, issued_date: unknown | null | undefined, issuer: string | null | undefined }[] | null | undefined, emails: string[] | null | undefined, websites: string[] | null | undefined, twitter_handle: string | null | undefined }[] | undefined // Array of people profiles found,\n//   total_count: number | undefined // Total number of profiles matching the search criteria,\n//   next_cursor: string | undefined // Cursor for fetching the next page of results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Person Enrich example\nconst crustdata_person_enrich = new CrustdataBubble({\n  operation: \"person_enrich\", // Enrich LinkedIn profiles with comprehensive data (3-5 credits per profile)\n  linkedin_profile_url: \"example string\", // Comma-separated LinkedIn profile URLs to enrich (max 25). Example: \"https://www.linkedin.com/in/dvdhsu/\"\n  business_email: \"example string\", // Comma-separated business emails for reverse lookup (max 25). Mutually exclusive with linkedin_profile_url.\n  enrich_realtime: false // default, // If true, fetch fresh data from LinkedIn in real-time (5 credits vs 3 for database)\n  fields: \"example string\", // Comma-separated fields to include in response. Use \"business_email\" to discover work emails (+2 credits). Default returns standard profile fields.\n  preview: false // default, // Preview mode returns basic profile details only (0 credits, access controlled)\n});\n\nconst result = await crustdata_person_enrich.action();\n// outputSchema for result.data when operation === 'person_enrich':\n// {\n//   operation: \"person_enrich\" // Person enrichment operation,\n//   success: boolean // Whether the operation was successful,\n//   profiles: { linkedin_profile_url: string | null | undefined, linkedin_flagship_url: string | null | undefined, name: string | null | undefined, location: string | null | undefined, email: string | null | undefined, title: string | null | undefined, last_updated: string | null | undefined, headline: string | null | undefined, summary: string | null | undefined, num_of_connections: number | null | undefined, profile_picture_url: string | null | undefined, profile_picture_permalink: string | null | undefined, twitter_handle: string | null | undefined, languages: string[] | null | undefined, linkedin_joined_date: string | null | undefined, linkedin_verifications: string[] | null | undefined, linkedin_open_to_cards: string[] | null | undefined, skills: string[] | null | undefined, all_employers: string[] | null | undefined, all_employers_company_id: number[] | null | undefined, all_titles: string[] | null | undefined, all_schools: string[] | null | undefined, all_degrees: string[] | null | undefined, current_employers: { employer_name: string | null | undefined, employer_linkedin_id: string | null | undefined, employer_logo_url: string | null | undefined, employer_linkedin_description: string | null | undefined, employer_company_id: number[] | null | undefined, employer_company_website_domain: string[] | null | undefined, domains: string[] | null | undefined, employee_position_id: number | null | undefined, employee_title: string | null | undefined, employee_description: string | null | undefined, employee_location: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined, is_default: boolean | null | undefined, business_emails: Record<string, { verification_status: string | null | undefined // Email verification status, last_validated_at: string | null | undefined // Last validation date }> | null | undefined // Business emails with verification metadata }[] | null | undefined, past_employers: { employer_name: string | null | undefined, employer_linkedin_id: string | null | undefined, employer_logo_url: string | null | undefined, employer_linkedin_description: string | null | undefined, employer_company_id: number[] | null | undefined, employer_company_website_domain: string[] | null | undefined, domains: string[] | null | undefined, employee_position_id: number | null | undefined, employee_title: string | null | undefined, employee_description: string | null | undefined, employee_location: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined, is_default: boolean | null | undefined, business_emails: Record<string, { verification_status: string | null | undefined // Email verification status, last_validated_at: string | null | undefined // Last validation date }> | null | undefined // Business emails with verification metadata }[] | null | undefined, education_background: { degree_name: string | null | undefined, institute_name: string | null | undefined, institute_linkedin_id: string | null | undefined, institute_linkedin_url: string | null | undefined, institute_logo_url: string | null | undefined, field_of_study: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined, activities_and_societies: string | null | undefined }[] | null | undefined, certifications: { name: string | null | undefined, issued_date: string | null | undefined, expiration_date: string | null | undefined, url: string | null | undefined, issuer_organization: string | null | undefined, issuer_organization_linkedin_id: string | null | undefined, certification_id: string | null | undefined }[] | null | undefined, honors: { title: string | null | undefined, issued_date: string | null | undefined, description: string | null | undefined, issuer: string | null | undefined, media_urls: string[] | null | undefined, associated_organization_linkedin_id: string | null | undefined, associated_organization: string | null | undefined }[] | null | undefined, business_email: string[] | null | undefined, enriched_realtime: boolean | null | undefined, query_linkedin_profile_urn_or_slug: string[] | null | undefined, score: number | null | undefined }[] | undefined // Array of enriched person profiles,\n//   errors: { linkedin_profile_url: string | null | undefined, business_email: string | null | undefined, error: string | undefined, error_code: string | undefined, message: string | undefined }[] | undefined // Array of errors for profiles that could not be enriched,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`crustdata failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "CRUSTDATA_API_KEY"
      ]
    },
    {
      "name": "company-enrichment-tool",
      "alias": "enrich",
      "type": "tool",
      "shortDescription": "Get key contacts (executives, decision makers) from any company for lead generation",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  contacts: { name: string | null // Full name, title: string | null // Current job title, headline: string | null // LinkedIn headline, linkedinUrl: string | null // LinkedIn profile URL, profilePictureUrl: string | null // Profile picture URL, emails: string[] | null // Email addresses, twitterHandle: string | null // Twitter/X handle, role: \"cxo\" | \"decision_maker\" | \"founder\" // Role classification, location: string | null // Location, skills: string[] | null // Professional skills, languages: string[] | null // Languages spoken, summary: string | null // Professional summary, currentEmployment: { title: string | null // Job title, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, startDate: unknown | null // Start date, description: string | null // Role description }[] | null // Current employment positions, pastEmployment: { title: string | null // Job title, companyName: string | null // Company name, startDate: unknown | null // Start date, endDate: unknown | null // End date }[] | null // Past employment positions, education: { instituteName: string | null // Institution name, degreeName: string | null // Degree name, fieldOfStudy: string | null // Field of study }[] | null // Education history }[] // List of contacts at the company,\n  company: { name: string | null // Company name, linkedinUrl: string | null // Company LinkedIn URL, website: string | null // Company website, industry: string | null // Industry, description: string | null // Company description, headcount: number | null // Employee count, hqCity: string | null // Headquarters city, hqCountry: string | null // Headquarters country, yearFounded: number | null // Year founded, fundingStage: string | null // Funding stage, totalFunding: string | null // Total funding raised } | null // Company information,\n  totalContacts: number // Total number of contacts found,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "crustdata",
              "fullenrich"
            ],
            "default": "fullenrich",
            "description": "Provider to use. Default: 'fullenrich'. NOTE: FullEnrich's /company/search only returns company metadata — contacts[] will be EMPTY when provider=fullenrich. Use provider='crustdata' to get decision makers/CXOs/founders."
          },
          "companyIdentifier": {
            "type": "string",
            "minLength": 1,
            "description": "Company name, domain (e.g., \"stripe.com\"), or LinkedIn URL. Auto-detects type."
          },
          "limit": {
            "type": "number",
            "maximum": 50,
            "default": 10,
            "description": "Maximum contacts to return (default: 10). Only applies when provider=crustdata; FullEnrich always returns 0 contacts."
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "required": [
          "companyIdentifier"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "contacts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "nullable": true,
                  "description": "Full name"
                },
                "title": {
                  "type": "string",
                  "nullable": true,
                  "description": "Current job title"
                },
                "headline": {
                  "type": "string",
                  "nullable": true,
                  "description": "LinkedIn headline"
                },
                "linkedinUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "LinkedIn profile URL"
                },
                "profilePictureUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Profile picture URL"
                },
                "emails": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Email addresses"
                },
                "twitterHandle": {
                  "type": "string",
                  "nullable": true,
                  "description": "Twitter/X handle"
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "cxo",
                    "decision_maker",
                    "founder"
                  ],
                  "description": "Role classification"
                },
                "location": {
                  "type": "string",
                  "nullable": true,
                  "description": "Location"
                },
                "skills": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Professional skills"
                },
                "languages": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Languages spoken"
                },
                "summary": {
                  "type": "string",
                  "nullable": true,
                  "description": "Professional summary"
                },
                "currentEmployment": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "nullable": true,
                        "description": "Job title"
                      },
                      "companyName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Company name"
                      },
                      "companyLinkedinUrl": {
                        "type": "string",
                        "nullable": true,
                        "description": "Company LinkedIn URL"
                      },
                      "startDate": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ],
                        "nullable": true,
                        "description": "Start date"
                      },
                      "description": {
                        "type": "string",
                        "nullable": true,
                        "description": "Role description"
                      }
                    },
                    "required": [
                      "title",
                      "companyName",
                      "companyLinkedinUrl",
                      "startDate",
                      "description"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Current employment positions"
                },
                "pastEmployment": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "nullable": true,
                        "description": "Job title"
                      },
                      "companyName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Company name"
                      },
                      "startDate": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ],
                        "nullable": true,
                        "description": "Start date"
                      },
                      "endDate": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          }
                        ],
                        "nullable": true,
                        "description": "End date"
                      }
                    },
                    "required": [
                      "title",
                      "companyName",
                      "startDate",
                      "endDate"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Past employment positions"
                },
                "education": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "instituteName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Institution name"
                      },
                      "degreeName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Degree name"
                      },
                      "fieldOfStudy": {
                        "type": "string",
                        "nullable": true,
                        "description": "Field of study"
                      }
                    },
                    "required": [
                      "instituteName",
                      "degreeName",
                      "fieldOfStudy"
                    ],
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "description": "Education history"
                }
              },
              "required": [
                "name",
                "title",
                "headline",
                "linkedinUrl",
                "profilePictureUrl",
                "emails",
                "twitterHandle",
                "role",
                "location",
                "skills",
                "languages",
                "summary",
                "currentEmployment",
                "pastEmployment",
                "education"
              ],
              "additionalProperties": false
            },
            "description": "List of contacts at the company"
          },
          "company": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "nullable": true,
                "description": "Company name"
              },
              "linkedinUrl": {
                "type": "string",
                "nullable": true,
                "description": "Company LinkedIn URL"
              },
              "website": {
                "type": "string",
                "nullable": true,
                "description": "Company website"
              },
              "industry": {
                "type": "string",
                "nullable": true,
                "description": "Industry"
              },
              "description": {
                "type": "string",
                "nullable": true,
                "description": "Company description"
              },
              "headcount": {
                "type": "number",
                "nullable": true,
                "description": "Employee count"
              },
              "hqCity": {
                "type": "string",
                "nullable": true,
                "description": "Headquarters city"
              },
              "hqCountry": {
                "type": "string",
                "nullable": true,
                "description": "Headquarters country"
              },
              "yearFounded": {
                "type": "number",
                "nullable": true,
                "description": "Year founded"
              },
              "fundingStage": {
                "type": "string",
                "nullable": true,
                "description": "Funding stage"
              },
              "totalFunding": {
                "type": "string",
                "nullable": true,
                "description": "Total funding raised"
              }
            },
            "required": [
              "name",
              "linkedinUrl",
              "website",
              "industry",
              "description",
              "headcount",
              "hqCity",
              "hqCountry",
              "yearFounded",
              "fundingStage",
              "totalFunding"
            ],
            "additionalProperties": false,
            "nullable": true,
            "description": "Company information"
          },
          "totalContacts": {
            "type": "number",
            "description": "Total number of contacts found"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "contacts",
          "company",
          "totalContacts",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of company-enrichment-tool bubble\nconst companyEnrichmentTool = new CompanyEnrichmentTool({\n  provider: \"crustdata\" // options: \"crustdata\", \"fullenrich\", // Provider to use. Default: 'fullenrich'. NOTE: FullEnrich's /company/search only returns company metadata — contacts[] will be EMPTY when provider=fullenrich. Use provider='crustdata' to get decision makers/CXOs/founders.,\n  companyIdentifier: \"example string\", // Company name, domain (e.g., \"stripe.com\"), or LinkedIn URL. Auto-detects type.,\n  limit: 10 // default, // Maximum contacts to return (default: 10). Only applies when provider=crustdata; FullEnrich always returns 0 contacts.,\n});\n\nconst result = await companyEnrichmentTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   contacts: { name: string | null // Full name, title: string | null // Current job title, headline: string | null // LinkedIn headline, linkedinUrl: string | null // LinkedIn profile URL, profilePictureUrl: string | null // Profile picture URL, emails: string[] | null // Email addresses, twitterHandle: string | null // Twitter/X handle, role: \"cxo\" | \"decision_maker\" | \"founder\" // Role classification, location: string | null // Location, skills: string[] | null // Professional skills, languages: string[] | null // Languages spoken, summary: string | null // Professional summary, currentEmployment: { title: string | null // Job title, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, startDate: unknown | null // Start date, description: string | null // Role description }[] | null // Current employment positions, pastEmployment: { title: string | null // Job title, companyName: string | null // Company name, startDate: unknown | null // Start date, endDate: unknown | null // End date }[] | null // Past employment positions, education: { instituteName: string | null // Institution name, degreeName: string | null // Degree name, fieldOfStudy: string | null // Field of study }[] | null // Education history }[] // List of contacts at the company,\n//   company: { name: string | null // Company name, linkedinUrl: string | null // Company LinkedIn URL, website: string | null // Company website, industry: string | null // Industry, description: string | null // Company description, headcount: number | null // Employee count, hqCity: string | null // Headquarters city, hqCountry: string | null // Headquarters country, yearFounded: number | null // Year founded, fundingStage: string | null // Funding stage, totalFunding: string | null // Total funding raised } | null // Company information,\n//   totalContacts: number // Total number of contacts found,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "CRUSTDATA_API_KEY",
        "FULLENRICH_API_KEY"
      ]
    },
    {
      "name": "jira",
      "alias": "jira",
      "type": "service",
      "shortDescription": "Jira integration for issue tracking and project management",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ],
                "description": "Search for issues using JQL query"
              },
              "jql": {
                "type": "string",
                "minLength": 1,
                "description": "JQL query string. Examples: \"project = PROJ\", \"assignee = currentUser()\", \"status = Open AND created >= -7d\""
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of issues to return (1-100)"
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Starting index for pagination"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Specific fields to return (e.g., [\"summary\", \"status\", \"assignee\"]). Default: all standard fields"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "jql"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get"
                ],
                "description": "Get details for a specific issue"
              },
              "key": {
                "type": "string",
                "minLength": 1,
                "description": "Issue key (e.g., \"PROJ-123\") or issue ID"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Specific fields to return. Default: all fields"
              },
              "expand": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "changelog",
                    "comments",
                    "transitions"
                  ],
                  "description": "Additional data to include in the response"
                },
                "description": "Additional data to include"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "key"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create"
                ],
                "description": "Create a new issue in Jira"
              },
              "project": {
                "type": "string",
                "minLength": 1,
                "description": "Project key (e.g., \"PROJ\")"
              },
              "summary": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "Issue title/summary (max 255 chars)"
              },
              "type": {
                "type": "string",
                "default": "Task",
                "description": "Issue type: \"Task\", \"Bug\", \"Story\", \"Epic\", etc. Default: \"Task\""
              },
              "description": {
                "type": "string",
                "description": "Issue description (plain text - auto-converted to ADF)"
              },
              "assignee": {
                "type": "string",
                "description": "Assignee account ID or email. Leave empty for unassigned"
              },
              "priority": {
                "type": "string",
                "minLength": 1,
                "description": "Issue priority. Default: uses project default"
              },
              "labels": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Labels to apply (e.g., [\"bug\", \"urgent\"])"
              },
              "parent": {
                "type": "string",
                "description": "Parent issue key for subtasks (e.g., \"PROJ-100\")"
              },
              "due_date": {
                "type": "string",
                "description": "Due date in YYYY-MM-DD format"
              },
              "custom_fields": {
                "type": "object",
                "additionalProperties": {},
                "description": "Custom field values as { fieldId: value } (e.g., { \"customfield_10319\": \"Hardware\" })"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project",
              "summary"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update"
                ],
                "description": "Update an existing issue"
              },
              "key": {
                "type": "string",
                "minLength": 1,
                "description": "Issue key (e.g., \"PROJ-123\") or issue ID"
              },
              "summary": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "New issue title"
              },
              "description": {
                "type": "string",
                "description": "New description (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~"
              },
              "assignee": {
                "type": "string",
                "nullable": true,
                "description": "New assignee (account ID/email) or null to unassign"
              },
              "priority": {
                "type": "string",
                "minLength": 1,
                "description": "New priority"
              },
              "labels": {
                "type": "object",
                "properties": {
                  "add": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Labels to add to the issue"
                  },
                  "remove": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Labels to remove from the issue"
                  },
                  "set": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Replace all labels with these (overrides add/remove)"
                  }
                },
                "additionalProperties": false,
                "description": "Label modifications"
              },
              "due_date": {
                "type": "string",
                "nullable": true,
                "description": "New due date (YYYY-MM-DD) or null to clear"
              },
              "comment": {
                "type": "string",
                "description": "Add a comment with this update (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "key"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "transition"
                ],
                "description": "Transition issue to a new status"
              },
              "key": {
                "type": "string",
                "minLength": 1,
                "description": "Issue key (e.g., \"PROJ-123\")"
              },
              "status": {
                "type": "string",
                "description": "Target status NAME (e.g., \"In Progress\", \"Done\"). Finds matching transition automatically"
              },
              "transition_id": {
                "type": "string",
                "description": "Specific transition ID (from list_transitions). Use when status name is ambiguous"
              },
              "comment": {
                "type": "string",
                "description": "Comment to add with the transition (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~"
              },
              "resolution": {
                "type": "string",
                "description": "Resolution when closing (e.g., \"Fixed\", \"Won't Fix\", \"Duplicate\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "key"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_transitions"
                ],
                "description": "Get available transitions for an issue"
              },
              "key": {
                "type": "string",
                "minLength": 1,
                "description": "Issue key (e.g., \"PROJ-123\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "key"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ],
                "description": "List available Jira projects"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of projects to return"
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Starting index for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_issue_types"
                ],
                "description": "List issue types for a project"
              },
              "project": {
                "type": "string",
                "minLength": 1,
                "description": "Project key (e.g., \"PROJ\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_create_fields"
                ],
                "description": "Get required and optional fields for creating issues in a project, grouped by issue type"
              },
              "project": {
                "type": "string",
                "minLength": 1,
                "description": "Project key (e.g., \"PROJ\")"
              },
              "issue_type": {
                "type": "string",
                "description": "Filter by issue type name (e.g., \"Bug\", \"Task\"). If omitted, returns fields for all issue types"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_comment"
                ],
                "description": "Add a comment to an issue"
              },
              "key": {
                "type": "string",
                "minLength": 1,
                "description": "Issue key (e.g., \"PROJ-123\")"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "description": "Comment text (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "key",
              "body"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_comments"
                ],
                "description": "Get comments for an issue"
              },
              "key": {
                "type": "string",
                "minLength": 1,
                "description": "Issue key (e.g., \"PROJ-123\")"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of comments to return"
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Starting index for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "key"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "issues": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "expand": {
                      "type": "string",
                      "description": "Expanded fields"
                    },
                    "id": {
                      "type": "string",
                      "description": "Issue ID"
                    },
                    "key": {
                      "type": "string",
                      "description": "Issue key (e.g., \"PROJ-123\")"
                    },
                    "self": {
                      "type": "string",
                      "description": "Issue API URL"
                    },
                    "fields": {
                      "type": "object",
                      "properties": {
                        "summary": {
                          "type": "string",
                          "description": "Issue title/summary"
                        },
                        "description": {
                          "description": "Issue description (ADF format)"
                        },
                        "status": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Status ID"
                            },
                            "name": {
                              "type": "string",
                              "description": "Status name (e.g., \"To Do\", \"In Progress\", \"Done\")"
                            },
                            "statusCategory": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Category key"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Category name"
                                }
                              },
                              "required": [
                                "key",
                                "name"
                              ],
                              "additionalProperties": true,
                              "description": "Status category"
                            }
                          },
                          "required": [
                            "id",
                            "name"
                          ],
                          "additionalProperties": true,
                          "description": "Current status"
                        },
                        "priority": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Priority ID"
                            },
                            "name": {
                              "type": "string",
                              "description": "Priority name"
                            }
                          },
                          "required": [
                            "id",
                            "name"
                          ],
                          "additionalProperties": true,
                          "description": "Issue priority (null if not assigned)",
                          "nullable": true
                        },
                        "assignee": {
                          "type": "object",
                          "properties": {
                            "accountId": {
                              "type": "string",
                              "description": "User account ID"
                            },
                            "displayName": {
                              "type": "string",
                              "description": "User display name"
                            },
                            "emailAddress": {
                              "type": "string",
                              "description": "User email address"
                            },
                            "active": {
                              "type": "boolean",
                              "description": "Whether the user is active"
                            }
                          },
                          "required": [
                            "accountId"
                          ],
                          "additionalProperties": true,
                          "description": "Assigned user",
                          "nullable": true
                        },
                        "reporter": {
                          "type": "object",
                          "properties": {
                            "accountId": {
                              "type": "string",
                              "description": "User account ID"
                            },
                            "displayName": {
                              "type": "string",
                              "description": "User display name"
                            },
                            "emailAddress": {
                              "type": "string",
                              "description": "User email address"
                            },
                            "active": {
                              "type": "boolean",
                              "description": "Whether the user is active"
                            }
                          },
                          "required": [
                            "accountId"
                          ],
                          "additionalProperties": true,
                          "description": "Reporter user (null if deleted or anonymized)",
                          "nullable": true
                        },
                        "issuetype": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Issue type ID"
                            },
                            "name": {
                              "type": "string",
                              "description": "Issue type name (e.g., \"Task\", \"Bug\", \"Story\")"
                            },
                            "description": {
                              "type": "string",
                              "description": "Issue type description"
                            },
                            "subtask": {
                              "type": "boolean",
                              "description": "Whether this is a subtask type"
                            }
                          },
                          "required": [
                            "id",
                            "name"
                          ],
                          "additionalProperties": true,
                          "description": "Issue type"
                        },
                        "project": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Project ID"
                            },
                            "key": {
                              "type": "string",
                              "description": "Project key (e.g., \"PROJ\")"
                            },
                            "name": {
                              "type": "string",
                              "description": "Project name"
                            }
                          },
                          "required": [
                            "id",
                            "key",
                            "name"
                          ],
                          "additionalProperties": true,
                          "description": "Project"
                        },
                        "labels": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Issue labels"
                        },
                        "created": {
                          "type": "string",
                          "description": "Creation timestamp"
                        },
                        "updated": {
                          "type": "string",
                          "description": "Last update timestamp"
                        },
                        "duedate": {
                          "type": "string",
                          "nullable": true,
                          "description": "Due date (YYYY-MM-DD)"
                        },
                        "parent": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "key": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "key"
                          ],
                          "additionalProperties": true,
                          "description": "Parent issue (for subtasks)"
                        },
                        "comment": {
                          "type": "object",
                          "properties": {
                            "comments": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "Comment ID"
                                  },
                                  "author": {
                                    "type": "object",
                                    "properties": {
                                      "accountId": {
                                        "type": "string",
                                        "description": "User account ID"
                                      },
                                      "displayName": {
                                        "type": "string",
                                        "description": "User display name"
                                      },
                                      "emailAddress": {
                                        "type": "string",
                                        "description": "User email address"
                                      },
                                      "active": {
                                        "type": "boolean",
                                        "description": "Whether the user is active"
                                      }
                                    },
                                    "required": [
                                      "accountId"
                                    ],
                                    "additionalProperties": true,
                                    "description": "Comment author (null if deleted or anonymized)",
                                    "nullable": true
                                  },
                                  "body": {
                                    "type": "string",
                                    "description": "Comment body as plain text"
                                  },
                                  "renderedBody": {
                                    "type": "string",
                                    "description": "Comment body as rendered HTML"
                                  },
                                  "created": {
                                    "type": "string",
                                    "description": "Creation timestamp"
                                  },
                                  "updated": {
                                    "type": "string",
                                    "description": "Last update timestamp"
                                  }
                                },
                                "required": [
                                  "id"
                                ],
                                "additionalProperties": true,
                                "description": "Jira comment"
                              }
                            },
                            "total": {
                              "type": "number"
                            }
                          },
                          "additionalProperties": true,
                          "description": "Issue comments"
                        }
                      },
                      "additionalProperties": true,
                      "description": "Issue fields"
                    },
                    "transitions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Transition ID"
                          },
                          "name": {
                            "type": "string",
                            "description": "Transition name (e.g., \"Start Progress\", \"Done\")"
                          },
                          "to": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "Status ID"
                              },
                              "name": {
                                "type": "string",
                                "description": "Status name (e.g., \"To Do\", \"In Progress\", \"Done\")"
                              },
                              "statusCategory": {
                                "type": "object",
                                "properties": {
                                  "key": {
                                    "type": "string",
                                    "description": "Category key"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Category name"
                                  }
                                },
                                "required": [
                                  "key",
                                  "name"
                                ],
                                "additionalProperties": true,
                                "description": "Status category"
                              }
                            },
                            "required": [
                              "id",
                              "name"
                            ],
                            "additionalProperties": true,
                            "description": "Target status"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": true,
                        "description": "Jira transition"
                      },
                      "description": "Available transitions"
                    },
                    "changelog": {
                      "description": "Issue changelog"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Jira issue"
                },
                "description": "Found issues"
              },
              "total": {
                "type": "number",
                "description": "Total matching issues"
              },
              "offset": {
                "type": "number",
                "description": "Current offset"
              },
              "limit": {
                "type": "number",
                "description": "Requested limit"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "issue": {
                "type": "object",
                "properties": {
                  "expand": {
                    "type": "string",
                    "description": "Expanded fields"
                  },
                  "id": {
                    "type": "string",
                    "description": "Issue ID"
                  },
                  "key": {
                    "type": "string",
                    "description": "Issue key (e.g., \"PROJ-123\")"
                  },
                  "self": {
                    "type": "string",
                    "description": "Issue API URL"
                  },
                  "fields": {
                    "type": "object",
                    "properties": {
                      "summary": {
                        "type": "string",
                        "description": "Issue title/summary"
                      },
                      "description": {
                        "description": "Issue description (ADF format)"
                      },
                      "status": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Status ID"
                          },
                          "name": {
                            "type": "string",
                            "description": "Status name (e.g., \"To Do\", \"In Progress\", \"Done\")"
                          },
                          "statusCategory": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string",
                                "description": "Category key"
                              },
                              "name": {
                                "type": "string",
                                "description": "Category name"
                              }
                            },
                            "required": [
                              "key",
                              "name"
                            ],
                            "additionalProperties": true,
                            "description": "Status category"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": true,
                        "description": "Current status"
                      },
                      "priority": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Priority ID"
                          },
                          "name": {
                            "type": "string",
                            "description": "Priority name"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": true,
                        "description": "Issue priority (null if not assigned)",
                        "nullable": true
                      },
                      "assignee": {
                        "type": "object",
                        "properties": {
                          "accountId": {
                            "type": "string",
                            "description": "User account ID"
                          },
                          "displayName": {
                            "type": "string",
                            "description": "User display name"
                          },
                          "emailAddress": {
                            "type": "string",
                            "description": "User email address"
                          },
                          "active": {
                            "type": "boolean",
                            "description": "Whether the user is active"
                          }
                        },
                        "required": [
                          "accountId"
                        ],
                        "additionalProperties": true,
                        "description": "Assigned user",
                        "nullable": true
                      },
                      "reporter": {
                        "type": "object",
                        "properties": {
                          "accountId": {
                            "type": "string",
                            "description": "User account ID"
                          },
                          "displayName": {
                            "type": "string",
                            "description": "User display name"
                          },
                          "emailAddress": {
                            "type": "string",
                            "description": "User email address"
                          },
                          "active": {
                            "type": "boolean",
                            "description": "Whether the user is active"
                          }
                        },
                        "required": [
                          "accountId"
                        ],
                        "additionalProperties": true,
                        "description": "Reporter user (null if deleted or anonymized)",
                        "nullable": true
                      },
                      "issuetype": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Issue type ID"
                          },
                          "name": {
                            "type": "string",
                            "description": "Issue type name (e.g., \"Task\", \"Bug\", \"Story\")"
                          },
                          "description": {
                            "type": "string",
                            "description": "Issue type description"
                          },
                          "subtask": {
                            "type": "boolean",
                            "description": "Whether this is a subtask type"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": true,
                        "description": "Issue type"
                      },
                      "project": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Project ID"
                          },
                          "key": {
                            "type": "string",
                            "description": "Project key (e.g., \"PROJ\")"
                          },
                          "name": {
                            "type": "string",
                            "description": "Project name"
                          }
                        },
                        "required": [
                          "id",
                          "key",
                          "name"
                        ],
                        "additionalProperties": true,
                        "description": "Project"
                      },
                      "labels": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Issue labels"
                      },
                      "created": {
                        "type": "string",
                        "description": "Creation timestamp"
                      },
                      "updated": {
                        "type": "string",
                        "description": "Last update timestamp"
                      },
                      "duedate": {
                        "type": "string",
                        "nullable": true,
                        "description": "Due date (YYYY-MM-DD)"
                      },
                      "parent": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "key": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "key"
                        ],
                        "additionalProperties": true,
                        "description": "Parent issue (for subtasks)"
                      },
                      "comment": {
                        "type": "object",
                        "properties": {
                          "comments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "description": "Comment ID"
                                },
                                "author": {
                                  "type": "object",
                                  "properties": {
                                    "accountId": {
                                      "type": "string",
                                      "description": "User account ID"
                                    },
                                    "displayName": {
                                      "type": "string",
                                      "description": "User display name"
                                    },
                                    "emailAddress": {
                                      "type": "string",
                                      "description": "User email address"
                                    },
                                    "active": {
                                      "type": "boolean",
                                      "description": "Whether the user is active"
                                    }
                                  },
                                  "required": [
                                    "accountId"
                                  ],
                                  "additionalProperties": true,
                                  "description": "Comment author (null if deleted or anonymized)",
                                  "nullable": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "Comment body as plain text"
                                },
                                "renderedBody": {
                                  "type": "string",
                                  "description": "Comment body as rendered HTML"
                                },
                                "created": {
                                  "type": "string",
                                  "description": "Creation timestamp"
                                },
                                "updated": {
                                  "type": "string",
                                  "description": "Last update timestamp"
                                }
                              },
                              "required": [
                                "id"
                              ],
                              "additionalProperties": true,
                              "description": "Jira comment"
                            }
                          },
                          "total": {
                            "type": "number"
                          }
                        },
                        "additionalProperties": true,
                        "description": "Issue comments"
                      }
                    },
                    "additionalProperties": true,
                    "description": "Issue fields"
                  },
                  "transitions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Transition ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "Transition name (e.g., \"Start Progress\", \"Done\")"
                        },
                        "to": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Status ID"
                            },
                            "name": {
                              "type": "string",
                              "description": "Status name (e.g., \"To Do\", \"In Progress\", \"Done\")"
                            },
                            "statusCategory": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Category key"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Category name"
                                }
                              },
                              "required": [
                                "key",
                                "name"
                              ],
                              "additionalProperties": true,
                              "description": "Status category"
                            }
                          },
                          "required": [
                            "id",
                            "name"
                          ],
                          "additionalProperties": true,
                          "description": "Target status"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": true,
                      "description": "Jira transition"
                    },
                    "description": "Available transitions"
                  },
                  "changelog": {
                    "description": "Issue changelog"
                  }
                },
                "additionalProperties": false,
                "description": "Issue details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "issue": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Created issue ID"
                  },
                  "key": {
                    "type": "string",
                    "description": "Created issue key"
                  },
                  "self": {
                    "type": "string",
                    "description": "Issue API URL"
                  }
                },
                "required": [
                  "id",
                  "key"
                ],
                "additionalProperties": false,
                "description": "Created issue info"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "key": {
                "type": "string",
                "description": "Updated issue key"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "transition"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "key": {
                "type": "string",
                "description": "Transitioned issue key"
              },
              "new_status": {
                "type": "string",
                "description": "New status name"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_transitions"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "transitions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Transition ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Transition name (e.g., \"Start Progress\", \"Done\")"
                    },
                    "to": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Status ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "Status name (e.g., \"To Do\", \"In Progress\", \"Done\")"
                        },
                        "statusCategory": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "description": "Category key"
                            },
                            "name": {
                              "type": "string",
                              "description": "Category name"
                            }
                          },
                          "required": [
                            "key",
                            "name"
                          ],
                          "additionalProperties": true,
                          "description": "Status category"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": true,
                      "description": "Target status"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": true,
                  "description": "Jira transition"
                },
                "description": "Available transitions"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "projects": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Project ID"
                    },
                    "key": {
                      "type": "string",
                      "description": "Project key (e.g., \"PROJ\")"
                    },
                    "name": {
                      "type": "string",
                      "description": "Project name"
                    }
                  },
                  "required": [
                    "id",
                    "key",
                    "name"
                  ],
                  "additionalProperties": true,
                  "description": "Jira project"
                },
                "description": "Available projects"
              },
              "total": {
                "type": "number",
                "description": "Total projects"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_issue_types"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "issue_types": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Issue type ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Issue type name (e.g., \"Task\", \"Bug\", \"Story\")"
                    },
                    "description": {
                      "type": "string",
                      "description": "Issue type description"
                    },
                    "subtask": {
                      "type": "boolean",
                      "description": "Whether this is a subtask type"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": true,
                  "description": "Jira issue type"
                },
                "description": "Available issue types"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_create_fields"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "issue_types": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Issue type ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Issue type name"
                    },
                    "fields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "fieldId": {
                            "type": "string",
                            "description": "Field ID (e.g., \"summary\", \"customfield_10319\")"
                          },
                          "name": {
                            "type": "string",
                            "description": "Human-readable field name"
                          },
                          "required": {
                            "type": "boolean",
                            "description": "Whether the field is required"
                          },
                          "isCustom": {
                            "type": "boolean",
                            "description": "Whether this is a custom field"
                          },
                          "schema": {
                            "description": "Field type schema from Jira"
                          },
                          "allowedValues": {
                            "type": "array",
                            "items": {},
                            "description": "Allowed values for the field, if constrained"
                          }
                        },
                        "required": [
                          "fieldId",
                          "name",
                          "required",
                          "isCustom"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Fields available for this issue type"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "fields"
                  ],
                  "additionalProperties": false
                },
                "description": "Issue types with their fields"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_comment"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "comment": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Comment ID"
                  },
                  "author": {
                    "type": "object",
                    "properties": {
                      "accountId": {
                        "type": "string",
                        "description": "User account ID"
                      },
                      "displayName": {
                        "type": "string",
                        "description": "User display name"
                      },
                      "emailAddress": {
                        "type": "string",
                        "description": "User email address"
                      },
                      "active": {
                        "type": "boolean",
                        "description": "Whether the user is active"
                      }
                    },
                    "required": [
                      "accountId"
                    ],
                    "additionalProperties": true,
                    "description": "Comment author (null if deleted or anonymized)",
                    "nullable": true
                  },
                  "body": {
                    "type": "string",
                    "description": "Comment body as plain text"
                  },
                  "renderedBody": {
                    "type": "string",
                    "description": "Comment body as rendered HTML"
                  },
                  "created": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updated": {
                    "type": "string",
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "Created comment"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_comments"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "comments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Comment ID"
                    },
                    "author": {
                      "type": "object",
                      "properties": {
                        "accountId": {
                          "type": "string",
                          "description": "User account ID"
                        },
                        "displayName": {
                          "type": "string",
                          "description": "User display name"
                        },
                        "emailAddress": {
                          "type": "string",
                          "description": "User email address"
                        },
                        "active": {
                          "type": "boolean",
                          "description": "Whether the user is active"
                        }
                      },
                      "required": [
                        "accountId"
                      ],
                      "additionalProperties": true,
                      "description": "Comment author (null if deleted or anonymized)",
                      "nullable": true
                    },
                    "body": {
                      "type": "string",
                      "description": "Comment body as plain text"
                    },
                    "renderedBody": {
                      "type": "string",
                      "description": "Comment body as rendered HTML"
                    },
                    "created": {
                      "type": "string",
                      "description": "Creation timestamp"
                    },
                    "updated": {
                      "type": "string",
                      "description": "Last update timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": true,
                  "description": "Jira comment"
                },
                "description": "Issue comments"
              },
              "total": {
                "type": "number",
                "description": "Total comments"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Search example\nconst jira_search = new JiraBubble({\n  operation: \"search\", // Search for issues using JQL query\n  jql: \"example string\", // JQL query string. Examples: \"project = PROJ\", \"assignee = currentUser()\", \"status = Open AND created >= -7d\"\n  limit: 50 // default, // Maximum number of issues to return (1-100)\n  offset: 0 // default, // Starting index for pagination\n  fields: [\"example string\"], // Specific fields to return (e.g., [\"summary\", \"status\", \"assignee\"]). Default: all standard fields\n});\n\nconst result = await jira_search.action();\n// outputSchema for result.data when operation === 'search':\n// {\n//   operation: \"search\",\n//   success: boolean // Whether the operation was successful,\n//   issues: { expand: string | undefined // Expanded fields, id: string | undefined // Issue ID, key: string | undefined // Issue key (e.g., \"PROJ-123\"), self: string | undefined // Issue API URL, fields: { summary: string | undefined // Issue title/summary, description: unknown | undefined // Issue description (ADF format), status: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Current status, priority: { id: string // Priority ID, name: string // Priority name } | null | undefined // Issue priority (null if not assigned), assignee: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Assigned user, reporter: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Reporter user (null if deleted or anonymized), issuetype: { id: string // Issue type ID, name: string // Issue type name (e.g., \"Task\", \"Bug\", \"Story\"), description: string | undefined // Issue type description, subtask: boolean | undefined // Whether this is a subtask type } | undefined // Issue type, project: { id: string // Project ID, key: string // Project key (e.g., \"PROJ\"), name: string // Project name } | undefined // Project, labels: string[] | undefined // Issue labels, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp, duedate: string | null | undefined // Due date (YYYY-MM-DD), parent: { id: string, key: string } | undefined // Parent issue (for subtasks), comment: { comments: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined, total: number | undefined } | undefined // Issue comments } | undefined // Issue fields, transitions: { id: string // Transition ID, name: string // Transition name (e.g., \"Start Progress\", \"Done\"), to: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Target status }[] | undefined // Available transitions, changelog: unknown | undefined // Issue changelog }[] | undefined // Found issues,\n//   total: number | undefined // Total matching issues,\n//   offset: number | undefined // Current offset,\n//   limit: number | undefined // Requested limit,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get example\nconst jira_get = new JiraBubble({\n  operation: \"get\", // Get details for a specific issue\n  key: \"example string\", // Issue key (e.g., \"PROJ-123\") or issue ID\n  fields: [\"example string\"], // Specific fields to return. Default: all fields\n  expand: [\"changelog\" // options: \"changelog\", \"comments\", \"transitions\"], // Additional data to include\n});\n\nconst result = await jira_get.action();\n// outputSchema for result.data when operation === 'get':\n// {\n//   operation: \"get\",\n//   success: boolean // Whether the operation was successful,\n//   issue: { expand: string | undefined // Expanded fields, id: string | undefined // Issue ID, key: string | undefined // Issue key (e.g., \"PROJ-123\"), self: string | undefined // Issue API URL, fields: { summary: string | undefined // Issue title/summary, description: unknown | undefined // Issue description (ADF format), status: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Current status, priority: { id: string // Priority ID, name: string // Priority name } | null | undefined // Issue priority (null if not assigned), assignee: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Assigned user, reporter: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Reporter user (null if deleted or anonymized), issuetype: { id: string // Issue type ID, name: string // Issue type name (e.g., \"Task\", \"Bug\", \"Story\"), description: string | undefined // Issue type description, subtask: boolean | undefined // Whether this is a subtask type } | undefined // Issue type, project: { id: string // Project ID, key: string // Project key (e.g., \"PROJ\"), name: string // Project name } | undefined // Project, labels: string[] | undefined // Issue labels, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp, duedate: string | null | undefined // Due date (YYYY-MM-DD), parent: { id: string, key: string } | undefined // Parent issue (for subtasks), comment: { comments: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined, total: number | undefined } | undefined // Issue comments } | undefined // Issue fields, transitions: { id: string // Transition ID, name: string // Transition name (e.g., \"Start Progress\", \"Done\"), to: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Target status }[] | undefined // Available transitions, changelog: unknown | undefined // Issue changelog } | undefined // Issue details,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create example\nconst jira_create = new JiraBubble({\n  operation: \"create\", // Create a new issue in Jira\n  project: \"example string\", // Project key (e.g., \"PROJ\")\n  summary: \"example string\", // Issue title/summary (max 255 chars)\n  type: \"Task\" // default, // Issue type: \"Task\", \"Bug\", \"Story\", \"Epic\", etc. Default: \"Task\"\n  description: \"example string\", // Issue description (plain text - auto-converted to ADF)\n  assignee: \"example string\", // Assignee account ID or email. Leave empty for unassigned\n  priority: \"example string\", // Issue priority. Default: uses project default\n  labels: [\"example string\"], // Labels to apply (e.g., [\"bug\", \"urgent\"])\n  parent: \"example string\", // Parent issue key for subtasks (e.g., \"PROJ-100\")\n  due_date: \"example string\", // Due date in YYYY-MM-DD format\n  custom_fields: {}, // Custom field values as { fieldId: value } (e.g., { \"customfield_10319\": \"Hardware\" })\n});\n\nconst result = await jira_create.action();\n// outputSchema for result.data when operation === 'create':\n// {\n//   operation: \"create\",\n//   success: boolean // Whether the operation was successful,\n//   issue: { id: string // Created issue ID, key: string // Created issue key, self: string | undefined // Issue API URL } | undefined // Created issue info,\n//   error: string // Error message if operation failed\n// }\n\n\n// Update example\nconst jira_update = new JiraBubble({\n  operation: \"update\", // Update an existing issue\n  key: \"example string\", // Issue key (e.g., \"PROJ-123\") or issue ID\n  summary: \"example string\", // New issue title\n  description: \"example string\", // New description (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n  assignee: \"example string\", // New assignee (account ID/email) or null to unassign\n  priority: \"example string\", // New priority\n  labels: { add: [\"example string\"] // Labels to add to the issue, remove: [\"example string\"] // Labels to remove from the issue, set: [\"example string\"] // Replace all labels with these (overrides add/remove) }, // Label modifications\n  due_date: \"example string\", // New due date (YYYY-MM-DD) or null to clear\n  comment: \"example string\", // Add a comment with this update (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n});\n\nconst result = await jira_update.action();\n// outputSchema for result.data when operation === 'update':\n// {\n//   operation: \"update\",\n//   success: boolean // Whether the operation was successful,\n//   key: string | undefined // Updated issue key,\n//   error: string // Error message if operation failed\n// }\n\n\n// Transition example\nconst jira_transition = new JiraBubble({\n  operation: \"transition\", // Transition issue to a new status\n  key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n  status: \"example string\", // Target status NAME (e.g., \"In Progress\", \"Done\"). Finds matching transition automatically\n  transition_id: \"example string\", // Specific transition ID (from list_transitions). Use when status name is ambiguous\n  comment: \"example string\", // Comment to add with the transition (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n  resolution: \"example string\", // Resolution when closing (e.g., \"Fixed\", \"Won't Fix\", \"Duplicate\")\n});\n\nconst result = await jira_transition.action();\n// outputSchema for result.data when operation === 'transition':\n// {\n//   operation: \"transition\",\n//   success: boolean // Whether the operation was successful,\n//   key: string | undefined // Transitioned issue key,\n//   new_status: string | undefined // New status name,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Transitions example\nconst jira_list_transitions = new JiraBubble({\n  operation: \"list_transitions\", // Get available transitions for an issue\n  key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n});\n\nconst result = await jira_list_transitions.action();\n// outputSchema for result.data when operation === 'list_transitions':\n// {\n//   operation: \"list_transitions\",\n//   success: boolean // Whether the operation was successful,\n//   transitions: { id: string // Transition ID, name: string // Transition name (e.g., \"Start Progress\", \"Done\"), to: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Target status }[] | undefined // Available transitions,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Projects example\nconst jira_list_projects = new JiraBubble({\n  operation: \"list_projects\", // List available Jira projects\n  limit: 50 // default, // Maximum number of projects to return\n  offset: 0 // default, // Starting index for pagination\n});\n\nconst result = await jira_list_projects.action();\n// outputSchema for result.data when operation === 'list_projects':\n// {\n//   operation: \"list_projects\",\n//   success: boolean // Whether the operation was successful,\n//   projects: { id: string // Project ID, key: string // Project key (e.g., \"PROJ\"), name: string // Project name }[] | undefined // Available projects,\n//   total: number | undefined // Total projects,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Issue Types example\nconst jira_list_issue_types = new JiraBubble({\n  operation: \"list_issue_types\", // List issue types for a project\n  project: \"example string\", // Project key (e.g., \"PROJ\")\n});\n\nconst result = await jira_list_issue_types.action();\n// outputSchema for result.data when operation === 'list_issue_types':\n// {\n//   operation: \"list_issue_types\",\n//   success: boolean // Whether the operation was successful,\n//   issue_types: { id: string // Issue type ID, name: string // Issue type name (e.g., \"Task\", \"Bug\", \"Story\"), description: string | undefined // Issue type description, subtask: boolean | undefined // Whether this is a subtask type }[] | undefined // Available issue types,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Create Fields example\nconst jira_get_create_fields = new JiraBubble({\n  operation: \"get_create_fields\", // Get required and optional fields for creating issues in a project, grouped by issue type\n  project: \"example string\", // Project key (e.g., \"PROJ\")\n  issue_type: \"example string\", // Filter by issue type name (e.g., \"Bug\", \"Task\"). If omitted, returns fields for all issue types\n});\n\nconst result = await jira_get_create_fields.action();\n// outputSchema for result.data when operation === 'get_create_fields':\n// {\n//   operation: \"get_create_fields\",\n//   success: boolean // Whether the operation was successful,\n//   issue_types: { id: string // Issue type ID, name: string // Issue type name, fields: { fieldId: string // Field ID (e.g., \"summary\", \"customfield_10319\"), name: string // Human-readable field name, required: boolean // Whether the field is required, isCustom: boolean // Whether this is a custom field, schema: unknown | undefined // Field type schema from Jira, allowedValues: unknown[] | undefined // Allowed values for the field, if constrained }[] // Fields available for this issue type }[] | undefined // Issue types with their fields,\n//   error: string // Error message if operation failed\n// }\n\n\n// Add Comment example\nconst jira_add_comment = new JiraBubble({\n  operation: \"add_comment\", // Add a comment to an issue\n  key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n  body: \"example string\", // Comment text (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n});\n\nconst result = await jira_add_comment.action();\n// outputSchema for result.data when operation === 'add_comment':\n// {\n//   operation: \"add_comment\",\n//   success: boolean // Whether the operation was successful,\n//   comment: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp } | undefined // Created comment,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Comments example\nconst jira_get_comments = new JiraBubble({\n  operation: \"get_comments\", // Get comments for an issue\n  key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n  limit: 50 // default, // Maximum number of comments to return\n  offset: 0 // default, // Starting index for pagination\n});\n\nconst result = await jira_get_comments.action();\n// outputSchema for result.data when operation === 'get_comments':\n// {\n//   operation: \"get_comments\",\n//   success: boolean // Whether the operation was successful,\n//   comments: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined // Issue comments,\n//   total: number | undefined // Total comments,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`jira failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "JIRA_CRED"
      ]
    },
    {
      "name": "confluence",
      "alias": "confluence",
      "type": "service",
      "shortDescription": "Confluence integration for wiki pages and content management",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_spaces"
                ],
                "description": "List Confluence spaces"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 250,
                "default": 25,
                "description": "Maximum number of spaces to return (1-250)"
              },
              "cursor": {
                "type": "string",
                "description": "Cursor for pagination (from previous response)"
              },
              "type": {
                "type": "string",
                "enum": [
                  "global",
                  "personal"
                ],
                "description": "Filter by space type. Omit to list all spaces (recommended). Most Confluence sites use personal spaces, so filtering by \"global\" may return no results."
              },
              "status": {
                "type": "string",
                "enum": [
                  "current",
                  "archived"
                ],
                "description": "Filter by space status"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_space"
                ],
                "description": "Get a specific space by ID"
              },
              "space_id": {
                "type": "string",
                "minLength": 1,
                "description": "Space ID to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "space_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_pages"
                ],
                "description": "List pages with optional filtering"
              },
              "space_id": {
                "type": "string",
                "description": "Filter by space ID (numeric ID from list_spaces)"
              },
              "space_key": {
                "type": "string",
                "description": "Filter by space key (e.g., \"DEV\", \"HR\"). Alternative to space_id — provide either one."
              },
              "title": {
                "type": "string",
                "description": "Filter by exact page title"
              },
              "status": {
                "type": "string",
                "enum": [
                  "current",
                  "trashed",
                  "draft"
                ],
                "description": "Filter by page status. Default: current"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 250,
                "default": 25,
                "description": "Maximum number of pages to return (1-250)"
              },
              "cursor": {
                "type": "string",
                "description": "Cursor for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_page"
                ],
                "description": "Get a specific page by ID with body content"
              },
              "page_id": {
                "type": "string",
                "minLength": 1,
                "description": "Page ID to retrieve"
              },
              "include_body": {
                "type": "boolean",
                "default": true,
                "description": "Whether to include the page body content. Default: true"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "page_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_page"
                ],
                "description": "Create a new page in a space"
              },
              "space_id": {
                "type": "string",
                "minLength": 1,
                "description": "Space ID to create the page in (numeric ID from list_spaces). Provide either space_id or space_key."
              },
              "space_key": {
                "type": "string",
                "minLength": 1,
                "description": "Space key to create the page in (e.g., \"DEV\", \"HR\"). Alternative to space_id."
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "Page title"
              },
              "body": {
                "type": "string",
                "description": "Page body content (markdown - auto-converted to Confluence storage format)"
              },
              "parent_id": {
                "type": "string",
                "description": "Parent page ID (creates as child page)"
              },
              "status": {
                "type": "string",
                "enum": [
                  "current",
                  "draft"
                ],
                "default": "current",
                "description": "Page status. Default: current (published)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "title"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_page"
                ],
                "description": "Update an existing page (auto-increments version)"
              },
              "page_id": {
                "type": "string",
                "minLength": 1,
                "description": "Page ID to update"
              },
              "title": {
                "type": "string",
                "description": "New page title (uses current title if not specified)"
              },
              "body": {
                "type": "string",
                "description": "New page body (markdown - auto-converted to Confluence storage format). If omitted, the existing body is preserved."
              },
              "status": {
                "type": "string",
                "enum": [
                  "current",
                  "draft"
                ],
                "description": "New page status"
              },
              "version_message": {
                "type": "string",
                "description": "Version comment describing the changes"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "page_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_page"
                ],
                "description": "Delete (trash) a page"
              },
              "page_id": {
                "type": "string",
                "minLength": 1,
                "description": "Page ID to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "page_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ],
                "description": "Search Confluence content using CQL"
              },
              "cql": {
                "type": "string",
                "minLength": 1,
                "description": "CQL (Confluence Query Language) query string. Examples: 'type=page AND space=DEV', 'type=page AND title=\"My Page\"', 'text~\"search term\"', 'type=page ORDER BY created DESC'. Note: reserved words like \"null\", \"and\", \"or\" must be quoted if used as values. IMPORTANT: Confluence search has an indexing delay — newly created or updated pages may not appear in CQL search results for several minutes. Use list_pages to find recently created pages instead."
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Maximum number of results to return (1-100)"
              },
              "start": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Starting index for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "cql"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_comment"
                ],
                "description": "Add a footer comment to a page"
              },
              "page_id": {
                "type": "string",
                "minLength": 1,
                "description": "Page ID to add the comment to"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "description": "Comment text (markdown - auto-converted to Confluence storage format)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "page_id",
              "body"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_comments"
                ],
                "description": "List footer comments for a page"
              },
              "page_id": {
                "type": "string",
                "minLength": 1,
                "description": "Page ID to get comments for"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Maximum number of comments to return"
              },
              "cursor": {
                "type": "string",
                "description": "Cursor for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "page_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_spaces"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "spaces": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Space ID"
                    },
                    "key": {
                      "type": "string",
                      "description": "Space key"
                    },
                    "name": {
                      "type": "string",
                      "description": "Space name"
                    },
                    "type": {
                      "type": "string",
                      "description": "Space type (e.g., \"global\", \"personal\")"
                    },
                    "status": {
                      "type": "string",
                      "description": "Space status"
                    },
                    "description": {
                      "description": "Space description (string or structured object)"
                    },
                    "homepageId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Homepage ID"
                    }
                  },
                  "required": [
                    "id",
                    "key",
                    "name"
                  ],
                  "additionalProperties": true,
                  "description": "Confluence space"
                }
              },
              "cursor": {
                "type": "string",
                "description": "Next page cursor"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_space"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "space": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Space ID"
                  },
                  "key": {
                    "type": "string",
                    "description": "Space key"
                  },
                  "name": {
                    "type": "string",
                    "description": "Space name"
                  },
                  "type": {
                    "type": "string",
                    "description": "Space type (e.g., \"global\", \"personal\")"
                  },
                  "status": {
                    "type": "string",
                    "description": "Space status"
                  },
                  "description": {
                    "description": "Space description (string or structured object)"
                  },
                  "homepageId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Homepage ID"
                  }
                },
                "required": [
                  "id",
                  "key",
                  "name"
                ],
                "additionalProperties": true,
                "description": "Confluence space"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_pages"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "pages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Page ID"
                    },
                    "title": {
                      "type": "string",
                      "description": "Page title"
                    },
                    "status": {
                      "type": "string",
                      "description": "Page status (current, draft, trashed)"
                    },
                    "spaceId": {
                      "type": "string",
                      "description": "Space ID the page belongs to"
                    },
                    "parentId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Parent page ID"
                    },
                    "parentType": {
                      "type": "string",
                      "nullable": true,
                      "description": "Parent type"
                    },
                    "authorId": {
                      "type": "string",
                      "description": "Author account ID"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "Creation timestamp"
                    },
                    "version": {
                      "type": "object",
                      "properties": {
                        "number": {
                          "type": "number",
                          "description": "Version number"
                        },
                        "message": {
                          "type": "string",
                          "description": "Version message"
                        },
                        "createdAt": {
                          "type": "string",
                          "description": "Version creation timestamp"
                        }
                      },
                      "required": [
                        "number"
                      ],
                      "additionalProperties": true,
                      "description": "Version information"
                    },
                    "body": {
                      "type": "object",
                      "properties": {
                        "storage": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "type": "string",
                              "description": "Page body in storage format (XHTML)"
                            },
                            "representation": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "value"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": true,
                      "description": "Page body content"
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "webui": {
                          "type": "string",
                          "description": "Web UI link to the page"
                        }
                      },
                      "additionalProperties": true,
                      "description": "Links"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": true,
                  "description": "Confluence page"
                }
              },
              "cursor": {
                "type": "string",
                "description": "Next page cursor"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_page"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "page": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Page ID"
                  },
                  "title": {
                    "type": "string",
                    "description": "Page title"
                  },
                  "status": {
                    "type": "string",
                    "description": "Page status (current, draft, trashed)"
                  },
                  "spaceId": {
                    "type": "string",
                    "description": "Space ID the page belongs to"
                  },
                  "parentId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Parent page ID"
                  },
                  "parentType": {
                    "type": "string",
                    "nullable": true,
                    "description": "Parent type"
                  },
                  "authorId": {
                    "type": "string",
                    "description": "Author account ID"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "version": {
                    "type": "object",
                    "properties": {
                      "number": {
                        "type": "number",
                        "description": "Version number"
                      },
                      "message": {
                        "type": "string",
                        "description": "Version message"
                      },
                      "createdAt": {
                        "type": "string",
                        "description": "Version creation timestamp"
                      }
                    },
                    "required": [
                      "number"
                    ],
                    "additionalProperties": true,
                    "description": "Version information"
                  },
                  "body": {
                    "type": "object",
                    "properties": {
                      "storage": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "type": "string",
                            "description": "Page body in storage format (XHTML)"
                          },
                          "representation": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "value"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": true,
                    "description": "Page body content"
                  },
                  "_links": {
                    "type": "object",
                    "properties": {
                      "webui": {
                        "type": "string",
                        "description": "Web UI link to the page"
                      }
                    },
                    "additionalProperties": true,
                    "description": "Links"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": true,
                "description": "Confluence page"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_page"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "page": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string"
                  },
                  "_links": {
                    "type": "object",
                    "properties": {
                      "webui": {
                        "type": "string"
                      }
                    },
                    "additionalProperties": true
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_page"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "page": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "version": {
                    "type": "object",
                    "properties": {
                      "number": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "number"
                    ],
                    "additionalProperties": true
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_page"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "page_id": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Page ID"
                    },
                    "type": {
                      "type": "string",
                      "description": "Content type (page, blogpost, etc.)"
                    },
                    "title": {
                      "type": "string",
                      "description": "Page title"
                    },
                    "status": {
                      "type": "string",
                      "description": "Page status"
                    },
                    "excerpt": {
                      "type": "string",
                      "description": "Search result excerpt"
                    },
                    "url": {
                      "type": "string",
                      "description": "Result URL"
                    },
                    "lastModified": {
                      "type": "string",
                      "description": "Last modified timestamp"
                    },
                    "_links": {
                      "type": "object",
                      "properties": {
                        "webui": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": true,
                      "description": "Links"
                    },
                    "content": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "_links": {
                          "type": "object",
                          "properties": {
                            "webui": {
                              "type": "string"
                            }
                          },
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": true,
                      "description": "Raw content object (same data also available at top level)"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Confluence search result (normalized: id, title, status available at top level)"
                }
              },
              "total": {
                "type": "number"
              },
              "start": {
                "type": "number"
              },
              "limit": {
                "type": "number"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_comment"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "comment": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Comment ID"
                  },
                  "title": {
                    "type": "string",
                    "description": "Comment title"
                  },
                  "body": {
                    "type": "object",
                    "properties": {
                      "storage": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "type": "string",
                            "description": "Comment body in storage format"
                          },
                          "representation": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "value"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": true,
                    "description": "Comment body"
                  },
                  "version": {
                    "type": "object",
                    "properties": {
                      "number": {
                        "type": "number",
                        "description": "Version number"
                      },
                      "createdAt": {
                        "type": "string",
                        "description": "Version creation timestamp"
                      }
                    },
                    "required": [
                      "number"
                    ],
                    "additionalProperties": true,
                    "description": "Version information"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "Creation timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "Confluence comment"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_comments"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "comments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Comment ID"
                    },
                    "title": {
                      "type": "string",
                      "description": "Comment title"
                    },
                    "body": {
                      "type": "object",
                      "properties": {
                        "storage": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "type": "string",
                              "description": "Comment body in storage format"
                            },
                            "representation": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "value"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": true,
                      "description": "Comment body"
                    },
                    "version": {
                      "type": "object",
                      "properties": {
                        "number": {
                          "type": "number",
                          "description": "Version number"
                        },
                        "createdAt": {
                          "type": "string",
                          "description": "Version creation timestamp"
                        }
                      },
                      "required": [
                        "number"
                      ],
                      "additionalProperties": true,
                      "description": "Version information"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": true,
                  "description": "Confluence comment"
                }
              },
              "cursor": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Spaces example\nconst confluence_list_spaces = new ConfluenceBubble({\n  operation: \"list_spaces\", // List Confluence spaces\n  limit: 25 // default, // Maximum number of spaces to return (1-250)\n  cursor: \"example string\", // Cursor for pagination (from previous response)\n  type: \"global\" // options: \"global\", \"personal\", // Filter by space type. Omit to list all spaces (recommended). Most Confluence sites use personal spaces, so filtering by \"global\" may return no results.\n  status: \"current\" // options: \"current\", \"archived\", // Filter by space status\n});\n\nconst result = await confluence_list_spaces.action();\n// outputSchema for result.data when operation === 'list_spaces':\n// {\n//   operation: \"list_spaces\",\n//   success: boolean,\n//   spaces: { id: string // Space ID, key: string // Space key, name: string // Space name, type: string | undefined // Space type (e.g., \"global\", \"personal\"), status: string | undefined // Space status, description: unknown | undefined // Space description (string or structured object), homepageId: string | null | undefined // Homepage ID }[] | undefined,\n//   cursor: string | undefined // Next page cursor,\n//   error: string\n// }\n\n\n// Get Space example\nconst confluence_get_space = new ConfluenceBubble({\n  operation: \"get_space\", // Get a specific space by ID\n  space_id: \"example string\", // Space ID to retrieve\n});\n\nconst result = await confluence_get_space.action();\n// outputSchema for result.data when operation === 'get_space':\n// {\n//   operation: \"get_space\",\n//   success: boolean,\n//   space: { id: string // Space ID, key: string // Space key, name: string // Space name, type: string | undefined // Space type (e.g., \"global\", \"personal\"), status: string | undefined // Space status, description: unknown | undefined // Space description (string or structured object), homepageId: string | null | undefined // Homepage ID } | undefined // Confluence space,\n//   error: string\n// }\n\n\n// List Pages example\nconst confluence_list_pages = new ConfluenceBubble({\n  operation: \"list_pages\", // List pages with optional filtering\n  space_id: \"example string\", // Filter by space ID (numeric ID from list_spaces)\n  space_key: \"example string\", // Filter by space key (e.g., \"DEV\", \"HR\"). Alternative to space_id — provide either one.\n  title: \"example string\", // Filter by exact page title\n  status: \"current\" // options: \"current\", \"trashed\", \"draft\", // Filter by page status. Default: current\n  limit: 25 // default, // Maximum number of pages to return (1-250)\n  cursor: \"example string\", // Cursor for pagination\n});\n\nconst result = await confluence_list_pages.action();\n// outputSchema for result.data when operation === 'list_pages':\n// {\n//   operation: \"list_pages\",\n//   success: boolean,\n//   pages: { id: string // Page ID, title: string // Page title, status: string | undefined // Page status (current, draft, trashed), spaceId: string | undefined // Space ID the page belongs to, parentId: string | null | undefined // Parent page ID, parentType: string | null | undefined // Parent type, authorId: string | undefined // Author account ID, createdAt: string | undefined // Creation timestamp, version: { number: number // Version number, message: string | undefined // Version message, createdAt: string | undefined // Version creation timestamp } | undefined // Version information, body: { storage: { value: string // Page body in storage format (XHTML), representation: string | undefined } | undefined } | undefined // Page body content, _links: { webui: string | undefined // Web UI link to the page } | undefined // Links }[] | undefined,\n//   cursor: string | undefined // Next page cursor,\n//   error: string\n// }\n\n\n// Get Page example\nconst confluence_get_page = new ConfluenceBubble({\n  operation: \"get_page\", // Get a specific page by ID with body content\n  page_id: \"example string\", // Page ID to retrieve\n  include_body: true // default, // Whether to include the page body content. Default: true\n});\n\nconst result = await confluence_get_page.action();\n// outputSchema for result.data when operation === 'get_page':\n// {\n//   operation: \"get_page\",\n//   success: boolean,\n//   page: { id: string // Page ID, title: string // Page title, status: string | undefined // Page status (current, draft, trashed), spaceId: string | undefined // Space ID the page belongs to, parentId: string | null | undefined // Parent page ID, parentType: string | null | undefined // Parent type, authorId: string | undefined // Author account ID, createdAt: string | undefined // Creation timestamp, version: { number: number // Version number, message: string | undefined // Version message, createdAt: string | undefined // Version creation timestamp } | undefined // Version information, body: { storage: { value: string // Page body in storage format (XHTML), representation: string | undefined } | undefined } | undefined // Page body content, _links: { webui: string | undefined // Web UI link to the page } | undefined // Links } | undefined // Confluence page,\n//   error: string\n// }\n\n\n// Create Page example\nconst confluence_create_page = new ConfluenceBubble({\n  operation: \"create_page\", // Create a new page in a space\n  space_id: \"example string\", // Space ID to create the page in (numeric ID from list_spaces). Provide either space_id or space_key.\n  space_key: \"example string\", // Space key to create the page in (e.g., \"DEV\", \"HR\"). Alternative to space_id.\n  title: \"example string\", // Page title\n  body: \"example string\", // Page body content (markdown - auto-converted to Confluence storage format)\n  parent_id: \"example string\", // Parent page ID (creates as child page)\n  status: \"current\" // options: \"current\", \"draft\", // Page status. Default: current (published)\n});\n\nconst result = await confluence_create_page.action();\n// outputSchema for result.data when operation === 'create_page':\n// {\n//   operation: \"create_page\",\n//   success: boolean,\n//   page: { id: string, title: string, status: string | undefined, _links: { webui: string | undefined } | undefined } | undefined,\n//   error: string\n// }\n\n\n// Update Page example\nconst confluence_update_page = new ConfluenceBubble({\n  operation: \"update_page\", // Update an existing page (auto-increments version)\n  page_id: \"example string\", // Page ID to update\n  title: \"example string\", // New page title (uses current title if not specified)\n  body: \"example string\", // New page body (markdown - auto-converted to Confluence storage format). If omitted, the existing body is preserved.\n  status: \"current\" // options: \"current\", \"draft\", // New page status\n  version_message: \"example string\", // Version comment describing the changes\n});\n\nconst result = await confluence_update_page.action();\n// outputSchema for result.data when operation === 'update_page':\n// {\n//   operation: \"update_page\",\n//   success: boolean,\n//   page: { id: string, title: string, version: { number: number } | undefined } | undefined,\n//   error: string\n// }\n\n\n// Delete Page example\nconst confluence_delete_page = new ConfluenceBubble({\n  operation: \"delete_page\", // Delete (trash) a page\n  page_id: \"example string\", // Page ID to delete\n});\n\nconst result = await confluence_delete_page.action();\n// outputSchema for result.data when operation === 'delete_page':\n// {\n//   operation: \"delete_page\",\n//   success: boolean,\n//   page_id: string | undefined,\n//   error: string\n// }\n\n\n// Search example\nconst confluence_search = new ConfluenceBubble({\n  operation: \"search\", // Search Confluence content using CQL\n  cql: \"example string\", // CQL (Confluence Query Language) query string. Examples: 'type=page AND space=DEV', 'type=page AND title=\"My Page\"', 'text~\"search term\"', 'type=page ORDER BY created DESC'. Note: reserved words like \"null\", \"and\", \"or\" must be quoted if used as values. IMPORTANT: Confluence search has an indexing delay — newly created or updated pages may not appear in CQL search results for several minutes. Use list_pages to find recently created pages instead.\n  limit: 25 // default, // Maximum number of results to return (1-100)\n  start: 0 // default, // Starting index for pagination\n});\n\nconst result = await confluence_search.action();\n// outputSchema for result.data when operation === 'search':\n// {\n//   operation: \"search\",\n//   success: boolean,\n//   results: { id: string | undefined // Page ID, type: string | undefined // Content type (page, blogpost, etc.), title: string | undefined // Page title, status: string | undefined // Page status, excerpt: string | undefined // Search result excerpt, url: string | undefined // Result URL, lastModified: string | undefined // Last modified timestamp, _links: { webui: string | undefined } | undefined // Links, content: { id: string | undefined, type: string | undefined, title: string | undefined, status: string | undefined, _links: { webui: string | undefined } | undefined } | undefined // Raw content object (same data also available at top level) }[] | undefined,\n//   total: number | undefined,\n//   start: number | undefined,\n//   limit: number | undefined,\n//   error: string\n// }\n\n\n// Add Comment example\nconst confluence_add_comment = new ConfluenceBubble({\n  operation: \"add_comment\", // Add a footer comment to a page\n  page_id: \"example string\", // Page ID to add the comment to\n  body: \"example string\", // Comment text (markdown - auto-converted to Confluence storage format)\n});\n\nconst result = await confluence_add_comment.action();\n// outputSchema for result.data when operation === 'add_comment':\n// {\n//   operation: \"add_comment\",\n//   success: boolean,\n//   comment: { id: string // Comment ID, title: string | undefined // Comment title, body: { storage: { value: string // Comment body in storage format, representation: string | undefined } | undefined } | undefined // Comment body, version: { number: number // Version number, createdAt: string | undefined // Version creation timestamp } | undefined // Version information, createdAt: string | undefined // Creation timestamp } | undefined // Confluence comment,\n//   error: string\n// }\n\n\n// Get Comments example\nconst confluence_get_comments = new ConfluenceBubble({\n  operation: \"get_comments\", // List footer comments for a page\n  page_id: \"example string\", // Page ID to get comments for\n  limit: 25 // default, // Maximum number of comments to return\n  cursor: \"example string\", // Cursor for pagination\n});\n\nconst result = await confluence_get_comments.action();\n// outputSchema for result.data when operation === 'get_comments':\n// {\n//   operation: \"get_comments\",\n//   success: boolean,\n//   comments: { id: string // Comment ID, title: string | undefined // Comment title, body: { storage: { value: string // Comment body in storage format, representation: string | undefined } | undefined } | undefined // Comment body, version: { number: number // Version number, createdAt: string | undefined // Version creation timestamp } | undefined // Version information, createdAt: string | undefined // Creation timestamp }[] | undefined,\n//   cursor: string | undefined,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`confluence failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "CONFLUENCE_CRED"
      ]
    },
    {
      "name": "ashby",
      "alias": "ashby-ats",
      "type": "service",
      "shortDescription": "Ashby ATS integration for candidate management",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_candidates"
                ],
                "description": "List all candidates with optional filtering"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Maximum number of candidates to return (1-100)"
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor for fetching subsequent pages"
              },
              "status": {
                "type": "string",
                "enum": [
                  "Hired",
                  "Archived",
                  "Active",
                  "Lead"
                ],
                "description": "Filter candidates by application status"
              },
              "job_id": {
                "type": "string",
                "description": "Filter candidates by specific job ID"
              },
              "created_after": {
                "type": "number",
                "description": "Unix timestamp in milliseconds to filter candidates created after this time"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_candidate"
                ],
                "description": "Get detailed information about a specific candidate"
              },
              "candidate_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the candidate to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "candidate_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_candidate"
                ],
                "description": "Create a new candidate"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Candidate's full name (first and last name)"
              },
              "emails": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "Email address"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "Personal",
                        "Work",
                        "Other"
                      ],
                      "description": "Type of email (Personal, Work, or Other)"
                    }
                  },
                  "required": [
                    "email",
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Candidate's email addresses with type. The Personal email becomes the primary email, others become alternates."
              },
              "phone_number": {
                "type": "string",
                "description": "Candidate's primary phone number"
              },
              "linkedin_url": {
                "type": "string",
                "format": "uri",
                "description": "URL to the candidate's LinkedIn profile"
              },
              "github_url": {
                "type": "string",
                "format": "uri",
                "description": "URL to the candidate's GitHub profile"
              },
              "website": {
                "type": "string",
                "format": "uri",
                "description": "URL of the candidate's website"
              },
              "source_id": {
                "type": "string",
                "format": "uuid",
                "description": "The source ID to set on the candidate"
              },
              "credited_to_user_id": {
                "type": "string",
                "format": "uuid",
                "description": "The ID of the user the candidate will be credited to"
              },
              "tag": {
                "type": "string",
                "description": "Optional tag to add to the candidate. Can be a tag ID (UUID) or tag name. If a name is provided, the tag will be created first."
              },
              "allow_duplicate_linkedin": {
                "type": "boolean",
                "default": false,
                "description": "Whether to allow creating a candidate with a LinkedIn URL that already exists. When false (default), the existing candidate is returned instead of creating a duplicate."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_candidates"
                ],
                "description": "Search for candidates by email or name"
              },
              "email": {
                "type": "string",
                "description": "Search by candidate email address"
              },
              "name": {
                "type": "string",
                "description": "Search by candidate name"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_tag"
                ],
                "description": "Add a tag to a candidate"
              },
              "candidate_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the candidate"
              },
              "tag_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the tag to add"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "candidate_id",
              "tag_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tags"
                ],
                "description": "List all candidate tags"
              },
              "include_archived": {
                "type": "boolean",
                "default": false,
                "description": "Whether to include archived tags"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_tag"
                ],
                "description": "Create a new candidate tag"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "Title of the tag to create"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "title"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_custom_fields"
                ],
                "description": "List all custom field definitions"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Maximum number of custom fields to return (1-100)"
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor for fetching subsequent pages"
              },
              "sync_token": {
                "type": "string",
                "description": "Token for incremental synchronization"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_jobs"
                ],
                "description": "List all jobs"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Maximum number of jobs to return (1-100)"
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor for fetching subsequent pages"
              },
              "status": {
                "type": "string",
                "enum": [
                  "Open",
                  "Closed",
                  "Draft",
                  "Archived"
                ],
                "description": "Filter jobs by status"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_job"
                ],
                "description": "Get detailed information about a specific job"
              },
              "job_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the job to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "job_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_applications"
                ],
                "description": "List applications with optional filtering"
              },
              "candidate_id": {
                "type": "string",
                "description": "Filter by candidate ID"
              },
              "job_id": {
                "type": "string",
                "description": "Filter by job ID"
              },
              "status": {
                "type": "string",
                "enum": [
                  "Active",
                  "Hired",
                  "Archived",
                  "Lead"
                ],
                "description": "Filter by application status"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Maximum number of applications to return (1-100)"
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor for fetching subsequent pages"
              },
              "created_after": {
                "type": "number",
                "description": "Unix timestamp in milliseconds — only return applications created after this time"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_application"
                ],
                "description": "Get detailed information about a specific application"
              },
              "application_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the application to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "application_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_application"
                ],
                "description": "Submit a candidate to a job by creating an application"
              },
              "candidate_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the candidate"
              },
              "job_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the job to apply to"
              },
              "interview_stage_id": {
                "type": "string",
                "description": "Optional interview stage ID to start at"
              },
              "source_id": {
                "type": "string",
                "description": "Optional source ID to attribute the application to"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "candidate_id",
              "job_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "change_application_stage"
                ],
                "description": "Move an application to a different interview stage"
              },
              "application_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the application"
              },
              "interview_stage_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the interview stage to move to"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "application_id",
              "interview_stage_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_candidate"
                ],
                "description": "Update an existing candidate"
              },
              "candidate_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the candidate to update"
              },
              "name": {
                "type": "string",
                "description": "Updated candidate name"
              },
              "email": {
                "type": "string",
                "description": "Updated primary email"
              },
              "phone_number": {
                "type": "string",
                "description": "Updated phone number"
              },
              "linkedin_url": {
                "type": "string",
                "description": "Updated LinkedIn profile URL"
              },
              "github_url": {
                "type": "string",
                "description": "Updated GitHub profile URL"
              },
              "website": {
                "type": "string",
                "description": "Updated website URL"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "candidate_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_note"
                ],
                "description": "Add a note to a candidate"
              },
              "candidate_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the candidate"
              },
              "content": {
                "type": "string",
                "minLength": 1,
                "description": "Note content (plain text or HTML)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "candidate_id",
              "content"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_notes"
                ],
                "description": "List notes for a candidate"
              },
              "candidate_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the candidate"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "candidate_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_sources"
                ],
                "description": "List all candidate sources"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_interview_stages"
                ],
                "description": "List interview stages for a job"
              },
              "job_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the job to get interview stages for"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "job_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_file_url"
                ],
                "description": "Get a download URL for a file (e.g., resume)"
              },
              "file_handle": {
                "type": "string",
                "minLength": 1,
                "description": "File handle from a candidate record (e.g., resumeFileHandle.handle)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "file_handle"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ],
                "description": "List all projects"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_project"
                ],
                "description": "Get project details"
              },
              "project_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the project"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_candidate_projects"
                ],
                "description": "List all projects a candidate belongs to"
              },
              "candidate_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the candidate"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "candidate_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_candidate_to_project"
                ],
                "description": "Add a candidate to a project"
              },
              "candidate_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the candidate"
              },
              "project_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the project"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "candidate_id",
              "project_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_candidate_from_project"
                ],
                "description": "Remove a candidate from a project"
              },
              "candidate_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the candidate"
              },
              "project_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the project"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "candidate_id",
              "project_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_project_candidate_ids"
                ],
                "description": "List all candidate IDs belonging to a project"
              },
              "project_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the project"
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor for fetching subsequent pages"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_all_candidates_with_projects"
                ],
                "description": "Paginate all candidates, fetch all projects, and enrich each candidate with their project associations"
              },
              "concurrency": {
                "type": "number",
                "minimum": 1,
                "maximum": 50,
                "default": 10,
                "description": "Max concurrent candidate.listProjects requests (1-50, default: 10)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_candidates"
                ],
                "description": "List candidates operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "candidates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique candidate identifier (UUID)"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "ISO 8601 creation timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "ISO 8601 update timestamp"
                    },
                    "name": {
                      "type": "string",
                      "description": "Full name of the candidate"
                    },
                    "primaryEmailAddress": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string",
                          "description": "Email address value"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "Personal",
                            "Work",
                            "Other"
                          ],
                          "description": "Type of email"
                        },
                        "isPrimary": {
                          "type": "boolean",
                          "description": "Whether this is the primary email"
                        }
                      },
                      "required": [
                        "value",
                        "type",
                        "isPrimary"
                      ],
                      "additionalProperties": false,
                      "description": "Primary email address",
                      "nullable": true
                    },
                    "emailAddresses": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "type": "string",
                            "description": "Email address value"
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "Personal",
                              "Work",
                              "Other"
                            ],
                            "description": "Type of email"
                          },
                          "isPrimary": {
                            "type": "boolean",
                            "description": "Whether this is the primary email"
                          }
                        },
                        "required": [
                          "value",
                          "type",
                          "isPrimary"
                        ],
                        "additionalProperties": false,
                        "description": "Email address information"
                      },
                      "description": "All email addresses"
                    },
                    "primaryPhoneNumber": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string",
                          "description": "Phone number value"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "Personal",
                            "Work",
                            "Other"
                          ],
                          "description": "Type of phone"
                        },
                        "isPrimary": {
                          "type": "boolean",
                          "description": "Whether this is the primary phone"
                        }
                      },
                      "required": [
                        "value",
                        "type",
                        "isPrimary"
                      ],
                      "additionalProperties": false,
                      "description": "Primary phone number",
                      "nullable": true
                    },
                    "phoneNumbers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "type": "string",
                            "description": "Phone number value"
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "Personal",
                              "Work",
                              "Other"
                            ],
                            "description": "Type of phone"
                          },
                          "isPrimary": {
                            "type": "boolean",
                            "description": "Whether this is the primary phone"
                          }
                        },
                        "required": [
                          "value",
                          "type",
                          "isPrimary"
                        ],
                        "additionalProperties": false,
                        "description": "Phone number information"
                      },
                      "description": "All phone numbers"
                    },
                    "socialLinks": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "description": "Social link URL"
                          },
                          "type": {
                            "type": "string",
                            "description": "Type of social link (e.g., LinkedIn, GitHub)"
                          }
                        },
                        "required": [
                          "url",
                          "type"
                        ],
                        "additionalProperties": false,
                        "description": "Social link information"
                      },
                      "description": "Social media links"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Tag ID"
                          },
                          "title": {
                            "type": "string",
                            "description": "Tag title"
                          },
                          "isArchived": {
                            "type": "boolean",
                            "description": "Whether the tag is archived"
                          }
                        },
                        "required": [
                          "id",
                          "title"
                        ],
                        "additionalProperties": false,
                        "description": "Tag information"
                      },
                      "description": "Tags assigned to candidate"
                    },
                    "position": {
                      "type": "string",
                      "nullable": true,
                      "description": "Current position"
                    },
                    "company": {
                      "type": "string",
                      "nullable": true,
                      "description": "Current company"
                    },
                    "school": {
                      "type": "string",
                      "nullable": true,
                      "description": "School"
                    },
                    "applicationIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "IDs of applications for this candidate"
                    },
                    "resumeFileHandle": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "File ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "File name"
                        },
                        "handle": {
                          "type": "string",
                          "description": "File handle for download"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "handle"
                      ],
                      "additionalProperties": false,
                      "description": "Resume file handle",
                      "nullable": true
                    },
                    "fileHandles": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "File ID"
                          },
                          "name": {
                            "type": "string",
                            "description": "File name"
                          },
                          "handle": {
                            "type": "string",
                            "description": "File handle for download"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "handle"
                        ],
                        "additionalProperties": false,
                        "description": "File handle information"
                      },
                      "description": "All file handles"
                    },
                    "customFields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Custom field ID"
                          },
                          "title": {
                            "type": "string",
                            "description": "Custom field title"
                          },
                          "value": {
                            "description": "Custom field value"
                          },
                          "isPrivate": {
                            "type": "boolean",
                            "description": "Whether the field is private"
                          }
                        },
                        "required": [
                          "id",
                          "title"
                        ],
                        "additionalProperties": false,
                        "description": "Custom field information"
                      },
                      "description": "Custom field values"
                    },
                    "profileUrl": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL to the candidate profile in Ashby"
                    },
                    "source": {
                      "nullable": true,
                      "description": "Candidate source"
                    },
                    "creditedToUser": {
                      "nullable": true,
                      "description": "User credited for the candidate"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": false,
                  "description": "Ashby candidate list item"
                },
                "description": "List of candidates"
              },
              "next_cursor": {
                "type": "string",
                "description": "Cursor for fetching the next page of results"
              },
              "more_data_available": {
                "type": "boolean",
                "description": "Whether more data is available"
              },
              "sync_token": {
                "type": "string",
                "description": "Token for incremental sync"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_candidate"
                ],
                "description": "Get candidate operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "candidate": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique candidate identifier (UUID)"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  },
                  "name": {
                    "type": "string",
                    "description": "Full name of the candidate"
                  },
                  "primaryEmailAddress": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Email address value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of email"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary email"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary email address",
                    "nullable": true
                  },
                  "primaryPhoneNumber": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Phone number value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of phone"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary phone"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary phone number",
                    "nullable": true
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "Candidate details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_candidate"
                ],
                "description": "Create candidate operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "candidate": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique candidate identifier (UUID)"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  },
                  "name": {
                    "type": "string",
                    "description": "Full name of the candidate"
                  },
                  "primaryEmailAddress": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Email address value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of email"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary email"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary email address",
                    "nullable": true
                  },
                  "primaryPhoneNumber": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Phone number value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of phone"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary phone"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary phone number",
                    "nullable": true
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "Created candidate details (or existing candidate if duplicate was found)"
              },
              "duplicate": {
                "type": "boolean",
                "description": "True if a candidate with the same LinkedIn profile already existed and was returned instead of creating a new one"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_candidates"
                ],
                "description": "Search candidates operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "candidates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique candidate identifier (UUID)"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "ISO 8601 creation timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "ISO 8601 update timestamp"
                    },
                    "name": {
                      "type": "string",
                      "description": "Full name of the candidate"
                    },
                    "primaryEmailAddress": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string",
                          "description": "Email address value"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "Personal",
                            "Work",
                            "Other"
                          ],
                          "description": "Type of email"
                        },
                        "isPrimary": {
                          "type": "boolean",
                          "description": "Whether this is the primary email"
                        }
                      },
                      "required": [
                        "value",
                        "type",
                        "isPrimary"
                      ],
                      "additionalProperties": false,
                      "description": "Primary email address",
                      "nullable": true
                    },
                    "primaryPhoneNumber": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string",
                          "description": "Phone number value"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "Personal",
                            "Work",
                            "Other"
                          ],
                          "description": "Type of phone"
                        },
                        "isPrimary": {
                          "type": "boolean",
                          "description": "Whether this is the primary phone"
                        }
                      },
                      "required": [
                        "value",
                        "type",
                        "isPrimary"
                      ],
                      "additionalProperties": false,
                      "description": "Primary phone number",
                      "nullable": true
                    },
                    "customFields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Custom field ID"
                          },
                          "title": {
                            "type": "string",
                            "description": "Custom field title"
                          },
                          "value": {
                            "description": "Custom field value"
                          },
                          "isPrivate": {
                            "type": "boolean",
                            "description": "Whether the field is private"
                          }
                        },
                        "required": [
                          "id",
                          "title"
                        ],
                        "additionalProperties": false,
                        "description": "Custom field information"
                      },
                      "description": "Custom field values"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": false,
                  "description": "Ashby candidate record"
                },
                "description": "List of matching candidates"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_tag"
                ],
                "description": "Add tag operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "candidate": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique candidate identifier (UUID)"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  },
                  "name": {
                    "type": "string",
                    "description": "Full name of the candidate"
                  },
                  "primaryEmailAddress": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Email address value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of email"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary email"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary email address",
                    "nullable": true
                  },
                  "primaryPhoneNumber": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Phone number value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of phone"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary phone"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary phone number",
                    "nullable": true
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "Updated candidate details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tags"
                ],
                "description": "List tags operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Tag ID"
                    },
                    "title": {
                      "type": "string",
                      "description": "Tag title"
                    },
                    "isArchived": {
                      "type": "boolean",
                      "description": "Whether the tag is archived"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Tag information"
                },
                "description": "List of candidate tags"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_tag"
                ],
                "description": "Create tag operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "tag": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Tag ID"
                  },
                  "title": {
                    "type": "string",
                    "description": "Tag title"
                  },
                  "isArchived": {
                    "type": "boolean",
                    "description": "Whether the tag is archived"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false,
                "description": "Created tag details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_custom_fields"
                ],
                "description": "List custom fields operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "custom_fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Custom field ID (UUID)"
                    },
                    "isPrivate": {
                      "type": "boolean",
                      "description": "Whether the field is private"
                    },
                    "title": {
                      "type": "string",
                      "description": "Custom field title"
                    },
                    "objectType": {
                      "type": "string",
                      "description": "Object type this field applies to (e.g., Application, Candidate)"
                    },
                    "isArchived": {
                      "type": "boolean",
                      "description": "Whether the field is archived"
                    },
                    "fieldType": {
                      "type": "string",
                      "description": "Type of field (e.g., MultiValueSelect, String, Number)"
                    },
                    "selectableValues": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "label": {
                            "type": "string",
                            "description": "Display label for the value"
                          },
                          "value": {
                            "type": "string",
                            "description": "Value identifier"
                          },
                          "isArchived": {
                            "type": "boolean",
                            "description": "Whether the value is archived"
                          }
                        },
                        "required": [
                          "label",
                          "value",
                          "isArchived"
                        ],
                        "additionalProperties": false,
                        "description": "Selectable value for custom field"
                      },
                      "description": "Available values for select-type fields"
                    }
                  },
                  "required": [
                    "id",
                    "isPrivate",
                    "title",
                    "objectType",
                    "isArchived",
                    "fieldType"
                  ],
                  "additionalProperties": false,
                  "description": "Custom field definition"
                },
                "description": "List of custom field definitions"
              },
              "next_cursor": {
                "type": "string",
                "description": "Cursor for fetching the next page of results"
              },
              "more_data_available": {
                "type": "boolean",
                "description": "Whether more data is available"
              },
              "sync_token": {
                "type": "string",
                "description": "Token for incremental sync"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_jobs"
                ],
                "description": "List jobs operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "jobs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique job identifier (UUID)"
                    },
                    "title": {
                      "type": "string",
                      "description": "Job title"
                    },
                    "status": {
                      "type": "string",
                      "description": "Job status (e.g., Open, Closed, Draft, Archived)"
                    },
                    "departmentId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Department ID"
                    },
                    "teamId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Team ID"
                    },
                    "locationId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Location ID"
                    },
                    "locationIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Location IDs"
                    },
                    "customFields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Custom field ID"
                          },
                          "title": {
                            "type": "string",
                            "description": "Custom field title"
                          },
                          "value": {
                            "description": "Custom field value"
                          },
                          "isPrivate": {
                            "type": "boolean",
                            "description": "Whether the field is private"
                          }
                        },
                        "required": [
                          "id",
                          "title"
                        ],
                        "additionalProperties": false,
                        "description": "Custom field information"
                      },
                      "description": "Custom field values"
                    },
                    "openedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 opened timestamp"
                    },
                    "closedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 closed timestamp"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "ISO 8601 creation timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "ISO 8601 update timestamp"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Ashby job record"
                },
                "description": "List of jobs"
              },
              "next_cursor": {
                "type": "string",
                "description": "Cursor for next page"
              },
              "more_data_available": {
                "type": "boolean",
                "description": "Whether more data is available"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_job"
                ],
                "description": "Get job operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "job": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique job identifier (UUID)"
                  },
                  "title": {
                    "type": "string",
                    "description": "Job title"
                  },
                  "status": {
                    "type": "string",
                    "description": "Job status (e.g., Open, Closed, Draft, Archived)"
                  },
                  "departmentId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Department ID"
                  },
                  "teamId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Team ID"
                  },
                  "locationId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Location ID"
                  },
                  "locationIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Location IDs"
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  },
                  "openedAt": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO 8601 opened timestamp"
                  },
                  "closedAt": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO 8601 closed timestamp"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false,
                "description": "Job details"
              },
              "interview_stages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Interview stage ID (UUID)"
                    },
                    "title": {
                      "type": "string",
                      "description": "Stage title"
                    },
                    "type": {
                      "type": "string",
                      "description": "Stage type (e.g., PreInterviewScreen, IndividualInterview)"
                    },
                    "orderInInterviewPlan": {
                      "type": "number",
                      "description": "Order in the interview plan"
                    },
                    "interviewPlanId": {
                      "type": "string",
                      "description": "Interview plan ID"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Interview stage"
                },
                "description": "Interview stages for this job"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_applications"
                ],
                "description": "List applications operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "applications": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique application identifier (UUID)"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "ISO 8601 creation timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "ISO 8601 update timestamp"
                    },
                    "status": {
                      "type": "string",
                      "description": "Application status (Active, Hired, Archived, Lead)"
                    },
                    "candidateId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Candidate ID"
                    },
                    "jobId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Job ID"
                    },
                    "currentInterviewStage": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Interview stage ID (UUID)"
                        },
                        "title": {
                          "type": "string",
                          "description": "Stage title"
                        },
                        "type": {
                          "type": "string",
                          "description": "Stage type (e.g., PreInterviewScreen, IndividualInterview)"
                        },
                        "orderInInterviewPlan": {
                          "type": "number",
                          "description": "Order in the interview plan"
                        },
                        "interviewPlanId": {
                          "type": "string",
                          "description": "Interview plan ID"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Current interview stage",
                      "nullable": true
                    },
                    "source": {
                      "nullable": true,
                      "description": "Application source"
                    },
                    "archiveReason": {
                      "nullable": true,
                      "description": "Archive reason if archived"
                    },
                    "customFields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Custom field ID"
                          },
                          "title": {
                            "type": "string",
                            "description": "Custom field title"
                          },
                          "value": {
                            "description": "Custom field value"
                          },
                          "isPrivate": {
                            "type": "boolean",
                            "description": "Whether the field is private"
                          }
                        },
                        "required": [
                          "id",
                          "title"
                        ],
                        "additionalProperties": false,
                        "description": "Custom field information"
                      },
                      "description": "Custom field values"
                    },
                    "hiringTeam": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "userId": {
                            "type": "string",
                            "description": "Team member user ID"
                          },
                          "role": {
                            "type": "string",
                            "description": "Role in hiring team"
                          },
                          "email": {
                            "type": "string",
                            "description": "Team member email"
                          },
                          "firstName": {
                            "type": "string",
                            "description": "First name"
                          },
                          "lastName": {
                            "type": "string",
                            "description": "Last name"
                          }
                        },
                        "required": [
                          "userId",
                          "role"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Hiring team members"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "Ashby application record"
                },
                "description": "List of applications"
              },
              "next_cursor": {
                "type": "string",
                "description": "Cursor for next page"
              },
              "more_data_available": {
                "type": "boolean",
                "description": "Whether more data is available"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_application"
                ],
                "description": "Get application operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "application": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique application identifier (UUID)"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  },
                  "status": {
                    "type": "string",
                    "description": "Application status (Active, Hired, Archived, Lead)"
                  },
                  "candidateId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Candidate ID"
                  },
                  "jobId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Job ID"
                  },
                  "currentInterviewStage": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Interview stage ID (UUID)"
                      },
                      "title": {
                        "type": "string",
                        "description": "Stage title"
                      },
                      "type": {
                        "type": "string",
                        "description": "Stage type (e.g., PreInterviewScreen, IndividualInterview)"
                      },
                      "orderInInterviewPlan": {
                        "type": "number",
                        "description": "Order in the interview plan"
                      },
                      "interviewPlanId": {
                        "type": "string",
                        "description": "Interview plan ID"
                      }
                    },
                    "required": [
                      "id",
                      "title"
                    ],
                    "additionalProperties": false,
                    "description": "Current interview stage",
                    "nullable": true
                  },
                  "source": {
                    "nullable": true,
                    "description": "Application source"
                  },
                  "archiveReason": {
                    "nullable": true,
                    "description": "Archive reason if archived"
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  },
                  "hiringTeam": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "userId": {
                          "type": "string",
                          "description": "Team member user ID"
                        },
                        "role": {
                          "type": "string",
                          "description": "Role in hiring team"
                        },
                        "email": {
                          "type": "string",
                          "description": "Team member email"
                        },
                        "firstName": {
                          "type": "string",
                          "description": "First name"
                        },
                        "lastName": {
                          "type": "string",
                          "description": "Last name"
                        }
                      },
                      "required": [
                        "userId",
                        "role"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Hiring team members"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Application details"
              },
              "candidate": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique candidate identifier (UUID)"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  },
                  "name": {
                    "type": "string",
                    "description": "Full name of the candidate"
                  },
                  "primaryEmailAddress": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Email address value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of email"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary email"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary email address",
                    "nullable": true
                  },
                  "primaryPhoneNumber": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Phone number value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of phone"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary phone"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary phone number",
                    "nullable": true
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "Associated candidate"
              },
              "job": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique job identifier (UUID)"
                  },
                  "title": {
                    "type": "string",
                    "description": "Job title"
                  },
                  "status": {
                    "type": "string",
                    "description": "Job status (e.g., Open, Closed, Draft, Archived)"
                  },
                  "departmentId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Department ID"
                  },
                  "teamId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Team ID"
                  },
                  "locationId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Location ID"
                  },
                  "locationIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Location IDs"
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  },
                  "openedAt": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO 8601 opened timestamp"
                  },
                  "closedAt": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO 8601 closed timestamp"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false,
                "description": "Associated job"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_application"
                ],
                "description": "Create application operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "application": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique application identifier (UUID)"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  },
                  "status": {
                    "type": "string",
                    "description": "Application status (Active, Hired, Archived, Lead)"
                  },
                  "candidateId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Candidate ID"
                  },
                  "jobId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Job ID"
                  },
                  "currentInterviewStage": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Interview stage ID (UUID)"
                      },
                      "title": {
                        "type": "string",
                        "description": "Stage title"
                      },
                      "type": {
                        "type": "string",
                        "description": "Stage type (e.g., PreInterviewScreen, IndividualInterview)"
                      },
                      "orderInInterviewPlan": {
                        "type": "number",
                        "description": "Order in the interview plan"
                      },
                      "interviewPlanId": {
                        "type": "string",
                        "description": "Interview plan ID"
                      }
                    },
                    "required": [
                      "id",
                      "title"
                    ],
                    "additionalProperties": false,
                    "description": "Current interview stage",
                    "nullable": true
                  },
                  "source": {
                    "nullable": true,
                    "description": "Application source"
                  },
                  "archiveReason": {
                    "nullable": true,
                    "description": "Archive reason if archived"
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  },
                  "hiringTeam": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "userId": {
                          "type": "string",
                          "description": "Team member user ID"
                        },
                        "role": {
                          "type": "string",
                          "description": "Role in hiring team"
                        },
                        "email": {
                          "type": "string",
                          "description": "Team member email"
                        },
                        "firstName": {
                          "type": "string",
                          "description": "First name"
                        },
                        "lastName": {
                          "type": "string",
                          "description": "Last name"
                        }
                      },
                      "required": [
                        "userId",
                        "role"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Hiring team members"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Created application"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "change_application_stage"
                ],
                "description": "Change application stage operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "application": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique application identifier (UUID)"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  },
                  "status": {
                    "type": "string",
                    "description": "Application status (Active, Hired, Archived, Lead)"
                  },
                  "candidateId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Candidate ID"
                  },
                  "jobId": {
                    "type": "string",
                    "nullable": true,
                    "description": "Job ID"
                  },
                  "currentInterviewStage": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Interview stage ID (UUID)"
                      },
                      "title": {
                        "type": "string",
                        "description": "Stage title"
                      },
                      "type": {
                        "type": "string",
                        "description": "Stage type (e.g., PreInterviewScreen, IndividualInterview)"
                      },
                      "orderInInterviewPlan": {
                        "type": "number",
                        "description": "Order in the interview plan"
                      },
                      "interviewPlanId": {
                        "type": "string",
                        "description": "Interview plan ID"
                      }
                    },
                    "required": [
                      "id",
                      "title"
                    ],
                    "additionalProperties": false,
                    "description": "Current interview stage",
                    "nullable": true
                  },
                  "source": {
                    "nullable": true,
                    "description": "Application source"
                  },
                  "archiveReason": {
                    "nullable": true,
                    "description": "Archive reason if archived"
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  },
                  "hiringTeam": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "userId": {
                          "type": "string",
                          "description": "Team member user ID"
                        },
                        "role": {
                          "type": "string",
                          "description": "Role in hiring team"
                        },
                        "email": {
                          "type": "string",
                          "description": "Team member email"
                        },
                        "firstName": {
                          "type": "string",
                          "description": "First name"
                        },
                        "lastName": {
                          "type": "string",
                          "description": "Last name"
                        }
                      },
                      "required": [
                        "userId",
                        "role"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Hiring team members"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Updated application"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_candidate"
                ],
                "description": "Update candidate operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "candidate": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique candidate identifier (UUID)"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "ISO 8601 update timestamp"
                  },
                  "name": {
                    "type": "string",
                    "description": "Full name of the candidate"
                  },
                  "primaryEmailAddress": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Email address value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of email"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary email"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary email address",
                    "nullable": true
                  },
                  "primaryPhoneNumber": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string",
                        "description": "Phone number value"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Personal",
                          "Work",
                          "Other"
                        ],
                        "description": "Type of phone"
                      },
                      "isPrimary": {
                        "type": "boolean",
                        "description": "Whether this is the primary phone"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "isPrimary"
                    ],
                    "additionalProperties": false,
                    "description": "Primary phone number",
                    "nullable": true
                  },
                  "customFields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Custom field ID"
                        },
                        "title": {
                          "type": "string",
                          "description": "Custom field title"
                        },
                        "value": {
                          "description": "Custom field value"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "Whether the field is private"
                        }
                      },
                      "required": [
                        "id",
                        "title"
                      ],
                      "additionalProperties": false,
                      "description": "Custom field information"
                    },
                    "description": "Custom field values"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "Updated candidate"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_note"
                ],
                "description": "Create note operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "note": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Note ID (UUID)"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "content": {
                    "type": "string",
                    "description": "Note content (HTML)"
                  },
                  "author": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Author user ID"
                      },
                      "firstName": {
                        "type": "string",
                        "description": "Author first name"
                      },
                      "lastName": {
                        "type": "string",
                        "description": "Author last name"
                      },
                      "email": {
                        "type": "string",
                        "description": "Author email"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "additionalProperties": false,
                    "nullable": true,
                    "description": "Note author"
                  }
                },
                "required": [
                  "id",
                  "content"
                ],
                "additionalProperties": false,
                "description": "Created note"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_notes"
                ],
                "description": "List notes operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "notes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Note ID (UUID)"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "ISO 8601 creation timestamp"
                    },
                    "content": {
                      "type": "string",
                      "description": "Note content (HTML)"
                    },
                    "author": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Author user ID"
                        },
                        "firstName": {
                          "type": "string",
                          "description": "Author first name"
                        },
                        "lastName": {
                          "type": "string",
                          "description": "Author last name"
                        },
                        "email": {
                          "type": "string",
                          "description": "Author email"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": false,
                      "nullable": true,
                      "description": "Note author"
                    }
                  },
                  "required": [
                    "id",
                    "content"
                  ],
                  "additionalProperties": false,
                  "description": "Candidate note"
                },
                "description": "List of notes"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_sources"
                ],
                "description": "List sources operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "sources": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Source ID (UUID)"
                    },
                    "title": {
                      "type": "string",
                      "description": "Source title"
                    },
                    "isArchived": {
                      "type": "boolean",
                      "description": "Whether the source is archived"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Candidate source"
                },
                "description": "List of sources"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_interview_stages"
                ],
                "description": "List interview stages operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "interview_stages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Interview stage ID (UUID)"
                    },
                    "title": {
                      "type": "string",
                      "description": "Stage title"
                    },
                    "type": {
                      "type": "string",
                      "description": "Stage type (e.g., PreInterviewScreen, IndividualInterview)"
                    },
                    "orderInInterviewPlan": {
                      "type": "number",
                      "description": "Order in the interview plan"
                    },
                    "interviewPlanId": {
                      "type": "string",
                      "description": "Interview plan ID"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Interview stage"
                },
                "description": "List of interview stages"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_file_url"
                ],
                "description": "Get file URL operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "file": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "File ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "File name"
                  },
                  "url": {
                    "type": "string",
                    "description": "Temporary download URL"
                  }
                },
                "required": [
                  "url"
                ],
                "additionalProperties": false,
                "description": "File info with download URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ],
                "description": "List projects operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "projects": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Project ID (UUID)"
                    },
                    "title": {
                      "type": "string",
                      "description": "Project title"
                    },
                    "isArchived": {
                      "type": "boolean",
                      "description": "Whether the project is archived"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Ashby project"
                },
                "description": "List of projects"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_project"
                ],
                "description": "Get project operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "project": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Project ID (UUID)"
                  },
                  "title": {
                    "type": "string",
                    "description": "Project title"
                  },
                  "isArchived": {
                    "type": "boolean",
                    "description": "Whether the project is archived"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false,
                "description": "Project details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_candidate_projects"
                ],
                "description": "List candidate projects operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "projects": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Project ID (UUID)"
                    },
                    "title": {
                      "type": "string",
                      "description": "Project title"
                    },
                    "isArchived": {
                      "type": "boolean",
                      "description": "Whether the project is archived"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Ashby project"
                },
                "description": "Projects the candidate belongs to"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_candidate_to_project"
                ],
                "description": "Add candidate to project operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_candidate_from_project"
                ],
                "description": "Remove candidate from project operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_project_candidate_ids"
                ],
                "description": "List project candidate IDs operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "candidate_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Candidate IDs belonging to this project"
              },
              "next_cursor": {
                "type": "string",
                "description": "Cursor for fetching the next page of results"
              },
              "more_data_available": {
                "type": "boolean",
                "description": "Whether more data is available"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_all_candidates_with_projects"
                ],
                "description": "Get all candidates with projects operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "candidates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique candidate identifier (UUID)"
                    },
                    "name": {
                      "type": "string",
                      "description": "Full name of the candidate"
                    },
                    "email": {
                      "type": "string",
                      "nullable": true,
                      "description": "Primary email address or null"
                    },
                    "phone": {
                      "type": "string",
                      "nullable": true,
                      "description": "Primary phone number or null"
                    },
                    "linkedinUrl": {
                      "type": "string",
                      "nullable": true,
                      "description": "LinkedIn profile URL or null"
                    },
                    "position": {
                      "type": "string",
                      "nullable": true,
                      "description": "Current position or null"
                    },
                    "company": {
                      "type": "string",
                      "nullable": true,
                      "description": "Current company or null"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Tag titles assigned to candidate"
                    },
                    "projectIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "IDs of projects the candidate belongs to"
                    },
                    "projectNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Names of projects the candidate belongs to"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "email",
                    "phone",
                    "linkedinUrl",
                    "position",
                    "company",
                    "tags",
                    "projectIds",
                    "projectNames"
                  ],
                  "additionalProperties": false,
                  "description": "Candidate enriched with project associations"
                },
                "description": "All candidates enriched with project associations"
              },
              "projects": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Project ID (UUID)"
                    },
                    "title": {
                      "type": "string",
                      "description": "Project title"
                    },
                    "isArchived": {
                      "type": "boolean",
                      "description": "Whether the project is archived"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Ashby project"
                },
                "description": "All projects in Ashby"
              },
              "total_candidates": {
                "type": "number",
                "description": "Total number of candidates fetched"
              },
              "total_enriched": {
                "type": "number",
                "description": "Number of candidates successfully enriched"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Candidates example\nconst ashby_list_candidates = new AshbyBubble({\n  operation: \"list_candidates\", // List all candidates with optional filtering\n  limit: 100 // default, // Maximum number of candidates to return (1-100)\n  cursor: \"example string\", // Pagination cursor for fetching subsequent pages\n  status: \"Hired\" // options: \"Hired\", \"Archived\", \"Active\", \"Lead\", // Filter candidates by application status\n  job_id: \"example string\", // Filter candidates by specific job ID\n  created_after: 42, // Unix timestamp in milliseconds to filter candidates created after this time\n});\n\nconst result = await ashby_list_candidates.action();\n// outputSchema for result.data when operation === 'list_candidates':\n// {\n//   operation: \"list_candidates\" // List candidates operation,\n//   success: boolean // Whether the operation was successful,\n//   candidates: { id: string // Unique candidate identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, name: string // Full name of the candidate, primaryEmailAddress: { value: string // Email address value, type: \"Personal\" | \"Work\" | \"Other\" // Type of email, isPrimary: boolean // Whether this is the primary email } | undefined | null // Primary email address, emailAddresses: { value: string // Email address value, type: \"Personal\" | \"Work\" | \"Other\" // Type of email, isPrimary: boolean // Whether this is the primary email }[] | undefined // All email addresses, primaryPhoneNumber: { value: string // Phone number value, type: \"Personal\" | \"Work\" | \"Other\" // Type of phone, isPrimary: boolean // Whether this is the primary phone } | undefined | null // Primary phone number, phoneNumbers: { value: string // Phone number value, type: \"Personal\" | \"Work\" | \"Other\" // Type of phone, isPrimary: boolean // Whether this is the primary phone }[] | undefined // All phone numbers, socialLinks: { url: string // Social link URL, type: string // Type of social link (e.g., LinkedIn, GitHub) }[] | undefined // Social media links, tags: { id: string // Tag ID, title: string // Tag title, isArchived: boolean | undefined // Whether the tag is archived }[] | undefined // Tags assigned to candidate, position: string | undefined | null // Current position, company: string | undefined | null // Current company, school: string | undefined | null // School, applicationIds: string[] | undefined // IDs of applications for this candidate, resumeFileHandle: { id: string // File ID, name: string // File name, handle: string // File handle for download } | undefined | null // Resume file handle, fileHandles: { id: string // File ID, name: string // File name, handle: string // File handle for download }[] | undefined // All file handles, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values, profileUrl: string | undefined | null // URL to the candidate profile in Ashby, source: unknown | undefined | null // Candidate source, creditedToUser: unknown | undefined | null // User credited for the candidate }[] | undefined // List of candidates,\n//   next_cursor: string | undefined // Cursor for fetching the next page of results,\n//   more_data_available: boolean | undefined // Whether more data is available,\n//   sync_token: string | undefined // Token for incremental sync,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Candidate example\nconst ashby_get_candidate = new AshbyBubble({\n  operation: \"get_candidate\", // Get detailed information about a specific candidate\n  candidate_id: \"example string\", // UUID of the candidate to retrieve\n});\n\nconst result = await ashby_get_candidate.action();\n// outputSchema for result.data when operation === 'get_candidate':\n// {\n//   operation: \"get_candidate\" // Get candidate operation,\n//   success: boolean // Whether the operation was successful,\n//   candidate: { id: string // Unique candidate identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, name: string // Full name of the candidate, primaryEmailAddress: { value: string // Email address value, type: \"Personal\" | \"Work\" | \"Other\" // Type of email, isPrimary: boolean // Whether this is the primary email } | undefined | null // Primary email address, primaryPhoneNumber: { value: string // Phone number value, type: \"Personal\" | \"Work\" | \"Other\" // Type of phone, isPrimary: boolean // Whether this is the primary phone } | undefined | null // Primary phone number, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values } | undefined // Candidate details,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Candidate example\nconst ashby_create_candidate = new AshbyBubble({\n  operation: \"create_candidate\", // Create a new candidate\n  name: \"example string\", // Candidate's full name (first and last name)\n  emails: [{ email: \"example string\" // Email address, type: \"Personal\" // options: \"Personal\", \"Work\", \"Other\" // Type of email (Personal, Work, or Other) }], // Candidate's email addresses with type. The Personal email becomes the primary email, others become alternates.\n  phone_number: \"example string\", // Candidate's primary phone number\n  linkedin_url: \"example string\", // URL to the candidate's LinkedIn profile\n  github_url: \"example string\", // URL to the candidate's GitHub profile\n  website: \"example string\", // URL of the candidate's website\n  source_id: \"example string\", // The source ID to set on the candidate\n  credited_to_user_id: \"example string\", // The ID of the user the candidate will be credited to\n  tag: \"example string\", // Optional tag to add to the candidate. Can be a tag ID (UUID) or tag name. If a name is provided, the tag will be created first.\n  allow_duplicate_linkedin: false // default, // Whether to allow creating a candidate with a LinkedIn URL that already exists. When false (default), the existing candidate is returned instead of creating a duplicate.\n});\n\nconst result = await ashby_create_candidate.action();\n// outputSchema for result.data when operation === 'create_candidate':\n// {\n//   operation: \"create_candidate\" // Create candidate operation,\n//   success: boolean // Whether the operation was successful,\n//   candidate: { id: string // Unique candidate identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, name: string // Full name of the candidate, primaryEmailAddress: { value: string // Email address value, type: \"Personal\" | \"Work\" | \"Other\" // Type of email, isPrimary: boolean // Whether this is the primary email } | undefined | null // Primary email address, primaryPhoneNumber: { value: string // Phone number value, type: \"Personal\" | \"Work\" | \"Other\" // Type of phone, isPrimary: boolean // Whether this is the primary phone } | undefined | null // Primary phone number, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values } | undefined // Created candidate details (or existing candidate if duplicate was found),\n//   duplicate: boolean | undefined // True if a candidate with the same LinkedIn profile already existed and was returned instead of creating a new one,\n//   error: string // Error message if operation failed\n// }\n\n\n// Search Candidates example\nconst ashby_search_candidates = new AshbyBubble({\n  operation: \"search_candidates\", // Search for candidates by email or name\n  email: \"example string\", // Search by candidate email address\n  name: \"example string\", // Search by candidate name\n});\n\nconst result = await ashby_search_candidates.action();\n// outputSchema for result.data when operation === 'search_candidates':\n// {\n//   operation: \"search_candidates\" // Search candidates operation,\n//   success: boolean // Whether the operation was successful,\n//   candidates: { id: string // Unique candidate identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, name: string // Full name of the candidate, primaryEmailAddress: { value: string // Email address value, type: \"Personal\" | \"Work\" | \"Other\" // Type of email, isPrimary: boolean // Whether this is the primary email } | undefined | null // Primary email address, primaryPhoneNumber: { value: string // Phone number value, type: \"Personal\" | \"Work\" | \"Other\" // Type of phone, isPrimary: boolean // Whether this is the primary phone } | undefined | null // Primary phone number, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values }[] | undefined // List of matching candidates,\n//   error: string // Error message if operation failed\n// }\n\n\n// Add Tag example\nconst ashby_add_tag = new AshbyBubble({\n  operation: \"add_tag\", // Add a tag to a candidate\n  candidate_id: \"example string\", // UUID of the candidate\n  tag_id: \"example string\", // UUID of the tag to add\n});\n\nconst result = await ashby_add_tag.action();\n// outputSchema for result.data when operation === 'add_tag':\n// {\n//   operation: \"add_tag\" // Add tag operation,\n//   success: boolean // Whether the operation was successful,\n//   candidate: { id: string // Unique candidate identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, name: string // Full name of the candidate, primaryEmailAddress: { value: string // Email address value, type: \"Personal\" | \"Work\" | \"Other\" // Type of email, isPrimary: boolean // Whether this is the primary email } | undefined | null // Primary email address, primaryPhoneNumber: { value: string // Phone number value, type: \"Personal\" | \"Work\" | \"Other\" // Type of phone, isPrimary: boolean // Whether this is the primary phone } | undefined | null // Primary phone number, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values } | undefined // Updated candidate details,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Tags example\nconst ashby_list_tags = new AshbyBubble({\n  operation: \"list_tags\", // List all candidate tags\n  include_archived: false // default, // Whether to include archived tags\n});\n\nconst result = await ashby_list_tags.action();\n// outputSchema for result.data when operation === 'list_tags':\n// {\n//   operation: \"list_tags\" // List tags operation,\n//   success: boolean // Whether the operation was successful,\n//   tags: { id: string // Tag ID, title: string // Tag title, isArchived: boolean | undefined // Whether the tag is archived }[] | undefined // List of candidate tags,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Tag example\nconst ashby_create_tag = new AshbyBubble({\n  operation: \"create_tag\", // Create a new candidate tag\n  title: \"example string\", // Title of the tag to create\n});\n\nconst result = await ashby_create_tag.action();\n// outputSchema for result.data when operation === 'create_tag':\n// {\n//   operation: \"create_tag\" // Create tag operation,\n//   success: boolean // Whether the operation was successful,\n//   tag: { id: string // Tag ID, title: string // Tag title, isArchived: boolean | undefined // Whether the tag is archived } | undefined // Created tag details,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Custom Fields example\nconst ashby_list_custom_fields = new AshbyBubble({\n  operation: \"list_custom_fields\", // List all custom field definitions\n  limit: 100 // default, // Maximum number of custom fields to return (1-100)\n  cursor: \"example string\", // Pagination cursor for fetching subsequent pages\n  sync_token: \"example string\", // Token for incremental synchronization\n});\n\nconst result = await ashby_list_custom_fields.action();\n// outputSchema for result.data when operation === 'list_custom_fields':\n// {\n//   operation: \"list_custom_fields\" // List custom fields operation,\n//   success: boolean // Whether the operation was successful,\n//   custom_fields: { id: string // Custom field ID (UUID), isPrivate: boolean // Whether the field is private, title: string // Custom field title, objectType: string // Object type this field applies to (e.g., Application, Candidate), isArchived: boolean // Whether the field is archived, fieldType: string // Type of field (e.g., MultiValueSelect, String, Number), selectableValues: { label: string // Display label for the value, value: string // Value identifier, isArchived: boolean // Whether the value is archived }[] | undefined // Available values for select-type fields }[] | undefined // List of custom field definitions,\n//   next_cursor: string | undefined // Cursor for fetching the next page of results,\n//   more_data_available: boolean | undefined // Whether more data is available,\n//   sync_token: string | undefined // Token for incremental sync,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Jobs example\nconst ashby_list_jobs = new AshbyBubble({\n  operation: \"list_jobs\", // List all jobs\n  limit: 100 // default, // Maximum number of jobs to return (1-100)\n  cursor: \"example string\", // Pagination cursor for fetching subsequent pages\n  status: \"Open\" // options: \"Open\", \"Closed\", \"Draft\", \"Archived\", // Filter jobs by status\n});\n\nconst result = await ashby_list_jobs.action();\n// outputSchema for result.data when operation === 'list_jobs':\n// {\n//   operation: \"list_jobs\" // List jobs operation,\n//   success: boolean // Whether the operation was successful,\n//   jobs: { id: string // Unique job identifier (UUID), title: string // Job title, status: string | undefined // Job status (e.g., Open, Closed, Draft, Archived), departmentId: string | undefined | null // Department ID, teamId: string | undefined | null // Team ID, locationId: string | undefined | null // Location ID, locationIds: string[] | undefined // Location IDs, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values, openedAt: string | undefined | null // ISO 8601 opened timestamp, closedAt: string | undefined | null // ISO 8601 closed timestamp, createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp }[] | undefined // List of jobs,\n//   next_cursor: string | undefined // Cursor for next page,\n//   more_data_available: boolean | undefined // Whether more data is available,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Job example\nconst ashby_get_job = new AshbyBubble({\n  operation: \"get_job\", // Get detailed information about a specific job\n  job_id: \"example string\", // UUID of the job to retrieve\n});\n\nconst result = await ashby_get_job.action();\n// outputSchema for result.data when operation === 'get_job':\n// {\n//   operation: \"get_job\" // Get job operation,\n//   success: boolean // Whether the operation was successful,\n//   job: { id: string // Unique job identifier (UUID), title: string // Job title, status: string | undefined // Job status (e.g., Open, Closed, Draft, Archived), departmentId: string | undefined | null // Department ID, teamId: string | undefined | null // Team ID, locationId: string | undefined | null // Location ID, locationIds: string[] | undefined // Location IDs, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values, openedAt: string | undefined | null // ISO 8601 opened timestamp, closedAt: string | undefined | null // ISO 8601 closed timestamp, createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp } | undefined // Job details,\n//   interview_stages: { id: string // Interview stage ID (UUID), title: string // Stage title, type: string | undefined // Stage type (e.g., PreInterviewScreen, IndividualInterview), orderInInterviewPlan: number | undefined // Order in the interview plan, interviewPlanId: string | undefined // Interview plan ID }[] | undefined // Interview stages for this job,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Applications example\nconst ashby_list_applications = new AshbyBubble({\n  operation: \"list_applications\", // List applications with optional filtering\n  candidate_id: \"example string\", // Filter by candidate ID\n  job_id: \"example string\", // Filter by job ID\n  status: \"Active\" // options: \"Active\", \"Hired\", \"Archived\", \"Lead\", // Filter by application status\n  limit: 100 // default, // Maximum number of applications to return (1-100)\n  cursor: \"example string\", // Pagination cursor for fetching subsequent pages\n  created_after: 42, // Unix timestamp in milliseconds — only return applications created after this time\n});\n\nconst result = await ashby_list_applications.action();\n// outputSchema for result.data when operation === 'list_applications':\n// {\n//   operation: \"list_applications\" // List applications operation,\n//   success: boolean // Whether the operation was successful,\n//   applications: { id: string // Unique application identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, status: string | undefined // Application status (Active, Hired, Archived, Lead), candidateId: string | undefined | null // Candidate ID, jobId: string | undefined | null // Job ID, currentInterviewStage: { id: string // Interview stage ID (UUID), title: string // Stage title, type: string | undefined // Stage type (e.g., PreInterviewScreen, IndividualInterview), orderInInterviewPlan: number | undefined // Order in the interview plan, interviewPlanId: string | undefined // Interview plan ID } | undefined | null // Current interview stage, source: unknown | undefined | null // Application source, archiveReason: unknown | undefined | null // Archive reason if archived, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values, hiringTeam: { userId: string // Team member user ID, role: string // Role in hiring team, email: string | undefined // Team member email, firstName: string | undefined // First name, lastName: string | undefined // Last name }[] | undefined // Hiring team members }[] | undefined // List of applications,\n//   next_cursor: string | undefined // Cursor for next page,\n//   more_data_available: boolean | undefined // Whether more data is available,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Application example\nconst ashby_get_application = new AshbyBubble({\n  operation: \"get_application\", // Get detailed information about a specific application\n  application_id: \"example string\", // UUID of the application to retrieve\n});\n\nconst result = await ashby_get_application.action();\n// outputSchema for result.data when operation === 'get_application':\n// {\n//   operation: \"get_application\" // Get application operation,\n//   success: boolean // Whether the operation was successful,\n//   application: { id: string // Unique application identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, status: string | undefined // Application status (Active, Hired, Archived, Lead), candidateId: string | undefined | null // Candidate ID, jobId: string | undefined | null // Job ID, currentInterviewStage: { id: string // Interview stage ID (UUID), title: string // Stage title, type: string | undefined // Stage type (e.g., PreInterviewScreen, IndividualInterview), orderInInterviewPlan: number | undefined // Order in the interview plan, interviewPlanId: string | undefined // Interview plan ID } | undefined | null // Current interview stage, source: unknown | undefined | null // Application source, archiveReason: unknown | undefined | null // Archive reason if archived, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values, hiringTeam: { userId: string // Team member user ID, role: string // Role in hiring team, email: string | undefined // Team member email, firstName: string | undefined // First name, lastName: string | undefined // Last name }[] | undefined // Hiring team members } | undefined // Application details,\n//   candidate: { id: string // Unique candidate identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, name: string // Full name of the candidate, primaryEmailAddress: { value: string // Email address value, type: \"Personal\" | \"Work\" | \"Other\" // Type of email, isPrimary: boolean // Whether this is the primary email } | undefined | null // Primary email address, primaryPhoneNumber: { value: string // Phone number value, type: \"Personal\" | \"Work\" | \"Other\" // Type of phone, isPrimary: boolean // Whether this is the primary phone } | undefined | null // Primary phone number, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values } | undefined // Associated candidate,\n//   job: { id: string // Unique job identifier (UUID), title: string // Job title, status: string | undefined // Job status (e.g., Open, Closed, Draft, Archived), departmentId: string | undefined | null // Department ID, teamId: string | undefined | null // Team ID, locationId: string | undefined | null // Location ID, locationIds: string[] | undefined // Location IDs, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values, openedAt: string | undefined | null // ISO 8601 opened timestamp, closedAt: string | undefined | null // ISO 8601 closed timestamp, createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp } | undefined // Associated job,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Application example\nconst ashby_create_application = new AshbyBubble({\n  operation: \"create_application\", // Submit a candidate to a job by creating an application\n  candidate_id: \"example string\", // UUID of the candidate\n  job_id: \"example string\", // UUID of the job to apply to\n  interview_stage_id: \"example string\", // Optional interview stage ID to start at\n  source_id: \"example string\", // Optional source ID to attribute the application to\n});\n\nconst result = await ashby_create_application.action();\n// outputSchema for result.data when operation === 'create_application':\n// {\n//   operation: \"create_application\" // Create application operation,\n//   success: boolean // Whether the operation was successful,\n//   application: { id: string // Unique application identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, status: string | undefined // Application status (Active, Hired, Archived, Lead), candidateId: string | undefined | null // Candidate ID, jobId: string | undefined | null // Job ID, currentInterviewStage: { id: string // Interview stage ID (UUID), title: string // Stage title, type: string | undefined // Stage type (e.g., PreInterviewScreen, IndividualInterview), orderInInterviewPlan: number | undefined // Order in the interview plan, interviewPlanId: string | undefined // Interview plan ID } | undefined | null // Current interview stage, source: unknown | undefined | null // Application source, archiveReason: unknown | undefined | null // Archive reason if archived, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values, hiringTeam: { userId: string // Team member user ID, role: string // Role in hiring team, email: string | undefined // Team member email, firstName: string | undefined // First name, lastName: string | undefined // Last name }[] | undefined // Hiring team members } | undefined // Created application,\n//   error: string // Error message if operation failed\n// }\n\n\n// Change Application Stage example\nconst ashby_change_application_stage = new AshbyBubble({\n  operation: \"change_application_stage\", // Move an application to a different interview stage\n  application_id: \"example string\", // UUID of the application\n  interview_stage_id: \"example string\", // UUID of the interview stage to move to\n});\n\nconst result = await ashby_change_application_stage.action();\n// outputSchema for result.data when operation === 'change_application_stage':\n// {\n//   operation: \"change_application_stage\" // Change application stage operation,\n//   success: boolean // Whether the operation was successful,\n//   application: { id: string // Unique application identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, status: string | undefined // Application status (Active, Hired, Archived, Lead), candidateId: string | undefined | null // Candidate ID, jobId: string | undefined | null // Job ID, currentInterviewStage: { id: string // Interview stage ID (UUID), title: string // Stage title, type: string | undefined // Stage type (e.g., PreInterviewScreen, IndividualInterview), orderInInterviewPlan: number | undefined // Order in the interview plan, interviewPlanId: string | undefined // Interview plan ID } | undefined | null // Current interview stage, source: unknown | undefined | null // Application source, archiveReason: unknown | undefined | null // Archive reason if archived, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values, hiringTeam: { userId: string // Team member user ID, role: string // Role in hiring team, email: string | undefined // Team member email, firstName: string | undefined // First name, lastName: string | undefined // Last name }[] | undefined // Hiring team members } | undefined // Updated application,\n//   error: string // Error message if operation failed\n// }\n\n\n// Update Candidate example\nconst ashby_update_candidate = new AshbyBubble({\n  operation: \"update_candidate\", // Update an existing candidate\n  candidate_id: \"example string\", // UUID of the candidate to update\n  name: \"example string\", // Updated candidate name\n  email: \"example string\", // Updated primary email\n  phone_number: \"example string\", // Updated phone number\n  linkedin_url: \"example string\", // Updated LinkedIn profile URL\n  github_url: \"example string\", // Updated GitHub profile URL\n  website: \"example string\", // Updated website URL\n});\n\nconst result = await ashby_update_candidate.action();\n// outputSchema for result.data when operation === 'update_candidate':\n// {\n//   operation: \"update_candidate\" // Update candidate operation,\n//   success: boolean // Whether the operation was successful,\n//   candidate: { id: string // Unique candidate identifier (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, updatedAt: string | undefined // ISO 8601 update timestamp, name: string // Full name of the candidate, primaryEmailAddress: { value: string // Email address value, type: \"Personal\" | \"Work\" | \"Other\" // Type of email, isPrimary: boolean // Whether this is the primary email } | undefined | null // Primary email address, primaryPhoneNumber: { value: string // Phone number value, type: \"Personal\" | \"Work\" | \"Other\" // Type of phone, isPrimary: boolean // Whether this is the primary phone } | undefined | null // Primary phone number, customFields: { id: string // Custom field ID, title: string // Custom field title, value: unknown // Custom field value, isPrivate: boolean | undefined // Whether the field is private }[] | undefined // Custom field values } | undefined // Updated candidate,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Note example\nconst ashby_create_note = new AshbyBubble({\n  operation: \"create_note\", // Add a note to a candidate\n  candidate_id: \"example string\", // UUID of the candidate\n  content: \"example string\", // Note content (plain text or HTML)\n});\n\nconst result = await ashby_create_note.action();\n// outputSchema for result.data when operation === 'create_note':\n// {\n//   operation: \"create_note\" // Create note operation,\n//   success: boolean // Whether the operation was successful,\n//   note: { id: string // Note ID (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, content: string // Note content (HTML), author: { id: string // Author user ID, firstName: string | undefined // Author first name, lastName: string | undefined // Author last name, email: string | undefined // Author email } | undefined | null // Note author } | undefined // Created note,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Notes example\nconst ashby_list_notes = new AshbyBubble({\n  operation: \"list_notes\", // List notes for a candidate\n  candidate_id: \"example string\", // UUID of the candidate\n});\n\nconst result = await ashby_list_notes.action();\n// outputSchema for result.data when operation === 'list_notes':\n// {\n//   operation: \"list_notes\" // List notes operation,\n//   success: boolean // Whether the operation was successful,\n//   notes: { id: string // Note ID (UUID), createdAt: string | undefined // ISO 8601 creation timestamp, content: string // Note content (HTML), author: { id: string // Author user ID, firstName: string | undefined // Author first name, lastName: string | undefined // Author last name, email: string | undefined // Author email } | undefined | null // Note author }[] | undefined // List of notes,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Sources example\nconst ashby_list_sources = new AshbyBubble({\n  operation: \"list_sources\", // List all candidate sources\n});\n\nconst result = await ashby_list_sources.action();\n// outputSchema for result.data when operation === 'list_sources':\n// {\n//   operation: \"list_sources\" // List sources operation,\n//   success: boolean // Whether the operation was successful,\n//   sources: { id: string // Source ID (UUID), title: string // Source title, isArchived: boolean | undefined // Whether the source is archived }[] | undefined // List of sources,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Interview Stages example\nconst ashby_list_interview_stages = new AshbyBubble({\n  operation: \"list_interview_stages\", // List interview stages for a job\n  job_id: \"example string\", // UUID of the job to get interview stages for\n});\n\nconst result = await ashby_list_interview_stages.action();\n// outputSchema for result.data when operation === 'list_interview_stages':\n// {\n//   operation: \"list_interview_stages\" // List interview stages operation,\n//   success: boolean // Whether the operation was successful,\n//   interview_stages: { id: string // Interview stage ID (UUID), title: string // Stage title, type: string | undefined // Stage type (e.g., PreInterviewScreen, IndividualInterview), orderInInterviewPlan: number | undefined // Order in the interview plan, interviewPlanId: string | undefined // Interview plan ID }[] | undefined // List of interview stages,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get File Url example\nconst ashby_get_file_url = new AshbyBubble({\n  operation: \"get_file_url\", // Get a download URL for a file (e.g., resume)\n  file_handle: \"example string\", // File handle from a candidate record (e.g., resumeFileHandle.handle)\n});\n\nconst result = await ashby_get_file_url.action();\n// outputSchema for result.data when operation === 'get_file_url':\n// {\n//   operation: \"get_file_url\" // Get file URL operation,\n//   success: boolean // Whether the operation was successful,\n//   file: { id: string | undefined // File ID, name: string | undefined // File name, url: string // Temporary download URL } | undefined // File info with download URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Projects example\nconst ashby_list_projects = new AshbyBubble({\n  operation: \"list_projects\", // List all projects\n});\n\nconst result = await ashby_list_projects.action();\n// outputSchema for result.data when operation === 'list_projects':\n// {\n//   operation: \"list_projects\" // List projects operation,\n//   success: boolean // Whether the operation was successful,\n//   projects: { id: string // Project ID (UUID), title: string // Project title, isArchived: boolean | undefined // Whether the project is archived }[] | undefined // List of projects,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Project example\nconst ashby_get_project = new AshbyBubble({\n  operation: \"get_project\", // Get project details\n  project_id: \"example string\", // UUID of the project\n});\n\nconst result = await ashby_get_project.action();\n// outputSchema for result.data when operation === 'get_project':\n// {\n//   operation: \"get_project\" // Get project operation,\n//   success: boolean // Whether the operation was successful,\n//   project: { id: string // Project ID (UUID), title: string // Project title, isArchived: boolean | undefined // Whether the project is archived } | undefined // Project details,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Candidate Projects example\nconst ashby_list_candidate_projects = new AshbyBubble({\n  operation: \"list_candidate_projects\", // List all projects a candidate belongs to\n  candidate_id: \"example string\", // UUID of the candidate\n});\n\nconst result = await ashby_list_candidate_projects.action();\n// outputSchema for result.data when operation === 'list_candidate_projects':\n// {\n//   operation: \"list_candidate_projects\" // List candidate projects operation,\n//   success: boolean // Whether the operation was successful,\n//   projects: { id: string // Project ID (UUID), title: string // Project title, isArchived: boolean | undefined // Whether the project is archived }[] | undefined // Projects the candidate belongs to,\n//   error: string // Error message if operation failed\n// }\n\n\n// Add Candidate To Project example\nconst ashby_add_candidate_to_project = new AshbyBubble({\n  operation: \"add_candidate_to_project\", // Add a candidate to a project\n  candidate_id: \"example string\", // UUID of the candidate\n  project_id: \"example string\", // UUID of the project\n});\n\nconst result = await ashby_add_candidate_to_project.action();\n// outputSchema for result.data when operation === 'add_candidate_to_project':\n// {\n//   operation: \"add_candidate_to_project\" // Add candidate to project operation,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n\n// Remove Candidate From Project example\nconst ashby_remove_candidate_from_project = new AshbyBubble({\n  operation: \"remove_candidate_from_project\", // Remove a candidate from a project\n  candidate_id: \"example string\", // UUID of the candidate\n  project_id: \"example string\", // UUID of the project\n});\n\nconst result = await ashby_remove_candidate_from_project.action();\n// outputSchema for result.data when operation === 'remove_candidate_from_project':\n// {\n//   operation: \"remove_candidate_from_project\" // Remove candidate from project operation,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Project Candidate Ids example\nconst ashby_list_project_candidate_ids = new AshbyBubble({\n  operation: \"list_project_candidate_ids\", // List all candidate IDs belonging to a project\n  project_id: \"example string\", // UUID of the project\n  cursor: \"example string\", // Pagination cursor for fetching subsequent pages\n});\n\nconst result = await ashby_list_project_candidate_ids.action();\n// outputSchema for result.data when operation === 'list_project_candidate_ids':\n// {\n//   operation: \"list_project_candidate_ids\" // List project candidate IDs operation,\n//   success: boolean // Whether the operation was successful,\n//   candidate_ids: string[] | undefined // Candidate IDs belonging to this project,\n//   next_cursor: string | undefined // Cursor for fetching the next page of results,\n//   more_data_available: boolean | undefined // Whether more data is available,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get All Candidates With Projects example\nconst ashby_get_all_candidates_with_projects = new AshbyBubble({\n  operation: \"get_all_candidates_with_projects\", // Paginate all candidates, fetch all projects, and enrich each candidate with their project associations\n  concurrency: 10 // default, // Max concurrent candidate.listProjects requests (1-50, default: 10)\n});\n\nconst result = await ashby_get_all_candidates_with_projects.action();\n// outputSchema for result.data when operation === 'get_all_candidates_with_projects':\n// {\n//   operation: \"get_all_candidates_with_projects\" // Get all candidates with projects operation,\n//   success: boolean // Whether the operation was successful,\n//   candidates: { id: string // Unique candidate identifier (UUID), name: string // Full name of the candidate, email: string | null // Primary email address or null, phone: string | null // Primary phone number or null, linkedinUrl: string | null // LinkedIn profile URL or null, position: string | null // Current position or null, company: string | null // Current company or null, tags: string[] // Tag titles assigned to candidate, projectIds: string[] // IDs of projects the candidate belongs to, projectNames: string[] // Names of projects the candidate belongs to }[] | undefined // All candidates enriched with project associations,\n//   projects: { id: string // Project ID (UUID), title: string // Project title, isArchived: boolean | undefined // Whether the project is archived }[] | undefined // All projects in Ashby,\n//   total_candidates: number | undefined // Total number of candidates fetched,\n//   total_enriched: number | undefined // Number of candidates successfully enriched,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`ashby failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "ASHBY_CRED"
      ]
    },
    {
      "name": "fullenrich",
      "alias": "enrich",
      "type": "service",
      "shortDescription": "B2B contact enrichment for emails, phones, and LinkedIn data",
      "useCase": "- Enrich leads with work emails and phone numbers",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "start_bulk_enrichment"
                ],
                "description": "Start enrichment for up to 100 contacts. Results delivered via webhook or polling."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name for this enrichment batch (appears in FullEnrich dashboard for easy search)"
              },
              "webhook_url": {
                "type": "string",
                "description": "Webhook URL to receive results when enrichment completes. Recommended over polling."
              },
              "contacts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "firstname": {
                      "type": "string",
                      "description": "First name of the contact (required if no linkedin_url)"
                    },
                    "lastname": {
                      "type": "string",
                      "description": "Last name of the contact (required if no linkedin_url)"
                    },
                    "domain": {
                      "type": "string",
                      "description": "Company domain (e.g., example.com)"
                    },
                    "company_name": {
                      "type": "string",
                      "description": "Company name"
                    },
                    "linkedin_url": {
                      "type": "string",
                      "description": "LinkedIn profile URL (e.g., https://www.linkedin.com/in/johndoe/) - improves enrichment rates significantly"
                    },
                    "enrich_fields": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "contact.emails",
                          "contact.personal_emails"
                        ]
                      },
                      "default": [
                        "contact.emails"
                      ],
                      "description": "Fields to enrich: contact.emails (1 credit), contact.personal_emails (3 credits). Defaults to work emails only."
                    },
                    "custom": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Custom metadata to pass through (e.g., CRM contact_id). Max 10 keys, 100 chars per value."
                    }
                  },
                  "additionalProperties": false,
                  "description": "Contact information to enrich"
                },
                "minItems": 1,
                "maxItems": 100,
                "description": "List of contacts to enrich (1-100 contacts)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name",
              "contacts"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_enrichment_result"
                ],
                "description": "Retrieve results of a bulk enrichment. Use webhook instead for real-time updates."
              },
              "enrichment_id": {
                "type": "string",
                "format": "uuid",
                "description": "UUID of the enrichment to retrieve"
              },
              "force_results": {
                "type": "boolean",
                "default": false,
                "description": "Return partial results even if enrichment is incomplete (may yield incomplete data)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "enrichment_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "start_reverse_email_lookup"
                ],
                "description": "Find contact info from email addresses. 1 credit per successful match."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name for this reverse lookup batch"
              },
              "webhook_url": {
                "type": "string",
                "description": "Webhook URL to receive results when lookup completes. Recommended over polling."
              },
              "emails": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "email"
                },
                "minItems": 1,
                "description": "List of email addresses to look up"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name",
              "emails"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_reverse_email_result"
                ],
                "description": "Retrieve results of a reverse email lookup"
              },
              "reverse_email_id": {
                "type": "string",
                "format": "uuid",
                "description": "UUID of the reverse email lookup to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "reverse_email_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_credit_balance"
                ],
                "description": "Get current credit balance for your workspace"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "check_api_key"
                ],
                "description": "Verify if your API key is valid"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "people_search"
                ],
                "description": "Search for people matching filters via FullEnrich v2 /people/search. Within each filter category OR, across categories AND."
              },
              "person_names": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "person_locations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Filter by city, region, or country (e.g. \"United States\", \"California\")"
              },
              "person_skills": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "person_languages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Filter by languages spoken (e.g. \"English\", \"French\")"
              },
              "person_universities": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Filter by universities attended"
              },
              "person_linkedin_urls": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Look up specific people by LinkedIn URL"
              },
              "current_position_titles": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "current_position_seniority_level": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Seniority levels: Owner, Founder, C-level, Partner, VP, Head, Director, Senior, Manager, Associate, etc."
              },
              "current_position_job_functions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Job function categories (e.g. \"Operations\", \"Finance\", \"Sales\")"
              },
              "current_position_sub_functions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "current_position_years_in": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "exclude": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "Years in current role (e.g. { min: 0, max: 2 } for new in role)"
              },
              "past_position_titles": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "current_company_names": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "current_company_domains": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "current_company_industries": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "e.g. \"Financial Services\", \"Software Development\", \"Fintech\""
              },
              "current_company_headcounts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "exclude": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "Employee count range (e.g. { min: 50, max: 500 })"
              },
              "current_company_headquarters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "HQ city or country (e.g. \"San Francisco\", \"United States\")"
              },
              "current_company_types": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "e.g. \"Privately Held\", \"Public Company\", \"Nonprofit\""
              },
              "current_company_founded_years": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "exclude": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "Year company was founded (e.g. { min: 2015, max: 2022 })"
              },
              "current_company_specialties": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "current_company_years_at": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "exclude": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "Years at current company (e.g. { min: 1, max: 3 })"
              },
              "current_company_days_since_last_job_change": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "exclude": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "Days since last job change — useful for targeting new hires"
              },
              "past_company_names": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "past_company_domains": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "maximum": 10000
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 10
              },
              "search_after": {
                "type": "string",
                "description": "Cursor from previous response for paginating beyond 10,000 results"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "company_search"
                ],
                "description": "Search for companies matching filters via FullEnrich v2 /company/search."
              },
              "names": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "domains": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "keywords": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "industries": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "types": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "headcounts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "exclude": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "founded_years": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "exclude": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "headquarters_locations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string"
                    },
                    "exclude": {
                      "type": "boolean"
                    },
                    "exact_match": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "maximum": 10000
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 10
              },
              "search_after": {
                "type": "string"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "start_bulk_enrichment"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "enrichment_id": {
                "type": "string",
                "format": "uuid",
                "description": "UUID of the created enrichment batch"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_enrichment_result"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Enrichment ID"
              },
              "name": {
                "type": "string",
                "description": "Enrichment name"
              },
              "status": {
                "type": "string",
                "enum": [
                  "CREATED",
                  "IN_PROGRESS",
                  "CANCELED",
                  "CREDITS_INSUFFICIENT",
                  "FINISHED",
                  "RATE_LIMIT",
                  "UNKNOWN"
                ],
                "description": "Enrichment status"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "custom": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Custom metadata passed with the request"
                    },
                    "contact": {
                      "type": "object",
                      "properties": {
                        "firstname": {
                          "type": "string",
                          "description": "First name"
                        },
                        "lastname": {
                          "type": "string",
                          "description": "Last name"
                        },
                        "domain": {
                          "type": "string",
                          "description": "Company domain"
                        },
                        "most_probable_email": {
                          "type": "string",
                          "description": "Most likely work email address"
                        },
                        "most_probable_personal_email": {
                          "type": "string",
                          "description": "Most likely personal email address"
                        },
                        "emails": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "email": {
                                "type": "string",
                                "description": "The email address"
                              },
                              "status": {
                                "type": "string",
                                "description": "Verification status of the email (e.g., valid, catch-all)"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Email information with verification status"
                          },
                          "description": "List of work email addresses found"
                        },
                        "personal_emails": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "email": {
                                "type": "string",
                                "description": "The email address"
                              },
                              "status": {
                                "type": "string",
                                "description": "Verification status of the email (e.g., valid, catch-all)"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Email information with verification status"
                          },
                          "description": "List of personal email addresses found"
                        },
                        "most_probable_phone": {
                          "type": "string",
                          "description": "Most likely mobile phone number"
                        },
                        "phones": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "phone": {
                                "type": "string",
                                "description": "The phone number"
                              },
                              "region": {
                                "type": "string",
                                "description": "The region/country of the phone"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Phone information with region"
                          },
                          "description": "List of phone numbers found"
                        },
                        "social_medias": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "description": "URL to the social media profile"
                              },
                              "type": {
                                "type": "string",
                                "description": "Type of social media (LINKEDIN, TWITTER, FACEBOOK, GITHUB, etc.)"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Social media profile link"
                          },
                          "description": "Social media profiles"
                        },
                        "profile": {
                          "type": "object",
                          "properties": {
                            "linkedin_url": {
                              "type": "string",
                              "description": "LinkedIn profile URL"
                            },
                            "linkedin_id": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "number"
                                }
                              ],
                              "description": "LinkedIn profile ID"
                            },
                            "linkedin_handle": {
                              "type": "string",
                              "description": "LinkedIn handle/username"
                            },
                            "headline": {
                              "type": "string",
                              "description": "Professional headline"
                            },
                            "location": {
                              "type": "string",
                              "description": "Current location"
                            },
                            "current_position": {
                              "type": "object",
                              "properties": {
                                "title": {
                                  "type": "string",
                                  "description": "Current job title"
                                },
                                "company": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string",
                                      "description": "Company name"
                                    },
                                    "domain": {
                                      "type": "string",
                                      "description": "Company domain"
                                    },
                                    "linkedin_url": {
                                      "type": "string",
                                      "description": "Company LinkedIn URL"
                                    },
                                    "linkedin_id": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "number"
                                        }
                                      ],
                                      "description": "Company LinkedIn ID"
                                    },
                                    "industry": {
                                      "type": "string",
                                      "description": "Industry the company operates in"
                                    },
                                    "headquarters": {
                                      "type": "object",
                                      "properties": {
                                        "city": {
                                          "type": "string",
                                          "description": "City of headquarters"
                                        },
                                        "country": {
                                          "type": "string",
                                          "description": "Country of headquarters"
                                        }
                                      },
                                      "additionalProperties": false,
                                      "description": "Headquarters location"
                                    }
                                  },
                                  "additionalProperties": false,
                                  "description": "Current company information"
                                },
                                "start_date": {
                                  "type": "string",
                                  "description": "Position start date"
                                },
                                "end_date": {
                                  "type": "string",
                                  "description": "Position end date"
                                }
                              },
                              "additionalProperties": false,
                              "description": "Current position details"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Professional profile information"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Enriched contact information"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Single enrichment result record"
                },
                "description": "Enriched contact records"
              },
              "cost": {
                "type": "object",
                "properties": {
                  "credits": {
                    "type": "number",
                    "description": "Number of credits consumed"
                  }
                },
                "additionalProperties": false,
                "description": "Credit cost information"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "start_reverse_email_lookup"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "enrichment_id": {
                "type": "string",
                "format": "uuid",
                "description": "UUID of the created reverse email lookup"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_reverse_email_result"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Reverse email lookup ID"
              },
              "name": {
                "type": "string",
                "description": "Lookup name"
              },
              "status": {
                "type": "string",
                "enum": [
                  "CREATED",
                  "IN_PROGRESS",
                  "CANCELED",
                  "CREDITS_INSUFFICIENT",
                  "FINISHED",
                  "RATE_LIMIT",
                  "UNKNOWN"
                ],
                "description": "Lookup status"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "input": {
                      "type": "string",
                      "description": "Email address submitted"
                    },
                    "contact": {
                      "type": "object",
                      "properties": {
                        "firstname": {
                          "type": "string",
                          "description": "First name"
                        },
                        "lastname": {
                          "type": "string",
                          "description": "Last name"
                        },
                        "domain": {
                          "type": "string",
                          "description": "Company domain"
                        },
                        "most_probable_email": {
                          "type": "string",
                          "description": "Most likely work email address"
                        },
                        "most_probable_personal_email": {
                          "type": "string",
                          "description": "Most likely personal email address"
                        },
                        "emails": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "email": {
                                "type": "string",
                                "description": "The email address"
                              },
                              "status": {
                                "type": "string",
                                "description": "Verification status of the email (e.g., valid, catch-all)"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Email information with verification status"
                          },
                          "description": "List of work email addresses found"
                        },
                        "personal_emails": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "email": {
                                "type": "string",
                                "description": "The email address"
                              },
                              "status": {
                                "type": "string",
                                "description": "Verification status of the email (e.g., valid, catch-all)"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Email information with verification status"
                          },
                          "description": "List of personal email addresses found"
                        },
                        "most_probable_phone": {
                          "type": "string",
                          "description": "Most likely mobile phone number"
                        },
                        "phones": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "phone": {
                                "type": "string",
                                "description": "The phone number"
                              },
                              "region": {
                                "type": "string",
                                "description": "The region/country of the phone"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Phone information with region"
                          },
                          "description": "List of phone numbers found"
                        },
                        "social_medias": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "description": "URL to the social media profile"
                              },
                              "type": {
                                "type": "string",
                                "description": "Type of social media (LINKEDIN, TWITTER, FACEBOOK, GITHUB, etc.)"
                              }
                            },
                            "additionalProperties": false,
                            "description": "Social media profile link"
                          },
                          "description": "Social media profiles"
                        },
                        "profile": {
                          "type": "object",
                          "properties": {
                            "linkedin_url": {
                              "type": "string",
                              "description": "LinkedIn profile URL"
                            },
                            "linkedin_id": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "number"
                                }
                              ],
                              "description": "LinkedIn profile ID"
                            },
                            "linkedin_handle": {
                              "type": "string",
                              "description": "LinkedIn handle/username"
                            },
                            "headline": {
                              "type": "string",
                              "description": "Professional headline"
                            },
                            "location": {
                              "type": "string",
                              "description": "Current location"
                            },
                            "current_position": {
                              "type": "object",
                              "properties": {
                                "title": {
                                  "type": "string",
                                  "description": "Current job title"
                                },
                                "company": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string",
                                      "description": "Company name"
                                    },
                                    "domain": {
                                      "type": "string",
                                      "description": "Company domain"
                                    },
                                    "linkedin_url": {
                                      "type": "string",
                                      "description": "Company LinkedIn URL"
                                    },
                                    "linkedin_id": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "number"
                                        }
                                      ],
                                      "description": "Company LinkedIn ID"
                                    },
                                    "industry": {
                                      "type": "string",
                                      "description": "Industry the company operates in"
                                    },
                                    "headquarters": {
                                      "type": "object",
                                      "properties": {
                                        "city": {
                                          "type": "string",
                                          "description": "City of headquarters"
                                        },
                                        "country": {
                                          "type": "string",
                                          "description": "Country of headquarters"
                                        }
                                      },
                                      "additionalProperties": false,
                                      "description": "Headquarters location"
                                    }
                                  },
                                  "additionalProperties": false,
                                  "description": "Current company information"
                                },
                                "start_date": {
                                  "type": "string",
                                  "description": "Position start date"
                                },
                                "end_date": {
                                  "type": "string",
                                  "description": "Position end date"
                                }
                              },
                              "additionalProperties": false,
                              "description": "Current position details"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Professional profile information"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Contact information found"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "Reverse email lookup results"
              },
              "cost": {
                "type": "object",
                "properties": {
                  "credits": {
                    "type": "number",
                    "description": "Number of credits consumed"
                  }
                },
                "additionalProperties": false,
                "description": "Credit cost information"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_credit_balance"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "balance": {
                "type": "number",
                "description": "Current credit balance"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "check_api_key"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "workspace_id": {
                "type": "string",
                "description": "Workspace ID if key is valid"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "people_search"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "people": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "full_name": {
                      "type": "string"
                    },
                    "first_name": {
                      "type": "string"
                    },
                    "last_name": {
                      "type": "string"
                    },
                    "location": {
                      "type": "object",
                      "properties": {
                        "city": {
                          "type": "string"
                        },
                        "region": {
                          "type": "string"
                        },
                        "country": {
                          "type": "string"
                        },
                        "country_code": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    "social_profiles": {
                      "type": "object",
                      "properties": {
                        "linkedin": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "description": "Full LinkedIn profile URL"
                            },
                            "handle": {
                              "type": "string",
                              "description": "LinkedIn username/handle"
                            },
                            "connection_count": {
                              "type": "number",
                              "description": "Number of connections"
                            }
                          },
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    },
                    "educations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "school_name": {
                            "type": "string"
                          },
                          "degree": {
                            "type": "string"
                          },
                          "start_at": {
                            "type": "string"
                          },
                          "end_at": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "languages": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "language": {
                            "type": "string"
                          },
                          "proficiency": {
                            "type": "string",
                            "description": "e.g. NATIVE_OR_BILINGUAL, FULL_PROFESSIONAL, PROFESSIONAL_WORKING"
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "skills": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "employment": {
                      "type": "object",
                      "properties": {
                        "current": {
                          "type": "object",
                          "properties": {
                            "title": {
                              "type": "string",
                              "description": "Job title"
                            },
                            "seniority": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "company": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Company name"
                                },
                                "domain": {
                                  "type": "string",
                                  "description": "Company domain"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "year_founded": {
                                  "type": "number"
                                },
                                "headcount": {
                                  "type": "number"
                                },
                                "headcount_range": {
                                  "type": "string",
                                  "description": "Employee count range e.g. \"51-200\""
                                },
                                "company_type": {
                                  "type": "string",
                                  "description": "e.g. \"Privately Held\""
                                },
                                "industry": {
                                  "type": "object",
                                  "properties": {
                                    "main_industry": {
                                      "type": "string"
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              },
                              "additionalProperties": false
                            },
                            "is_current": {
                              "type": "boolean"
                            },
                            "start_at": {
                              "type": "string",
                              "description": "ISO 8601 start date"
                            },
                            "end_at": {
                              "type": "string",
                              "description": "ISO 8601 end date (absent if current)"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Current position"
                        },
                        "all": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "title": {
                                "type": "string",
                                "description": "Job title"
                              },
                              "seniority": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "company": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Company name"
                                  },
                                  "domain": {
                                    "type": "string",
                                    "description": "Company domain"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "year_founded": {
                                    "type": "number"
                                  },
                                  "headcount": {
                                    "type": "number"
                                  },
                                  "headcount_range": {
                                    "type": "string",
                                    "description": "Employee count range e.g. \"51-200\""
                                  },
                                  "company_type": {
                                    "type": "string",
                                    "description": "e.g. \"Privately Held\""
                                  },
                                  "industry": {
                                    "type": "object",
                                    "properties": {
                                      "main_industry": {
                                        "type": "string"
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                },
                                "additionalProperties": false
                              },
                              "is_current": {
                                "type": "boolean"
                              },
                              "start_at": {
                                "type": "string",
                                "description": "ISO 8601 start date"
                              },
                              "end_at": {
                                "type": "string",
                                "description": "ISO 8601 end date (absent if current)"
                              }
                            },
                            "additionalProperties": false
                          },
                          "description": "Full employment history"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": true
                },
                "description": "People matching the search filters"
              },
              "metadata": {
                "type": "object",
                "properties": {
                  "total": {
                    "type": "number",
                    "description": "Total matches available"
                  },
                  "credits": {
                    "type": "number",
                    "description": "Credits consumed"
                  },
                  "offset": {
                    "type": "number",
                    "description": "Offset of returned results"
                  },
                  "search_after": {
                    "type": "string",
                    "description": "Cursor to fetch next page (for results beyond 10,000)"
                  }
                },
                "required": [
                  "total"
                ],
                "additionalProperties": false
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "company_search"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "companies": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "domain": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "year_founded": {
                      "type": "number"
                    },
                    "headcount": {
                      "type": "number"
                    },
                    "headcount_range": {
                      "type": "string"
                    },
                    "company_type": {
                      "type": "string"
                    },
                    "locations": {},
                    "social_profiles": {},
                    "specialties": {
                      "type": "array",
                      "items": {}
                    },
                    "industry": {}
                  },
                  "additionalProperties": true
                },
                "description": "Companies matching the search filters"
              },
              "metadata": {
                "type": "object",
                "properties": {
                  "total": {
                    "type": "number",
                    "description": "Total matches available"
                  },
                  "credits": {
                    "type": "number",
                    "description": "Credits consumed"
                  },
                  "offset": {
                    "type": "number",
                    "description": "Offset of returned results"
                  },
                  "search_after": {
                    "type": "string",
                    "description": "Cursor to fetch next page (for results beyond 10,000)"
                  }
                },
                "required": [
                  "total"
                ],
                "additionalProperties": false
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Start Bulk Enrichment example\nconst fullenrich_start_bulk_enrichment = new FullEnrichBubble({\n  operation: \"start_bulk_enrichment\", // Start enrichment for up to 100 contacts. Results delivered via webhook or polling.\n  name: \"example string\", // Name for this enrichment batch (appears in FullEnrich dashboard for easy search)\n  webhook_url: \"example string\", // Webhook URL to receive results when enrichment completes. Recommended over polling.\n  contacts: [{ firstname: \"example string\" // First name of the contact (required if no linkedin_url), lastname: \"example string\" // Last name of the contact (required if no linkedin_url), domain: \"example string\" // Company domain (e.g., example.com), company_name: \"example string\" // Company name, linkedin_url: \"example string\" // LinkedIn profile URL (e.g., https://www.linkedin.com/in/johndoe/) - improves enrichment rates significantly, enrich_fields: [\"contact.emails\"] // default // Fields to enrich: contact.emails (1 credit), contact.personal_emails (3 credits). Defaults to work emails only., custom: { \"example_key\": \"example string\" } // Custom metadata to pass through (e.g., CRM contact_id). Max 10 keys, 100 chars per value. }], // List of contacts to enrich (1-100 contacts)\n});\n\nconst result = await fullenrich_start_bulk_enrichment.action();\n// outputSchema for result.data when operation === 'start_bulk_enrichment':\n// {\n//   operation: \"start_bulk_enrichment\",\n//   success: boolean // Whether the operation was successful,\n//   enrichment_id: string | undefined // UUID of the created enrichment batch,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Enrichment Result example\nconst fullenrich_get_enrichment_result = new FullEnrichBubble({\n  operation: \"get_enrichment_result\", // Retrieve results of a bulk enrichment. Use webhook instead for real-time updates.\n  enrichment_id: \"example string\", // UUID of the enrichment to retrieve\n  force_results: false // default, // Return partial results even if enrichment is incomplete (may yield incomplete data)\n});\n\nconst result = await fullenrich_get_enrichment_result.action();\n// outputSchema for result.data when operation === 'get_enrichment_result':\n// {\n//   operation: \"get_enrichment_result\",\n//   success: boolean // Whether the operation was successful,\n//   id: string | undefined // Enrichment ID,\n//   name: string | undefined // Enrichment name,\n//   status: \"CREATED\" | \"IN_PROGRESS\" | \"CANCELED\" | \"CREDITS_INSUFFICIENT\" | \"FINISHED\" | \"RATE_LIMIT\" | \"UNKNOWN\" | undefined // Enrichment status,\n//   results: { custom: Record<string, string> | undefined // Custom metadata passed with the request, contact: { firstname: string | undefined // First name, lastname: string | undefined // Last name, domain: string | undefined // Company domain, most_probable_email: string | undefined // Most likely work email address, most_probable_personal_email: string | undefined // Most likely personal email address, emails: { email: string | undefined // The email address, status: string | undefined // Verification status of the email (e.g., valid, catch-all) }[] | undefined // List of work email addresses found, personal_emails: { email: string | undefined // The email address, status: string | undefined // Verification status of the email (e.g., valid, catch-all) }[] | undefined // List of personal email addresses found, most_probable_phone: string | undefined // Most likely mobile phone number, phones: { phone: string | undefined // The phone number, region: string | undefined // The region/country of the phone }[] | undefined // List of phone numbers found, social_medias: { url: string | undefined // URL to the social media profile, type: string | undefined // Type of social media (LINKEDIN, TWITTER, FACEBOOK, GITHUB, etc.) }[] | undefined // Social media profiles, profile: { linkedin_url: string | undefined // LinkedIn profile URL, linkedin_id: unknown // LinkedIn profile ID, linkedin_handle: string | undefined // LinkedIn handle/username, headline: string | undefined // Professional headline, location: string | undefined // Current location, current_position: { title: string | undefined // Current job title, company: { name: string | undefined // Company name, domain: string | undefined // Company domain, linkedin_url: string | undefined // Company LinkedIn URL, linkedin_id: unknown // Company LinkedIn ID, industry: string | undefined // Industry the company operates in, headquarters: { city: string | undefined // City of headquarters, country: string | undefined // Country of headquarters } | undefined // Headquarters location } | undefined // Current company information, start_date: string | undefined // Position start date, end_date: string | undefined // Position end date } | undefined // Current position details } | undefined // Professional profile information } | undefined // Enriched contact information }[] | undefined // Enriched contact records,\n//   cost: { credits: number | undefined // Number of credits consumed } | undefined // Credit cost information,\n//   error: string // Error message if operation failed\n// }\n\n\n// Start Reverse Email Lookup example\nconst fullenrich_start_reverse_email_lookup = new FullEnrichBubble({\n  operation: \"start_reverse_email_lookup\", // Find contact info from email addresses. 1 credit per successful match.\n  name: \"example string\", // Name for this reverse lookup batch\n  webhook_url: \"example string\", // Webhook URL to receive results when lookup completes. Recommended over polling.\n  emails: [\"example string\"], // List of email addresses to look up\n});\n\nconst result = await fullenrich_start_reverse_email_lookup.action();\n// outputSchema for result.data when operation === 'start_reverse_email_lookup':\n// {\n//   operation: \"start_reverse_email_lookup\",\n//   success: boolean // Whether the operation was successful,\n//   enrichment_id: string | undefined // UUID of the created reverse email lookup,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Reverse Email Result example\nconst fullenrich_get_reverse_email_result = new FullEnrichBubble({\n  operation: \"get_reverse_email_result\", // Retrieve results of a reverse email lookup\n  reverse_email_id: \"example string\", // UUID of the reverse email lookup to retrieve\n});\n\nconst result = await fullenrich_get_reverse_email_result.action();\n// outputSchema for result.data when operation === 'get_reverse_email_result':\n// {\n//   operation: \"get_reverse_email_result\",\n//   success: boolean // Whether the operation was successful,\n//   id: string | undefined // Reverse email lookup ID,\n//   name: string | undefined // Lookup name,\n//   status: \"CREATED\" | \"IN_PROGRESS\" | \"CANCELED\" | \"CREDITS_INSUFFICIENT\" | \"FINISHED\" | \"RATE_LIMIT\" | \"UNKNOWN\" | undefined // Lookup status,\n//   results: { input: string | undefined // Email address submitted, contact: { firstname: string | undefined // First name, lastname: string | undefined // Last name, domain: string | undefined // Company domain, most_probable_email: string | undefined // Most likely work email address, most_probable_personal_email: string | undefined // Most likely personal email address, emails: { email: string | undefined // The email address, status: string | undefined // Verification status of the email (e.g., valid, catch-all) }[] | undefined // List of work email addresses found, personal_emails: { email: string | undefined // The email address, status: string | undefined // Verification status of the email (e.g., valid, catch-all) }[] | undefined // List of personal email addresses found, most_probable_phone: string | undefined // Most likely mobile phone number, phones: { phone: string | undefined // The phone number, region: string | undefined // The region/country of the phone }[] | undefined // List of phone numbers found, social_medias: { url: string | undefined // URL to the social media profile, type: string | undefined // Type of social media (LINKEDIN, TWITTER, FACEBOOK, GITHUB, etc.) }[] | undefined // Social media profiles, profile: { linkedin_url: string | undefined // LinkedIn profile URL, linkedin_id: unknown // LinkedIn profile ID, linkedin_handle: string | undefined // LinkedIn handle/username, headline: string | undefined // Professional headline, location: string | undefined // Current location, current_position: { title: string | undefined // Current job title, company: { name: string | undefined // Company name, domain: string | undefined // Company domain, linkedin_url: string | undefined // Company LinkedIn URL, linkedin_id: unknown // Company LinkedIn ID, industry: string | undefined // Industry the company operates in, headquarters: { city: string | undefined // City of headquarters, country: string | undefined // Country of headquarters } | undefined // Headquarters location } | undefined // Current company information, start_date: string | undefined // Position start date, end_date: string | undefined // Position end date } | undefined // Current position details } | undefined // Professional profile information } | undefined // Contact information found }[] | undefined // Reverse email lookup results,\n//   cost: { credits: number | undefined // Number of credits consumed } | undefined // Credit cost information,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Credit Balance example\nconst fullenrich_get_credit_balance = new FullEnrichBubble({\n  operation: \"get_credit_balance\", // Get current credit balance for your workspace\n});\n\nconst result = await fullenrich_get_credit_balance.action();\n// outputSchema for result.data when operation === 'get_credit_balance':\n// {\n//   operation: \"get_credit_balance\",\n//   success: boolean // Whether the operation was successful,\n//   balance: number | undefined // Current credit balance,\n//   error: string // Error message if operation failed\n// }\n\n\n// Check Api Key example\nconst fullenrich_check_api_key = new FullEnrichBubble({\n  operation: \"check_api_key\", // Verify if your API key is valid\n});\n\nconst result = await fullenrich_check_api_key.action();\n// outputSchema for result.data when operation === 'check_api_key':\n// {\n//   operation: \"check_api_key\",\n//   success: boolean // Whether the operation was successful,\n//   workspace_id: string | undefined // Workspace ID if key is valid,\n//   error: string // Error message if operation failed\n// }\n\n\n// People Search example\nconst fullenrich_people_search = new FullEnrichBubble({\n  operation: \"people_search\", // Search for people matching filters via FullEnrich v2 /people/search. Within each filter category OR, across categories AND.\n  person_names: [{ value: \"example string\", exclude: true, exact_match: true }],\n  person_locations: [{ value: \"example string\", exclude: true, exact_match: true }], // Filter by city, region, or country (e.g. \"United States\", \"California\")\n  person_skills: [{ value: \"example string\", exclude: true, exact_match: true }],\n  person_languages: [{ value: \"example string\", exclude: true, exact_match: true }], // Filter by languages spoken (e.g. \"English\", \"French\")\n  person_universities: [{ value: \"example string\", exclude: true, exact_match: true }], // Filter by universities attended\n  person_linkedin_urls: [{ value: \"example string\", exclude: true, exact_match: true }], // Look up specific people by LinkedIn URL\n  current_position_titles: [{ value: \"example string\", exclude: true, exact_match: true }],\n  current_position_seniority_level: [{ value: \"example string\", exclude: true, exact_match: true }], // Seniority levels: Owner, Founder, C-level, Partner, VP, Head, Director, Senior, Manager, Associate, etc.\n  current_position_job_functions: [{ value: \"example string\", exclude: true, exact_match: true }], // Job function categories (e.g. \"Operations\", \"Finance\", \"Sales\")\n  current_position_sub_functions: [{ value: \"example string\", exclude: true, exact_match: true }],\n  current_position_years_in: [{ min: 42, max: 42, exclude: true }], // Years in current role (e.g. { min: 0, max: 2 } for new in role)\n  past_position_titles: [{ value: \"example string\", exclude: true, exact_match: true }],\n  current_company_names: [{ value: \"example string\", exclude: true, exact_match: true }],\n  current_company_domains: [{ value: \"example string\", exclude: true, exact_match: true }],\n  current_company_industries: [{ value: \"example string\", exclude: true, exact_match: true }], // e.g. \"Financial Services\", \"Software Development\", \"Fintech\"\n  current_company_headcounts: [{ min: 42, max: 42, exclude: true }], // Employee count range (e.g. { min: 50, max: 500 })\n  current_company_headquarters: [{ value: \"example string\", exclude: true, exact_match: true }], // HQ city or country (e.g. \"San Francisco\", \"United States\")\n  current_company_types: [{ value: \"example string\", exclude: true, exact_match: true }], // e.g. \"Privately Held\", \"Public Company\", \"Nonprofit\"\n  current_company_founded_years: [{ min: 42, max: 42, exclude: true }], // Year company was founded (e.g. { min: 2015, max: 2022 })\n  current_company_specialties: [{ value: \"example string\", exclude: true, exact_match: true }],\n  current_company_years_at: [{ min: 42, max: 42, exclude: true }], // Years at current company (e.g. { min: 1, max: 3 })\n  current_company_days_since_last_job_change: [{ min: 42, max: 42, exclude: true }], // Days since last job change — useful for targeting new hires\n  past_company_names: [{ value: \"example string\", exclude: true, exact_match: true }],\n  past_company_domains: [{ value: \"example string\", exclude: true, exact_match: true }],\n  offset: 42,\n  limit: 10 // default,\n  search_after: \"example string\", // Cursor from previous response for paginating beyond 10,000 results\n});\n\nconst result = await fullenrich_people_search.action();\n// outputSchema for result.data when operation === 'people_search':\n// {\n//   operation: \"people_search\",\n//   success: boolean // Whether the operation was successful,\n//   people: { id: string | undefined, full_name: string | undefined, first_name: string | undefined, last_name: string | undefined, location: { city: string | undefined, region: string | undefined, country: string | undefined, country_code: string | undefined } | undefined, social_profiles: { linkedin: { url: string | undefined // Full LinkedIn profile URL, handle: string | undefined // LinkedIn username/handle, connection_count: number | undefined // Number of connections } | undefined } | undefined, educations: { school_name: string | undefined, degree: string | undefined, start_at: string | undefined, end_at: string | undefined }[] | undefined, languages: { language: string | undefined, proficiency: string | undefined // e.g. NATIVE_OR_BILINGUAL, FULL_PROFESSIONAL, PROFESSIONAL_WORKING }[] | undefined, skills: string[] | undefined, employment: { current: { title: string | undefined // Job title, seniority: string | undefined, description: string | undefined, company: { id: string | undefined, name: string | undefined // Company name, domain: string | undefined // Company domain, description: string | undefined, year_founded: number | undefined, headcount: number | undefined, headcount_range: string | undefined // Employee count range e.g. \"51-200\", company_type: string | undefined // e.g. \"Privately Held\", industry: { main_industry: string | undefined } | undefined } | undefined, is_current: boolean | undefined, start_at: string | undefined // ISO 8601 start date, end_at: string | undefined // ISO 8601 end date (absent if current) } | undefined // Current position, all: { title: string | undefined // Job title, seniority: string | undefined, description: string | undefined, company: { id: string | undefined, name: string | undefined // Company name, domain: string | undefined // Company domain, description: string | undefined, year_founded: number | undefined, headcount: number | undefined, headcount_range: string | undefined // Employee count range e.g. \"51-200\", company_type: string | undefined // e.g. \"Privately Held\", industry: { main_industry: string | undefined } | undefined } | undefined, is_current: boolean | undefined, start_at: string | undefined // ISO 8601 start date, end_at: string | undefined // ISO 8601 end date (absent if current) }[] | undefined // Full employment history } | undefined }[] | undefined // People matching the search filters,\n//   metadata: { total: number // Total matches available, credits: number | undefined // Credits consumed, offset: number | undefined // Offset of returned results, search_after: string | undefined // Cursor to fetch next page (for results beyond 10,000) } | undefined,\n//   error: string // Error message if operation failed\n// }\n\n\n// Company Search example\nconst fullenrich_company_search = new FullEnrichBubble({\n  operation: \"company_search\", // Search for companies matching filters via FullEnrich v2 /company/search.\n  names: [{ value: \"example string\", exclude: true, exact_match: true }],\n  domains: [{ value: \"example string\", exclude: true, exact_match: true }],\n  keywords: [{ value: \"example string\", exclude: true, exact_match: true }],\n  industries: [{ value: \"example string\", exclude: true, exact_match: true }],\n  types: [{ value: \"example string\", exclude: true, exact_match: true }],\n  headcounts: [{ min: 42, max: 42, exclude: true }],\n  founded_years: [{ min: 42, max: 42, exclude: true }],\n  headquarters_locations: [{ value: \"example string\", exclude: true, exact_match: true }],\n  offset: 42,\n  limit: 10 // default,\n  search_after: \"example string\",\n});\n\nconst result = await fullenrich_company_search.action();\n// outputSchema for result.data when operation === 'company_search':\n// {\n//   operation: \"company_search\",\n//   success: boolean // Whether the operation was successful,\n//   companies: { id: string | undefined, name: string | undefined, domain: string | undefined, description: string | undefined, year_founded: number | undefined, headcount: number | undefined, headcount_range: string | undefined, company_type: string | undefined, locations: unknown | undefined, social_profiles: unknown | undefined, specialties: unknown[] | undefined, industry: unknown | undefined }[] | undefined // Companies matching the search filters,\n//   metadata: { total: number // Total matches available, credits: number | undefined // Credits consumed, offset: number | undefined // Offset of returned results, search_after: string | undefined // Cursor to fetch next page (for results beyond 10,000) } | undefined,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`fullenrich failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "FULLENRICH_API_KEY"
      ]
    },
    {
      "name": "linkedin-connection-tool",
      "alias": "linkedin-recordable",
      "type": "tool",
      "shortDescription": "LinkedIn connection automation with step recording",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  operation: \"send_connection\",\n  success: boolean // Whether the connection request was sent,\n  message: string | undefined // Success or status message,\n  profile: { name: string // Full name of the profile owner, headline: string | undefined // Professional headline, location: string | undefined // Location information, profile_url: string // LinkedIn profile URL } | undefined // Profile information of the person,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "send_connection"
            ],
            "description": "Send a connection request to a LinkedIn profile"
          },
          "profile_url": {
            "type": "string",
            "minLength": 1,
            "description": "LinkedIn profile URL (e.g., https://www.linkedin.com/in/username)"
          },
          "message": {
            "type": "string",
            "maxLength": 300,
            "description": "Optional personalized note to include with the connection request (max 300 characters)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required: LINKEDIN_CRED for authenticated LinkedIn session"
          },
          "proxy": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "none"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "browserbase"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "custom"
                    ]
                  },
                  "proxy": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "User-provided identifier for the proxy"
                      },
                      "server": {
                        "type": "string",
                        "description": "Proxy server URL"
                      },
                      "username": {
                        "type": "string",
                        "description": "Proxy authentication username"
                      },
                      "password": {
                        "type": "string",
                        "description": "Proxy authentication password"
                      }
                    },
                    "required": [
                      "id",
                      "server"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "type",
                  "proxy"
                ],
                "additionalProperties": false
              }
            ],
            "description": "Proxy configuration: none (direct connection), browserbase (residential), or custom proxy"
          }
        },
        "required": [
          "operation",
          "profile_url"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "send_connection"
            ]
          },
          "success": {
            "type": "boolean",
            "description": "Whether the connection request was sent"
          },
          "message": {
            "type": "string",
            "description": "Success or status message"
          },
          "profile": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Full name of the profile owner"
              },
              "headline": {
                "type": "string",
                "description": "Professional headline"
              },
              "location": {
                "type": "string",
                "description": "Location information"
              },
              "profile_url": {
                "type": "string",
                "description": "LinkedIn profile URL"
              }
            },
            "required": [
              "name",
              "profile_url"
            ],
            "additionalProperties": false,
            "description": "Profile information of the person"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "operation",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of linkedin-connection-tool bubble\nconst linkedinConnectionTool = new LinkedInConnectionTool({\n  operation: \"send_connection\", // Send a connection request to a LinkedIn profile,\n  profile_url: \"example string\", // LinkedIn profile URL (e.g., https://www.linkedin.com/in/username),\n  message: \"example string\", // Optional personalized note to include with the connection request (max 300 characters),\n  proxy: { type: \"none\" }, // Proxy configuration: none (direct connection), browserbase (residential), or custom proxy,\n});\n\nconst result = await linkedinConnectionTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"send_connection\",\n//   success: boolean // Whether the connection request was sent,\n//   message: string | undefined // Success or status message,\n//   profile: { name: string // Full name of the profile owner, headline: string | undefined // Professional headline, location: string | undefined // Location information, profile_url: string // LinkedIn profile URL } | undefined // Profile information of the person,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "LINKEDIN_CRED",
        "CLOUDFLARE_R2_ACCESS_KEY",
        "CLOUDFLARE_R2_SECRET_KEY",
        "CLOUDFLARE_R2_ACCOUNT_ID",
        "GOOGLE_GEMINI_CRED"
      ]
    },
    {
      "name": "linkedin-sent-invitations-tool",
      "alias": "linkedin-sent-invitations",
      "type": "tool",
      "shortDescription": "Extract sent LinkedIn connection invitations",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  operation: \"get_sent_invitations\",\n  success: boolean,\n  invitations: { name: string // Full name of the person, headline: string | undefined // Professional headline/tagline, sent_date: string // When the invitation was sent, profile_url: string | undefined // LinkedIn profile URL }[] | undefined,\n  total_count: number | undefined,\n  message: string | undefined,\n  error: string\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "get_sent_invitations"
            ]
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "proxy": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "none"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "browserbase"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "custom"
                    ]
                  },
                  "proxy": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "User-provided identifier for the proxy"
                      },
                      "server": {
                        "type": "string",
                        "description": "Proxy server URL"
                      },
                      "username": {
                        "type": "string",
                        "description": "Proxy authentication username"
                      },
                      "password": {
                        "type": "string",
                        "description": "Proxy authentication password"
                      }
                    },
                    "required": [
                      "id",
                      "server"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "type",
                  "proxy"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "operation"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "get_sent_invitations"
            ]
          },
          "success": {
            "type": "boolean"
          },
          "invitations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Full name of the person"
                },
                "headline": {
                  "type": "string",
                  "description": "Professional headline/tagline"
                },
                "sent_date": {
                  "type": "string",
                  "description": "When the invitation was sent"
                },
                "profile_url": {
                  "type": "string",
                  "description": "LinkedIn profile URL"
                }
              },
              "required": [
                "name",
                "sent_date"
              ],
              "additionalProperties": false
            }
          },
          "total_count": {
            "type": "number"
          },
          "message": {
            "type": "string"
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "operation",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of linkedin-sent-invitations-tool bubble\nconst linkedinSentInvitationsTool = new LinkedInSentInvitationsTool({\n  operation: \"get_sent_invitations\",,\n  proxy: { type: \"none\" },,\n});\n\nconst result = await linkedinSentInvitationsTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"get_sent_invitations\",\n//   success: boolean,\n//   invitations: { name: string // Full name of the person, headline: string | undefined // Professional headline/tagline, sent_date: string // When the invitation was sent, profile_url: string | undefined // LinkedIn profile URL }[] | undefined,\n//   total_count: number | undefined,\n//   message: string | undefined,\n//   error: string\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "LINKEDIN_CRED",
        "CLOUDFLARE_R2_ACCESS_KEY",
        "CLOUDFLARE_R2_SECRET_KEY",
        "CLOUDFLARE_R2_ACCOUNT_ID",
        "GOOGLE_GEMINI_CRED"
      ]
    },
    {
      "name": "linkedin-received-invitations-tool",
      "alias": "linkedin-received-invitations",
      "type": "tool",
      "shortDescription": "Extract received LinkedIn connection invitations",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  operation: \"get_received_invitations\",\n  success: boolean,\n  invitations: { name: string // Full name of the person, headline: string | undefined // Professional headline/tagline, mutual_connections: string | undefined // Mutual connections info, received_date: string // When the invitation was received, profile_url: string | undefined // LinkedIn profile URL }[] | undefined,\n  total_count: number | undefined,\n  message: string | undefined,\n  error: string\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "get_received_invitations"
            ]
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "proxy": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "none"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "browserbase"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "custom"
                    ]
                  },
                  "proxy": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "User-provided identifier for the proxy"
                      },
                      "server": {
                        "type": "string",
                        "description": "Proxy server URL"
                      },
                      "username": {
                        "type": "string",
                        "description": "Proxy authentication username"
                      },
                      "password": {
                        "type": "string",
                        "description": "Proxy authentication password"
                      }
                    },
                    "required": [
                      "id",
                      "server"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "type",
                  "proxy"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "operation"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "get_received_invitations"
            ]
          },
          "success": {
            "type": "boolean"
          },
          "invitations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Full name of the person"
                },
                "headline": {
                  "type": "string",
                  "description": "Professional headline/tagline"
                },
                "mutual_connections": {
                  "type": "string",
                  "description": "Mutual connections info"
                },
                "received_date": {
                  "type": "string",
                  "description": "When the invitation was received"
                },
                "profile_url": {
                  "type": "string",
                  "description": "LinkedIn profile URL"
                }
              },
              "required": [
                "name",
                "received_date"
              ],
              "additionalProperties": false
            }
          },
          "total_count": {
            "type": "number"
          },
          "message": {
            "type": "string"
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "operation",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of linkedin-received-invitations-tool bubble\nconst linkedinReceivedInvitationsTool = new LinkedInReceivedInvitationsTool({\n  operation: \"get_received_invitations\",,\n  proxy: { type: \"none\" },,\n});\n\nconst result = await linkedinReceivedInvitationsTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"get_received_invitations\",\n//   success: boolean,\n//   invitations: { name: string // Full name of the person, headline: string | undefined // Professional headline/tagline, mutual_connections: string | undefined // Mutual connections info, received_date: string // When the invitation was received, profile_url: string | undefined // LinkedIn profile URL }[] | undefined,\n//   total_count: number | undefined,\n//   message: string | undefined,\n//   error: string\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "LINKEDIN_CRED",
        "CLOUDFLARE_R2_ACCESS_KEY",
        "CLOUDFLARE_R2_SECRET_KEY",
        "CLOUDFLARE_R2_ACCOUNT_ID",
        "GOOGLE_GEMINI_CRED"
      ]
    },
    {
      "name": "linkedin-accept-invitations-tool",
      "alias": "linkedin-accept-invitations",
      "type": "tool",
      "shortDescription": "Accept top N LinkedIn connection invitations",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  operation: \"accept_invitations\",\n  success: boolean,\n  accepted: { name: string // Full name of the person whose invitation was accepted, headline: string | undefined // Professional headline/tagline, mutual_connections: string | undefined // Mutual connections info, profile_url: string | undefined // LinkedIn profile URL }[] | undefined,\n  accepted_count: number | undefined,\n  skipped_count: number | undefined,\n  message: string | undefined,\n  error: string\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "accept_invitations"
            ]
          },
          "count": {
            "type": "number",
            "minimum": 1,
            "maximum": 100,
            "default": 5,
            "description": "Number of invitations to accept (default: 5, max: 100)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "proxy": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "none"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "browserbase"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "custom"
                    ]
                  },
                  "proxy": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "User-provided identifier for the proxy"
                      },
                      "server": {
                        "type": "string",
                        "description": "Proxy server URL"
                      },
                      "username": {
                        "type": "string",
                        "description": "Proxy authentication username"
                      },
                      "password": {
                        "type": "string",
                        "description": "Proxy authentication password"
                      }
                    },
                    "required": [
                      "id",
                      "server"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "type",
                  "proxy"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "operation"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "accept_invitations"
            ]
          },
          "success": {
            "type": "boolean"
          },
          "accepted": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Full name of the person whose invitation was accepted"
                },
                "headline": {
                  "type": "string",
                  "description": "Professional headline/tagline"
                },
                "mutual_connections": {
                  "type": "string",
                  "description": "Mutual connections info"
                },
                "profile_url": {
                  "type": "string",
                  "description": "LinkedIn profile URL"
                }
              },
              "required": [
                "name"
              ],
              "additionalProperties": false
            }
          },
          "accepted_count": {
            "type": "number"
          },
          "skipped_count": {
            "type": "number"
          },
          "message": {
            "type": "string"
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "operation",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of linkedin-accept-invitations-tool bubble\nconst linkedinAcceptInvitationsTool = new LinkedInAcceptInvitationsTool({\n  operation: \"accept_invitations\",,\n  count: 5 // default, // Number of invitations to accept (default: 5, max: 100),\n  proxy: { type: \"none\" },,\n});\n\nconst result = await linkedinAcceptInvitationsTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   operation: \"accept_invitations\",\n//   success: boolean,\n//   accepted: { name: string // Full name of the person whose invitation was accepted, headline: string | undefined // Professional headline/tagline, mutual_connections: string | undefined // Mutual connections info, profile_url: string | undefined // LinkedIn profile URL }[] | undefined,\n//   accepted_count: number | undefined,\n//   skipped_count: number | undefined,\n//   message: string | undefined,\n//   error: string\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "LINKEDIN_CRED",
        "CLOUDFLARE_R2_ACCESS_KEY",
        "CLOUDFLARE_R2_SECRET_KEY",
        "CLOUDFLARE_R2_ACCOUNT_ID",
        "GOOGLE_GEMINI_CRED"
      ]
    },
    {
      "name": "stripe",
      "alias": "payments",
      "type": "service",
      "shortDescription": "Stripe integration for payments, billing, and subscriptions",
      "useCase": "- Accept payments through payment links",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_customer"
                ],
                "description": "Create a new customer in Stripe"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Customer name"
              },
              "email": {
                "type": "string",
                "format": "email",
                "description": "Customer email address"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Arbitrary metadata to attach to the customer"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_customers"
                ],
                "description": "List customers from Stripe"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 10,
                "description": "Maximum number of customers to return (1-100)"
              },
              "email": {
                "type": "string",
                "description": "Filter customers by email address (case-sensitive)"
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor - pass the next_cursor from a previous response to get the next page"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_customer"
                ],
                "description": "Retrieve a specific customer by ID"
              },
              "customer_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the customer to retrieve (cus_xxx)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "customer_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_product"
                ],
                "description": "Create a new product in Stripe"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Product name"
              },
              "description": {
                "type": "string",
                "description": "Product description"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Arbitrary metadata to attach to the product"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_products"
                ],
                "description": "List products from Stripe"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 10,
                "description": "Maximum number of products to return (1-100)"
              },
              "active": {
                "type": "boolean",
                "description": "Filter by active status"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_price"
                ],
                "description": "Create a new price for a product"
              },
              "product": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the product this price is for"
              },
              "unit_amount": {
                "type": "integer",
                "minimum": 0,
                "description": "Price in smallest currency unit (e.g., cents for USD)"
              },
              "currency": {
                "type": "string",
                "minLength": 3,
                "maxLength": 3,
                "default": "usd",
                "description": "Three-letter ISO currency code (e.g., \"usd\")"
              },
              "recurring": {
                "type": "object",
                "properties": {
                  "interval": {
                    "type": "string",
                    "enum": [
                      "day",
                      "week",
                      "month",
                      "year"
                    ],
                    "description": "Billing interval"
                  },
                  "interval_count": {
                    "type": "integer",
                    "minimum": 1,
                    "default": 1,
                    "description": "Number of intervals between billings"
                  }
                },
                "required": [
                  "interval"
                ],
                "additionalProperties": false,
                "description": "Recurring pricing details (omit for one-time prices)"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Arbitrary metadata to attach to the price"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "product",
              "unit_amount"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_prices"
                ],
                "description": "List prices from Stripe"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 10,
                "description": "Maximum number of prices to return (1-100)"
              },
              "product": {
                "type": "string",
                "description": "Filter by product ID"
              },
              "active": {
                "type": "boolean",
                "description": "Filter by active status"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_payment_link"
                ],
                "description": "Create a payment link for a price"
              },
              "price": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the price to create payment link for"
              },
              "quantity": {
                "type": "integer",
                "minimum": 1,
                "default": 1,
                "description": "Quantity of items in the payment link"
              },
              "redirect_url": {
                "type": "string",
                "format": "uri",
                "description": "URL to redirect after successful payment"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Arbitrary metadata to attach to the payment link"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "price"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_invoice"
                ],
                "description": "Create a new invoice for a customer"
              },
              "customer": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the customer to invoice"
              },
              "auto_advance": {
                "type": "boolean",
                "default": true,
                "description": "Whether to auto-finalize the invoice"
              },
              "collection_method": {
                "type": "string",
                "enum": [
                  "charge_automatically",
                  "send_invoice"
                ],
                "default": "charge_automatically",
                "description": "How to collect payment"
              },
              "days_until_due": {
                "type": "integer",
                "minimum": 1,
                "description": "Days until invoice is due (for send_invoice collection)"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "unit_amount": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Unit price in smallest currency unit (e.g., cents). Total = unit_amount * quantity"
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the line item"
                    },
                    "quantity": {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1,
                      "description": "Quantity of items (default: 1)"
                    }
                  },
                  "required": [
                    "unit_amount"
                  ],
                  "additionalProperties": false
                },
                "description": "Line items to add to the invoice after creation. Each item will be created as an invoice item."
              },
              "metadata": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Arbitrary metadata to attach to the invoice"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "customer"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_invoices"
                ],
                "description": "List invoices from Stripe"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 10,
                "description": "Maximum number of invoices to return (1-100)"
              },
              "customer": {
                "type": "string",
                "description": "Filter by customer ID"
              },
              "status": {
                "type": "string",
                "enum": [
                  "draft",
                  "open",
                  "paid",
                  "uncollectible",
                  "void"
                ],
                "description": "Filter by invoice status"
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor - pass the next_cursor from a previous response to get the next page"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_invoice"
                ],
                "description": "Retrieve a specific invoice by ID"
              },
              "invoice_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the invoice to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "invoice_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "finalize_invoice"
                ],
                "description": "Finalize a draft invoice to make it ready for payment"
              },
              "invoice_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the draft invoice to finalize"
              },
              "auto_advance": {
                "type": "boolean",
                "description": "Whether to automatically advance the invoice after finalizing"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "invoice_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_invoice_item"
                ],
                "description": "Add a line item to an existing invoice or as a pending item for a customer"
              },
              "customer": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the customer to add the item to"
              },
              "invoice": {
                "type": "string",
                "description": "ID of the invoice to attach this item to (must be a draft invoice)"
              },
              "unit_amount": {
                "type": "integer",
                "minimum": 1,
                "description": "Unit price in smallest currency unit (e.g., cents). Total = unit_amount * quantity"
              },
              "currency": {
                "type": "string",
                "minLength": 3,
                "maxLength": 3,
                "default": "usd",
                "description": "Three-letter ISO currency code (e.g., \"usd\")"
              },
              "description": {
                "type": "string",
                "description": "Description of the line item"
              },
              "quantity": {
                "type": "integer",
                "minimum": 1,
                "default": 1,
                "description": "Quantity of items (default: 1)"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Arbitrary metadata to attach to the invoice item"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "customer",
              "unit_amount"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_invoice"
                ],
                "description": "Send a finalized invoice to the customer via Stripe's built-in email service"
              },
              "invoice_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the invoice to send (must be finalized/open status)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "invoice_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_balance"
                ],
                "description": "Retrieve the current account balance"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_payment_intents"
                ],
                "description": "List payment intents from Stripe"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 10,
                "description": "Maximum number of payment intents to return (1-100)"
              },
              "customer": {
                "type": "string",
                "description": "Filter by customer ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_subscriptions"
                ],
                "description": "List subscriptions from Stripe"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 10,
                "description": "Maximum number of subscriptions to return (1-100)"
              },
              "customer": {
                "type": "string",
                "description": "Filter by customer ID"
              },
              "status": {
                "type": "string",
                "enum": [
                  "incomplete",
                  "incomplete_expired",
                  "trialing",
                  "active",
                  "past_due",
                  "canceled",
                  "unpaid",
                  "paused",
                  "all"
                ],
                "description": "Filter by subscription status"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "cancel_subscription"
                ],
                "description": "Cancel a subscription"
              },
              "subscription_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the subscription to cancel"
              },
              "cancel_at_period_end": {
                "type": "boolean",
                "default": false,
                "description": "Whether to cancel at the end of the current period"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "subscription_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_payment_links"
                ],
                "description": "List payment links from Stripe"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 10,
                "description": "Maximum number of payment links to return (1-100)"
              },
              "active": {
                "type": "boolean",
                "description": "Filter by active status"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_subscription"
                ],
                "description": "Create a new subscription for a customer"
              },
              "customer": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the customer to subscribe"
              },
              "price": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the recurring price to subscribe to"
              },
              "trial_period_days": {
                "type": "integer",
                "minimum": 1,
                "description": "Number of trial period days before billing starts"
              },
              "payment_behavior": {
                "type": "string",
                "enum": [
                  "default_incomplete",
                  "error_if_incomplete",
                  "allow_incomplete"
                ],
                "default": "default_incomplete",
                "description": "How to handle payment failures. Use default_incomplete to create without payment method"
              },
              "metadata": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Arbitrary metadata to attach to the subscription"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "customer",
              "price"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_customer"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "customer": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe customer identifier (cus_xxx)"
                  },
                  "name": {
                    "type": "string",
                    "nullable": true,
                    "description": "Customer name"
                  },
                  "email": {
                    "type": "string",
                    "nullable": true,
                    "description": "Customer email address"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the customer"
                  }
                },
                "required": [
                  "id",
                  "created"
                ],
                "additionalProperties": false,
                "description": "Created customer object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_customers"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "customers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique Stripe customer identifier (cus_xxx)"
                    },
                    "name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Customer name"
                    },
                    "email": {
                      "type": "string",
                      "nullable": true,
                      "description": "Customer email address"
                    },
                    "created": {
                      "type": "number",
                      "description": "Unix timestamp of creation"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Arbitrary metadata attached to the customer"
                    }
                  },
                  "required": [
                    "id",
                    "created"
                  ],
                  "additionalProperties": false,
                  "description": "Stripe customer object"
                },
                "description": "List of customer objects"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more customers available beyond this page"
              },
              "next_cursor": {
                "type": "string",
                "nullable": true,
                "description": "Cursor to pass as \"cursor\" parameter to fetch the next page (null if no more pages)"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_customer"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "customer": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe customer identifier (cus_xxx)"
                  },
                  "name": {
                    "type": "string",
                    "nullable": true,
                    "description": "Customer name"
                  },
                  "email": {
                    "type": "string",
                    "nullable": true,
                    "description": "Customer email address"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the customer"
                  }
                },
                "required": [
                  "id",
                  "created"
                ],
                "additionalProperties": false,
                "description": "Retrieved customer object"
              },
              "deleted": {
                "type": "boolean",
                "description": "True if the customer has been deleted"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_product"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "product": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe product identifier (prod_xxx)"
                  },
                  "name": {
                    "type": "string",
                    "description": "Product name"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Product description"
                  },
                  "active": {
                    "type": "boolean",
                    "description": "Whether the product is currently available"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the product"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "active",
                  "created"
                ],
                "additionalProperties": false,
                "description": "Created product object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_products"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "products": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique Stripe product identifier (prod_xxx)"
                    },
                    "name": {
                      "type": "string",
                      "description": "Product name"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Product description"
                    },
                    "active": {
                      "type": "boolean",
                      "description": "Whether the product is currently available"
                    },
                    "created": {
                      "type": "number",
                      "description": "Unix timestamp of creation"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Arbitrary metadata attached to the product"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "active",
                    "created"
                  ],
                  "additionalProperties": false,
                  "description": "Stripe product object"
                },
                "description": "List of product objects"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_price"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "price": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe price identifier (price_xxx)"
                  },
                  "product": {
                    "type": "string",
                    "description": "ID of the product this price is for"
                  },
                  "unit_amount": {
                    "type": "number",
                    "nullable": true,
                    "description": "Price in the smallest currency unit (e.g., cents)"
                  },
                  "currency": {
                    "type": "string",
                    "description": "Three-letter ISO currency code"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "one_time",
                      "recurring"
                    ],
                    "description": "Type of pricing (one-time or recurring)"
                  },
                  "active": {
                    "type": "boolean",
                    "description": "Whether the price is currently active"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the price"
                  }
                },
                "required": [
                  "id",
                  "product",
                  "unit_amount",
                  "currency",
                  "type",
                  "active",
                  "created"
                ],
                "additionalProperties": false,
                "description": "Created price object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_prices"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "prices": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique Stripe price identifier (price_xxx)"
                    },
                    "product": {
                      "type": "string",
                      "description": "ID of the product this price is for"
                    },
                    "unit_amount": {
                      "type": "number",
                      "nullable": true,
                      "description": "Price in the smallest currency unit (e.g., cents)"
                    },
                    "currency": {
                      "type": "string",
                      "description": "Three-letter ISO currency code"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "one_time",
                        "recurring"
                      ],
                      "description": "Type of pricing (one-time or recurring)"
                    },
                    "active": {
                      "type": "boolean",
                      "description": "Whether the price is currently active"
                    },
                    "created": {
                      "type": "number",
                      "description": "Unix timestamp of creation"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Arbitrary metadata attached to the price"
                    }
                  },
                  "required": [
                    "id",
                    "product",
                    "unit_amount",
                    "currency",
                    "type",
                    "active",
                    "created"
                  ],
                  "additionalProperties": false,
                  "description": "Stripe price object"
                },
                "description": "List of price objects"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_payment_link"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "payment_link": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe payment link identifier (plink_xxx)"
                  },
                  "url": {
                    "type": "string",
                    "description": "The public URL of the payment link"
                  },
                  "active": {
                    "type": "boolean",
                    "description": "Whether the payment link is active"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the payment link"
                  }
                },
                "required": [
                  "id",
                  "url",
                  "active"
                ],
                "additionalProperties": false,
                "description": "Created payment link object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_invoice"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "invoice": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe invoice identifier (in_xxx)"
                  },
                  "customer": {
                    "type": "string",
                    "nullable": true,
                    "description": "ID of the customer"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "draft",
                      "open",
                      "paid",
                      "uncollectible",
                      "void"
                    ],
                    "nullable": true,
                    "description": "Invoice status"
                  },
                  "total": {
                    "type": "number",
                    "description": "Total amount in smallest currency unit"
                  },
                  "currency": {
                    "type": "string",
                    "description": "Three-letter ISO currency code"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "due_date": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO date string when the invoice is due"
                  },
                  "hosted_invoice_url": {
                    "type": "string",
                    "nullable": true,
                    "description": "URL for the hosted invoice page"
                  },
                  "invoice_pdf": {
                    "type": "string",
                    "nullable": true,
                    "description": "URL for the invoice PDF (only available after finalization)"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the invoice"
                  }
                },
                "required": [
                  "id",
                  "customer",
                  "status",
                  "total",
                  "currency"
                ],
                "additionalProperties": false,
                "description": "Created invoice object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_invoices"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "invoices": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique Stripe invoice identifier (in_xxx)"
                    },
                    "customer": {
                      "type": "string",
                      "nullable": true,
                      "description": "ID of the customer"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "draft",
                        "open",
                        "paid",
                        "uncollectible",
                        "void"
                      ],
                      "nullable": true,
                      "description": "Invoice status"
                    },
                    "total": {
                      "type": "number",
                      "description": "Total amount in smallest currency unit"
                    },
                    "currency": {
                      "type": "string",
                      "description": "Three-letter ISO currency code"
                    },
                    "created": {
                      "type": "number",
                      "description": "Unix timestamp of creation"
                    },
                    "due_date": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO date string when the invoice is due"
                    },
                    "hosted_invoice_url": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL for the hosted invoice page"
                    },
                    "invoice_pdf": {
                      "type": "string",
                      "nullable": true,
                      "description": "URL for the invoice PDF (only available after finalization)"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Arbitrary metadata attached to the invoice"
                    }
                  },
                  "required": [
                    "id",
                    "customer",
                    "status",
                    "total",
                    "currency"
                  ],
                  "additionalProperties": false,
                  "description": "Stripe invoice object"
                },
                "description": "List of invoice objects"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more invoices available beyond this page"
              },
              "next_cursor": {
                "type": "string",
                "nullable": true,
                "description": "Cursor to pass as \"cursor\" parameter to fetch the next page (null if no more pages)"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "retrieve_invoice"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "invoice": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe invoice identifier (in_xxx)"
                  },
                  "customer": {
                    "type": "string",
                    "nullable": true,
                    "description": "ID of the customer"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "draft",
                      "open",
                      "paid",
                      "uncollectible",
                      "void"
                    ],
                    "nullable": true,
                    "description": "Invoice status"
                  },
                  "total": {
                    "type": "number",
                    "description": "Total amount in smallest currency unit"
                  },
                  "currency": {
                    "type": "string",
                    "description": "Three-letter ISO currency code"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "due_date": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO date string when the invoice is due"
                  },
                  "hosted_invoice_url": {
                    "type": "string",
                    "nullable": true,
                    "description": "URL for the hosted invoice page"
                  },
                  "invoice_pdf": {
                    "type": "string",
                    "nullable": true,
                    "description": "URL for the invoice PDF (only available after finalization)"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the invoice"
                  }
                },
                "required": [
                  "id",
                  "customer",
                  "status",
                  "total",
                  "currency"
                ],
                "additionalProperties": false,
                "description": "Retrieved invoice object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "finalize_invoice"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "invoice": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe invoice identifier (in_xxx)"
                  },
                  "customer": {
                    "type": "string",
                    "nullable": true,
                    "description": "ID of the customer"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "draft",
                      "open",
                      "paid",
                      "uncollectible",
                      "void"
                    ],
                    "nullable": true,
                    "description": "Invoice status"
                  },
                  "total": {
                    "type": "number",
                    "description": "Total amount in smallest currency unit"
                  },
                  "currency": {
                    "type": "string",
                    "description": "Three-letter ISO currency code"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "due_date": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO date string when the invoice is due"
                  },
                  "hosted_invoice_url": {
                    "type": "string",
                    "nullable": true,
                    "description": "URL for the hosted invoice page"
                  },
                  "invoice_pdf": {
                    "type": "string",
                    "nullable": true,
                    "description": "URL for the invoice PDF (only available after finalization)"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the invoice"
                  }
                },
                "required": [
                  "id",
                  "customer",
                  "status",
                  "total",
                  "currency"
                ],
                "additionalProperties": false,
                "description": "Finalized invoice object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_invoice_item"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "invoice_item": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe invoice item identifier (ii_xxx)"
                  },
                  "invoice": {
                    "type": "string",
                    "nullable": true,
                    "description": "ID of the invoice this item belongs to"
                  },
                  "customer": {
                    "type": "string",
                    "description": "ID of the customer"
                  },
                  "amount": {
                    "type": "number",
                    "description": "Total amount in smallest currency unit (unit_amount * quantity)"
                  },
                  "unit_amount": {
                    "type": "number",
                    "nullable": true,
                    "description": "Unit price in smallest currency unit"
                  },
                  "currency": {
                    "type": "string",
                    "description": "Three-letter ISO currency code"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Description of the invoice item"
                  },
                  "quantity": {
                    "type": "number",
                    "description": "Quantity of the item"
                  },
                  "date": {
                    "type": "number",
                    "description": "Unix timestamp when the item was created"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the invoice item"
                  }
                },
                "required": [
                  "id",
                  "customer",
                  "amount",
                  "currency"
                ],
                "additionalProperties": false,
                "description": "Created invoice item object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_invoice"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "invoice": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique Stripe invoice identifier (in_xxx)"
                  },
                  "customer": {
                    "type": "string",
                    "nullable": true,
                    "description": "ID of the customer"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "draft",
                      "open",
                      "paid",
                      "uncollectible",
                      "void"
                    ],
                    "nullable": true,
                    "description": "Invoice status"
                  },
                  "total": {
                    "type": "number",
                    "description": "Total amount in smallest currency unit"
                  },
                  "currency": {
                    "type": "string",
                    "description": "Three-letter ISO currency code"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "due_date": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO date string when the invoice is due"
                  },
                  "hosted_invoice_url": {
                    "type": "string",
                    "nullable": true,
                    "description": "URL for the hosted invoice page"
                  },
                  "invoice_pdf": {
                    "type": "string",
                    "nullable": true,
                    "description": "URL for the invoice PDF (only available after finalization)"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the invoice"
                  }
                },
                "required": [
                  "id",
                  "customer",
                  "status",
                  "total",
                  "currency"
                ],
                "additionalProperties": false,
                "description": "Invoice object after sending"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_balance"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "balance": {
                "type": "object",
                "properties": {
                  "available": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "amount": {
                          "type": "number",
                          "description": "Amount available"
                        },
                        "currency": {
                          "type": "string",
                          "description": "Currency code"
                        }
                      },
                      "required": [
                        "amount",
                        "currency"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Funds available for payout"
                  },
                  "pending": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "amount": {
                          "type": "number",
                          "description": "Amount pending"
                        },
                        "currency": {
                          "type": "string",
                          "description": "Currency code"
                        }
                      },
                      "required": [
                        "amount",
                        "currency"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Funds not yet available"
                  }
                },
                "required": [
                  "available",
                  "pending"
                ],
                "additionalProperties": false,
                "description": "Account balance"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_payment_intents"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "payment_intents": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique payment intent identifier (pi_xxx)"
                    },
                    "amount": {
                      "type": "number",
                      "description": "Amount in smallest currency unit"
                    },
                    "currency": {
                      "type": "string",
                      "description": "Three-letter ISO currency code"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "requires_payment_method",
                        "requires_confirmation",
                        "requires_action",
                        "processing",
                        "requires_capture",
                        "canceled",
                        "succeeded"
                      ],
                      "description": "Payment intent status"
                    },
                    "customer": {
                      "type": "string",
                      "nullable": true,
                      "description": "Customer ID if attached"
                    },
                    "created": {
                      "type": "number",
                      "description": "Unix timestamp of creation"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Arbitrary metadata attached to the payment intent"
                    }
                  },
                  "required": [
                    "id",
                    "amount",
                    "currency",
                    "status",
                    "created"
                  ],
                  "additionalProperties": false,
                  "description": "Stripe payment intent object"
                },
                "description": "List of payment intent objects"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_subscriptions"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "subscriptions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique subscription identifier (sub_xxx)"
                    },
                    "customer": {
                      "type": "string",
                      "description": "Customer ID"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "incomplete",
                        "incomplete_expired",
                        "trialing",
                        "active",
                        "past_due",
                        "canceled",
                        "unpaid",
                        "paused"
                      ],
                      "description": "Subscription status"
                    },
                    "current_period_start": {
                      "type": "number",
                      "description": "Start of current billing period (may be absent for incomplete subscriptions)"
                    },
                    "current_period_end": {
                      "type": "number",
                      "description": "End of current billing period (may be absent for incomplete subscriptions)"
                    },
                    "cancel_at_period_end": {
                      "type": "boolean",
                      "description": "Whether subscription cancels at period end"
                    },
                    "created": {
                      "type": "number",
                      "description": "Unix timestamp of creation"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Arbitrary metadata attached to the subscription"
                    }
                  },
                  "required": [
                    "id",
                    "customer",
                    "status",
                    "cancel_at_period_end",
                    "created"
                  ],
                  "additionalProperties": false,
                  "description": "Stripe subscription object"
                },
                "description": "List of subscription objects"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "cancel_subscription"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "subscription": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique subscription identifier (sub_xxx)"
                  },
                  "customer": {
                    "type": "string",
                    "description": "Customer ID"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "incomplete",
                      "incomplete_expired",
                      "trialing",
                      "active",
                      "past_due",
                      "canceled",
                      "unpaid",
                      "paused"
                    ],
                    "description": "Subscription status"
                  },
                  "current_period_start": {
                    "type": "number",
                    "description": "Start of current billing period (may be absent for incomplete subscriptions)"
                  },
                  "current_period_end": {
                    "type": "number",
                    "description": "End of current billing period (may be absent for incomplete subscriptions)"
                  },
                  "cancel_at_period_end": {
                    "type": "boolean",
                    "description": "Whether subscription cancels at period end"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the subscription"
                  }
                },
                "required": [
                  "id",
                  "customer",
                  "status",
                  "cancel_at_period_end",
                  "created"
                ],
                "additionalProperties": false,
                "description": "Canceled subscription object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_payment_links"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "payment_links": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique Stripe payment link identifier (plink_xxx)"
                    },
                    "url": {
                      "type": "string",
                      "description": "The public URL of the payment link"
                    },
                    "active": {
                      "type": "boolean",
                      "description": "Whether the payment link is active"
                    },
                    "created": {
                      "type": "number",
                      "description": "Unix timestamp of creation"
                    },
                    "metadata": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Arbitrary metadata attached to the payment link"
                    }
                  },
                  "required": [
                    "id",
                    "url",
                    "active"
                  ],
                  "additionalProperties": false,
                  "description": "Stripe payment link object"
                },
                "description": "List of payment link objects"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_subscription"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "subscription": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Unique subscription identifier (sub_xxx)"
                  },
                  "customer": {
                    "type": "string",
                    "description": "Customer ID"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "incomplete",
                      "incomplete_expired",
                      "trialing",
                      "active",
                      "past_due",
                      "canceled",
                      "unpaid",
                      "paused"
                    ],
                    "description": "Subscription status"
                  },
                  "current_period_start": {
                    "type": "number",
                    "description": "Start of current billing period (may be absent for incomplete subscriptions)"
                  },
                  "current_period_end": {
                    "type": "number",
                    "description": "End of current billing period (may be absent for incomplete subscriptions)"
                  },
                  "cancel_at_period_end": {
                    "type": "boolean",
                    "description": "Whether subscription cancels at period end"
                  },
                  "created": {
                    "type": "number",
                    "description": "Unix timestamp of creation"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Arbitrary metadata attached to the subscription"
                  }
                },
                "required": [
                  "id",
                  "customer",
                  "status",
                  "cancel_at_period_end",
                  "created"
                ],
                "additionalProperties": false,
                "description": "Created subscription object"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Create Customer example\nconst stripe_create_customer = new StripeBubble({\n  operation: \"create_customer\", // Create a new customer in Stripe\n  name: \"example string\", // Customer name\n  email: \"example string\", // Customer email address\n  metadata: { \"example_key\": \"example string\" }, // Arbitrary metadata to attach to the customer\n});\n\nconst result = await stripe_create_customer.action();\n// outputSchema for result.data when operation === 'create_customer':\n// {\n//   operation: \"create_customer\",\n//   success: boolean // Whether the operation succeeded,\n//   customer: { id: string // Unique Stripe customer identifier (cus_xxx), name: string | null | undefined // Customer name, email: string | null | undefined // Customer email address, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the customer } | undefined // Created customer object,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Customers example\nconst stripe_list_customers = new StripeBubble({\n  operation: \"list_customers\", // List customers from Stripe\n  limit: 10 // default, // Maximum number of customers to return (1-100)\n  email: \"example string\", // Filter customers by email address (case-sensitive)\n  cursor: \"example string\", // Pagination cursor - pass the next_cursor from a previous response to get the next page\n});\n\nconst result = await stripe_list_customers.action();\n// outputSchema for result.data when operation === 'list_customers':\n// {\n//   operation: \"list_customers\",\n//   success: boolean // Whether the operation succeeded,\n//   customers: { id: string // Unique Stripe customer identifier (cus_xxx), name: string | null | undefined // Customer name, email: string | null | undefined // Customer email address, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the customer }[] | undefined // List of customer objects,\n//   has_more: boolean | undefined // Whether there are more customers available beyond this page,\n//   next_cursor: string | null | undefined // Cursor to pass as \"cursor\" parameter to fetch the next page (null if no more pages),\n//   error: string // Error message if operation failed\n// }\n\n\n// Retrieve Customer example\nconst stripe_retrieve_customer = new StripeBubble({\n  operation: \"retrieve_customer\", // Retrieve a specific customer by ID\n  customer_id: \"example string\", // ID of the customer to retrieve (cus_xxx)\n});\n\nconst result = await stripe_retrieve_customer.action();\n// outputSchema for result.data when operation === 'retrieve_customer':\n// {\n//   operation: \"retrieve_customer\",\n//   success: boolean // Whether the operation succeeded,\n//   customer: { id: string // Unique Stripe customer identifier (cus_xxx), name: string | null | undefined // Customer name, email: string | null | undefined // Customer email address, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the customer } | undefined // Retrieved customer object,\n//   deleted: boolean | undefined // True if the customer has been deleted,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Product example\nconst stripe_create_product = new StripeBubble({\n  operation: \"create_product\", // Create a new product in Stripe\n  name: \"example string\", // Product name\n  description: \"example string\", // Product description\n  metadata: { \"example_key\": \"example string\" }, // Arbitrary metadata to attach to the product\n});\n\nconst result = await stripe_create_product.action();\n// outputSchema for result.data when operation === 'create_product':\n// {\n//   operation: \"create_product\",\n//   success: boolean // Whether the operation succeeded,\n//   product: { id: string // Unique Stripe product identifier (prod_xxx), name: string // Product name, description: string | null | undefined // Product description, active: boolean // Whether the product is currently available, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the product } | undefined // Created product object,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Products example\nconst stripe_list_products = new StripeBubble({\n  operation: \"list_products\", // List products from Stripe\n  limit: 10 // default, // Maximum number of products to return (1-100)\n  active: true, // Filter by active status\n});\n\nconst result = await stripe_list_products.action();\n// outputSchema for result.data when operation === 'list_products':\n// {\n//   operation: \"list_products\",\n//   success: boolean // Whether the operation succeeded,\n//   products: { id: string // Unique Stripe product identifier (prod_xxx), name: string // Product name, description: string | null | undefined // Product description, active: boolean // Whether the product is currently available, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the product }[] | undefined // List of product objects,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Price example\nconst stripe_create_price = new StripeBubble({\n  operation: \"create_price\", // Create a new price for a product\n  product: \"example string\", // ID of the product this price is for\n  unit_amount: 42, // Price in smallest currency unit (e.g., cents for USD)\n  currency: \"usd\" // default, // Three-letter ISO currency code (e.g., \"usd\")\n  recurring: { interval: \"day\" // options: \"day\", \"week\", \"month\", \"year\" // Billing interval, interval_count: 1 // default // Number of intervals between billings }, // Recurring pricing details (omit for one-time prices)\n  metadata: { \"example_key\": \"example string\" }, // Arbitrary metadata to attach to the price\n});\n\nconst result = await stripe_create_price.action();\n// outputSchema for result.data when operation === 'create_price':\n// {\n//   operation: \"create_price\",\n//   success: boolean // Whether the operation succeeded,\n//   price: { id: string // Unique Stripe price identifier (price_xxx), product: string // ID of the product this price is for, unit_amount: number | null // Price in the smallest currency unit (e.g., cents), currency: string // Three-letter ISO currency code, type: \"one_time\" | \"recurring\" // Type of pricing (one-time or recurring), active: boolean // Whether the price is currently active, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the price } | undefined // Created price object,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Prices example\nconst stripe_list_prices = new StripeBubble({\n  operation: \"list_prices\", // List prices from Stripe\n  limit: 10 // default, // Maximum number of prices to return (1-100)\n  product: \"example string\", // Filter by product ID\n  active: true, // Filter by active status\n});\n\nconst result = await stripe_list_prices.action();\n// outputSchema for result.data when operation === 'list_prices':\n// {\n//   operation: \"list_prices\",\n//   success: boolean // Whether the operation succeeded,\n//   prices: { id: string // Unique Stripe price identifier (price_xxx), product: string // ID of the product this price is for, unit_amount: number | null // Price in the smallest currency unit (e.g., cents), currency: string // Three-letter ISO currency code, type: \"one_time\" | \"recurring\" // Type of pricing (one-time or recurring), active: boolean // Whether the price is currently active, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the price }[] | undefined // List of price objects,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Payment Link example\nconst stripe_create_payment_link = new StripeBubble({\n  operation: \"create_payment_link\", // Create a payment link for a price\n  price: \"example string\", // ID of the price to create payment link for\n  quantity: 1 // default, // Quantity of items in the payment link\n  redirect_url: \"example string\", // URL to redirect after successful payment\n  metadata: { \"example_key\": \"example string\" }, // Arbitrary metadata to attach to the payment link\n});\n\nconst result = await stripe_create_payment_link.action();\n// outputSchema for result.data when operation === 'create_payment_link':\n// {\n//   operation: \"create_payment_link\",\n//   success: boolean // Whether the operation succeeded,\n//   payment_link: { id: string // Unique Stripe payment link identifier (plink_xxx), url: string // The public URL of the payment link, active: boolean // Whether the payment link is active, created: number | undefined // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the payment link } | undefined // Created payment link object,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Invoice example\nconst stripe_create_invoice = new StripeBubble({\n  operation: \"create_invoice\", // Create a new invoice for a customer\n  customer: \"example string\", // ID of the customer to invoice\n  auto_advance: true // default, // Whether to auto-finalize the invoice\n  collection_method: \"charge_automatically\" // options: \"charge_automatically\", \"send_invoice\", // How to collect payment\n  days_until_due: 42, // Days until invoice is due (for send_invoice collection)\n  items: [{ unit_amount: 42 // Unit price in smallest currency unit (e.g., cents). Total = unit_amount * quantity, description: \"example string\" // Description of the line item, quantity: 1 // default // Quantity of items (default: 1) }], // Line items to add to the invoice after creation. Each item will be created as an invoice item.\n  metadata: { \"example_key\": \"example string\" }, // Arbitrary metadata to attach to the invoice\n});\n\nconst result = await stripe_create_invoice.action();\n// outputSchema for result.data when operation === 'create_invoice':\n// {\n//   operation: \"create_invoice\",\n//   success: boolean // Whether the operation succeeded,\n//   invoice: { id: string // Unique Stripe invoice identifier (in_xxx), customer: string | null // ID of the customer, status: \"draft\" | \"open\" | \"paid\" | \"uncollectible\" | \"void\" | null // Invoice status, total: number // Total amount in smallest currency unit, currency: string // Three-letter ISO currency code, created: number | undefined // Unix timestamp of creation, due_date: string | null | undefined // ISO date string when the invoice is due, hosted_invoice_url: string | null | undefined // URL for the hosted invoice page, invoice_pdf: string | null | undefined // URL for the invoice PDF (only available after finalization), metadata: Record<string, string> | undefined // Arbitrary metadata attached to the invoice } | undefined // Created invoice object,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Invoices example\nconst stripe_list_invoices = new StripeBubble({\n  operation: \"list_invoices\", // List invoices from Stripe\n  limit: 10 // default, // Maximum number of invoices to return (1-100)\n  customer: \"example string\", // Filter by customer ID\n  status: \"draft\" // options: \"draft\", \"open\", \"paid\", \"uncollectible\", \"void\", // Filter by invoice status\n  cursor: \"example string\", // Pagination cursor - pass the next_cursor from a previous response to get the next page\n});\n\nconst result = await stripe_list_invoices.action();\n// outputSchema for result.data when operation === 'list_invoices':\n// {\n//   operation: \"list_invoices\",\n//   success: boolean // Whether the operation succeeded,\n//   invoices: { id: string // Unique Stripe invoice identifier (in_xxx), customer: string | null // ID of the customer, status: \"draft\" | \"open\" | \"paid\" | \"uncollectible\" | \"void\" | null // Invoice status, total: number // Total amount in smallest currency unit, currency: string // Three-letter ISO currency code, created: number | undefined // Unix timestamp of creation, due_date: string | null | undefined // ISO date string when the invoice is due, hosted_invoice_url: string | null | undefined // URL for the hosted invoice page, invoice_pdf: string | null | undefined // URL for the invoice PDF (only available after finalization), metadata: Record<string, string> | undefined // Arbitrary metadata attached to the invoice }[] | undefined // List of invoice objects,\n//   has_more: boolean | undefined // Whether there are more invoices available beyond this page,\n//   next_cursor: string | null | undefined // Cursor to pass as \"cursor\" parameter to fetch the next page (null if no more pages),\n//   error: string // Error message if operation failed\n// }\n\n\n// Retrieve Invoice example\nconst stripe_retrieve_invoice = new StripeBubble({\n  operation: \"retrieve_invoice\", // Retrieve a specific invoice by ID\n  invoice_id: \"example string\", // ID of the invoice to retrieve\n});\n\nconst result = await stripe_retrieve_invoice.action();\n// outputSchema for result.data when operation === 'retrieve_invoice':\n// {\n//   operation: \"retrieve_invoice\",\n//   success: boolean // Whether the operation succeeded,\n//   invoice: { id: string // Unique Stripe invoice identifier (in_xxx), customer: string | null // ID of the customer, status: \"draft\" | \"open\" | \"paid\" | \"uncollectible\" | \"void\" | null // Invoice status, total: number // Total amount in smallest currency unit, currency: string // Three-letter ISO currency code, created: number | undefined // Unix timestamp of creation, due_date: string | null | undefined // ISO date string when the invoice is due, hosted_invoice_url: string | null | undefined // URL for the hosted invoice page, invoice_pdf: string | null | undefined // URL for the invoice PDF (only available after finalization), metadata: Record<string, string> | undefined // Arbitrary metadata attached to the invoice } | undefined // Retrieved invoice object,\n//   error: string // Error message if operation failed\n// }\n\n\n// Finalize Invoice example\nconst stripe_finalize_invoice = new StripeBubble({\n  operation: \"finalize_invoice\", // Finalize a draft invoice to make it ready for payment\n  invoice_id: \"example string\", // ID of the draft invoice to finalize\n  auto_advance: true, // Whether to automatically advance the invoice after finalizing\n});\n\nconst result = await stripe_finalize_invoice.action();\n// outputSchema for result.data when operation === 'finalize_invoice':\n// {\n//   operation: \"finalize_invoice\",\n//   success: boolean // Whether the operation succeeded,\n//   invoice: { id: string // Unique Stripe invoice identifier (in_xxx), customer: string | null // ID of the customer, status: \"draft\" | \"open\" | \"paid\" | \"uncollectible\" | \"void\" | null // Invoice status, total: number // Total amount in smallest currency unit, currency: string // Three-letter ISO currency code, created: number | undefined // Unix timestamp of creation, due_date: string | null | undefined // ISO date string when the invoice is due, hosted_invoice_url: string | null | undefined // URL for the hosted invoice page, invoice_pdf: string | null | undefined // URL for the invoice PDF (only available after finalization), metadata: Record<string, string> | undefined // Arbitrary metadata attached to the invoice } | undefined // Finalized invoice object,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Invoice Item example\nconst stripe_create_invoice_item = new StripeBubble({\n  operation: \"create_invoice_item\", // Add a line item to an existing invoice or as a pending item for a customer\n  customer: \"example string\", // ID of the customer to add the item to\n  invoice: \"example string\", // ID of the invoice to attach this item to (must be a draft invoice)\n  unit_amount: 42, // Unit price in smallest currency unit (e.g., cents). Total = unit_amount * quantity\n  currency: \"usd\" // default, // Three-letter ISO currency code (e.g., \"usd\")\n  description: \"example string\", // Description of the line item\n  quantity: 1 // default, // Quantity of items (default: 1)\n  metadata: { \"example_key\": \"example string\" }, // Arbitrary metadata to attach to the invoice item\n});\n\nconst result = await stripe_create_invoice_item.action();\n// outputSchema for result.data when operation === 'create_invoice_item':\n// {\n//   operation: \"create_invoice_item\",\n//   success: boolean // Whether the operation succeeded,\n//   invoice_item: { id: string // Unique Stripe invoice item identifier (ii_xxx), invoice: string | null | undefined // ID of the invoice this item belongs to, customer: string // ID of the customer, amount: number // Total amount in smallest currency unit (unit_amount * quantity), unit_amount: number | null | undefined // Unit price in smallest currency unit, currency: string // Three-letter ISO currency code, description: string | null | undefined // Description of the invoice item, quantity: number | undefined // Quantity of the item, date: number | undefined // Unix timestamp when the item was created, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the invoice item } | undefined // Created invoice item object,\n//   error: string // Error message if operation failed\n// }\n\n\n// Send Invoice example\nconst stripe_send_invoice = new StripeBubble({\n  operation: \"send_invoice\", // Send a finalized invoice to the customer via Stripe's built-in email service\n  invoice_id: \"example string\", // ID of the invoice to send (must be finalized/open status)\n});\n\nconst result = await stripe_send_invoice.action();\n// outputSchema for result.data when operation === 'send_invoice':\n// {\n//   operation: \"send_invoice\",\n//   success: boolean // Whether the operation succeeded,\n//   invoice: { id: string // Unique Stripe invoice identifier (in_xxx), customer: string | null // ID of the customer, status: \"draft\" | \"open\" | \"paid\" | \"uncollectible\" | \"void\" | null // Invoice status, total: number // Total amount in smallest currency unit, currency: string // Three-letter ISO currency code, created: number | undefined // Unix timestamp of creation, due_date: string | null | undefined // ISO date string when the invoice is due, hosted_invoice_url: string | null | undefined // URL for the hosted invoice page, invoice_pdf: string | null | undefined // URL for the invoice PDF (only available after finalization), metadata: Record<string, string> | undefined // Arbitrary metadata attached to the invoice } | undefined // Invoice object after sending,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Balance example\nconst stripe_get_balance = new StripeBubble({\n  operation: \"get_balance\", // Retrieve the current account balance\n});\n\nconst result = await stripe_get_balance.action();\n// outputSchema for result.data when operation === 'get_balance':\n// {\n//   operation: \"get_balance\",\n//   success: boolean // Whether the operation succeeded,\n//   balance: { available: { amount: number // Amount available, currency: string // Currency code }[] // Funds available for payout, pending: { amount: number // Amount pending, currency: string // Currency code }[] // Funds not yet available } | undefined // Account balance,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Payment Intents example\nconst stripe_list_payment_intents = new StripeBubble({\n  operation: \"list_payment_intents\", // List payment intents from Stripe\n  limit: 10 // default, // Maximum number of payment intents to return (1-100)\n  customer: \"example string\", // Filter by customer ID\n});\n\nconst result = await stripe_list_payment_intents.action();\n// outputSchema for result.data when operation === 'list_payment_intents':\n// {\n//   operation: \"list_payment_intents\",\n//   success: boolean // Whether the operation succeeded,\n//   payment_intents: { id: string // Unique payment intent identifier (pi_xxx), amount: number // Amount in smallest currency unit, currency: string // Three-letter ISO currency code, status: \"requires_payment_method\" | \"requires_confirmation\" | \"requires_action\" | \"processing\" | \"requires_capture\" | \"canceled\" | \"succeeded\" // Payment intent status, customer: string | null | undefined // Customer ID if attached, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the payment intent }[] | undefined // List of payment intent objects,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Subscriptions example\nconst stripe_list_subscriptions = new StripeBubble({\n  operation: \"list_subscriptions\", // List subscriptions from Stripe\n  limit: 10 // default, // Maximum number of subscriptions to return (1-100)\n  customer: \"example string\", // Filter by customer ID\n  status: \"incomplete\" // options: \"incomplete\", \"incomplete_expired\", \"trialing\", \"active\", \"past_due\", \"canceled\", \"unpaid\", \"paused\", \"all\", // Filter by subscription status\n});\n\nconst result = await stripe_list_subscriptions.action();\n// outputSchema for result.data when operation === 'list_subscriptions':\n// {\n//   operation: \"list_subscriptions\",\n//   success: boolean // Whether the operation succeeded,\n//   subscriptions: { id: string // Unique subscription identifier (sub_xxx), customer: string // Customer ID, status: \"incomplete\" | \"incomplete_expired\" | \"trialing\" | \"active\" | \"past_due\" | \"canceled\" | \"unpaid\" | \"paused\" // Subscription status, current_period_start: number | undefined // Start of current billing period (may be absent for incomplete subscriptions), current_period_end: number | undefined // End of current billing period (may be absent for incomplete subscriptions), cancel_at_period_end: boolean // Whether subscription cancels at period end, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the subscription }[] | undefined // List of subscription objects,\n//   error: string // Error message if operation failed\n// }\n\n\n// Cancel Subscription example\nconst stripe_cancel_subscription = new StripeBubble({\n  operation: \"cancel_subscription\", // Cancel a subscription\n  subscription_id: \"example string\", // ID of the subscription to cancel\n  cancel_at_period_end: false // default, // Whether to cancel at the end of the current period\n});\n\nconst result = await stripe_cancel_subscription.action();\n// outputSchema for result.data when operation === 'cancel_subscription':\n// {\n//   operation: \"cancel_subscription\",\n//   success: boolean // Whether the operation succeeded,\n//   subscription: { id: string // Unique subscription identifier (sub_xxx), customer: string // Customer ID, status: \"incomplete\" | \"incomplete_expired\" | \"trialing\" | \"active\" | \"past_due\" | \"canceled\" | \"unpaid\" | \"paused\" // Subscription status, current_period_start: number | undefined // Start of current billing period (may be absent for incomplete subscriptions), current_period_end: number | undefined // End of current billing period (may be absent for incomplete subscriptions), cancel_at_period_end: boolean // Whether subscription cancels at period end, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the subscription } | undefined // Canceled subscription object,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Payment Links example\nconst stripe_list_payment_links = new StripeBubble({\n  operation: \"list_payment_links\", // List payment links from Stripe\n  limit: 10 // default, // Maximum number of payment links to return (1-100)\n  active: true, // Filter by active status\n});\n\nconst result = await stripe_list_payment_links.action();\n// outputSchema for result.data when operation === 'list_payment_links':\n// {\n//   operation: \"list_payment_links\",\n//   success: boolean // Whether the operation succeeded,\n//   payment_links: { id: string // Unique Stripe payment link identifier (plink_xxx), url: string // The public URL of the payment link, active: boolean // Whether the payment link is active, created: number | undefined // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the payment link }[] | undefined // List of payment link objects,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Subscription example\nconst stripe_create_subscription = new StripeBubble({\n  operation: \"create_subscription\", // Create a new subscription for a customer\n  customer: \"example string\", // ID of the customer to subscribe\n  price: \"example string\", // ID of the recurring price to subscribe to\n  trial_period_days: 42, // Number of trial period days before billing starts\n  payment_behavior: \"default_incomplete\" // options: \"default_incomplete\", \"error_if_incomplete\", \"allow_incomplete\", // How to handle payment failures. Use default_incomplete to create without payment method\n  metadata: { \"example_key\": \"example string\" }, // Arbitrary metadata to attach to the subscription\n});\n\nconst result = await stripe_create_subscription.action();\n// outputSchema for result.data when operation === 'create_subscription':\n// {\n//   operation: \"create_subscription\",\n//   success: boolean // Whether the operation succeeded,\n//   subscription: { id: string // Unique subscription identifier (sub_xxx), customer: string // Customer ID, status: \"incomplete\" | \"incomplete_expired\" | \"trialing\" | \"active\" | \"past_due\" | \"canceled\" | \"unpaid\" | \"paused\" // Subscription status, current_period_start: number | undefined // Start of current billing period (may be absent for incomplete subscriptions), current_period_end: number | undefined // End of current billing period (may be absent for incomplete subscriptions), cancel_at_period_end: boolean // Whether subscription cancels at period end, created: number // Unix timestamp of creation, metadata: Record<string, string> | undefined // Arbitrary metadata attached to the subscription } | undefined // Created subscription object,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`stripe failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "STRIPE_CRED"
      ]
    },
    {
      "name": "sendsafely",
      "alias": "encrypted-transfer",
      "type": "service",
      "shortDescription": "Encrypted file transfer and secure messaging via SendSafely",
      "useCase": "- Share sensitive documents securely with external parties",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_file"
                ],
                "description": "Create an encrypted package with a file and send to a recipient"
              },
              "recipientEmail": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "email"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "email"
                    },
                    "minItems": 1
                  }
                ],
                "description": "Email address of the recipient, or an array of email addresses for multiple recipients"
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the file being sent"
              },
              "fileData": {
                "type": "string",
                "minLength": 1,
                "description": "Base64-encoded file content"
              },
              "message": {
                "type": "string",
                "description": "Optional secure message to include with the package"
              },
              "lifeDays": {
                "type": "integer",
                "minimum": 1,
                "maximum": 365,
                "description": "Package lifetime in days (default set by SendSafely org)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "recipientEmail",
              "fileName",
              "fileData"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ],
                "description": "Create an encrypted package with a secure message"
              },
              "recipientEmail": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "email"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "email"
                    },
                    "minItems": 1
                  }
                ],
                "description": "Email address of the recipient, or an array of email addresses for multiple recipients"
              },
              "message": {
                "type": "string",
                "minLength": 1,
                "description": "Secure message to send"
              },
              "lifeDays": {
                "type": "integer",
                "minimum": 1,
                "maximum": 365,
                "description": "Package lifetime in days (default set by SendSafely org)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "recipientEmail",
              "message"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_package"
                ],
                "description": "Retrieve package info by ID"
              },
              "package_id": {
                "type": "string",
                "minLength": 1,
                "description": "SendSafely package identifier"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "package_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_file"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "packageId": {
                "type": "string",
                "description": "Created package identifier"
              },
              "secureLink": {
                "type": "string",
                "description": "Secure link URL for the package"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "packageId": {
                "type": "string",
                "description": "Created package identifier"
              },
              "secureLink": {
                "type": "string",
                "description": "Secure link URL for the package"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_package"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation succeeded"
              },
              "package": {
                "type": "object",
                "properties": {
                  "packageId": {
                    "type": "string",
                    "description": "Unique SendSafely package identifier"
                  },
                  "packageCode": {
                    "type": "string",
                    "description": "Package access code"
                  },
                  "serverSecret": {
                    "type": "string",
                    "description": "Server-side secret for encryption"
                  },
                  "recipients": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "recipientId": {
                          "type": "string",
                          "description": "Recipient identifier"
                        },
                        "email": {
                          "type": "string",
                          "description": "Recipient email address"
                        }
                      },
                      "required": [
                        "recipientId",
                        "email"
                      ],
                      "additionalProperties": false
                    },
                    "description": "List of package recipients"
                  },
                  "files": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "fileId": {
                          "type": "string",
                          "description": "File identifier"
                        },
                        "fileName": {
                          "type": "string",
                          "description": "Original file name"
                        },
                        "fileSize": {
                          "type": "number",
                          "description": "File size in bytes"
                        }
                      },
                      "required": [
                        "fileId",
                        "fileName"
                      ],
                      "additionalProperties": false
                    },
                    "description": "List of files in the package"
                  },
                  "state": {
                    "type": "string",
                    "description": "Current package state"
                  },
                  "life": {
                    "type": "number",
                    "description": "Package lifetime in days"
                  },
                  "secureLink": {
                    "type": "string",
                    "description": "Secure link URL for the package"
                  }
                },
                "required": [
                  "packageId"
                ],
                "additionalProperties": false,
                "description": "Package info"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Send File example\nconst sendsafely_send_file = new SendSafelyBubble({\n  operation: \"send_file\", // Create an encrypted package with a file and send to a recipient\n  recipientEmail: [\"example string\"], // Email address of the recipient, or an array of email addresses for multiple recipients\n  fileName: \"example string\", // Name of the file being sent\n  fileData: \"example string\", // Base64-encoded file content\n  message: \"example string\", // Optional secure message to include with the package\n  lifeDays: 42, // Package lifetime in days (default set by SendSafely org)\n});\n\nconst result = await sendsafely_send_file.action();\n// outputSchema for result.data when operation === 'send_file':\n// {\n//   operation: \"send_file\",\n//   success: boolean // Whether the operation succeeded,\n//   packageId: string | undefined // Created package identifier,\n//   secureLink: string | undefined // Secure link URL for the package,\n//   error: string // Error message if operation failed\n// }\n\n\n// Send Message example\nconst sendsafely_send_message = new SendSafelyBubble({\n  operation: \"send_message\", // Create an encrypted package with a secure message\n  recipientEmail: [\"example string\"], // Email address of the recipient, or an array of email addresses for multiple recipients\n  message: \"example string\", // Secure message to send\n  lifeDays: 42, // Package lifetime in days (default set by SendSafely org)\n});\n\nconst result = await sendsafely_send_message.action();\n// outputSchema for result.data when operation === 'send_message':\n// {\n//   operation: \"send_message\",\n//   success: boolean // Whether the operation succeeded,\n//   packageId: string | undefined // Created package identifier,\n//   secureLink: string | undefined // Secure link URL for the package,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Package example\nconst sendsafely_get_package = new SendSafelyBubble({\n  operation: \"get_package\", // Retrieve package info by ID\n  package_id: \"example string\", // SendSafely package identifier\n});\n\nconst result = await sendsafely_get_package.action();\n// outputSchema for result.data when operation === 'get_package':\n// {\n//   operation: \"get_package\",\n//   success: boolean // Whether the operation succeeded,\n//   package: { packageId: string // Unique SendSafely package identifier, packageCode: string | undefined // Package access code, serverSecret: string | undefined // Server-side secret for encryption, recipients: { recipientId: string // Recipient identifier, email: string // Recipient email address }[] | undefined // List of package recipients, files: { fileId: string // File identifier, fileName: string // Original file name, fileSize: number | undefined // File size in bytes }[] | undefined // List of files in the package, state: string | undefined // Current package state, life: number | undefined // Package lifetime in days, secureLink: string | undefined // Secure link URL for the package } | undefined // Package info,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`sendsafely failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "SENDSAFELY_CRED"
      ]
    },
    {
      "name": "yc-scraper-tool",
      "alias": "yc",
      "type": "tool",
      "shortDescription": "Scrape Y Combinator directory for company and founder data. Find founders by batch (W24, S23, etc.) with LinkedIn profiles.",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  people: { name: string | null // Person full name, title: string | null // Title/role at the company, currentEmployers: { companyName: string | null // Company name }[] // Current employers (YC companies), linkedinUrl: string | null // LinkedIn profile URL, twitterUrl: string | null // Twitter/X profile URL, bio: string | null // Founder bio/description, emails: string[] | null // Email addresses (if available) }[] // Array of founders/people extracted,\n  companies: { companyName: string | null // Company name, description: string | null // Company description, batch: string | null // YC batch (e.g., W24, S23), website: string | null // Company website URL, ycUrl: string | null // YC company page URL, founders: { name: string | null // Founder full name, title: string | null // Founder title/role at the company, linkedinUrl: string | null // LinkedIn profile URL, bio: string | null // Founder bio/description, twitterUrl: string | null // Twitter/X profile URL }[] // List of founders }[] // Array of YC companies scraped,\n  totalPeople: number // Total number of people/founders found,\n  totalCompanies: number // Total number of companies scraped,\n  batch: string | null // YC batch that was scraped,\n  url: string | null // URL that was scraped,\n  success: boolean // Whether the operation was successful,\n  error: string // Error message if operation failed\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "batch": {
            "type": "string",
            "description": "[ONEOF:source] YC batch to scrape (e.g., \"W24\" for Winter 2024, \"S23\" for Summer 2023)."
          },
          "url": {
            "type": "string",
            "description": "[ONEOF:source] Direct YC directory URL to scrape. Example: \"https://www.ycombinator.com/companies?batch=Winter%202026\". Use this for advanced filtering or full batch names."
          },
          "maxCompanies": {
            "type": "number",
            "minimum": 1,
            "maximum": 500,
            "default": 50,
            "description": "Maximum number of companies to scrape (default: 50, max: 500)"
          },
          "includeFounders": {
            "type": "boolean",
            "default": true,
            "description": "Whether to scrape founder details (default: true)"
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required credentials (auto-injected)"
          }
        },
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "people": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "nullable": true,
                  "description": "Person full name"
                },
                "title": {
                  "type": "string",
                  "nullable": true,
                  "description": "Title/role at the company"
                },
                "currentEmployers": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "companyName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Company name"
                      }
                    },
                    "required": [
                      "companyName"
                    ],
                    "additionalProperties": false
                  },
                  "description": "Current employers (YC companies)"
                },
                "linkedinUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "LinkedIn profile URL"
                },
                "twitterUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Twitter/X profile URL"
                },
                "bio": {
                  "type": "string",
                  "nullable": true,
                  "description": "Founder bio/description"
                },
                "emails": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "nullable": true,
                  "description": "Email addresses (if available)"
                }
              },
              "required": [
                "name",
                "title",
                "currentEmployers",
                "linkedinUrl",
                "twitterUrl",
                "bio",
                "emails"
              ],
              "additionalProperties": false
            },
            "description": "Array of founders/people extracted"
          },
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "companyName": {
                  "type": "string",
                  "nullable": true,
                  "description": "Company name"
                },
                "description": {
                  "type": "string",
                  "nullable": true,
                  "description": "Company description"
                },
                "batch": {
                  "type": "string",
                  "nullable": true,
                  "description": "YC batch (e.g., W24, S23)"
                },
                "website": {
                  "type": "string",
                  "nullable": true,
                  "description": "Company website URL"
                },
                "ycUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "YC company page URL"
                },
                "founders": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Founder full name"
                      },
                      "title": {
                        "type": "string",
                        "nullable": true,
                        "description": "Founder title/role at the company"
                      },
                      "linkedinUrl": {
                        "type": "string",
                        "nullable": true,
                        "description": "LinkedIn profile URL"
                      },
                      "bio": {
                        "type": "string",
                        "nullable": true,
                        "description": "Founder bio/description"
                      },
                      "twitterUrl": {
                        "type": "string",
                        "nullable": true,
                        "description": "Twitter/X profile URL"
                      }
                    },
                    "required": [
                      "name",
                      "title",
                      "linkedinUrl",
                      "bio",
                      "twitterUrl"
                    ],
                    "additionalProperties": false
                  },
                  "description": "List of founders"
                }
              },
              "required": [
                "companyName",
                "description",
                "batch",
                "website",
                "ycUrl",
                "founders"
              ],
              "additionalProperties": false
            },
            "description": "Array of YC companies scraped"
          },
          "totalPeople": {
            "type": "number",
            "description": "Total number of people/founders found"
          },
          "totalCompanies": {
            "type": "number",
            "description": "Total number of companies scraped"
          },
          "batch": {
            "type": "string",
            "nullable": true,
            "description": "YC batch that was scraped"
          },
          "url": {
            "type": "string",
            "nullable": true,
            "description": "URL that was scraped"
          },
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful"
          },
          "error": {
            "type": "string",
            "description": "Error message if operation failed"
          }
        },
        "required": [
          "people",
          "companies",
          "totalPeople",
          "totalCompanies",
          "batch",
          "url",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of yc-scraper-tool bubble\nconst ycScraperTool = new YCScraperTool({\n  batch: \"example string\", // [ONEOF:source] YC batch to scrape (e.g., \"W24\" for Winter 2024, \"S23\" for Summer 2023).,\n  url: \"example string\", // [ONEOF:source] Direct YC directory URL to scrape. Example: \"https://www.ycombinator.com/companies?batch=Winter%202026\". Use this for advanced filtering or full batch names.,\n  maxCompanies: 50 // default, // Maximum number of companies to scrape (default: 50, max: 500),\n  includeFounders: true // default, // Whether to scrape founder details (default: true),\n});\n\nconst result = await ycScraperTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   people: { name: string | null // Person full name, title: string | null // Title/role at the company, currentEmployers: { companyName: string | null // Company name }[] // Current employers (YC companies), linkedinUrl: string | null // LinkedIn profile URL, twitterUrl: string | null // Twitter/X profile URL, bio: string | null // Founder bio/description, emails: string[] | null // Email addresses (if available) }[] // Array of founders/people extracted,\n//   companies: { companyName: string | null // Company name, description: string | null // Company description, batch: string | null // YC batch (e.g., W24, S23), website: string | null // Company website URL, ycUrl: string | null // YC company page URL, founders: { name: string | null // Founder full name, title: string | null // Founder title/role at the company, linkedinUrl: string | null // LinkedIn profile URL, bio: string | null // Founder bio/description, twitterUrl: string | null // Twitter/X profile URL }[] // List of founders }[] // Array of YC companies scraped,\n//   totalPeople: number // Total number of people/founders found,\n//   totalCompanies: number // Total number of companies scraped,\n//   batch: string | null // YC batch that was scraped,\n//   url: string | null // URL that was scraped,\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "APIFY_CRED"
      ]
    },
    {
      "name": "posthog",
      "alias": "posthog-analytics",
      "type": "service",
      "shortDescription": "PostHog product analytics for events, persons, and insights",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ],
                "description": "List all projects accessible with your API key — use this to discover valid project_id values"
              },
              "host": {
                "type": "string",
                "default": "https://us.posthog.com",
                "description": "PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 100,
                "description": "Maximum number of projects to return (1-100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_events"
                ],
                "description": "List recent events with optional filtering"
              },
              "project_id": {
                "type": "string",
                "minLength": 1,
                "description": "PostHog project ID (found in Project Settings)"
              },
              "host": {
                "type": "string",
                "default": "https://us.posthog.com",
                "description": "PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)"
              },
              "event": {
                "type": "string",
                "description": "Filter by event name (e.g., $pageview, user_signed_up)"
              },
              "person_id": {
                "type": "string",
                "description": "Filter events by person ID"
              },
              "distinct_id": {
                "type": "string",
                "description": "Filter events by distinct ID"
              },
              "after": {
                "type": "string",
                "description": "Only return events after this ISO 8601 timestamp"
              },
              "before": {
                "type": "string",
                "description": "Only return events before this ISO 8601 timestamp"
              },
              "properties": {
                "type": "string",
                "description": "JSON-encoded array of property filters (e.g., [{\"key\":\"$browser\",\"value\":\"Chrome\",\"operator\":\"exact\"}])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 1000,
                "default": 100,
                "description": "Maximum number of events to return (1-1000)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "query"
                ],
                "description": "Execute a HogQL query for custom analytics"
              },
              "project_id": {
                "type": "string",
                "minLength": 1,
                "description": "PostHog project ID (found in Project Settings)"
              },
              "host": {
                "type": "string",
                "default": "https://us.posthog.com",
                "description": "PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)"
              },
              "query": {
                "type": "string",
                "minLength": 1,
                "description": "HogQL query to execute (SQL-like syntax, e.g., SELECT event, count() FROM events GROUP BY event ORDER BY count() DESC LIMIT 10)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_id",
              "query"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_person"
                ],
                "description": "Look up a person profile by distinct ID or search"
              },
              "project_id": {
                "type": "string",
                "minLength": 1,
                "description": "PostHog project ID (found in Project Settings)"
              },
              "host": {
                "type": "string",
                "default": "https://us.posthog.com",
                "description": "PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)"
              },
              "distinct_id": {
                "type": "string",
                "description": "Look up person by distinct ID"
              },
              "search": {
                "type": "string",
                "description": "Search for persons by email or name in person properties"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 10,
                "description": "Maximum number of persons to return (1-100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_insight"
                ],
                "description": "Retrieve a saved insight's results by ID"
              },
              "project_id": {
                "type": "string",
                "minLength": 1,
                "description": "PostHog project ID (found in Project Settings)"
              },
              "host": {
                "type": "string",
                "default": "https://us.posthog.com",
                "description": "PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)"
              },
              "insight_id": {
                "type": "number",
                "minimum": 1,
                "description": "Numeric ID of the insight to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_id",
              "insight_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ],
                "description": "List projects operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "projects": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Project ID (use this as project_id in other operations)"
                    },
                    "uuid": {
                      "type": "string",
                      "description": "Project UUID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Project name"
                    },
                    "organization": {
                      "type": "string",
                      "description": "Organization ID"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "ISO 8601 creation timestamp"
                    },
                    "timezone": {
                      "type": "string",
                      "description": "Project timezone (e.g., UTC)"
                    },
                    "is_demo": {
                      "type": "boolean",
                      "description": "Whether this is a demo project"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": false,
                  "description": "PostHog project record"
                },
                "description": "List of projects"
              },
              "next": {
                "type": "string",
                "nullable": true,
                "description": "URL for fetching the next page of results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_events"
                ],
                "description": "List events operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "events": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Event identifier (returned by API as id)"
                    },
                    "uuid": {
                      "type": "string",
                      "description": "Unique event identifier (legacy field name)"
                    },
                    "event": {
                      "type": "string",
                      "description": "Event name (e.g., $pageview, user_signed_up)"
                    },
                    "distinct_id": {
                      "type": "string",
                      "description": "Distinct ID of the person"
                    },
                    "properties": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Event properties"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "ISO 8601 event timestamp"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "ISO 8601 creation timestamp"
                    },
                    "elements": {
                      "type": "array",
                      "items": {},
                      "description": "DOM elements captured"
                    },
                    "elements_chain": {
                      "type": "string",
                      "description": "Serialized element chain"
                    }
                  },
                  "required": [
                    "event",
                    "distinct_id"
                  ],
                  "additionalProperties": false,
                  "description": "PostHog event record"
                },
                "description": "List of events"
              },
              "next": {
                "type": "string",
                "nullable": true,
                "description": "URL for fetching the next page of results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "query"
                ],
                "description": "HogQL query operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "columns": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Column names in the result"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {}
                },
                "description": "Rows of query results"
              },
              "types": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  ]
                },
                "description": "Column types in the result"
              },
              "hasMore": {
                "type": "boolean",
                "nullable": true,
                "description": "Whether more rows are available"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_person"
                ],
                "description": "Get person operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "persons": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Internal person ID (UUID)"
                    },
                    "uuid": {
                      "type": "string",
                      "description": "Person UUID"
                    },
                    "distinct_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "All distinct IDs associated with this person"
                    },
                    "properties": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Person properties (set via $set)"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "ISO 8601 creation timestamp"
                    }
                  },
                  "required": [
                    "id",
                    "distinct_ids"
                  ],
                  "additionalProperties": false,
                  "description": "PostHog person record"
                },
                "description": "List of matching persons"
              },
              "next": {
                "type": "string",
                "nullable": true,
                "description": "URL for fetching the next page"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_insight"
                ],
                "description": "Get insight operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "insight": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Insight ID"
                  },
                  "short_id": {
                    "type": "string",
                    "description": "Short ID for sharing"
                  },
                  "name": {
                    "type": "string",
                    "nullable": true,
                    "description": "Insight name"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Insight description"
                  },
                  "result": {
                    "description": "Computed insight results"
                  },
                  "filters": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Insight filter configuration"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "ISO 8601 creation timestamp"
                  },
                  "last_refresh": {
                    "type": "string",
                    "nullable": true,
                    "description": "Last time the insight was refreshed"
                  },
                  "last_modified_at": {
                    "type": "string",
                    "description": "ISO 8601 last modification timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Insight details and results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Projects example\nconst posthog_list_projects = new PosthogBubble({\n  operation: \"list_projects\", // List all projects accessible with your API key — use this to discover valid project_id values\n  host: \"https://us.posthog.com\" // default, // PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)\n  limit: 100 // default, // Maximum number of projects to return (1-100)\n});\n\nconst result = await posthog_list_projects.action();\n// outputSchema for result.data when operation === 'list_projects':\n// {\n//   operation: \"list_projects\" // List projects operation,\n//   success: boolean // Whether the operation was successful,\n//   projects: { id: number // Project ID (use this as project_id in other operations), uuid: string | undefined // Project UUID, name: string // Project name, organization: string | undefined // Organization ID, created_at: string | undefined // ISO 8601 creation timestamp, timezone: string | undefined // Project timezone (e.g., UTC), is_demo: boolean | undefined // Whether this is a demo project }[] | undefined // List of projects,\n//   next: string | undefined | null // URL for fetching the next page of results,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Events example\nconst posthog_list_events = new PosthogBubble({\n  operation: \"list_events\", // List recent events with optional filtering\n  project_id: \"example string\", // PostHog project ID (found in Project Settings)\n  host: \"https://us.posthog.com\" // default, // PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)\n  event: \"example string\", // Filter by event name (e.g., $pageview, user_signed_up)\n  person_id: \"example string\", // Filter events by person ID\n  distinct_id: \"example string\", // Filter events by distinct ID\n  after: \"example string\", // Only return events after this ISO 8601 timestamp\n  before: \"example string\", // Only return events before this ISO 8601 timestamp\n  properties: \"example string\", // JSON-encoded array of property filters (e.g., [{\"key\":\"$browser\",\"value\":\"Chrome\",\"operator\":\"exact\"}])\n  limit: 100 // default, // Maximum number of events to return (1-1000)\n});\n\nconst result = await posthog_list_events.action();\n// outputSchema for result.data when operation === 'list_events':\n// {\n//   operation: \"list_events\" // List events operation,\n//   success: boolean // Whether the operation was successful,\n//   events: { id: string | undefined // Event identifier (returned by API as id), uuid: string | undefined // Unique event identifier (legacy field name), event: string // Event name (e.g., $pageview, user_signed_up), distinct_id: string // Distinct ID of the person, properties: Record<string, unknown> | undefined // Event properties, timestamp: string | undefined // ISO 8601 event timestamp, created_at: string | undefined // ISO 8601 creation timestamp, elements: unknown[] | undefined // DOM elements captured, elements_chain: string | undefined // Serialized element chain }[] | undefined // List of events,\n//   next: string | undefined | null // URL for fetching the next page of results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Query example\nconst posthog_query = new PosthogBubble({\n  operation: \"query\", // Execute a HogQL query for custom analytics\n  project_id: \"example string\", // PostHog project ID (found in Project Settings)\n  host: \"https://us.posthog.com\" // default, // PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)\n  query: \"example string\", // HogQL query to execute (SQL-like syntax, e.g., SELECT event, count() FROM events GROUP BY event ORDER BY count() DESC LIMIT 10)\n});\n\nconst result = await posthog_query.action();\n// outputSchema for result.data when operation === 'query':\n// {\n//   operation: \"query\" // HogQL query operation,\n//   success: boolean // Whether the operation was successful,\n//   columns: string[] | undefined // Column names in the result,\n//   results: unknown[][] | undefined // Rows of query results,\n//   types: unknown[] | undefined // Column types in the result,\n//   hasMore: boolean | null | undefined // Whether more rows are available,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Person example\nconst posthog_get_person = new PosthogBubble({\n  operation: \"get_person\", // Look up a person profile by distinct ID or search\n  project_id: \"example string\", // PostHog project ID (found in Project Settings)\n  host: \"https://us.posthog.com\" // default, // PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)\n  distinct_id: \"example string\", // Look up person by distinct ID\n  search: \"example string\", // Search for persons by email or name in person properties\n  limit: 10 // default, // Maximum number of persons to return (1-100)\n});\n\nconst result = await posthog_get_person.action();\n// outputSchema for result.data when operation === 'get_person':\n// {\n//   operation: \"get_person\" // Get person operation,\n//   success: boolean // Whether the operation was successful,\n//   persons: { id: string // Internal person ID (UUID), uuid: string | undefined // Person UUID, distinct_ids: string[] // All distinct IDs associated with this person, properties: Record<string, unknown> | undefined // Person properties (set via $set), created_at: string | undefined // ISO 8601 creation timestamp }[] | undefined // List of matching persons,\n//   next: string | undefined | null // URL for fetching the next page,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Insight example\nconst posthog_get_insight = new PosthogBubble({\n  operation: \"get_insight\", // Retrieve a saved insight's results by ID\n  project_id: \"example string\", // PostHog project ID (found in Project Settings)\n  host: \"https://us.posthog.com\" // default, // PostHog host URL (e.g., https://us.posthog.com, https://eu.posthog.com, or your self-hosted URL)\n  insight_id: 42, // Numeric ID of the insight to retrieve\n});\n\nconst result = await posthog_get_insight.action();\n// outputSchema for result.data when operation === 'get_insight':\n// {\n//   operation: \"get_insight\" // Get insight operation,\n//   success: boolean // Whether the operation was successful,\n//   insight: { id: number // Insight ID, short_id: string | undefined // Short ID for sharing, name: string | undefined | null // Insight name, description: string | undefined | null // Insight description, result: unknown | undefined // Computed insight results, filters: Record<string, unknown> | undefined // Insight filter configuration, created_at: string | undefined // ISO 8601 creation timestamp, last_refresh: string | undefined | null // Last time the insight was refreshed, last_modified_at: string | undefined // ISO 8601 last modification timestamp } | undefined // Insight details and results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`posthog failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "POSTHOG_API_KEY"
      ]
    },
    {
      "name": "linear",
      "alias": "linear",
      "type": "service",
      "shortDescription": "Linear integration for issue tracking and project management",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ],
                "description": "Search for issues with text query and filters"
              },
              "query": {
                "type": "string",
                "description": "Text to search for in issue titles and descriptions"
              },
              "teamId": {
                "type": "string",
                "description": "Filter by team ID"
              },
              "assigneeId": {
                "type": "string",
                "description": "Filter by assignee user ID"
              },
              "stateId": {
                "type": "string",
                "description": "Filter by workflow state ID"
              },
              "labelId": {
                "type": "string",
                "description": "Filter by label ID"
              },
              "projectId": {
                "type": "string",
                "description": "Filter by project ID"
              },
              "priority": {
                "type": "number",
                "minimum": 0,
                "maximum": 4,
                "description": "Filter by priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of issues to return (1-100)"
              },
              "includeArchived": {
                "type": "boolean",
                "default": false,
                "description": "Include archived issues in results"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get"
                ],
                "description": "Get details for a specific issue"
              },
              "identifier": {
                "type": "string",
                "minLength": 1,
                "description": "Issue identifier (e.g., \"LIN-123\") or issue ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "identifier"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create"
                ],
                "description": "Create a new issue in Linear"
              },
              "teamId": {
                "type": "string",
                "minLength": 1,
                "description": "Team ID to create the issue in"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "Issue title"
              },
              "description": {
                "type": "string",
                "description": "Issue description (supports markdown)"
              },
              "assigneeId": {
                "type": "string",
                "description": "Assignee user ID. Leave empty for unassigned"
              },
              "priority": {
                "type": "number",
                "minimum": 0,
                "maximum": 4,
                "description": "Issue priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)"
              },
              "stateId": {
                "type": "string",
                "description": "Workflow state ID. If not set, uses the team default"
              },
              "stateName": {
                "type": "string",
                "description": "Workflow state name (e.g., \"In Progress\"). Resolved to ID automatically. Use this instead of stateId for convenience"
              },
              "labelIds": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Label IDs to apply"
              },
              "projectId": {
                "type": "string",
                "description": "Project ID to associate with"
              },
              "dueDate": {
                "type": "string",
                "description": "Due date in YYYY-MM-DD format"
              },
              "parentId": {
                "type": "string",
                "description": "Parent issue ID for sub-issues"
              },
              "estimate": {
                "type": "number",
                "description": "Issue estimate (points)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "teamId",
              "title"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update"
                ],
                "description": "Update an existing issue"
              },
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "Issue ID (UUID) or identifier (e.g., \"LIN-123\")"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "New issue title"
              },
              "description": {
                "type": "string",
                "description": "New description (supports markdown)"
              },
              "assigneeId": {
                "type": "string",
                "nullable": true,
                "description": "New assignee user ID or null to unassign"
              },
              "priority": {
                "type": "number",
                "minimum": 0,
                "maximum": 4,
                "description": "New priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)"
              },
              "stateId": {
                "type": "string",
                "description": "New workflow state ID"
              },
              "stateName": {
                "type": "string",
                "description": "New workflow state name (e.g., \"Done\"). Resolved to ID automatically"
              },
              "labels": {
                "type": "object",
                "properties": {
                  "add": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Label IDs or names to add to the issue"
                  },
                  "remove": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Label IDs or names to remove from the issue"
                  }
                },
                "additionalProperties": false,
                "description": "Label modifications"
              },
              "projectId": {
                "type": "string",
                "nullable": true,
                "description": "New project ID or null to remove from project"
              },
              "dueDate": {
                "type": "string",
                "nullable": true,
                "description": "New due date (YYYY-MM-DD) or null to clear"
              },
              "estimate": {
                "type": "number",
                "nullable": true,
                "description": "New estimate (points) or null to clear"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_teams"
                ],
                "description": "List all teams"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ],
                "description": "List projects, optionally filtered by team"
              },
              "teamId": {
                "type": "string",
                "description": "Filter projects by team ID"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of projects to return"
              },
              "includeArchived": {
                "type": "boolean",
                "default": false,
                "description": "Include archived projects"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_workflow_states"
                ],
                "description": "List workflow states for a team"
              },
              "teamId": {
                "type": "string",
                "minLength": 1,
                "description": "Team ID to get workflow states for"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "teamId"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_comment"
                ],
                "description": "Add a comment to an issue"
              },
              "issueId": {
                "type": "string",
                "minLength": 1,
                "description": "Issue ID (UUID) or identifier (e.g., \"LIN-123\")"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "description": "Comment text (supports markdown)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "issueId",
              "body"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_comments"
                ],
                "description": "Get comments for an issue"
              },
              "issueId": {
                "type": "string",
                "minLength": 1,
                "description": "Issue ID (UUID) or identifier (e.g., \"LIN-123\")"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of comments to return"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "issueId"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_labels"
                ],
                "description": "List labels, optionally filtered by team"
              },
              "teamId": {
                "type": "string",
                "description": "Filter labels by team ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "issues": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Issue ID"
                    },
                    "identifier": {
                      "type": "string",
                      "description": "Issue identifier (e.g., \"LIN-123\")"
                    },
                    "title": {
                      "type": "string",
                      "description": "Issue title"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Issue description (markdown)"
                    },
                    "priority": {
                      "type": "number",
                      "description": "Priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)"
                    },
                    "priorityLabel": {
                      "type": "string",
                      "description": "Priority label (e.g., \"High\")"
                    },
                    "state": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Workflow state ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "State name (e.g., \"Todo\", \"In Progress\", \"Done\")"
                        },
                        "type": {
                          "type": "string",
                          "description": "State type (backlog, unstarted, started, completed, cancelled)"
                        },
                        "color": {
                          "type": "string",
                          "description": "State color"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": true,
                      "description": "Current state"
                    },
                    "assignee": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "User ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "User display name"
                        },
                        "email": {
                          "type": "string",
                          "description": "User email address"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": true,
                      "description": "Assigned user",
                      "nullable": true
                    },
                    "team": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Team ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "Team name"
                        },
                        "key": {
                          "type": "string",
                          "description": "Team key (e.g., \"LIN\")"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "key"
                      ],
                      "additionalProperties": true,
                      "description": "Team"
                    },
                    "project": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Project ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "Project name"
                        },
                        "state": {
                          "type": "string",
                          "description": "Project state"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": true,
                      "description": "Project",
                      "nullable": true
                    },
                    "labels": {
                      "type": "object",
                      "properties": {
                        "nodes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "Label ID"
                              },
                              "name": {
                                "type": "string",
                                "description": "Label name"
                              },
                              "color": {
                                "type": "string",
                                "description": "Label color"
                              }
                            },
                            "required": [
                              "id",
                              "name"
                            ],
                            "additionalProperties": true,
                            "description": "Linear label"
                          }
                        }
                      },
                      "additionalProperties": false,
                      "description": "Issue labels"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "Creation timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "Last update timestamp"
                    },
                    "dueDate": {
                      "type": "string",
                      "nullable": true,
                      "description": "Due date (YYYY-MM-DD)"
                    },
                    "url": {
                      "type": "string",
                      "description": "Issue URL"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Linear issue"
                },
                "description": "Found issues"
              },
              "total": {
                "type": "number",
                "description": "Total matching issues"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "issue": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Issue ID"
                  },
                  "identifier": {
                    "type": "string",
                    "description": "Issue identifier (e.g., \"LIN-123\")"
                  },
                  "title": {
                    "type": "string",
                    "description": "Issue title"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Issue description (markdown)"
                  },
                  "priority": {
                    "type": "number",
                    "description": "Priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)"
                  },
                  "priorityLabel": {
                    "type": "string",
                    "description": "Priority label (e.g., \"High\")"
                  },
                  "state": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow state ID"
                      },
                      "name": {
                        "type": "string",
                        "description": "State name (e.g., \"Todo\", \"In Progress\", \"Done\")"
                      },
                      "type": {
                        "type": "string",
                        "description": "State type (backlog, unstarted, started, completed, cancelled)"
                      },
                      "color": {
                        "type": "string",
                        "description": "State color"
                      }
                    },
                    "required": [
                      "id",
                      "name"
                    ],
                    "additionalProperties": true,
                    "description": "Current state"
                  },
                  "assignee": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "name": {
                        "type": "string",
                        "description": "User display name"
                      },
                      "email": {
                        "type": "string",
                        "description": "User email address"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "additionalProperties": true,
                    "description": "Assigned user",
                    "nullable": true
                  },
                  "team": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Team ID"
                      },
                      "name": {
                        "type": "string",
                        "description": "Team name"
                      },
                      "key": {
                        "type": "string",
                        "description": "Team key (e.g., \"LIN\")"
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "key"
                    ],
                    "additionalProperties": true,
                    "description": "Team"
                  },
                  "project": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Project ID"
                      },
                      "name": {
                        "type": "string",
                        "description": "Project name"
                      },
                      "state": {
                        "type": "string",
                        "description": "Project state"
                      }
                    },
                    "required": [
                      "id",
                      "name"
                    ],
                    "additionalProperties": true,
                    "description": "Project",
                    "nullable": true
                  },
                  "labels": {
                    "type": "object",
                    "properties": {
                      "nodes": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Label ID"
                            },
                            "name": {
                              "type": "string",
                              "description": "Label name"
                            },
                            "color": {
                              "type": "string",
                              "description": "Label color"
                            }
                          },
                          "required": [
                            "id",
                            "name"
                          ],
                          "additionalProperties": true,
                          "description": "Linear label"
                        }
                      }
                    },
                    "additionalProperties": false,
                    "description": "Issue labels"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "Last update timestamp"
                  },
                  "dueDate": {
                    "type": "string",
                    "nullable": true,
                    "description": "Due date (YYYY-MM-DD)"
                  },
                  "url": {
                    "type": "string",
                    "description": "Issue URL"
                  }
                },
                "additionalProperties": true,
                "description": "Issue details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "issue": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Created issue ID"
                  },
                  "identifier": {
                    "type": "string",
                    "description": "Created issue identifier"
                  },
                  "url": {
                    "type": "string",
                    "description": "Issue URL"
                  }
                },
                "required": [
                  "id",
                  "identifier"
                ],
                "additionalProperties": false,
                "description": "Created issue info"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "issue": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Updated issue ID"
                  },
                  "identifier": {
                    "type": "string",
                    "description": "Updated issue identifier"
                  }
                },
                "required": [
                  "id",
                  "identifier"
                ],
                "additionalProperties": false,
                "description": "Updated issue info"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_teams"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "teams": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Team ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Team name"
                    },
                    "key": {
                      "type": "string",
                      "description": "Team key (e.g., \"LIN\")"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "key"
                  ],
                  "additionalProperties": true,
                  "description": "Linear team"
                },
                "description": "Available teams"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "projects": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Project ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Project name"
                    },
                    "state": {
                      "type": "string",
                      "description": "Project state"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": true,
                  "description": "Linear project"
                },
                "description": "Available projects"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_workflow_states"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "states": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Workflow state ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "State name (e.g., \"Todo\", \"In Progress\", \"Done\")"
                    },
                    "type": {
                      "type": "string",
                      "description": "State type (backlog, unstarted, started, completed, cancelled)"
                    },
                    "color": {
                      "type": "string",
                      "description": "State color"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": true,
                  "description": "Linear workflow state"
                },
                "description": "Workflow states"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_comment"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "comment": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Comment ID"
                  },
                  "body": {
                    "type": "string",
                    "description": "Comment body (markdown)"
                  },
                  "user": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "User ID"
                      },
                      "name": {
                        "type": "string",
                        "description": "User display name"
                      },
                      "email": {
                        "type": "string",
                        "description": "User email address"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "additionalProperties": true,
                    "description": "Comment author",
                    "nullable": true
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "Created comment"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_comments"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "comments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Comment ID"
                    },
                    "body": {
                      "type": "string",
                      "description": "Comment body (markdown)"
                    },
                    "user": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "User ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "User display name"
                        },
                        "email": {
                          "type": "string",
                          "description": "User email address"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": true,
                      "description": "Comment author",
                      "nullable": true
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "Creation timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "Last update timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": true,
                  "description": "Linear comment"
                },
                "description": "Issue comments"
              },
              "total": {
                "type": "number",
                "description": "Total comments"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_labels"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "labels": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Label ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Label name"
                    },
                    "color": {
                      "type": "string",
                      "description": "Label color"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": true,
                  "description": "Linear label"
                },
                "description": "Available labels"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Search example\nconst linear_search = new LinearBubble({\n  operation: \"search\", // Search for issues with text query and filters\n  query: \"example string\", // Text to search for in issue titles and descriptions\n  teamId: \"example string\", // Filter by team ID\n  assigneeId: \"example string\", // Filter by assignee user ID\n  stateId: \"example string\", // Filter by workflow state ID\n  labelId: \"example string\", // Filter by label ID\n  projectId: \"example string\", // Filter by project ID\n  priority: 42, // Filter by priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)\n  limit: 50 // default, // Maximum number of issues to return (1-100)\n  includeArchived: false // default, // Include archived issues in results\n});\n\nconst result = await linear_search.action();\n// outputSchema for result.data when operation === 'search':\n// {\n//   operation: \"search\",\n//   success: boolean // Whether the operation was successful,\n//   issues: { id: string | undefined // Issue ID, identifier: string | undefined // Issue identifier (e.g., \"LIN-123\"), title: string | undefined // Issue title, description: string | null | undefined // Issue description (markdown), priority: number | undefined // Priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low), priorityLabel: string | undefined // Priority label (e.g., \"High\"), state: { id: string // Workflow state ID, name: string // State name (e.g., \"Todo\", \"In Progress\", \"Done\"), type: string | undefined // State type (backlog, unstarted, started, completed, cancelled), color: string | undefined // State color } | undefined // Current state, assignee: { id: string // User ID, name: string | undefined // User display name, email: string | undefined // User email address } | null | undefined // Assigned user, team: { id: string // Team ID, name: string // Team name, key: string // Team key (e.g., \"LIN\") } | undefined // Team, project: { id: string // Project ID, name: string // Project name, state: string | undefined // Project state } | null | undefined // Project, labels: { nodes: { id: string // Label ID, name: string // Label name, color: string | undefined // Label color }[] | undefined } | undefined // Issue labels, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp, dueDate: string | null | undefined // Due date (YYYY-MM-DD), url: string | undefined // Issue URL }[] | undefined // Found issues,\n//   total: number | undefined // Total matching issues,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get example\nconst linear_get = new LinearBubble({\n  operation: \"get\", // Get details for a specific issue\n  identifier: \"example string\", // Issue identifier (e.g., \"LIN-123\") or issue ID\n});\n\nconst result = await linear_get.action();\n// outputSchema for result.data when operation === 'get':\n// {\n//   operation: \"get\",\n//   success: boolean // Whether the operation was successful,\n//   issue: { id: string | undefined // Issue ID, identifier: string | undefined // Issue identifier (e.g., \"LIN-123\"), title: string | undefined // Issue title, description: string | null | undefined // Issue description (markdown), priority: number | undefined // Priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low), priorityLabel: string | undefined // Priority label (e.g., \"High\"), state: { id: string // Workflow state ID, name: string // State name (e.g., \"Todo\", \"In Progress\", \"Done\"), type: string | undefined // State type (backlog, unstarted, started, completed, cancelled), color: string | undefined // State color } | undefined // Current state, assignee: { id: string // User ID, name: string | undefined // User display name, email: string | undefined // User email address } | null | undefined // Assigned user, team: { id: string // Team ID, name: string // Team name, key: string // Team key (e.g., \"LIN\") } | undefined // Team, project: { id: string // Project ID, name: string // Project name, state: string | undefined // Project state } | null | undefined // Project, labels: { nodes: { id: string // Label ID, name: string // Label name, color: string | undefined // Label color }[] | undefined } | undefined // Issue labels, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp, dueDate: string | null | undefined // Due date (YYYY-MM-DD), url: string | undefined // Issue URL } | undefined // Issue details,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create example\nconst linear_create = new LinearBubble({\n  operation: \"create\", // Create a new issue in Linear\n  teamId: \"example string\", // Team ID to create the issue in\n  title: \"example string\", // Issue title\n  description: \"example string\", // Issue description (supports markdown)\n  assigneeId: \"example string\", // Assignee user ID. Leave empty for unassigned\n  priority: 42, // Issue priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)\n  stateId: \"example string\", // Workflow state ID. If not set, uses the team default\n  stateName: \"example string\", // Workflow state name (e.g., \"In Progress\"). Resolved to ID automatically. Use this instead of stateId for convenience\n  labelIds: [\"example string\"], // Label IDs to apply\n  projectId: \"example string\", // Project ID to associate with\n  dueDate: \"example string\", // Due date in YYYY-MM-DD format\n  parentId: \"example string\", // Parent issue ID for sub-issues\n  estimate: 42, // Issue estimate (points)\n});\n\nconst result = await linear_create.action();\n// outputSchema for result.data when operation === 'create':\n// {\n//   operation: \"create\",\n//   success: boolean // Whether the operation was successful,\n//   issue: { id: string // Created issue ID, identifier: string // Created issue identifier, url: string | undefined // Issue URL } | undefined // Created issue info,\n//   error: string // Error message if operation failed\n// }\n\n\n// Update example\nconst linear_update = new LinearBubble({\n  operation: \"update\", // Update an existing issue\n  id: \"example string\", // Issue ID (UUID) or identifier (e.g., \"LIN-123\")\n  title: \"example string\", // New issue title\n  description: \"example string\", // New description (supports markdown)\n  assigneeId: \"example string\", // New assignee user ID or null to unassign\n  priority: 42, // New priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)\n  stateId: \"example string\", // New workflow state ID\n  stateName: \"example string\", // New workflow state name (e.g., \"Done\"). Resolved to ID automatically\n  labels: { add: [\"example string\"] // Label IDs or names to add to the issue, remove: [\"example string\"] // Label IDs or names to remove from the issue }, // Label modifications\n  projectId: \"example string\", // New project ID or null to remove from project\n  dueDate: \"example string\", // New due date (YYYY-MM-DD) or null to clear\n  estimate: 42, // New estimate (points) or null to clear\n});\n\nconst result = await linear_update.action();\n// outputSchema for result.data when operation === 'update':\n// {\n//   operation: \"update\",\n//   success: boolean // Whether the operation was successful,\n//   issue: { id: string // Updated issue ID, identifier: string // Updated issue identifier } | undefined // Updated issue info,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Teams example\nconst linear_list_teams = new LinearBubble({\n  operation: \"list_teams\", // List all teams\n});\n\nconst result = await linear_list_teams.action();\n// outputSchema for result.data when operation === 'list_teams':\n// {\n//   operation: \"list_teams\",\n//   success: boolean // Whether the operation was successful,\n//   teams: { id: string // Team ID, name: string // Team name, key: string // Team key (e.g., \"LIN\") }[] | undefined // Available teams,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Projects example\nconst linear_list_projects = new LinearBubble({\n  operation: \"list_projects\", // List projects, optionally filtered by team\n  teamId: \"example string\", // Filter projects by team ID\n  limit: 50 // default, // Maximum number of projects to return\n  includeArchived: false // default, // Include archived projects\n});\n\nconst result = await linear_list_projects.action();\n// outputSchema for result.data when operation === 'list_projects':\n// {\n//   operation: \"list_projects\",\n//   success: boolean // Whether the operation was successful,\n//   projects: { id: string // Project ID, name: string // Project name, state: string | undefined // Project state }[] | undefined // Available projects,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Workflow States example\nconst linear_list_workflow_states = new LinearBubble({\n  operation: \"list_workflow_states\", // List workflow states for a team\n  teamId: \"example string\", // Team ID to get workflow states for\n});\n\nconst result = await linear_list_workflow_states.action();\n// outputSchema for result.data when operation === 'list_workflow_states':\n// {\n//   operation: \"list_workflow_states\",\n//   success: boolean // Whether the operation was successful,\n//   states: { id: string // Workflow state ID, name: string // State name (e.g., \"Todo\", \"In Progress\", \"Done\"), type: string | undefined // State type (backlog, unstarted, started, completed, cancelled), color: string | undefined // State color }[] | undefined // Workflow states,\n//   error: string // Error message if operation failed\n// }\n\n\n// Add Comment example\nconst linear_add_comment = new LinearBubble({\n  operation: \"add_comment\", // Add a comment to an issue\n  issueId: \"example string\", // Issue ID (UUID) or identifier (e.g., \"LIN-123\")\n  body: \"example string\", // Comment text (supports markdown)\n});\n\nconst result = await linear_add_comment.action();\n// outputSchema for result.data when operation === 'add_comment':\n// {\n//   operation: \"add_comment\",\n//   success: boolean // Whether the operation was successful,\n//   comment: { id: string // Comment ID, body: string | undefined // Comment body (markdown), user: { id: string // User ID, name: string | undefined // User display name, email: string | undefined // User email address } | null | undefined // Comment author, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp } | undefined // Created comment,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Comments example\nconst linear_get_comments = new LinearBubble({\n  operation: \"get_comments\", // Get comments for an issue\n  issueId: \"example string\", // Issue ID (UUID) or identifier (e.g., \"LIN-123\")\n  limit: 50 // default, // Maximum number of comments to return\n});\n\nconst result = await linear_get_comments.action();\n// outputSchema for result.data when operation === 'get_comments':\n// {\n//   operation: \"get_comments\",\n//   success: boolean // Whether the operation was successful,\n//   comments: { id: string // Comment ID, body: string | undefined // Comment body (markdown), user: { id: string // User ID, name: string | undefined // User display name, email: string | undefined // User email address } | null | undefined // Comment author, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp }[] | undefined // Issue comments,\n//   total: number | undefined // Total comments,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Labels example\nconst linear_list_labels = new LinearBubble({\n  operation: \"list_labels\", // List labels, optionally filtered by team\n  teamId: \"example string\", // Filter labels by team ID\n});\n\nconst result = await linear_list_labels.action();\n// outputSchema for result.data when operation === 'list_labels':\n// {\n//   operation: \"list_labels\",\n//   success: boolean // Whether the operation was successful,\n//   labels: { id: string // Label ID, name: string // Label name, color: string | undefined // Label color }[] | undefined // Available labels,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`linear failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "LINEAR_CRED"
      ]
    },
    {
      "name": "attio",
      "alias": "attio",
      "type": "service",
      "shortDescription": "Attio CRM integration for managing records, notes, tasks, and lists",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_records"
                ],
                "description": "List records for a given object type with optional filtering"
              },
              "object": {
                "type": "string",
                "minLength": 1,
                "description": "Object slug or ID (e.g. \"people\", \"companies\", or a custom object slug)"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 500,
                "default": 25,
                "description": "Maximum number of records to return (1-500)"
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Number of records to skip for pagination"
              },
              "sorts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "attribute": {
                      "type": "string",
                      "description": "Attribute slug to sort by"
                    },
                    "direction": {
                      "type": "string",
                      "enum": [
                        "asc",
                        "desc"
                      ],
                      "default": "asc",
                      "description": "Sort direction"
                    }
                  },
                  "required": [
                    "attribute"
                  ],
                  "additionalProperties": false
                },
                "description": "Sort configuration for results"
              },
              "filter": {
                "type": "object",
                "additionalProperties": {},
                "description": "Filter object following Attio filter syntax (see Attio API docs)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_record"
                ],
                "description": "Get a single record by ID"
              },
              "object": {
                "type": "string",
                "minLength": 1,
                "description": "Object slug or ID (e.g. \"people\", \"companies\")"
              },
              "record_id": {
                "type": "string",
                "minLength": 1,
                "description": "The UUID of the record to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object",
              "record_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_record"
                ],
                "description": "Create a new record in a given object type"
              },
              "object": {
                "type": "string",
                "minLength": 1,
                "description": "Object slug or ID (e.g. \"people\", \"companies\")"
              },
              "values": {
                "type": "object",
                "additionalProperties": {},
                "description": "Attribute values for the new record (keyed by API slug)"
              },
              "matching_attribute": {
                "type": "string",
                "description": "Attribute slug for upsert matching (if set, acts as assert/upsert)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object",
              "values"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_record"
                ],
                "description": "Update an existing record by ID"
              },
              "object": {
                "type": "string",
                "minLength": 1,
                "description": "Object slug or ID (e.g. \"people\", \"companies\")"
              },
              "record_id": {
                "type": "string",
                "minLength": 1,
                "description": "The UUID of the record to update"
              },
              "values": {
                "type": "object",
                "additionalProperties": {},
                "description": "Attribute values to update (keyed by API slug)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object",
              "record_id",
              "values"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_record"
                ],
                "description": "Delete a record by ID"
              },
              "object": {
                "type": "string",
                "minLength": 1,
                "description": "Object slug or ID (e.g. \"people\", \"companies\")"
              },
              "record_id": {
                "type": "string",
                "minLength": 1,
                "description": "The UUID of the record to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object",
              "record_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_note"
                ],
                "description": "Create a note linked to a record"
              },
              "parent_object": {
                "type": "string",
                "minLength": 1,
                "description": "Object slug the note is linked to (e.g. \"people\", \"companies\")"
              },
              "parent_record_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the record to attach the note to"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "Title of the note"
              },
              "content": {
                "type": "string",
                "minLength": 1,
                "description": "Plain text content of the note"
              },
              "format": {
                "type": "string",
                "enum": [
                  "plaintext"
                ],
                "default": "plaintext",
                "description": "Content format"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "parent_object",
              "parent_record_id",
              "title",
              "content"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_notes"
                ],
                "description": "List notes, optionally filtered by parent record"
              },
              "parent_object": {
                "type": "string",
                "description": "Filter by object slug (e.g. \"people\")"
              },
              "parent_record_id": {
                "type": "string",
                "description": "Filter by parent record UUID"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Maximum number of notes to return"
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Number of notes to skip for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_task"
                ],
                "description": "Create a new task in Attio"
              },
              "content": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000,
                "description": "Plain text content of the task"
              },
              "deadline_at": {
                "type": "string",
                "description": "Deadline in ISO 8601 format (e.g. \"2025-12-31T23:59:59Z\")"
              },
              "is_completed": {
                "type": "boolean",
                "default": false,
                "description": "Whether the task starts as completed"
              },
              "linked_records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "target_object": {
                      "type": "string",
                      "description": "Object slug (e.g. \"people\", \"companies\")"
                    },
                    "target_record_id": {
                      "type": "string",
                      "description": "UUID of the record to link"
                    }
                  },
                  "required": [
                    "target_object",
                    "target_record_id"
                  ],
                  "additionalProperties": false
                },
                "description": "Records to link this task to"
              },
              "assignees": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "referenced_actor_type": {
                      "type": "string",
                      "enum": [
                        "workspace-member"
                      ],
                      "description": "Type of actor"
                    },
                    "referenced_actor_id": {
                      "type": "string",
                      "description": "UUID of the workspace member"
                    }
                  },
                  "required": [
                    "referenced_actor_type",
                    "referenced_actor_id"
                  ],
                  "additionalProperties": false
                },
                "description": "Workspace members to assign this task to"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "content"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tasks"
                ],
                "description": "List tasks with optional filtering"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Maximum number of tasks to return"
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Number of tasks to skip for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_task"
                ],
                "description": "Update an existing task"
              },
              "task_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the task to update"
              },
              "content": {
                "type": "string",
                "maxLength": 2000,
                "description": "Updated task content"
              },
              "deadline_at": {
                "type": "string",
                "description": "Updated deadline in ISO 8601 format"
              },
              "is_completed": {
                "type": "boolean",
                "description": "Updated completion status"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_task"
                ],
                "description": "Delete a task by ID"
              },
              "task_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the task to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_lists"
                ],
                "description": "List all lists (pipelines) in the workspace"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Maximum number of lists to return"
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Number of lists to skip for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_entry"
                ],
                "description": "Add a record to a list (create a list entry)"
              },
              "list": {
                "type": "string",
                "minLength": 1,
                "description": "List UUID or slug"
              },
              "parent_object": {
                "type": "string",
                "minLength": 1,
                "description": "Object slug of the record being added (e.g. \"companies\")"
              },
              "parent_record_id": {
                "type": "string",
                "minLength": 1,
                "description": "UUID of the record to add to the list"
              },
              "entry_values": {
                "type": "object",
                "additionalProperties": {},
                "default": {},
                "description": "Attribute values for the list entry (keyed by API slug)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "list",
              "parent_object",
              "parent_record_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_entries"
                ],
                "description": "List entries in a list"
              },
              "list": {
                "type": "string",
                "minLength": 1,
                "description": "List UUID or slug"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 500,
                "default": 25,
                "description": "Maximum number of entries to return"
              },
              "offset": {
                "type": "number",
                "minimum": 0,
                "default": 0,
                "description": "Number of entries to skip for pagination"
              },
              "filter": {
                "type": "object",
                "additionalProperties": {},
                "description": "Filter object following Attio filter syntax"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "list"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_records"
                ]
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "next_page_offset": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_record"
                ]
              },
              "record": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_record"
                ]
              },
              "record": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_record"
                ]
              },
              "record": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_record"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_note"
                ]
              },
              "note": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_notes"
                ]
              },
              "notes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_task"
                ]
              },
              "task": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tasks"
                ]
              },
              "tasks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_task"
                ]
              },
              "task": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_lists"
                ]
              },
              "lists": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_entry"
                ]
              },
              "entry": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_entries"
                ]
              },
              "entries": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "next_page_offset": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Records example\nconst attio_list_records = new AttioBubble({\n  operation: \"list_records\", // List records for a given object type with optional filtering\n  object: \"example string\", // Object slug or ID (e.g. \"people\", \"companies\", or a custom object slug)\n  limit: 25 // default, // Maximum number of records to return (1-500)\n  offset: 0 // default, // Number of records to skip for pagination\n  sorts: [{ attribute: \"example string\" // Attribute slug to sort by, direction: \"asc\" // options: \"asc\", \"desc\" // Sort direction }], // Sort configuration for results\n  filter: {}, // Filter object following Attio filter syntax (see Attio API docs)\n});\n\nconst result = await attio_list_records.action();\n// outputSchema for result.data when operation === 'list_records':\n// {\n//   operation: \"list_records\",\n//   records: Record<string, unknown>[] | undefined,\n//   next_page_offset: number | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Get Record example\nconst attio_get_record = new AttioBubble({\n  operation: \"get_record\", // Get a single record by ID\n  object: \"example string\", // Object slug or ID (e.g. \"people\", \"companies\")\n  record_id: \"example string\", // The UUID of the record to retrieve\n});\n\nconst result = await attio_get_record.action();\n// outputSchema for result.data when operation === 'get_record':\n// {\n//   operation: \"get_record\",\n//   record: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Create Record example\nconst attio_create_record = new AttioBubble({\n  operation: \"create_record\", // Create a new record in a given object type\n  object: \"example string\", // Object slug or ID (e.g. \"people\", \"companies\")\n  values: {}, // Attribute values for the new record (keyed by API slug)\n  matching_attribute: \"example string\", // Attribute slug for upsert matching (if set, acts as assert/upsert)\n});\n\nconst result = await attio_create_record.action();\n// outputSchema for result.data when operation === 'create_record':\n// {\n//   operation: \"create_record\",\n//   record: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Update Record example\nconst attio_update_record = new AttioBubble({\n  operation: \"update_record\", // Update an existing record by ID\n  object: \"example string\", // Object slug or ID (e.g. \"people\", \"companies\")\n  record_id: \"example string\", // The UUID of the record to update\n  values: {}, // Attribute values to update (keyed by API slug)\n});\n\nconst result = await attio_update_record.action();\n// outputSchema for result.data when operation === 'update_record':\n// {\n//   operation: \"update_record\",\n//   record: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Delete Record example\nconst attio_delete_record = new AttioBubble({\n  operation: \"delete_record\", // Delete a record by ID\n  object: \"example string\", // Object slug or ID (e.g. \"people\", \"companies\")\n  record_id: \"example string\", // The UUID of the record to delete\n});\n\nconst result = await attio_delete_record.action();\n// outputSchema for result.data when operation === 'delete_record':\n// {\n//   operation: \"delete_record\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Create Note example\nconst attio_create_note = new AttioBubble({\n  operation: \"create_note\", // Create a note linked to a record\n  parent_object: \"example string\", // Object slug the note is linked to (e.g. \"people\", \"companies\")\n  parent_record_id: \"example string\", // UUID of the record to attach the note to\n  title: \"example string\", // Title of the note\n  content: \"example string\", // Plain text content of the note\n  format: \"plaintext\", // Content format\n});\n\nconst result = await attio_create_note.action();\n// outputSchema for result.data when operation === 'create_note':\n// {\n//   operation: \"create_note\",\n//   note: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Notes example\nconst attio_list_notes = new AttioBubble({\n  operation: \"list_notes\", // List notes, optionally filtered by parent record\n  parent_object: \"example string\", // Filter by object slug (e.g. \"people\")\n  parent_record_id: \"example string\", // Filter by parent record UUID\n  limit: 25 // default, // Maximum number of notes to return\n  offset: 0 // default, // Number of notes to skip for pagination\n});\n\nconst result = await attio_list_notes.action();\n// outputSchema for result.data when operation === 'list_notes':\n// {\n//   operation: \"list_notes\",\n//   notes: Record<string, unknown>[] | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Create Task example\nconst attio_create_task = new AttioBubble({\n  operation: \"create_task\", // Create a new task in Attio\n  content: \"example string\", // Plain text content of the task\n  deadline_at: \"example string\", // Deadline in ISO 8601 format (e.g. \"2025-12-31T23:59:59Z\")\n  is_completed: false // default, // Whether the task starts as completed\n  linked_records: [{ target_object: \"example string\" // Object slug (e.g. \"people\", \"companies\"), target_record_id: \"example string\" // UUID of the record to link }], // Records to link this task to\n  assignees: [{ referenced_actor_type: \"workspace-member\" // Type of actor, referenced_actor_id: \"example string\" // UUID of the workspace member }], // Workspace members to assign this task to\n});\n\nconst result = await attio_create_task.action();\n// outputSchema for result.data when operation === 'create_task':\n// {\n//   operation: \"create_task\",\n//   task: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Tasks example\nconst attio_list_tasks = new AttioBubble({\n  operation: \"list_tasks\", // List tasks with optional filtering\n  limit: 25 // default, // Maximum number of tasks to return\n  offset: 0 // default, // Number of tasks to skip for pagination\n});\n\nconst result = await attio_list_tasks.action();\n// outputSchema for result.data when operation === 'list_tasks':\n// {\n//   operation: \"list_tasks\",\n//   tasks: Record<string, unknown>[] | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Update Task example\nconst attio_update_task = new AttioBubble({\n  operation: \"update_task\", // Update an existing task\n  task_id: \"example string\", // UUID of the task to update\n  content: \"example string\", // Updated task content\n  deadline_at: \"example string\", // Updated deadline in ISO 8601 format\n  is_completed: true, // Updated completion status\n});\n\nconst result = await attio_update_task.action();\n// outputSchema for result.data when operation === 'update_task':\n// {\n//   operation: \"update_task\",\n//   task: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Delete Task example\nconst attio_delete_task = new AttioBubble({\n  operation: \"delete_task\", // Delete a task by ID\n  task_id: \"example string\", // UUID of the task to delete\n});\n\nconst result = await attio_delete_task.action();\n// outputSchema for result.data when operation === 'delete_task':\n// {\n//   operation: \"delete_task\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Lists example\nconst attio_list_lists = new AttioBubble({\n  operation: \"list_lists\", // List all lists (pipelines) in the workspace\n  limit: 25 // default, // Maximum number of lists to return\n  offset: 0 // default, // Number of lists to skip for pagination\n});\n\nconst result = await attio_list_lists.action();\n// outputSchema for result.data when operation === 'list_lists':\n// {\n//   operation: \"list_lists\",\n//   lists: Record<string, unknown>[] | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Create Entry example\nconst attio_create_entry = new AttioBubble({\n  operation: \"create_entry\", // Add a record to a list (create a list entry)\n  list: \"example string\", // List UUID or slug\n  parent_object: \"example string\", // Object slug of the record being added (e.g. \"companies\")\n  parent_record_id: \"example string\", // UUID of the record to add to the list\n  entry_values: {} // default, // Attribute values for the list entry (keyed by API slug)\n});\n\nconst result = await attio_create_entry.action();\n// outputSchema for result.data when operation === 'create_entry':\n// {\n//   operation: \"create_entry\",\n//   entry: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Entries example\nconst attio_list_entries = new AttioBubble({\n  operation: \"list_entries\", // List entries in a list\n  list: \"example string\", // List UUID or slug\n  limit: 25 // default, // Maximum number of entries to return\n  offset: 0 // default, // Number of entries to skip for pagination\n  filter: {}, // Filter object following Attio filter syntax\n});\n\nconst result = await attio_list_entries.action();\n// outputSchema for result.data when operation === 'list_entries':\n// {\n//   operation: \"list_entries\",\n//   entries: Record<string, unknown>[] | undefined,\n//   next_page_offset: number | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`attio failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "ATTIO_CRED"
      ]
    },
    {
      "name": "hubspot",
      "alias": "crm",
      "type": "service",
      "shortDescription": "HubSpot CRM integration for contacts, companies, deals, and tickets",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_record"
                ],
                "description": "Create a new CRM record"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "properties": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object properties as key-value pairs. Common contact properties: email, firstname, lastname, phone, company. Common company properties: name, domain, industry. Common deal properties: dealname, pipeline, dealstage, amount. Common ticket properties: subject, content, hs_pipeline, hs_pipeline_stage. NOTE: Tickets REQUIRE hs_pipeline_stage (and usually hs_pipeline) to be set on creation."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "properties"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_record"
                ],
                "description": "Retrieve a single CRM record by ID"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "record_id": {
                "type": "string",
                "minLength": 1,
                "description": "HubSpot record ID"
              },
              "properties": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of property names to include in the response. If not specified, default properties are returned."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "record_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_record"
                ],
                "description": "Update an existing CRM record"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "record_id": {
                "type": "string",
                "minLength": 1,
                "description": "HubSpot record ID"
              },
              "properties": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object properties as key-value pairs. Common contact properties: email, firstname, lastname, phone, company. Common company properties: name, domain, industry. Common deal properties: dealname, pipeline, dealstage, amount. Common ticket properties: subject, content, hs_pipeline, hs_pipeline_stage. NOTE: Tickets REQUIRE hs_pipeline_stage (and usually hs_pipeline) to be set on creation."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "record_id",
              "properties"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_record"
                ],
                "description": "Archive (soft-delete) a CRM record"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "record_id": {
                "type": "string",
                "minLength": 1,
                "description": "HubSpot record ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "record_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_records"
                ],
                "description": "Search CRM records with filters"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "filter_groups": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "filters": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "propertyName": {
                            "type": "string",
                            "description": "Property name to filter on (e.g., \"email\", \"firstname\")"
                          },
                          "operator": {
                            "type": "string",
                            "enum": [
                              "EQ",
                              "NEQ",
                              "LT",
                              "LTE",
                              "GT",
                              "GTE",
                              "BETWEEN",
                              "IN",
                              "NOT_IN",
                              "HAS_PROPERTY",
                              "NOT_HAS_PROPERTY",
                              "CONTAINS_TOKEN",
                              "NOT_CONTAINS_TOKEN"
                            ],
                            "description": "Filter operator"
                          },
                          "value": {
                            "type": "string",
                            "description": "Value to compare against"
                          },
                          "highValue": {
                            "type": "string",
                            "description": "Upper bound value for BETWEEN operator"
                          },
                          "values": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Array of values for IN/NOT_IN operators"
                          }
                        },
                        "required": [
                          "propertyName",
                          "operator"
                        ],
                        "additionalProperties": false,
                        "description": "A single filter condition"
                      },
                      "minItems": 1,
                      "description": "Filters within this group (combined with AND)"
                    }
                  },
                  "required": [
                    "filters"
                  ],
                  "additionalProperties": false,
                  "description": "A group of filters combined with AND. Multiple groups are combined with OR."
                },
                "minItems": 1,
                "description": "Filter groups for the search query. Groups are combined with OR, filters within a group with AND."
              },
              "properties": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of property names to include in the response. If not specified, default properties are returned."
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 200,
                "default": 100,
                "description": "Maximum number of results to return (1-200, default 100)"
              },
              "after": {
                "type": "string",
                "description": "Pagination cursor for next page of results"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "filter_groups"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_create_records"
                ],
                "description": "Create multiple CRM records in a single API call"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "properties": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Object properties as key-value pairs. Common contact properties: email, firstname, lastname, phone, company. Common company properties: name, domain, industry. Common deal properties: dealname, pipeline, dealstage, amount. Common ticket properties: subject, content, hs_pipeline, hs_pipeline_stage. NOTE: Tickets REQUIRE hs_pipeline_stage (and usually hs_pipeline) to be set on creation."
                    }
                  },
                  "required": [
                    "properties"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 100,
                "description": "Array of records to create (max 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "records"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_update_records"
                ],
                "description": "Update multiple CRM records in a single API call"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Record ID to update"
                    },
                    "properties": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Object properties as key-value pairs. Common contact properties: email, firstname, lastname, phone, company. Common company properties: name, domain, industry. Common deal properties: dealname, pipeline, dealstage, amount. Common ticket properties: subject, content, hs_pipeline, hs_pipeline_stage. NOTE: Tickets REQUIRE hs_pipeline_stage (and usually hs_pipeline) to be set on creation."
                    }
                  },
                  "required": [
                    "id",
                    "properties"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 100,
                "description": "Array of records to update (max 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "records"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_delete_records"
                ],
                "description": "Archive multiple CRM records in a single API call"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "record_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "minItems": 1,
                "maxItems": 100,
                "description": "Array of record IDs to archive (max 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "record_ids"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_properties"
                ],
                "description": "List all property definitions for a CRM object type"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_property"
                ],
                "description": "Retrieve a single property definition by name"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "property_name": {
                "type": "string",
                "minLength": 1,
                "description": "Internal property name (snake_case, e.g. \"favorite_food\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "property_name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_property"
                ],
                "description": "Create a new custom property definition"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Internal property name (snake_case, e.g. \"favorite_food\")"
              },
              "label": {
                "type": "string",
                "description": "Display label (e.g. \"Favorite Food\")"
              },
              "type": {
                "type": "string",
                "enum": [
                  "string",
                  "number",
                  "date",
                  "datetime",
                  "enumeration",
                  "bool"
                ],
                "description": "Property data type. \"string\" for text, \"number\" for numeric, \"date\" for date-only, \"datetime\" for date+time, \"enumeration\" for option sets, \"bool\" for yes/no."
              },
              "fieldType": {
                "type": "string",
                "enum": [
                  "text",
                  "textarea",
                  "number",
                  "date",
                  "file",
                  "select",
                  "radio",
                  "checkbox",
                  "booleancheckbox",
                  "calculation_equation",
                  "html",
                  "phonenumber"
                ],
                "description": "How the property appears in HubSpot UI. Must be compatible with the property type."
              },
              "groupName": {
                "type": "string",
                "description": "Property group name (e.g. \"contactinformation\", \"dealinformation\")"
              },
              "description": {
                "type": "string",
                "description": "Description of the property"
              },
              "hasUniqueValue": {
                "type": "boolean",
                "description": "Whether this property must have unique values across records"
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "label": {
                      "type": "string",
                      "description": "Display label for the option"
                    },
                    "value": {
                      "type": "string",
                      "description": "Internal value for the option"
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the option"
                    },
                    "displayOrder": {
                      "type": "number",
                      "description": "Display order (lower = first)"
                    },
                    "hidden": {
                      "type": "boolean",
                      "description": "Whether this option is hidden from forms"
                    }
                  },
                  "required": [
                    "label",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Options for enumeration-type properties (select, radio, checkbox)"
              },
              "calculationFormula": {
                "type": "string",
                "description": "Formula for calculation_equation fieldType properties"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "name",
              "label",
              "type",
              "fieldType",
              "groupName"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_property"
                ],
                "description": "Update an existing property definition"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "property_name": {
                "type": "string",
                "minLength": 1,
                "description": "Internal property name (snake_case, e.g. \"favorite_food\")"
              },
              "label": {
                "type": "string",
                "description": "New display label"
              },
              "description": {
                "type": "string",
                "description": "New description"
              },
              "groupName": {
                "type": "string",
                "description": "New property group name"
              },
              "type": {
                "type": "string",
                "enum": [
                  "string",
                  "number",
                  "date",
                  "datetime",
                  "enumeration",
                  "bool"
                ],
                "description": "Property data type. \"string\" for text, \"number\" for numeric, \"date\" for date-only, \"datetime\" for date+time, \"enumeration\" for option sets, \"bool\" for yes/no."
              },
              "fieldType": {
                "type": "string",
                "enum": [
                  "text",
                  "textarea",
                  "number",
                  "date",
                  "file",
                  "select",
                  "radio",
                  "checkbox",
                  "booleancheckbox",
                  "calculation_equation",
                  "html",
                  "phonenumber"
                ],
                "description": "How the property appears in HubSpot UI. Must be compatible with the property type."
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "label": {
                      "type": "string",
                      "description": "Display label for the option"
                    },
                    "value": {
                      "type": "string",
                      "description": "Internal value for the option"
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the option"
                    },
                    "displayOrder": {
                      "type": "number",
                      "description": "Display order (lower = first)"
                    },
                    "hidden": {
                      "type": "boolean",
                      "description": "Whether this option is hidden from forms"
                    }
                  },
                  "required": [
                    "label",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Updated options for enumeration-type properties"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "property_name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_property"
                ],
                "description": "Delete a custom property definition (cannot delete default properties)"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
              },
              "property_name": {
                "type": "string",
                "minLength": 1,
                "description": "Internal property name (snake_case, e.g. \"favorite_food\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type",
              "property_name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_associations"
                ],
                "description": "List all records associated with a given record"
              },
              "from_object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "Source object type"
              },
              "from_record_id": {
                "type": "string",
                "minLength": 1,
                "description": "Source record ID"
              },
              "to_object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "Target object type to list associations for"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "from_object_type",
              "from_record_id",
              "to_object_type"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_association"
                ],
                "description": "Create a default association (link) between two CRM records"
              },
              "from_object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "Source object type"
              },
              "from_record_id": {
                "type": "string",
                "description": "Source record ID"
              },
              "to_object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "Target object type"
              },
              "to_record_id": {
                "type": "string",
                "description": "Target record ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "from_object_type",
              "from_record_id",
              "to_object_type",
              "to_record_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_association"
                ],
                "description": "Remove all associations between two specific records"
              },
              "from_object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "Source object type"
              },
              "from_record_id": {
                "type": "string",
                "description": "Source record ID"
              },
              "to_object_type": {
                "type": "string",
                "enum": [
                  "contacts",
                  "companies",
                  "deals",
                  "tickets"
                ],
                "description": "Target object type"
              },
              "to_record_id": {
                "type": "string",
                "description": "Target record ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "from_object_type",
              "from_record_id",
              "to_object_type",
              "to_record_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_pipelines"
                ],
                "description": "List all pipelines and their stages for deals or tickets"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "deals",
                  "tickets"
                ],
                "description": "Object type that supports pipelines (deals or tickets)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_type"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_note"
                ],
                "description": "Create a note and associate it with CRM records"
              },
              "note_body": {
                "type": "string",
                "description": "Note content (supports HTML formatting)"
              },
              "associations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "object_type": {
                      "type": "string",
                      "enum": [
                        "contacts",
                        "companies",
                        "deals",
                        "tickets"
                      ],
                      "description": "HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)"
                    },
                    "record_id": {
                      "type": "string",
                      "description": "Record ID to associate the note with"
                    }
                  },
                  "required": [
                    "object_type",
                    "record_id"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "description": "Records to associate the note with"
              },
              "timestamp": {
                "type": "string",
                "description": "ISO 8601 timestamp for the note (defaults to current time)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "note_body",
              "associations"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_owners"
                ],
                "description": "List HubSpot account owners (users who can be assigned to records)"
              },
              "email": {
                "type": "string",
                "description": "Filter owners by email address"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 500,
                "default": 100,
                "description": "Maximum number of owners to return (1-500, default 100)"
              },
              "after": {
                "type": "string",
                "description": "Pagination cursor for next page of results"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_owner"
                ],
                "description": "Retrieve a single HubSpot owner by ID"
              },
              "owner_id": {
                "type": "string",
                "minLength": 1,
                "description": "HubSpot owner ID (e.g., from hubspot_owner_id property on records)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "owner_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_account_info"
                ],
                "description": "Retrieve HubSpot account details including portal ID, timezone, and currency"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_record"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "record": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Record ID"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Record properties"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "Last update timestamp"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the record is archived"
                  }
                },
                "required": [
                  "id",
                  "properties"
                ],
                "additionalProperties": false,
                "description": "A HubSpot CRM record"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_record"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "record": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Record ID"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Record properties"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "Last update timestamp"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the record is archived"
                  }
                },
                "required": [
                  "id",
                  "properties"
                ],
                "additionalProperties": false,
                "description": "A HubSpot CRM record"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_record"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "record": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Record ID"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Record properties"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "description": "Last update timestamp"
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "Whether the record is archived"
                  }
                },
                "required": [
                  "id",
                  "properties"
                ],
                "additionalProperties": false,
                "description": "A HubSpot CRM record"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_record"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_records"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Record ID"
                    },
                    "properties": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Record properties"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "Creation timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "Last update timestamp"
                    },
                    "archived": {
                      "type": "boolean",
                      "description": "Whether the record is archived"
                    }
                  },
                  "required": [
                    "id",
                    "properties"
                  ],
                  "additionalProperties": false,
                  "description": "A HubSpot CRM record"
                }
              },
              "total": {
                "type": "number"
              },
              "paging": {
                "type": "object",
                "properties": {
                  "next": {
                    "type": "object",
                    "properties": {
                      "after": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "after"
                    ],
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_create_records"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Record ID"
                    },
                    "properties": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Record properties"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "Creation timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "Last update timestamp"
                    },
                    "archived": {
                      "type": "boolean",
                      "description": "Whether the record is archived"
                    }
                  },
                  "required": [
                    "id",
                    "properties"
                  ],
                  "additionalProperties": false,
                  "description": "A HubSpot CRM record"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_update_records"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Record ID"
                    },
                    "properties": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Record properties"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "Creation timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "Last update timestamp"
                    },
                    "archived": {
                      "type": "boolean",
                      "description": "Whether the record is archived"
                    }
                  },
                  "required": [
                    "id",
                    "properties"
                  ],
                  "additionalProperties": false,
                  "description": "A HubSpot CRM record"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "batch_delete_records"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_properties"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "properties": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_property"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "property": {
                "type": "object",
                "additionalProperties": {}
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_property"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "property": {
                "type": "object",
                "additionalProperties": {}
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_property"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "property": {
                "type": "object",
                "additionalProperties": {}
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_property"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_associations"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "associations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_association"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_association"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_pipelines"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "pipelines": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_note"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "note": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Note ID"
                  },
                  "properties": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Note properties including hs_note_body, hs_timestamp"
                  }
                },
                "required": [
                  "id",
                  "properties"
                ],
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_owners"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "owners": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "paging": {
                "type": "object",
                "properties": {
                  "next": {
                    "type": "object",
                    "properties": {
                      "after": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "after"
                    ],
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_owner"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "owner": {
                "type": "object",
                "additionalProperties": {}
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_account_info"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "account": {
                "type": "object",
                "additionalProperties": {}
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Create Record example\nconst hubspot_create_record = new HubSpotBubble({\n  operation: \"create_record\", // Create a new CRM record\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  properties: { \"example_key\": \"example string\" }, // Object properties as key-value pairs. Common contact properties: email, firstname, lastname, phone, company. Common company properties: name, domain, industry. Common deal properties: dealname, pipeline, dealstage, amount. Common ticket properties: subject, content, hs_pipeline, hs_pipeline_stage. NOTE: Tickets REQUIRE hs_pipeline_stage (and usually hs_pipeline) to be set on creation.\n});\n\nconst result = await hubspot_create_record.action();\n// outputSchema for result.data when operation === 'create_record':\n// {\n//   operation: \"create_record\",\n//   success: boolean,\n//   record: { id: string // Record ID, properties: Record<string, unknown> // Record properties, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp, archived: boolean | undefined // Whether the record is archived } | undefined // A HubSpot CRM record,\n//   error: string\n// }\n\n\n// Get Record example\nconst hubspot_get_record = new HubSpotBubble({\n  operation: \"get_record\", // Retrieve a single CRM record by ID\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  record_id: \"example string\", // HubSpot record ID\n  properties: [\"example string\"], // List of property names to include in the response. If not specified, default properties are returned.\n});\n\nconst result = await hubspot_get_record.action();\n// outputSchema for result.data when operation === 'get_record':\n// {\n//   operation: \"get_record\",\n//   success: boolean,\n//   record: { id: string // Record ID, properties: Record<string, unknown> // Record properties, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp, archived: boolean | undefined // Whether the record is archived } | undefined // A HubSpot CRM record,\n//   error: string\n// }\n\n\n// Update Record example\nconst hubspot_update_record = new HubSpotBubble({\n  operation: \"update_record\", // Update an existing CRM record\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  record_id: \"example string\", // HubSpot record ID\n  properties: { \"example_key\": \"example string\" }, // Object properties as key-value pairs. Common contact properties: email, firstname, lastname, phone, company. Common company properties: name, domain, industry. Common deal properties: dealname, pipeline, dealstage, amount. Common ticket properties: subject, content, hs_pipeline, hs_pipeline_stage. NOTE: Tickets REQUIRE hs_pipeline_stage (and usually hs_pipeline) to be set on creation.\n});\n\nconst result = await hubspot_update_record.action();\n// outputSchema for result.data when operation === 'update_record':\n// {\n//   operation: \"update_record\",\n//   success: boolean,\n//   record: { id: string // Record ID, properties: Record<string, unknown> // Record properties, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp, archived: boolean | undefined // Whether the record is archived } | undefined // A HubSpot CRM record,\n//   error: string\n// }\n\n\n// Delete Record example\nconst hubspot_delete_record = new HubSpotBubble({\n  operation: \"delete_record\", // Archive (soft-delete) a CRM record\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  record_id: \"example string\", // HubSpot record ID\n});\n\nconst result = await hubspot_delete_record.action();\n// outputSchema for result.data when operation === 'delete_record':\n// {\n//   operation: \"delete_record\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Search Records example\nconst hubspot_search_records = new HubSpotBubble({\n  operation: \"search_records\", // Search CRM records with filters\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  filter_groups: [{ filters: [{ propertyName: \"example string\" // Property name to filter on (e.g., \"email\", \"firstname\"), operator: \"EQ\" // options: \"EQ\", \"NEQ\", \"LT\", \"LTE\", \"GT\", \"GTE\", \"BETWEEN\", \"IN\", \"NOT_IN\", \"HAS_PROPERTY\", \"NOT_HAS_PROPERTY\", \"CONTAINS_TOKEN\", \"NOT_CONTAINS_TOKEN\" // Filter operator, value: \"example string\" // Value to compare against, highValue: \"example string\" // Upper bound value for BETWEEN operator, values: [\"example string\"] // Array of values for IN/NOT_IN operators }] // Filters within this group (combined with AND) }], // Filter groups for the search query. Groups are combined with OR, filters within a group with AND.\n  properties: [\"example string\"], // List of property names to include in the response. If not specified, default properties are returned.\n  limit: 100 // default, // Maximum number of results to return (1-200, default 100)\n  after: \"example string\", // Pagination cursor for next page of results\n});\n\nconst result = await hubspot_search_records.action();\n// outputSchema for result.data when operation === 'search_records':\n// {\n//   operation: \"search_records\",\n//   success: boolean,\n//   results: { id: string // Record ID, properties: Record<string, unknown> // Record properties, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp, archived: boolean | undefined // Whether the record is archived }[] | undefined,\n//   total: number | undefined,\n//   paging: { next: { after: string } | undefined } | undefined,\n//   error: string\n// }\n\n\n// Batch Create Records example\nconst hubspot_batch_create_records = new HubSpotBubble({\n  operation: \"batch_create_records\", // Create multiple CRM records in a single API call\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  records: [{ properties: { \"example_key\": \"example string\" } // Object properties as key-value pairs. Common contact properties: email, firstname, lastname, phone, company. Common company properties: name, domain, industry. Common deal properties: dealname, pipeline, dealstage, amount. Common ticket properties: subject, content, hs_pipeline, hs_pipeline_stage. NOTE: Tickets REQUIRE hs_pipeline_stage (and usually hs_pipeline) to be set on creation. }], // Array of records to create (max 100)\n});\n\nconst result = await hubspot_batch_create_records.action();\n// outputSchema for result.data when operation === 'batch_create_records':\n// {\n//   operation: \"batch_create_records\",\n//   success: boolean,\n//   results: { id: string // Record ID, properties: Record<string, unknown> // Record properties, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp, archived: boolean | undefined // Whether the record is archived }[] | undefined,\n//   error: string\n// }\n\n\n// Batch Update Records example\nconst hubspot_batch_update_records = new HubSpotBubble({\n  operation: \"batch_update_records\", // Update multiple CRM records in a single API call\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  records: [{ id: \"example string\" // Record ID to update, properties: { \"example_key\": \"example string\" } // Object properties as key-value pairs. Common contact properties: email, firstname, lastname, phone, company. Common company properties: name, domain, industry. Common deal properties: dealname, pipeline, dealstage, amount. Common ticket properties: subject, content, hs_pipeline, hs_pipeline_stage. NOTE: Tickets REQUIRE hs_pipeline_stage (and usually hs_pipeline) to be set on creation. }], // Array of records to update (max 100)\n});\n\nconst result = await hubspot_batch_update_records.action();\n// outputSchema for result.data when operation === 'batch_update_records':\n// {\n//   operation: \"batch_update_records\",\n//   success: boolean,\n//   results: { id: string // Record ID, properties: Record<string, unknown> // Record properties, createdAt: string | undefined // Creation timestamp, updatedAt: string | undefined // Last update timestamp, archived: boolean | undefined // Whether the record is archived }[] | undefined,\n//   error: string\n// }\n\n\n// Batch Delete Records example\nconst hubspot_batch_delete_records = new HubSpotBubble({\n  operation: \"batch_delete_records\", // Archive multiple CRM records in a single API call\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  record_ids: [\"example string\"], // Array of record IDs to archive (max 100)\n});\n\nconst result = await hubspot_batch_delete_records.action();\n// outputSchema for result.data when operation === 'batch_delete_records':\n// {\n//   operation: \"batch_delete_records\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Properties example\nconst hubspot_list_properties = new HubSpotBubble({\n  operation: \"list_properties\", // List all property definitions for a CRM object type\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n});\n\nconst result = await hubspot_list_properties.action();\n// outputSchema for result.data when operation === 'list_properties':\n// {\n//   operation: \"list_properties\",\n//   success: boolean,\n//   properties: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Get Property example\nconst hubspot_get_property = new HubSpotBubble({\n  operation: \"get_property\", // Retrieve a single property definition by name\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  property_name: \"example string\", // Internal property name (snake_case, e.g. \"favorite_food\")\n});\n\nconst result = await hubspot_get_property.action();\n// outputSchema for result.data when operation === 'get_property':\n// {\n//   operation: \"get_property\",\n//   success: boolean,\n//   property: Record<string, unknown> | undefined,\n//   error: string\n// }\n\n\n// Create Property example\nconst hubspot_create_property = new HubSpotBubble({\n  operation: \"create_property\", // Create a new custom property definition\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  name: \"example string\", // Internal property name (snake_case, e.g. \"favorite_food\")\n  label: \"example string\", // Display label (e.g. \"Favorite Food\")\n  type: \"string\" // options: \"string\", \"number\", \"date\", \"datetime\", \"enumeration\", \"bool\", // Property data type. \"string\" for text, \"number\" for numeric, \"date\" for date-only, \"datetime\" for date+time, \"enumeration\" for option sets, \"bool\" for yes/no.\n  fieldType: \"text\" // options: \"text\", \"textarea\", \"number\", \"date\", \"file\", \"select\", \"radio\", \"checkbox\", \"booleancheckbox\", \"calculation_equation\", \"html\", \"phonenumber\", // How the property appears in HubSpot UI. Must be compatible with the property type.\n  groupName: \"example string\", // Property group name (e.g. \"contactinformation\", \"dealinformation\")\n  description: \"example string\", // Description of the property\n  hasUniqueValue: true, // Whether this property must have unique values across records\n  options: [{ label: \"example string\" // Display label for the option, value: \"example string\" // Internal value for the option, description: \"example string\" // Description of the option, displayOrder: 42 // Display order (lower = first), hidden: true // Whether this option is hidden from forms }], // Options for enumeration-type properties (select, radio, checkbox)\n  calculationFormula: \"example string\", // Formula for calculation_equation fieldType properties\n});\n\nconst result = await hubspot_create_property.action();\n// outputSchema for result.data when operation === 'create_property':\n// {\n//   operation: \"create_property\",\n//   success: boolean,\n//   property: Record<string, unknown> | undefined,\n//   error: string\n// }\n\n\n// Update Property example\nconst hubspot_update_property = new HubSpotBubble({\n  operation: \"update_property\", // Update an existing property definition\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  property_name: \"example string\", // Internal property name (snake_case, e.g. \"favorite_food\")\n  label: \"example string\", // New display label\n  description: \"example string\", // New description\n  groupName: \"example string\", // New property group name\n  type: \"string\" // options: \"string\", \"number\", \"date\", \"datetime\", \"enumeration\", \"bool\", // Property data type. \"string\" for text, \"number\" for numeric, \"date\" for date-only, \"datetime\" for date+time, \"enumeration\" for option sets, \"bool\" for yes/no.\n  fieldType: \"text\" // options: \"text\", \"textarea\", \"number\", \"date\", \"file\", \"select\", \"radio\", \"checkbox\", \"booleancheckbox\", \"calculation_equation\", \"html\", \"phonenumber\", // How the property appears in HubSpot UI. Must be compatible with the property type.\n  options: [{ label: \"example string\" // Display label for the option, value: \"example string\" // Internal value for the option, description: \"example string\" // Description of the option, displayOrder: 42 // Display order (lower = first), hidden: true // Whether this option is hidden from forms }], // Updated options for enumeration-type properties\n});\n\nconst result = await hubspot_update_property.action();\n// outputSchema for result.data when operation === 'update_property':\n// {\n//   operation: \"update_property\",\n//   success: boolean,\n//   property: Record<string, unknown> | undefined,\n//   error: string\n// }\n\n\n// Delete Property example\nconst hubspot_delete_property = new HubSpotBubble({\n  operation: \"delete_property\", // Delete a custom property definition (cannot delete default properties)\n  object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets)\n  property_name: \"example string\", // Internal property name (snake_case, e.g. \"favorite_food\")\n});\n\nconst result = await hubspot_delete_property.action();\n// outputSchema for result.data when operation === 'delete_property':\n// {\n//   operation: \"delete_property\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Associations example\nconst hubspot_list_associations = new HubSpotBubble({\n  operation: \"list_associations\", // List all records associated with a given record\n  from_object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // Source object type\n  from_record_id: \"example string\", // Source record ID\n  to_object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // Target object type to list associations for\n});\n\nconst result = await hubspot_list_associations.action();\n// outputSchema for result.data when operation === 'list_associations':\n// {\n//   operation: \"list_associations\",\n//   success: boolean,\n//   associations: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Create Association example\nconst hubspot_create_association = new HubSpotBubble({\n  operation: \"create_association\", // Create a default association (link) between two CRM records\n  from_object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // Source object type\n  from_record_id: \"example string\", // Source record ID\n  to_object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // Target object type\n  to_record_id: \"example string\", // Target record ID\n});\n\nconst result = await hubspot_create_association.action();\n// outputSchema for result.data when operation === 'create_association':\n// {\n//   operation: \"create_association\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Remove Association example\nconst hubspot_remove_association = new HubSpotBubble({\n  operation: \"remove_association\", // Remove all associations between two specific records\n  from_object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // Source object type\n  from_record_id: \"example string\", // Source record ID\n  to_object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\", // Target object type\n  to_record_id: \"example string\", // Target record ID\n});\n\nconst result = await hubspot_remove_association.action();\n// outputSchema for result.data when operation === 'remove_association':\n// {\n//   operation: \"remove_association\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Pipelines example\nconst hubspot_list_pipelines = new HubSpotBubble({\n  operation: \"list_pipelines\", // List all pipelines and their stages for deals or tickets\n  object_type: \"deals\" // options: \"deals\", \"tickets\", // Object type that supports pipelines (deals or tickets)\n});\n\nconst result = await hubspot_list_pipelines.action();\n// outputSchema for result.data when operation === 'list_pipelines':\n// {\n//   operation: \"list_pipelines\",\n//   success: boolean,\n//   pipelines: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Create Note example\nconst hubspot_create_note = new HubSpotBubble({\n  operation: \"create_note\", // Create a note and associate it with CRM records\n  note_body: \"example string\", // Note content (supports HTML formatting)\n  associations: [{ object_type: \"contacts\" // options: \"contacts\", \"companies\", \"deals\", \"tickets\" // HubSpot CRM object type to operate on (contacts, companies, deals, or tickets), record_id: \"example string\" // Record ID to associate the note with }], // Records to associate the note with\n  timestamp: \"example string\", // ISO 8601 timestamp for the note (defaults to current time)\n});\n\nconst result = await hubspot_create_note.action();\n// outputSchema for result.data when operation === 'create_note':\n// {\n//   operation: \"create_note\",\n//   success: boolean,\n//   note: { id: string // Note ID, properties: Record<string, unknown> // Note properties including hs_note_body, hs_timestamp } | undefined,\n//   error: string\n// }\n\n\n// List Owners example\nconst hubspot_list_owners = new HubSpotBubble({\n  operation: \"list_owners\", // List HubSpot account owners (users who can be assigned to records)\n  email: \"example string\", // Filter owners by email address\n  limit: 100 // default, // Maximum number of owners to return (1-500, default 100)\n  after: \"example string\", // Pagination cursor for next page of results\n});\n\nconst result = await hubspot_list_owners.action();\n// outputSchema for result.data when operation === 'list_owners':\n// {\n//   operation: \"list_owners\",\n//   success: boolean,\n//   owners: Record<string, unknown>[] | undefined,\n//   paging: { next: { after: string } | undefined } | undefined,\n//   error: string\n// }\n\n\n// Get Owner example\nconst hubspot_get_owner = new HubSpotBubble({\n  operation: \"get_owner\", // Retrieve a single HubSpot owner by ID\n  owner_id: \"example string\", // HubSpot owner ID (e.g., from hubspot_owner_id property on records)\n});\n\nconst result = await hubspot_get_owner.action();\n// outputSchema for result.data when operation === 'get_owner':\n// {\n//   operation: \"get_owner\",\n//   success: boolean,\n//   owner: Record<string, unknown> | undefined,\n//   error: string\n// }\n\n\n// Get Account Info example\nconst hubspot_get_account_info = new HubSpotBubble({\n  operation: \"get_account_info\", // Retrieve HubSpot account details including portal ID, timezone, and currency\n});\n\nconst result = await hubspot_get_account_info.action();\n// outputSchema for result.data when operation === 'get_account_info':\n// {\n//   operation: \"get_account_info\",\n//   success: boolean,\n//   account: Record<string, unknown> | undefined,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`hubspot failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "HUBSPOT_CRED"
      ]
    },
    {
      "name": "s3-storage",
      "alias": "s3",
      "type": "service",
      "shortDescription": "S3-compatible storage operations for file management",
      "useCase": "- Generate presigned upload URLs for client-side file uploads",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getUploadUrl"
                ],
                "description": "Generate presigned upload URL"
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the S3 bucket"
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "description": "Original filename for the upload"
              },
              "region": {
                "type": "string",
                "description": "AWS region override (defaults from credential or us-east-1)"
              },
              "expirationMinutes": {
                "type": "number",
                "default": 60,
                "description": "URL expiration time in minutes"
              },
              "contentType": {
                "type": "string",
                "description": "Content type for uploads"
              },
              "userId": {
                "type": "string",
                "description": "User ID for secure file isolation"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "bucketName",
              "fileName"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getFile"
                ],
                "description": "Generate presigned download URL"
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the S3 bucket"
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the file to retrieve"
              },
              "region": {
                "type": "string",
                "description": "AWS region override (defaults from credential or us-east-1)"
              },
              "expirationMinutes": {
                "type": "number",
                "default": 60,
                "description": "URL expiration time in minutes"
              },
              "userId": {
                "type": "string",
                "description": "User ID for secure file isolation"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "bucketName",
              "fileName"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "deleteFile"
                ],
                "description": "Delete file from bucket"
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the S3 bucket"
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the file to delete"
              },
              "region": {
                "type": "string",
                "description": "AWS region override (defaults from credential or us-east-1)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "bucketName",
              "fileName"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "updateFile"
                ],
                "description": "Upload or replace file content. Returns a presigned fileUrl for the uploaded file (default 7-day expiry)."
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "default": "bubble-lab-bucket"
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the file. Pass a secure fileName from a previous operation to overwrite it, or a new name to create a new file"
              },
              "region": {
                "type": "string",
                "description": "AWS region override (defaults from credential or us-east-1)"
              },
              "expirationMinutes": {
                "type": "number",
                "default": 10080,
                "description": "Presigned fileUrl expiration in minutes (default 10080 = 7 days, max 7 days for R2/S3)"
              },
              "contentType": {
                "type": "string",
                "description": "Content type for uploads"
              },
              "fileContent": {
                "type": "string",
                "minLength": 1,
                "description": "Base64 encoded file content or raw text content"
              },
              "userId": {
                "type": "string",
                "description": "User ID for secure file isolation"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "fileName",
              "fileContent"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getMultipleUploadUrls"
                ],
                "description": "Generate multiple presigned upload URLs for PDF + page images"
              },
              "bucketName": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the S3 bucket"
              },
              "pdfFileName": {
                "type": "string",
                "minLength": 1,
                "description": "Original filename for the PDF"
              },
              "pageCount": {
                "type": "number",
                "minimum": 1,
                "description": "Number of pages to generate upload URLs for"
              },
              "region": {
                "type": "string",
                "description": "AWS region override (defaults from credential or us-east-1)"
              },
              "expirationMinutes": {
                "type": "number",
                "default": 60,
                "description": "URL expiration time in minutes"
              },
              "userId": {
                "type": "string",
                "description": "User ID for secure file isolation"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "bucketName",
              "pdfFileName",
              "pageCount"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getUploadUrl"
                ],
                "description": "Generate presigned upload URL"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "uploadUrl": {
                "type": "string",
                "description": "Presigned upload URL"
              },
              "fileName": {
                "type": "string",
                "description": "Secure filename generated for the upload"
              },
              "contentType": {
                "type": "string",
                "description": "Content type of the file"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getFile"
                ],
                "description": "Generate presigned download URL"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "downloadUrl": {
                "type": "string",
                "description": "Presigned download URL"
              },
              "fileUrl": {
                "type": "string",
                "description": "Direct file access URL"
              },
              "fileName": {
                "type": "string",
                "description": "Name of the file"
              },
              "fileSize": {
                "type": "number",
                "description": "File size in bytes"
              },
              "contentType": {
                "type": "string",
                "description": "Content type of the file"
              },
              "lastModified": {
                "type": "string",
                "description": "Last modified timestamp in ISO format"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "deleteFile"
                ],
                "description": "Delete file from bucket"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "fileName": {
                "type": "string",
                "description": "Name of the deleted file"
              },
              "deleted": {
                "type": "boolean",
                "description": "Whether the file was successfully deleted"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "updateFile"
                ],
                "description": "Update/replace file content and generate a new secure filename for the file"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "fileName": {
                "type": "string",
                "description": "Secure filename for the updated file (different from the original filename). Use this key with getFile to generate new download URLs."
              },
              "fileUrl": {
                "type": "string",
                "description": "Presigned download URL for the uploaded file. Expires after expirationMinutes (default 7 days). Do NOT construct URLs manually — always use this field."
              },
              "updated": {
                "type": "boolean",
                "description": "Whether the file was successfully updated"
              },
              "contentType": {
                "type": "string",
                "description": "Content type of the updated file"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "getMultipleUploadUrls"
                ],
                "description": "Generate multiple presigned upload URLs for PDF + page images"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "pdfUploadUrl": {
                "type": "string",
                "description": "Presigned upload URL for PDF"
              },
              "pdfFileName": {
                "type": "string",
                "description": "Secure filename for PDF"
              },
              "pageUploadUrls": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "pageNumber": {
                      "type": "number",
                      "description": "Page number (1-indexed)"
                    },
                    "uploadUrl": {
                      "type": "string",
                      "description": "Presigned upload URL for this page"
                    },
                    "fileName": {
                      "type": "string",
                      "description": "Secure filename for this page image"
                    }
                  },
                  "required": [
                    "pageNumber",
                    "uploadUrl",
                    "fileName"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of upload URLs for page images"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// GetUploadUrl example\nconst s3Storage_getUploadUrl = new S3Bubble({\n  operation: \"getUploadUrl\", // Generate presigned upload URL\n  bucketName: \"example string\", // Name of the S3 bucket\n  fileName: \"example string\", // Original filename for the upload\n  region: \"example string\", // AWS region override (defaults from credential or us-east-1)\n  expirationMinutes: 60 // default, // URL expiration time in minutes\n  contentType: \"example string\", // Content type for uploads\n  userId: \"example string\", // User ID for secure file isolation\n});\n\nconst result = await s3Storage_getUploadUrl.action();\n// outputSchema for result.data when operation === 'getUploadUrl':\n// {\n//   operation: \"getUploadUrl\" // Generate presigned upload URL,\n//   success: boolean // Whether the operation was successful,\n//   uploadUrl: string | undefined // Presigned upload URL,\n//   fileName: string | undefined // Secure filename generated for the upload,\n//   contentType: string | undefined // Content type of the file,\n//   error: string // Error message if operation failed\n// }\n\n\n// GetFile example\nconst s3Storage_getFile = new S3Bubble({\n  operation: \"getFile\", // Generate presigned download URL\n  bucketName: \"example string\", // Name of the S3 bucket\n  fileName: \"example string\", // Name of the file to retrieve\n  region: \"example string\", // AWS region override (defaults from credential or us-east-1)\n  expirationMinutes: 60 // default, // URL expiration time in minutes\n  userId: \"example string\", // User ID for secure file isolation\n});\n\nconst result = await s3Storage_getFile.action();\n// outputSchema for result.data when operation === 'getFile':\n// {\n//   operation: \"getFile\" // Generate presigned download URL,\n//   success: boolean // Whether the operation was successful,\n//   downloadUrl: string | undefined // Presigned download URL,\n//   fileUrl: string | undefined // Direct file access URL,\n//   fileName: string | undefined // Name of the file,\n//   fileSize: number | undefined // File size in bytes,\n//   contentType: string | undefined // Content type of the file,\n//   lastModified: string | undefined // Last modified timestamp in ISO format,\n//   error: string // Error message if operation failed\n// }\n\n\n// DeleteFile example\nconst s3Storage_deleteFile = new S3Bubble({\n  operation: \"deleteFile\", // Delete file from bucket\n  bucketName: \"example string\", // Name of the S3 bucket\n  fileName: \"example string\", // Name of the file to delete\n  region: \"example string\", // AWS region override (defaults from credential or us-east-1)\n});\n\nconst result = await s3Storage_deleteFile.action();\n// outputSchema for result.data when operation === 'deleteFile':\n// {\n//   operation: \"deleteFile\" // Delete file from bucket,\n//   success: boolean // Whether the operation was successful,\n//   fileName: string | undefined // Name of the deleted file,\n//   deleted: boolean | undefined // Whether the file was successfully deleted,\n//   error: string // Error message if operation failed\n// }\n\n\n// UpdateFile example\nconst s3Storage_updateFile = new S3Bubble({\n  operation: \"updateFile\", // Upload or replace file content. Returns a presigned fileUrl for the uploaded file (default 7-day expiry).\n  bucketName: \"bubble-lab-bucket\" // default,\n  fileName: \"example string\", // Name of the file. Pass a secure fileName from a previous operation to overwrite it, or a new name to create a new file\n  region: \"example string\", // AWS region override (defaults from credential or us-east-1)\n  expirationMinutes: 10080 // default, // Presigned fileUrl expiration in minutes (default 10080 = 7 days, max 7 days for R2/S3)\n  contentType: \"example string\", // Content type for uploads\n  fileContent: \"example string\", // Base64 encoded file content or raw text content\n  userId: \"example string\", // User ID for secure file isolation\n});\n\nconst result = await s3Storage_updateFile.action();\n// outputSchema for result.data when operation === 'updateFile':\n// {\n//   operation: \"updateFile\" // Update/replace file content and generate a new secure filename for the file,\n//   success: boolean // Whether the operation was successful,\n//   fileName: string | undefined // Secure filename for the updated file (different from the original filename). Use this key with getFile to generate new download URLs.,\n//   fileUrl: string | undefined // Presigned download URL for the uploaded file. Expires after expirationMinutes (default 7 days). Do NOT construct URLs manually — always use this field.,\n//   updated: boolean | undefined // Whether the file was successfully updated,\n//   contentType: string | undefined // Content type of the updated file,\n//   error: string // Error message if operation failed\n// }\n\n\n// GetMultipleUploadUrls example\nconst s3Storage_getMultipleUploadUrls = new S3Bubble({\n  operation: \"getMultipleUploadUrls\", // Generate multiple presigned upload URLs for PDF + page images\n  bucketName: \"example string\", // Name of the S3 bucket\n  pdfFileName: \"example string\", // Original filename for the PDF\n  pageCount: 42, // Number of pages to generate upload URLs for\n  region: \"example string\", // AWS region override (defaults from credential or us-east-1)\n  expirationMinutes: 60 // default, // URL expiration time in minutes\n  userId: \"example string\", // User ID for secure file isolation\n});\n\nconst result = await s3Storage_getMultipleUploadUrls.action();\n// outputSchema for result.data when operation === 'getMultipleUploadUrls':\n// {\n//   operation: \"getMultipleUploadUrls\" // Generate multiple presigned upload URLs for PDF + page images,\n//   success: boolean // Whether the operation was successful,\n//   pdfUploadUrl: string | undefined // Presigned upload URL for PDF,\n//   pdfFileName: string | undefined // Secure filename for PDF,\n//   pageUploadUrls: { pageNumber: number // Page number (1-indexed), uploadUrl: string // Presigned upload URL for this page, fileName: string // Secure filename for this page image }[] | undefined // Array of upload URLs for page images,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`s3-storage failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "S3_CRED"
      ]
    },
    {
      "name": "assembled",
      "alias": "assembled",
      "type": "service",
      "shortDescription": "Workforce management platform for scheduling, time off, and agent management",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_people"
                ],
                "description": "List people/agents"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "limit": {
                "type": "number",
                "default": 20,
                "description": "Maximum number of results to return (default 20, max 500)"
              },
              "offset": {
                "type": "number",
                "default": 0,
                "description": "Number of results to skip for pagination"
              },
              "channel": {
                "type": "string",
                "description": "Filter by channel (phone, email, chat, sms, social, back_office)"
              },
              "team": {
                "type": "string",
                "description": "Filter by team name"
              },
              "site": {
                "type": "string",
                "description": "Filter by site name"
              },
              "queue": {
                "type": "string",
                "description": "Filter by queue name"
              },
              "search": {
                "type": "string",
                "description": "Search by name, email, or imported_id"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_person"
                ],
                "description": "Get a single person by ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "person_id": {
                "type": "string",
                "description": "The Assembled person ID"
              }
            },
            "required": [
              "operation",
              "person_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_person"
                ],
                "description": "Create a new person/agent"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "first_name": {
                "type": "string",
                "description": "First name of the person"
              },
              "last_name": {
                "type": "string",
                "description": "Last name of the person"
              },
              "email": {
                "type": "string",
                "description": "Email address of the person"
              },
              "imported_id": {
                "type": "string",
                "description": "External/imported ID for the person"
              },
              "channels": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Channels the person works on (phone, email, chat, sms, social, back_office)"
              },
              "teams": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Team names to assign the person to"
              },
              "queues": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Queue names to assign the person to"
              },
              "site": {
                "type": "string",
                "description": "Site name for the person"
              },
              "timezone": {
                "type": "string",
                "description": "Timezone for the person (e.g. America/Los_Angeles)"
              },
              "roles": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Roles to assign (e.g. agent, admin)"
              },
              "staffable": {
                "type": "boolean",
                "default": true,
                "description": "Whether the person can be scheduled"
              }
            },
            "required": [
              "operation",
              "first_name",
              "last_name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_person"
                ],
                "description": "Update an existing person"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "person_id": {
                "type": "string",
                "description": "The Assembled person ID to update"
              },
              "first_name": {
                "type": "string",
                "description": "Updated first name"
              },
              "last_name": {
                "type": "string",
                "description": "Updated last name"
              },
              "email": {
                "type": "string",
                "description": "Updated email address"
              },
              "channels": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Updated channels list"
              },
              "teams": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Updated team names"
              },
              "queues": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Updated queue names"
              },
              "site": {
                "type": "string",
                "description": "Updated site name"
              },
              "timezone": {
                "type": "string",
                "description": "Updated timezone"
              },
              "staffable": {
                "type": "boolean",
                "description": "Updated staffable status"
              }
            },
            "required": [
              "operation",
              "person_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_activities"
                ],
                "description": "List activities/schedule events in a time window"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "start_time": {
                "type": "number",
                "description": "Start of time window as Unix timestamp (seconds)"
              },
              "end_time": {
                "type": "number",
                "description": "End of time window as Unix timestamp (seconds)"
              },
              "agent_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Filter by specific agent IDs"
              },
              "queue": {
                "type": "string",
                "description": "Filter by queue name"
              },
              "include_agents": {
                "type": "boolean",
                "default": false,
                "description": "Include agent details in response"
              }
            },
            "required": [
              "operation",
              "start_time",
              "end_time"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_activity"
                ],
                "description": "Create a new activity/schedule event"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "agent_id": {
                "type": "string",
                "description": "Agent ID to assign the activity to"
              },
              "type_id": {
                "type": "string",
                "description": "Activity type ID"
              },
              "start_time": {
                "type": "number",
                "description": "Activity start as Unix timestamp (seconds)"
              },
              "end_time": {
                "type": "number",
                "description": "Activity end as Unix timestamp (seconds)"
              },
              "channels": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Channels for this activity (phone, email, chat, etc.)"
              },
              "description": {
                "type": "string",
                "description": "Description of the activity"
              },
              "allow_conflicts": {
                "type": "boolean",
                "default": false,
                "description": "Whether to allow overlapping activities"
              }
            },
            "required": [
              "operation",
              "agent_id",
              "type_id",
              "start_time",
              "end_time"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_activities"
                ],
                "description": "Delete activities for specified agents within a time window"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "agent_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Agent IDs whose activities to delete"
              },
              "start_time": {
                "type": "number",
                "description": "Start of deletion window as Unix timestamp (seconds)"
              },
              "end_time": {
                "type": "number",
                "description": "End of deletion window as Unix timestamp (seconds)"
              }
            },
            "required": [
              "operation",
              "agent_ids",
              "start_time",
              "end_time"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_time_off"
                ],
                "description": "Create a time off request"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "agent_id": {
                "type": "string",
                "description": "Agent ID requesting time off"
              },
              "start_time": {
                "type": "number",
                "description": "Time off start as Unix timestamp (seconds)"
              },
              "end_time": {
                "type": "number",
                "description": "Time off end as Unix timestamp (seconds)"
              },
              "type_id": {
                "type": "string",
                "description": "Activity type ID for the time off (must be a time-off type)"
              },
              "status": {
                "type": "string",
                "enum": [
                  "approved",
                  "pending"
                ],
                "default": "pending",
                "description": "Initial status of the time off request"
              },
              "notes": {
                "type": "string",
                "description": "Notes for the time off request"
              }
            },
            "required": [
              "operation",
              "agent_id",
              "start_time",
              "end_time"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_time_off"
                ],
                "description": "List time off requests"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "limit": {
                "type": "number",
                "default": 20,
                "description": "Maximum number of results to return (default 20, max 500)"
              },
              "offset": {
                "type": "number",
                "default": 0,
                "description": "Number of results to skip for pagination"
              },
              "agent_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Filter by agent IDs"
              },
              "status": {
                "type": "string",
                "enum": [
                  "approved",
                  "pending",
                  "denied",
                  "cancelled"
                ],
                "description": "Filter by time off request status"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "cancel_time_off"
                ],
                "description": "Cancel a time off request"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              },
              "time_off_id": {
                "type": "string",
                "description": "ID of the time off request to cancel"
              }
            },
            "required": [
              "operation",
              "time_off_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_queues"
                ],
                "description": "List all queues"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_teams"
                ],
                "description": "List all teams"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials for authentication"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_people"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "people": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "total": {
                "type": "number"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_person"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "person": {
                "type": "object",
                "additionalProperties": {}
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_person"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "person": {
                "type": "object",
                "additionalProperties": {}
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_person"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "person": {
                "type": "object",
                "additionalProperties": {}
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_activities"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "activities": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "agents": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "additionalProperties": {}
                }
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_activity"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "activity": {
                "type": "object",
                "additionalProperties": {}
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_activities"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_time_off"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "time_off": {
                "type": "object",
                "additionalProperties": {}
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_time_off"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "requests": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "cancel_time_off"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_queues"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "queues": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_teams"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              },
              "teams": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List People example\nconst assembled_list_people = new AssembledBubble({\n  operation: \"list_people\", // List people/agents\n  limit: 20 // default, // Maximum number of results to return (default 20, max 500)\n  offset: 0 // default, // Number of results to skip for pagination\n  channel: \"example string\", // Filter by channel (phone, email, chat, sms, social, back_office)\n  team: \"example string\", // Filter by team name\n  site: \"example string\", // Filter by site name\n  queue: \"example string\", // Filter by queue name\n  search: \"example string\", // Search by name, email, or imported_id\n});\n\nconst result = await assembled_list_people.action();\n// outputSchema for result.data when operation === 'list_people':\n// {\n//   operation: \"list_people\",\n//   success: boolean,\n//   error: string,\n//   people: Record<string, unknown>[] | undefined,\n//   total: number | undefined\n// }\n\n\n// Get Person example\nconst assembled_get_person = new AssembledBubble({\n  operation: \"get_person\", // Get a single person by ID\n  person_id: \"example string\", // The Assembled person ID\n});\n\nconst result = await assembled_get_person.action();\n// outputSchema for result.data when operation === 'get_person':\n// {\n//   operation: \"get_person\",\n//   success: boolean,\n//   error: string,\n//   person: Record<string, unknown> | undefined\n// }\n\n\n// Create Person example\nconst assembled_create_person = new AssembledBubble({\n  operation: \"create_person\", // Create a new person/agent\n  first_name: \"example string\", // First name of the person\n  last_name: \"example string\", // Last name of the person\n  email: \"example string\", // Email address of the person\n  imported_id: \"example string\", // External/imported ID for the person\n  channels: [\"example string\"], // Channels the person works on (phone, email, chat, sms, social, back_office)\n  teams: [\"example string\"], // Team names to assign the person to\n  queues: [\"example string\"], // Queue names to assign the person to\n  site: \"example string\", // Site name for the person\n  timezone: \"example string\", // Timezone for the person (e.g. America/Los_Angeles)\n  roles: [\"example string\"], // Roles to assign (e.g. agent, admin)\n  staffable: true // default, // Whether the person can be scheduled\n});\n\nconst result = await assembled_create_person.action();\n// outputSchema for result.data when operation === 'create_person':\n// {\n//   operation: \"create_person\",\n//   success: boolean,\n//   error: string,\n//   person: Record<string, unknown> | undefined\n// }\n\n\n// Update Person example\nconst assembled_update_person = new AssembledBubble({\n  operation: \"update_person\", // Update an existing person\n  person_id: \"example string\", // The Assembled person ID to update\n  first_name: \"example string\", // Updated first name\n  last_name: \"example string\", // Updated last name\n  email: \"example string\", // Updated email address\n  channels: [\"example string\"], // Updated channels list\n  teams: [\"example string\"], // Updated team names\n  queues: [\"example string\"], // Updated queue names\n  site: \"example string\", // Updated site name\n  timezone: \"example string\", // Updated timezone\n  staffable: true, // Updated staffable status\n});\n\nconst result = await assembled_update_person.action();\n// outputSchema for result.data when operation === 'update_person':\n// {\n//   operation: \"update_person\",\n//   success: boolean,\n//   error: string,\n//   person: Record<string, unknown> | undefined\n// }\n\n\n// List Activities example\nconst assembled_list_activities = new AssembledBubble({\n  operation: \"list_activities\", // List activities/schedule events in a time window\n  start_time: 42, // Start of time window as Unix timestamp (seconds)\n  end_time: 42, // End of time window as Unix timestamp (seconds)\n  agent_ids: [\"example string\"], // Filter by specific agent IDs\n  queue: \"example string\", // Filter by queue name\n  include_agents: false // default, // Include agent details in response\n});\n\nconst result = await assembled_list_activities.action();\n// outputSchema for result.data when operation === 'list_activities':\n// {\n//   operation: \"list_activities\",\n//   success: boolean,\n//   error: string,\n//   activities: Record<string, Record<string, unknown>> | undefined,\n//   agents: Record<string, Record<string, unknown>> | undefined\n// }\n\n\n// Create Activity example\nconst assembled_create_activity = new AssembledBubble({\n  operation: \"create_activity\", // Create a new activity/schedule event\n  agent_id: \"example string\", // Agent ID to assign the activity to\n  type_id: \"example string\", // Activity type ID\n  start_time: 42, // Activity start as Unix timestamp (seconds)\n  end_time: 42, // Activity end as Unix timestamp (seconds)\n  channels: [\"example string\"], // Channels for this activity (phone, email, chat, etc.)\n  description: \"example string\", // Description of the activity\n  allow_conflicts: false // default, // Whether to allow overlapping activities\n});\n\nconst result = await assembled_create_activity.action();\n// outputSchema for result.data when operation === 'create_activity':\n// {\n//   operation: \"create_activity\",\n//   success: boolean,\n//   error: string,\n//   activity: Record<string, unknown> | undefined\n// }\n\n\n// Delete Activities example\nconst assembled_delete_activities = new AssembledBubble({\n  operation: \"delete_activities\", // Delete activities for specified agents within a time window\n  agent_ids: [\"example string\"], // Agent IDs whose activities to delete\n  start_time: 42, // Start of deletion window as Unix timestamp (seconds)\n  end_time: 42, // End of deletion window as Unix timestamp (seconds)\n});\n\nconst result = await assembled_delete_activities.action();\n// outputSchema for result.data when operation === 'delete_activities':\n// {\n//   operation: \"delete_activities\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Create Time Off example\nconst assembled_create_time_off = new AssembledBubble({\n  operation: \"create_time_off\", // Create a time off request\n  agent_id: \"example string\", // Agent ID requesting time off\n  start_time: 42, // Time off start as Unix timestamp (seconds)\n  end_time: 42, // Time off end as Unix timestamp (seconds)\n  type_id: \"example string\", // Activity type ID for the time off (must be a time-off type)\n  status: \"approved\" // options: \"approved\", \"pending\", // Initial status of the time off request\n  notes: \"example string\", // Notes for the time off request\n});\n\nconst result = await assembled_create_time_off.action();\n// outputSchema for result.data when operation === 'create_time_off':\n// {\n//   operation: \"create_time_off\",\n//   success: boolean,\n//   error: string,\n//   time_off: Record<string, unknown> | undefined\n// }\n\n\n// List Time Off example\nconst assembled_list_time_off = new AssembledBubble({\n  operation: \"list_time_off\", // List time off requests\n  limit: 20 // default, // Maximum number of results to return (default 20, max 500)\n  offset: 0 // default, // Number of results to skip for pagination\n  agent_ids: [\"example string\"], // Filter by agent IDs\n  status: \"approved\" // options: \"approved\", \"pending\", \"denied\", \"cancelled\", // Filter by time off request status\n});\n\nconst result = await assembled_list_time_off.action();\n// outputSchema for result.data when operation === 'list_time_off':\n// {\n//   operation: \"list_time_off\",\n//   success: boolean,\n//   error: string,\n//   requests: Record<string, unknown>[] | undefined\n// }\n\n\n// Cancel Time Off example\nconst assembled_cancel_time_off = new AssembledBubble({\n  operation: \"cancel_time_off\", // Cancel a time off request\n  time_off_id: \"example string\", // ID of the time off request to cancel\n});\n\nconst result = await assembled_cancel_time_off.action();\n// outputSchema for result.data when operation === 'cancel_time_off':\n// {\n//   operation: \"cancel_time_off\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Queues example\nconst assembled_list_queues = new AssembledBubble({\n  operation: \"list_queues\", // List all queues\n});\n\nconst result = await assembled_list_queues.action();\n// outputSchema for result.data when operation === 'list_queues':\n// {\n//   operation: \"list_queues\",\n//   success: boolean,\n//   error: string,\n//   queues: Record<string, unknown>[] | undefined\n// }\n\n\n// List Teams example\nconst assembled_list_teams = new AssembledBubble({\n  operation: \"list_teams\", // List all teams\n});\n\nconst result = await assembled_list_teams.action();\n// outputSchema for result.data when operation === 'list_teams':\n// {\n//   operation: \"list_teams\",\n//   success: boolean,\n//   error: string,\n//   teams: Record<string, unknown>[] | undefined\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`assembled failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "ASSEMBLED_CRED"
      ]
    },
    {
      "name": "xero",
      "alias": "accounting",
      "type": "service",
      "shortDescription": "Xero accounting integration for invoices, contacts, and accounts",
      "useCase": "- Automated invoice creation and tracking",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_invoice"
                ],
                "description": "Create a new invoice in Xero"
              },
              "type": {
                "type": "string",
                "enum": [
                  "ACCREC",
                  "ACCPAY"
                ],
                "description": "Invoice type: ACCREC for accounts receivable (sales invoice), ACCPAY for accounts payable (bill)"
              },
              "contact_id": {
                "type": "string",
                "minLength": 1,
                "description": "ContactID of the customer/supplier"
              },
              "line_items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "Description": {
                      "type": "string",
                      "description": "Description of the line item"
                    },
                    "Quantity": {
                      "type": "number",
                      "default": 1,
                      "description": "Quantity of the line item (default 1)"
                    },
                    "UnitAmount": {
                      "type": "number",
                      "description": "Unit price of the line item"
                    },
                    "AccountCode": {
                      "type": "string",
                      "description": "Account code for the line item (e.g., \"200\" for Sales, \"400\" for Advertising)"
                    },
                    "TaxType": {
                      "type": "string",
                      "description": "Tax type for the line item (e.g., \"OUTPUT\", \"INPUT\")"
                    },
                    "ItemCode": {
                      "type": "string",
                      "description": "Item code from Xero inventory"
                    }
                  },
                  "required": [
                    "Description",
                    "UnitAmount"
                  ],
                  "additionalProperties": false,
                  "description": "A single invoice line item"
                },
                "minItems": 1,
                "description": "Line items for the invoice"
              },
              "date": {
                "type": "string",
                "description": "Invoice date in YYYY-MM-DD format (defaults to today)"
              },
              "due_date": {
                "type": "string",
                "description": "Due date in YYYY-MM-DD format"
              },
              "reference": {
                "type": "string",
                "description": "Reference number for the invoice"
              },
              "status": {
                "type": "string",
                "enum": [
                  "DRAFT",
                  "SUBMITTED",
                  "AUTHORISED"
                ],
                "default": "DRAFT",
                "description": "Invoice status (default DRAFT)"
              },
              "currency_code": {
                "type": "string",
                "description": "Currency code (e.g., \"USD\", \"GBP\", \"AUD\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "type",
              "contact_id",
              "line_items"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_invoice"
                ],
                "description": "Retrieve a single invoice by ID"
              },
              "invoice_id": {
                "type": "string",
                "minLength": 1,
                "description": "Xero invoice UUID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "invoice_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_invoices"
                ],
                "description": "List invoices with optional filters"
              },
              "status": {
                "type": "string",
                "enum": [
                  "DRAFT",
                  "SUBMITTED",
                  "AUTHORISED",
                  "PAID",
                  "VOIDED",
                  "DELETED"
                ],
                "description": "Filter by invoice status"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "where": {
                "type": "string",
                "description": "Xero filter expression (e.g., \"Type==\\\"ACCREC\\\"\", \"Contact.Name==\\\"John\\\"\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_contact"
                ],
                "description": "Create a new contact (customer or supplier)"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Contact name (required, must be unique)"
              },
              "email": {
                "type": "string",
                "description": "Contact email address"
              },
              "first_name": {
                "type": "string",
                "description": "First name"
              },
              "last_name": {
                "type": "string",
                "description": "Last name"
              },
              "phone": {
                "type": "string",
                "description": "Phone number"
              },
              "account_number": {
                "type": "string",
                "description": "Account number for the contact"
              },
              "tax_number": {
                "type": "string",
                "description": "Tax number (ABN, VAT, GST number)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_contact"
                ],
                "description": "Retrieve a single contact by ID"
              },
              "contact_id": {
                "type": "string",
                "minLength": 1,
                "description": "Xero contact UUID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "contact_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_contacts"
                ],
                "description": "List contacts with optional filters"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "where": {
                "type": "string",
                "description": "Xero filter expression (e.g., \"Name.StartsWith(\\\"John\\\")\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_accounts"
                ],
                "description": "List chart of accounts"
              },
              "type": {
                "type": "string",
                "description": "Filter by account type (e.g., \"REVENUE\", \"EXPENSE\", \"BANK\", \"CURRENT\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_report"
                ],
                "description": "Retrieve a financial report from Xero"
              },
              "report_type": {
                "type": "string",
                "enum": [
                  "BalanceSheet",
                  "ProfitAndLoss",
                  "TrialBalance",
                  "BankSummary",
                  "ExecutiveSummary",
                  "BudgetSummary",
                  "AgedReceivablesByContact",
                  "AgedPayablesByContact"
                ],
                "description": "The type of report to generate"
              },
              "date": {
                "type": "string",
                "description": "Report date in YYYY-MM-DD format. \"As at\" date for BalanceSheet/TrialBalance/ExecutiveSummary. Not used for ProfitAndLoss (use from_date/to_date)."
              },
              "from_date": {
                "type": "string",
                "description": "Start date in YYYY-MM-DD format. Used by ProfitAndLoss, BankSummary, and aged reports."
              },
              "to_date": {
                "type": "string",
                "description": "End date in YYYY-MM-DD format. Used by ProfitAndLoss, BankSummary, and aged reports."
              },
              "periods": {
                "type": "number",
                "description": "Number of comparison periods (1-11 for most reports, 1-12 for BudgetSummary)"
              },
              "timeframe": {
                "type": "string",
                "enum": [
                  "MONTH",
                  "QUARTER",
                  "YEAR"
                ],
                "description": "Timeframe for comparison periods (MONTH, QUARTER, or YEAR)"
              },
              "contact_id": {
                "type": "string",
                "description": "Contact UUID — required for AgedReceivablesByContact and AgedPayablesByContact"
              },
              "payments_only": {
                "type": "boolean",
                "description": "Set true for cash-basis reporting (BalanceSheet, ProfitAndLoss, TrialBalance only)"
              },
              "tracking_category_id": {
                "type": "string",
                "description": "Optional tracking category ID to filter the report by"
              },
              "tracking_option_id": {
                "type": "string",
                "description": "Optional tracking option ID (requires tracking_category_id)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "report_type"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_invoice"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "invoice": {
                "type": "object",
                "properties": {
                  "InvoiceID": {
                    "type": "string",
                    "description": "Invoice UUID"
                  },
                  "InvoiceNumber": {
                    "type": "string",
                    "description": "Invoice number"
                  },
                  "Type": {
                    "type": "string",
                    "description": "Invoice type (ACCREC or ACCPAY)"
                  },
                  "Status": {
                    "type": "string",
                    "description": "Invoice status"
                  },
                  "Contact": {
                    "type": "object",
                    "properties": {
                      "ContactID": {
                        "type": "string"
                      },
                      "Name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "ContactID"
                    ],
                    "additionalProperties": false,
                    "description": "Associated contact"
                  },
                  "Date": {
                    "type": "string",
                    "description": "Invoice date"
                  },
                  "DueDate": {
                    "type": "string",
                    "description": "Due date"
                  },
                  "SubTotal": {
                    "type": "number",
                    "description": "Total before tax"
                  },
                  "Total": {
                    "type": "number",
                    "description": "Total amount including tax"
                  },
                  "AmountDue": {
                    "type": "number",
                    "description": "Amount due"
                  },
                  "AmountPaid": {
                    "type": "number",
                    "description": "Amount paid"
                  },
                  "CurrencyCode": {
                    "type": "string",
                    "description": "Currency code"
                  },
                  "Reference": {
                    "type": "string",
                    "description": "Reference"
                  },
                  "LineItems": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    "description": "Line items"
                  }
                },
                "required": [
                  "InvoiceID",
                  "Type",
                  "Status"
                ],
                "additionalProperties": false,
                "description": "Created invoice"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_invoice"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "invoice": {
                "type": "object",
                "properties": {
                  "InvoiceID": {
                    "type": "string",
                    "description": "Invoice UUID"
                  },
                  "InvoiceNumber": {
                    "type": "string",
                    "description": "Invoice number"
                  },
                  "Type": {
                    "type": "string",
                    "description": "Invoice type (ACCREC or ACCPAY)"
                  },
                  "Status": {
                    "type": "string",
                    "description": "Invoice status"
                  },
                  "Contact": {
                    "type": "object",
                    "properties": {
                      "ContactID": {
                        "type": "string"
                      },
                      "Name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "ContactID"
                    ],
                    "additionalProperties": false,
                    "description": "Associated contact"
                  },
                  "Date": {
                    "type": "string",
                    "description": "Invoice date"
                  },
                  "DueDate": {
                    "type": "string",
                    "description": "Due date"
                  },
                  "SubTotal": {
                    "type": "number",
                    "description": "Total before tax"
                  },
                  "Total": {
                    "type": "number",
                    "description": "Total amount including tax"
                  },
                  "AmountDue": {
                    "type": "number",
                    "description": "Amount due"
                  },
                  "AmountPaid": {
                    "type": "number",
                    "description": "Amount paid"
                  },
                  "CurrencyCode": {
                    "type": "string",
                    "description": "Currency code"
                  },
                  "Reference": {
                    "type": "string",
                    "description": "Reference"
                  },
                  "LineItems": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    "description": "Line items"
                  }
                },
                "required": [
                  "InvoiceID",
                  "Type",
                  "Status"
                ],
                "additionalProperties": false,
                "description": "Retrieved invoice"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_invoices"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "invoices": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "InvoiceID": {
                      "type": "string",
                      "description": "Invoice UUID"
                    },
                    "InvoiceNumber": {
                      "type": "string",
                      "description": "Invoice number"
                    },
                    "Type": {
                      "type": "string",
                      "description": "Invoice type (ACCREC or ACCPAY)"
                    },
                    "Status": {
                      "type": "string",
                      "description": "Invoice status"
                    },
                    "Contact": {
                      "type": "object",
                      "properties": {
                        "ContactID": {
                          "type": "string"
                        },
                        "Name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "ContactID"
                      ],
                      "additionalProperties": false,
                      "description": "Associated contact"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Invoice date"
                    },
                    "DueDate": {
                      "type": "string",
                      "description": "Due date"
                    },
                    "SubTotal": {
                      "type": "number",
                      "description": "Total before tax"
                    },
                    "Total": {
                      "type": "number",
                      "description": "Total amount including tax"
                    },
                    "AmountDue": {
                      "type": "number",
                      "description": "Amount due"
                    },
                    "AmountPaid": {
                      "type": "number",
                      "description": "Amount paid"
                    },
                    "CurrencyCode": {
                      "type": "string",
                      "description": "Currency code"
                    },
                    "Reference": {
                      "type": "string",
                      "description": "Reference"
                    },
                    "LineItems": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": {}
                      },
                      "description": "Line items"
                    }
                  },
                  "required": [
                    "InvoiceID",
                    "Type",
                    "Status"
                  ],
                  "additionalProperties": false,
                  "description": "A Xero invoice"
                },
                "description": "List of invoices"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_contact"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "contact": {
                "type": "object",
                "properties": {
                  "ContactID": {
                    "type": "string",
                    "description": "Contact UUID"
                  },
                  "Name": {
                    "type": "string",
                    "description": "Contact name"
                  },
                  "FirstName": {
                    "type": "string",
                    "description": "First name"
                  },
                  "LastName": {
                    "type": "string",
                    "description": "Last name"
                  },
                  "EmailAddress": {
                    "type": "string",
                    "description": "Email address"
                  },
                  "AccountNumber": {
                    "type": "string",
                    "description": "Account number"
                  },
                  "TaxNumber": {
                    "type": "string",
                    "description": "Tax number"
                  },
                  "ContactStatus": {
                    "type": "string",
                    "description": "Contact status"
                  },
                  "Phones": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    "description": "Phone numbers"
                  },
                  "Addresses": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    "description": "Addresses"
                  }
                },
                "required": [
                  "ContactID",
                  "Name"
                ],
                "additionalProperties": false,
                "description": "Created contact"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_contact"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "contact": {
                "type": "object",
                "properties": {
                  "ContactID": {
                    "type": "string",
                    "description": "Contact UUID"
                  },
                  "Name": {
                    "type": "string",
                    "description": "Contact name"
                  },
                  "FirstName": {
                    "type": "string",
                    "description": "First name"
                  },
                  "LastName": {
                    "type": "string",
                    "description": "Last name"
                  },
                  "EmailAddress": {
                    "type": "string",
                    "description": "Email address"
                  },
                  "AccountNumber": {
                    "type": "string",
                    "description": "Account number"
                  },
                  "TaxNumber": {
                    "type": "string",
                    "description": "Tax number"
                  },
                  "ContactStatus": {
                    "type": "string",
                    "description": "Contact status"
                  },
                  "Phones": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    "description": "Phone numbers"
                  },
                  "Addresses": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    "description": "Addresses"
                  }
                },
                "required": [
                  "ContactID",
                  "Name"
                ],
                "additionalProperties": false,
                "description": "Retrieved contact"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_contacts"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "contacts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "ContactID": {
                      "type": "string",
                      "description": "Contact UUID"
                    },
                    "Name": {
                      "type": "string",
                      "description": "Contact name"
                    },
                    "FirstName": {
                      "type": "string",
                      "description": "First name"
                    },
                    "LastName": {
                      "type": "string",
                      "description": "Last name"
                    },
                    "EmailAddress": {
                      "type": "string",
                      "description": "Email address"
                    },
                    "AccountNumber": {
                      "type": "string",
                      "description": "Account number"
                    },
                    "TaxNumber": {
                      "type": "string",
                      "description": "Tax number"
                    },
                    "ContactStatus": {
                      "type": "string",
                      "description": "Contact status"
                    },
                    "Phones": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": {}
                      },
                      "description": "Phone numbers"
                    },
                    "Addresses": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": {}
                      },
                      "description": "Addresses"
                    }
                  },
                  "required": [
                    "ContactID",
                    "Name"
                  ],
                  "additionalProperties": false,
                  "description": "A Xero contact"
                },
                "description": "List of contacts"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_accounts"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "accounts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "AccountID": {
                      "type": "string",
                      "description": "Account UUID"
                    },
                    "Code": {
                      "type": "string",
                      "description": "Account code"
                    },
                    "Name": {
                      "type": "string",
                      "description": "Account name"
                    },
                    "Type": {
                      "type": "string",
                      "description": "Account type"
                    },
                    "Status": {
                      "type": "string",
                      "description": "Account status"
                    },
                    "Description": {
                      "type": "string",
                      "description": "Account description"
                    },
                    "Class": {
                      "type": "string",
                      "description": "Account class"
                    },
                    "TaxType": {
                      "type": "string",
                      "description": "Tax type"
                    }
                  },
                  "required": [
                    "AccountID",
                    "Name",
                    "Type"
                  ],
                  "additionalProperties": false,
                  "description": "A Xero account"
                },
                "description": "List of accounts"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_report"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "report": {
                "type": "object",
                "properties": {
                  "reportName": {
                    "type": "string",
                    "description": "Report title"
                  },
                  "reportType": {
                    "type": "string",
                    "description": "Report type identifier"
                  },
                  "reportDate": {
                    "type": "string",
                    "description": "Report date"
                  },
                  "reportTitles": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Report title lines (e.g., org name, date range)"
                  },
                  "rows": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "rowType": {
                          "type": "string",
                          "description": "Row type: Header, Section, Row, SummaryRow"
                        },
                        "title": {
                          "type": "string",
                          "description": "Section title"
                        },
                        "cells": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "string",
                                "description": "Cell display value"
                              },
                              "accountId": {
                                "type": "string",
                                "description": "Account UUID if this row is an account"
                              }
                            },
                            "required": [
                              "value"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Cell values for this row"
                        },
                        "rows": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": {}
                          },
                          "description": "Nested rows within a section"
                        }
                      },
                      "required": [
                        "rowType"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Report rows"
                  }
                },
                "required": [
                  "reportName",
                  "reportType",
                  "rows"
                ],
                "additionalProperties": false,
                "description": "Parsed report data"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Create Invoice example\nconst xero_create_invoice = new XeroBubble({\n  operation: \"create_invoice\", // Create a new invoice in Xero\n  type: \"ACCREC\" // options: \"ACCREC\", \"ACCPAY\", // Invoice type: ACCREC for accounts receivable (sales invoice), ACCPAY for accounts payable (bill)\n  contact_id: \"example string\", // ContactID of the customer/supplier\n  line_items: [{ Description: \"example string\" // Description of the line item, Quantity: 1 // default // Quantity of the line item (default 1), UnitAmount: 42 // Unit price of the line item, AccountCode: \"example string\" // Account code for the line item (e.g., \"200\" for Sales, \"400\" for Advertising), TaxType: \"example string\" // Tax type for the line item (e.g., \"OUTPUT\", \"INPUT\"), ItemCode: \"example string\" // Item code from Xero inventory }], // Line items for the invoice\n  date: \"example string\", // Invoice date in YYYY-MM-DD format (defaults to today)\n  due_date: \"example string\", // Due date in YYYY-MM-DD format\n  reference: \"example string\", // Reference number for the invoice\n  status: \"DRAFT\" // options: \"DRAFT\", \"SUBMITTED\", \"AUTHORISED\", // Invoice status (default DRAFT)\n  currency_code: \"example string\", // Currency code (e.g., \"USD\", \"GBP\", \"AUD\")\n});\n\nconst result = await xero_create_invoice.action();\n// outputSchema for result.data when operation === 'create_invoice':\n// {\n//   operation: \"create_invoice\",\n//   success: boolean // Whether the operation was successful,\n//   invoice: { InvoiceID: string // Invoice UUID, InvoiceNumber: string | undefined // Invoice number, Type: string // Invoice type (ACCREC or ACCPAY), Status: string // Invoice status, Contact: { ContactID: string, Name: string | undefined } | undefined // Associated contact, Date: string | undefined // Invoice date, DueDate: string | undefined // Due date, SubTotal: number | undefined // Total before tax, Total: number | undefined // Total amount including tax, AmountDue: number | undefined // Amount due, AmountPaid: number | undefined // Amount paid, CurrencyCode: string | undefined // Currency code, Reference: string | undefined // Reference, LineItems: Record<string, unknown>[] | undefined // Line items } | undefined // Created invoice,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Invoice example\nconst xero_get_invoice = new XeroBubble({\n  operation: \"get_invoice\", // Retrieve a single invoice by ID\n  invoice_id: \"example string\", // Xero invoice UUID\n});\n\nconst result = await xero_get_invoice.action();\n// outputSchema for result.data when operation === 'get_invoice':\n// {\n//   operation: \"get_invoice\",\n//   success: boolean // Whether the operation was successful,\n//   invoice: { InvoiceID: string // Invoice UUID, InvoiceNumber: string | undefined // Invoice number, Type: string // Invoice type (ACCREC or ACCPAY), Status: string // Invoice status, Contact: { ContactID: string, Name: string | undefined } | undefined // Associated contact, Date: string | undefined // Invoice date, DueDate: string | undefined // Due date, SubTotal: number | undefined // Total before tax, Total: number | undefined // Total amount including tax, AmountDue: number | undefined // Amount due, AmountPaid: number | undefined // Amount paid, CurrencyCode: string | undefined // Currency code, Reference: string | undefined // Reference, LineItems: Record<string, unknown>[] | undefined // Line items } | undefined // Retrieved invoice,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Invoices example\nconst xero_list_invoices = new XeroBubble({\n  operation: \"list_invoices\", // List invoices with optional filters\n  status: \"DRAFT\" // options: \"DRAFT\", \"SUBMITTED\", \"AUTHORISED\", \"PAID\", \"VOIDED\", \"DELETED\", // Filter by invoice status\n  page: 1 // default, // Page number for pagination (default 1)\n  where: \"example string\", // Xero filter expression (e.g., \"Type==\\\"ACCREC\\\"\", \"Contact.Name==\\\"John\\\"\")\n});\n\nconst result = await xero_list_invoices.action();\n// outputSchema for result.data when operation === 'list_invoices':\n// {\n//   operation: \"list_invoices\",\n//   success: boolean // Whether the operation was successful,\n//   invoices: { InvoiceID: string // Invoice UUID, InvoiceNumber: string | undefined // Invoice number, Type: string // Invoice type (ACCREC or ACCPAY), Status: string // Invoice status, Contact: { ContactID: string, Name: string | undefined } | undefined // Associated contact, Date: string | undefined // Invoice date, DueDate: string | undefined // Due date, SubTotal: number | undefined // Total before tax, Total: number | undefined // Total amount including tax, AmountDue: number | undefined // Amount due, AmountPaid: number | undefined // Amount paid, CurrencyCode: string | undefined // Currency code, Reference: string | undefined // Reference, LineItems: Record<string, unknown>[] | undefined // Line items }[] | undefined // List of invoices,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Contact example\nconst xero_create_contact = new XeroBubble({\n  operation: \"create_contact\", // Create a new contact (customer or supplier)\n  name: \"example string\", // Contact name (required, must be unique)\n  email: \"example string\", // Contact email address\n  first_name: \"example string\", // First name\n  last_name: \"example string\", // Last name\n  phone: \"example string\", // Phone number\n  account_number: \"example string\", // Account number for the contact\n  tax_number: \"example string\", // Tax number (ABN, VAT, GST number)\n});\n\nconst result = await xero_create_contact.action();\n// outputSchema for result.data when operation === 'create_contact':\n// {\n//   operation: \"create_contact\",\n//   success: boolean // Whether the operation was successful,\n//   contact: { ContactID: string // Contact UUID, Name: string // Contact name, FirstName: string | undefined // First name, LastName: string | undefined // Last name, EmailAddress: string | undefined // Email address, AccountNumber: string | undefined // Account number, TaxNumber: string | undefined // Tax number, ContactStatus: string | undefined // Contact status, Phones: Record<string, unknown>[] | undefined // Phone numbers, Addresses: Record<string, unknown>[] | undefined // Addresses } | undefined // Created contact,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Contact example\nconst xero_get_contact = new XeroBubble({\n  operation: \"get_contact\", // Retrieve a single contact by ID\n  contact_id: \"example string\", // Xero contact UUID\n});\n\nconst result = await xero_get_contact.action();\n// outputSchema for result.data when operation === 'get_contact':\n// {\n//   operation: \"get_contact\",\n//   success: boolean // Whether the operation was successful,\n//   contact: { ContactID: string // Contact UUID, Name: string // Contact name, FirstName: string | undefined // First name, LastName: string | undefined // Last name, EmailAddress: string | undefined // Email address, AccountNumber: string | undefined // Account number, TaxNumber: string | undefined // Tax number, ContactStatus: string | undefined // Contact status, Phones: Record<string, unknown>[] | undefined // Phone numbers, Addresses: Record<string, unknown>[] | undefined // Addresses } | undefined // Retrieved contact,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Contacts example\nconst xero_list_contacts = new XeroBubble({\n  operation: \"list_contacts\", // List contacts with optional filters\n  page: 1 // default, // Page number for pagination (default 1)\n  where: \"example string\", // Xero filter expression (e.g., \"Name.StartsWith(\\\"John\\\")\")\n});\n\nconst result = await xero_list_contacts.action();\n// outputSchema for result.data when operation === 'list_contacts':\n// {\n//   operation: \"list_contacts\",\n//   success: boolean // Whether the operation was successful,\n//   contacts: { ContactID: string // Contact UUID, Name: string // Contact name, FirstName: string | undefined // First name, LastName: string | undefined // Last name, EmailAddress: string | undefined // Email address, AccountNumber: string | undefined // Account number, TaxNumber: string | undefined // Tax number, ContactStatus: string | undefined // Contact status, Phones: Record<string, unknown>[] | undefined // Phone numbers, Addresses: Record<string, unknown>[] | undefined // Addresses }[] | undefined // List of contacts,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Accounts example\nconst xero_list_accounts = new XeroBubble({\n  operation: \"list_accounts\", // List chart of accounts\n  type: \"example string\", // Filter by account type (e.g., \"REVENUE\", \"EXPENSE\", \"BANK\", \"CURRENT\")\n});\n\nconst result = await xero_list_accounts.action();\n// outputSchema for result.data when operation === 'list_accounts':\n// {\n//   operation: \"list_accounts\",\n//   success: boolean // Whether the operation was successful,\n//   accounts: { AccountID: string // Account UUID, Code: string | undefined // Account code, Name: string // Account name, Type: string // Account type, Status: string | undefined // Account status, Description: string | undefined // Account description, Class: string | undefined // Account class, TaxType: string | undefined // Tax type }[] | undefined // List of accounts,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Report example\nconst xero_get_report = new XeroBubble({\n  operation: \"get_report\", // Retrieve a financial report from Xero\n  report_type: \"BalanceSheet\" // options: \"BalanceSheet\", \"ProfitAndLoss\", \"TrialBalance\", \"BankSummary\", \"ExecutiveSummary\", \"BudgetSummary\", \"AgedReceivablesByContact\", \"AgedPayablesByContact\", // The type of report to generate\n  date: \"example string\", // Report date in YYYY-MM-DD format. \"As at\" date for BalanceSheet/TrialBalance/ExecutiveSummary. Not used for ProfitAndLoss (use from_date/to_date).\n  from_date: \"example string\", // Start date in YYYY-MM-DD format. Used by ProfitAndLoss, BankSummary, and aged reports.\n  to_date: \"example string\", // End date in YYYY-MM-DD format. Used by ProfitAndLoss, BankSummary, and aged reports.\n  periods: 42, // Number of comparison periods (1-11 for most reports, 1-12 for BudgetSummary)\n  timeframe: \"MONTH\" // options: \"MONTH\", \"QUARTER\", \"YEAR\", // Timeframe for comparison periods (MONTH, QUARTER, or YEAR)\n  contact_id: \"example string\", // Contact UUID — required for AgedReceivablesByContact and AgedPayablesByContact\n  payments_only: true, // Set true for cash-basis reporting (BalanceSheet, ProfitAndLoss, TrialBalance only)\n  tracking_category_id: \"example string\", // Optional tracking category ID to filter the report by\n  tracking_option_id: \"example string\", // Optional tracking option ID (requires tracking_category_id)\n});\n\nconst result = await xero_get_report.action();\n// outputSchema for result.data when operation === 'get_report':\n// {\n//   operation: \"get_report\",\n//   success: boolean // Whether the operation was successful,\n//   report: { reportName: string // Report title, reportType: string // Report type identifier, reportDate: string | undefined // Report date, reportTitles: string[] | undefined // Report title lines (e.g., org name, date range), rows: { rowType: string // Row type: Header, Section, Row, SummaryRow, title: string | undefined // Section title, cells: { value: string // Cell display value, accountId: string | undefined // Account UUID if this row is an account }[] | undefined // Cell values for this row, rows: Record<string, unknown>[] | undefined // Nested rows within a section }[] // Report rows } | undefined // Parsed report data,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`xero failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "XERO_CRED"
      ]
    },
    {
      "name": "ramp",
      "alias": "ramp",
      "type": "service",
      "shortDescription": "Ramp integration for corporate expense management",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_transactions"
                ],
                "description": "List transactions with optional filters"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "from_date": {
                "type": "string",
                "description": "Filter transactions from this date (ISO 8601 format, e.g. 2024-01-01T00:00:00Z)"
              },
              "to_date": {
                "type": "string",
                "description": "Filter transactions up to this date (ISO 8601 format, e.g. 2024-12-31T23:59:59Z)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_transaction"
                ],
                "description": "Get a specific transaction by ID"
              },
              "transaction_id": {
                "type": "string",
                "minLength": 1,
                "description": "Transaction ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "transaction_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ],
                "description": "List users in the business"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ],
                "description": "Get a specific user by ID"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "description": "User ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_cards"
                ],
                "description": "List cards"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_card"
                ],
                "description": "Get a specific card by ID"
              },
              "card_id": {
                "type": "string",
                "minLength": 1,
                "description": "Card ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "card_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_departments"
                ],
                "description": "List departments in the business"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_locations"
                ],
                "description": "List locations in the business"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_spend_programs"
                ],
                "description": "List spend programs"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_limits"
                ],
                "description": "List spend limits/funds"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_reimbursements"
                ],
                "description": "List reimbursements"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "from_date": {
                "type": "string",
                "description": "Filter reimbursements from this date (ISO 8601 format)"
              },
              "to_date": {
                "type": "string",
                "description": "Filter reimbursements up to this date (ISO 8601 format)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_bills"
                ],
                "description": "List bills"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "from_date": {
                "type": "string",
                "description": "Filter bills from this date (ISO 8601 format)"
              },
              "to_date": {
                "type": "string",
                "description": "Filter bills up to this date (ISO 8601 format)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_vendors"
                ],
                "description": "List vendors"
              },
              "page_size": {
                "type": "number",
                "minimum": 2,
                "maximum": 100,
                "default": 20,
                "description": "Number of results per page (2-100)"
              },
              "start": {
                "type": "string",
                "description": "Cursor ID from previous page for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_business"
                ],
                "description": "Get business information"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credentials (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_transactions"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "transactions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Transaction ID"
                    },
                    "amount": {
                      "type": "number",
                      "description": "Transaction amount in cents"
                    },
                    "currency_code": {
                      "type": "string",
                      "description": "Currency code (e.g., USD)"
                    },
                    "merchant_name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Merchant name"
                    },
                    "merchant_descriptor": {
                      "type": "string",
                      "nullable": true,
                      "description": "Merchant descriptor"
                    },
                    "card_holder": {
                      "type": "object",
                      "properties": {
                        "user_id": {
                          "type": "string",
                          "description": "Card holder user ID"
                        },
                        "first_name": {
                          "type": "string",
                          "description": "Card holder first name"
                        },
                        "last_name": {
                          "type": "string",
                          "description": "Card holder last name"
                        },
                        "department_name": {
                          "type": "string",
                          "nullable": true,
                          "description": "Card holder department"
                        }
                      },
                      "additionalProperties": true,
                      "description": "Card holder information"
                    },
                    "card_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "Card ID"
                    },
                    "state": {
                      "type": "string",
                      "description": "Transaction state (e.g., CLEARED)"
                    },
                    "user_transaction_time": {
                      "type": "string",
                      "nullable": true,
                      "description": "Transaction time"
                    },
                    "settlement_date": {
                      "type": "string",
                      "nullable": true,
                      "description": "Settlement date"
                    },
                    "memo": {
                      "type": "string",
                      "nullable": true,
                      "description": "Transaction memo"
                    },
                    "sk_category_name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Spending category name"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp transaction"
                },
                "description": "List of transactions"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_transaction"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "transaction": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Transaction ID"
                  },
                  "amount": {
                    "type": "number",
                    "description": "Transaction amount in cents"
                  },
                  "currency_code": {
                    "type": "string",
                    "description": "Currency code (e.g., USD)"
                  },
                  "merchant_name": {
                    "type": "string",
                    "nullable": true,
                    "description": "Merchant name"
                  },
                  "merchant_descriptor": {
                    "type": "string",
                    "nullable": true,
                    "description": "Merchant descriptor"
                  },
                  "card_holder": {
                    "type": "object",
                    "properties": {
                      "user_id": {
                        "type": "string",
                        "description": "Card holder user ID"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "Card holder first name"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "Card holder last name"
                      },
                      "department_name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Card holder department"
                      }
                    },
                    "additionalProperties": true,
                    "description": "Card holder information"
                  },
                  "card_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "Card ID"
                  },
                  "state": {
                    "type": "string",
                    "description": "Transaction state (e.g., CLEARED)"
                  },
                  "user_transaction_time": {
                    "type": "string",
                    "nullable": true,
                    "description": "Transaction time"
                  },
                  "settlement_date": {
                    "type": "string",
                    "nullable": true,
                    "description": "Settlement date"
                  },
                  "memo": {
                    "type": "string",
                    "nullable": true,
                    "description": "Transaction memo"
                  },
                  "sk_category_name": {
                    "type": "string",
                    "nullable": true,
                    "description": "Spending category name"
                  }
                },
                "additionalProperties": true,
                "description": "Transaction details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "users": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "User ID"
                    },
                    "first_name": {
                      "type": "string",
                      "description": "First name"
                    },
                    "last_name": {
                      "type": "string",
                      "description": "Last name"
                    },
                    "email": {
                      "type": "string",
                      "description": "Email address"
                    },
                    "role": {
                      "type": "string",
                      "description": "User role"
                    },
                    "department_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "Department ID"
                    },
                    "location_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "Location ID"
                    },
                    "status": {
                      "type": "string",
                      "description": "User status"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp user"
                },
                "description": "List of users"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "user": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "User ID"
                  },
                  "first_name": {
                    "type": "string",
                    "description": "First name"
                  },
                  "last_name": {
                    "type": "string",
                    "description": "Last name"
                  },
                  "email": {
                    "type": "string",
                    "description": "Email address"
                  },
                  "role": {
                    "type": "string",
                    "description": "User role"
                  },
                  "department_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "Department ID"
                  },
                  "location_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "Location ID"
                  },
                  "status": {
                    "type": "string",
                    "description": "User status"
                  }
                },
                "additionalProperties": true,
                "description": "User details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_cards"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "cards": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Card ID"
                    },
                    "display_name": {
                      "type": "string",
                      "description": "Card display name"
                    },
                    "last_four": {
                      "type": "string",
                      "description": "Last four digits"
                    },
                    "card_program_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "Card program ID"
                    },
                    "state": {
                      "type": "string",
                      "description": "Card state"
                    },
                    "is_physical": {
                      "type": "boolean",
                      "description": "Whether card is physical"
                    },
                    "cardholder_id": {
                      "type": "string",
                      "description": "Cardholder user ID"
                    },
                    "cardholder_name": {
                      "type": "string",
                      "description": "Cardholder name"
                    },
                    "spending_restrictions": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "Spending restrictions"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp card"
                },
                "description": "List of cards"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_card"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "card": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Card ID"
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Card display name"
                  },
                  "last_four": {
                    "type": "string",
                    "description": "Last four digits"
                  },
                  "card_program_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "Card program ID"
                  },
                  "state": {
                    "type": "string",
                    "description": "Card state"
                  },
                  "is_physical": {
                    "type": "boolean",
                    "description": "Whether card is physical"
                  },
                  "cardholder_id": {
                    "type": "string",
                    "description": "Cardholder user ID"
                  },
                  "cardholder_name": {
                    "type": "string",
                    "description": "Cardholder name"
                  },
                  "spending_restrictions": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Spending restrictions"
                  }
                },
                "additionalProperties": true,
                "description": "Card details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_departments"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "departments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Department ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Department name"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp department"
                },
                "description": "List of departments"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_locations"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "locations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Location ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Location name"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp location"
                },
                "description": "List of locations"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_spend_programs"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "spend_programs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Spend program ID"
                    },
                    "display_name": {
                      "type": "string",
                      "description": "Spend program display name"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Description"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp spend program"
                },
                "description": "List of spend programs"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_limits"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "limits": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Limit/fund ID"
                    },
                    "display_name": {
                      "type": "string",
                      "description": "Limit display name"
                    },
                    "state": {
                      "type": "string",
                      "description": "Limit state"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp limit/fund"
                },
                "description": "List of spend limits/funds"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_reimbursements"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "reimbursements": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Reimbursement ID"
                    },
                    "amount": {
                      "type": "number",
                      "description": "Reimbursement amount in cents"
                    },
                    "currency": {
                      "type": "string",
                      "description": "Currency code"
                    },
                    "merchant": {
                      "type": "string",
                      "nullable": true,
                      "description": "Merchant name"
                    },
                    "user_id": {
                      "type": "string",
                      "description": "User who submitted"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp reimbursement"
                },
                "description": "List of reimbursements"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_bills"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "bills": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Bill ID"
                    },
                    "amount": {
                      "type": "number",
                      "description": "Bill amount"
                    },
                    "vendor_name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Vendor name"
                    },
                    "status": {
                      "type": "string",
                      "description": "Bill status"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp bill"
                },
                "description": "List of bills"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_vendors"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "vendors": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Vendor ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Vendor name"
                    }
                  },
                  "additionalProperties": true,
                  "description": "Ramp vendor"
                },
                "description": "List of vendors"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether there are more results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_business"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "business": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Business ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Business name"
                  }
                },
                "additionalProperties": true,
                "description": "Business information"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Transactions example\nconst ramp_list_transactions = new RampBubble({\n  operation: \"list_transactions\", // List transactions with optional filters\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n  from_date: \"example string\", // Filter transactions from this date (ISO 8601 format, e.g. 2024-01-01T00:00:00Z)\n  to_date: \"example string\", // Filter transactions up to this date (ISO 8601 format, e.g. 2024-12-31T23:59:59Z)\n});\n\nconst result = await ramp_list_transactions.action();\n// outputSchema for result.data when operation === 'list_transactions':\n// {\n//   operation: \"list_transactions\",\n//   success: boolean // Whether the operation was successful,\n//   transactions: { id: string | undefined // Transaction ID, amount: number | undefined // Transaction amount in cents, currency_code: string | undefined // Currency code (e.g., USD), merchant_name: string | null | undefined // Merchant name, merchant_descriptor: string | null | undefined // Merchant descriptor, card_holder: { user_id: string | undefined // Card holder user ID, first_name: string | undefined // Card holder first name, last_name: string | undefined // Card holder last name, department_name: string | null | undefined // Card holder department } | undefined // Card holder information, card_id: string | null | undefined // Card ID, state: string | undefined // Transaction state (e.g., CLEARED), user_transaction_time: string | null | undefined // Transaction time, settlement_date: string | null | undefined // Settlement date, memo: string | null | undefined // Transaction memo, sk_category_name: string | null | undefined // Spending category name }[] | undefined // List of transactions,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Transaction example\nconst ramp_get_transaction = new RampBubble({\n  operation: \"get_transaction\", // Get a specific transaction by ID\n  transaction_id: \"example string\", // Transaction ID\n});\n\nconst result = await ramp_get_transaction.action();\n// outputSchema for result.data when operation === 'get_transaction':\n// {\n//   operation: \"get_transaction\",\n//   success: boolean // Whether the operation was successful,\n//   transaction: { id: string | undefined // Transaction ID, amount: number | undefined // Transaction amount in cents, currency_code: string | undefined // Currency code (e.g., USD), merchant_name: string | null | undefined // Merchant name, merchant_descriptor: string | null | undefined // Merchant descriptor, card_holder: { user_id: string | undefined // Card holder user ID, first_name: string | undefined // Card holder first name, last_name: string | undefined // Card holder last name, department_name: string | null | undefined // Card holder department } | undefined // Card holder information, card_id: string | null | undefined // Card ID, state: string | undefined // Transaction state (e.g., CLEARED), user_transaction_time: string | null | undefined // Transaction time, settlement_date: string | null | undefined // Settlement date, memo: string | null | undefined // Transaction memo, sk_category_name: string | null | undefined // Spending category name } | undefined // Transaction details,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Users example\nconst ramp_list_users = new RampBubble({\n  operation: \"list_users\", // List users in the business\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_users.action();\n// outputSchema for result.data when operation === 'list_users':\n// {\n//   operation: \"list_users\",\n//   success: boolean // Whether the operation was successful,\n//   users: { id: string | undefined // User ID, first_name: string | undefined // First name, last_name: string | undefined // Last name, email: string | undefined // Email address, role: string | undefined // User role, department_id: string | null | undefined // Department ID, location_id: string | null | undefined // Location ID, status: string | undefined // User status }[] | undefined // List of users,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get User example\nconst ramp_get_user = new RampBubble({\n  operation: \"get_user\", // Get a specific user by ID\n  user_id: \"example string\", // User ID\n});\n\nconst result = await ramp_get_user.action();\n// outputSchema for result.data when operation === 'get_user':\n// {\n//   operation: \"get_user\",\n//   success: boolean // Whether the operation was successful,\n//   user: { id: string | undefined // User ID, first_name: string | undefined // First name, last_name: string | undefined // Last name, email: string | undefined // Email address, role: string | undefined // User role, department_id: string | null | undefined // Department ID, location_id: string | null | undefined // Location ID, status: string | undefined // User status } | undefined // User details,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Cards example\nconst ramp_list_cards = new RampBubble({\n  operation: \"list_cards\", // List cards\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_cards.action();\n// outputSchema for result.data when operation === 'list_cards':\n// {\n//   operation: \"list_cards\",\n//   success: boolean // Whether the operation was successful,\n//   cards: { id: string | undefined // Card ID, display_name: string | undefined // Card display name, last_four: string | undefined // Last four digits, card_program_id: string | null | undefined // Card program ID, state: string | undefined // Card state, is_physical: boolean | undefined // Whether card is physical, cardholder_id: string | undefined // Cardholder user ID, cardholder_name: string | undefined // Cardholder name, spending_restrictions: Record<string, unknown> | undefined // Spending restrictions }[] | undefined // List of cards,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Card example\nconst ramp_get_card = new RampBubble({\n  operation: \"get_card\", // Get a specific card by ID\n  card_id: \"example string\", // Card ID\n});\n\nconst result = await ramp_get_card.action();\n// outputSchema for result.data when operation === 'get_card':\n// {\n//   operation: \"get_card\",\n//   success: boolean // Whether the operation was successful,\n//   card: { id: string | undefined // Card ID, display_name: string | undefined // Card display name, last_four: string | undefined // Last four digits, card_program_id: string | null | undefined // Card program ID, state: string | undefined // Card state, is_physical: boolean | undefined // Whether card is physical, cardholder_id: string | undefined // Cardholder user ID, cardholder_name: string | undefined // Cardholder name, spending_restrictions: Record<string, unknown> | undefined // Spending restrictions } | undefined // Card details,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Departments example\nconst ramp_list_departments = new RampBubble({\n  operation: \"list_departments\", // List departments in the business\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_departments.action();\n// outputSchema for result.data when operation === 'list_departments':\n// {\n//   operation: \"list_departments\",\n//   success: boolean // Whether the operation was successful,\n//   departments: { id: string | undefined // Department ID, name: string | undefined // Department name }[] | undefined // List of departments,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Locations example\nconst ramp_list_locations = new RampBubble({\n  operation: \"list_locations\", // List locations in the business\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_locations.action();\n// outputSchema for result.data when operation === 'list_locations':\n// {\n//   operation: \"list_locations\",\n//   success: boolean // Whether the operation was successful,\n//   locations: { id: string | undefined // Location ID, name: string | undefined // Location name }[] | undefined // List of locations,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Spend Programs example\nconst ramp_list_spend_programs = new RampBubble({\n  operation: \"list_spend_programs\", // List spend programs\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_spend_programs.action();\n// outputSchema for result.data when operation === 'list_spend_programs':\n// {\n//   operation: \"list_spend_programs\",\n//   success: boolean // Whether the operation was successful,\n//   spend_programs: { id: string | undefined // Spend program ID, display_name: string | undefined // Spend program display name, description: string | null | undefined // Description }[] | undefined // List of spend programs,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Limits example\nconst ramp_list_limits = new RampBubble({\n  operation: \"list_limits\", // List spend limits/funds\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_limits.action();\n// outputSchema for result.data when operation === 'list_limits':\n// {\n//   operation: \"list_limits\",\n//   success: boolean // Whether the operation was successful,\n//   limits: { id: string | undefined // Limit/fund ID, display_name: string | undefined // Limit display name, state: string | undefined // Limit state }[] | undefined // List of spend limits/funds,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Reimbursements example\nconst ramp_list_reimbursements = new RampBubble({\n  operation: \"list_reimbursements\", // List reimbursements\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n  from_date: \"example string\", // Filter reimbursements from this date (ISO 8601 format)\n  to_date: \"example string\", // Filter reimbursements up to this date (ISO 8601 format)\n});\n\nconst result = await ramp_list_reimbursements.action();\n// outputSchema for result.data when operation === 'list_reimbursements':\n// {\n//   operation: \"list_reimbursements\",\n//   success: boolean // Whether the operation was successful,\n//   reimbursements: { id: string | undefined // Reimbursement ID, amount: number | undefined // Reimbursement amount in cents, currency: string | undefined // Currency code, merchant: string | null | undefined // Merchant name, user_id: string | undefined // User who submitted }[] | undefined // List of reimbursements,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Bills example\nconst ramp_list_bills = new RampBubble({\n  operation: \"list_bills\", // List bills\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n  from_date: \"example string\", // Filter bills from this date (ISO 8601 format)\n  to_date: \"example string\", // Filter bills up to this date (ISO 8601 format)\n});\n\nconst result = await ramp_list_bills.action();\n// outputSchema for result.data when operation === 'list_bills':\n// {\n//   operation: \"list_bills\",\n//   success: boolean // Whether the operation was successful,\n//   bills: { id: string | undefined // Bill ID, amount: number | undefined // Bill amount, vendor_name: string | null | undefined // Vendor name, status: string | undefined // Bill status }[] | undefined // List of bills,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Vendors example\nconst ramp_list_vendors = new RampBubble({\n  operation: \"list_vendors\", // List vendors\n  page_size: 20 // default, // Number of results per page (2-100)\n  start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_vendors.action();\n// outputSchema for result.data when operation === 'list_vendors':\n// {\n//   operation: \"list_vendors\",\n//   success: boolean // Whether the operation was successful,\n//   vendors: { id: string | undefined // Vendor ID, name: string | undefined // Vendor name }[] | undefined // List of vendors,\n//   has_more: boolean | undefined // Whether there are more results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Business example\nconst ramp_get_business = new RampBubble({\n  operation: \"get_business\", // Get business information\n});\n\nconst result = await ramp_get_business.action();\n// outputSchema for result.data when operation === 'get_business':\n// {\n//   operation: \"get_business\",\n//   success: boolean // Whether the operation was successful,\n//   business: { id: string | undefined // Business ID, name: string | undefined // Business name } | undefined // Business information,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`ramp failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "RAMP_CRED"
      ]
    },
    {
      "name": "zendesk",
      "alias": "support",
      "type": "service",
      "shortDescription": "Zendesk integration for tickets, comments, users, and help center",
      "useCase": "- Automated ticket triage and response",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tickets"
                ],
                "description": "List tickets with optional filters"
              },
              "status": {
                "type": "string",
                "enum": [
                  "new",
                  "open",
                  "pending",
                  "hold",
                  "solved",
                  "closed"
                ],
                "description": "Filter by ticket status"
              },
              "sort_by": {
                "type": "string",
                "enum": [
                  "created_at",
                  "updated_at",
                  "priority",
                  "status"
                ],
                "default": "updated_at",
                "description": "Sort field (default: updated_at)"
              },
              "sort_order": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ],
                "default": "desc",
                "description": "Sort order (default: desc)"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Results per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_ticket"
                ],
                "description": "Retrieve a single ticket by ID with full details"
              },
              "ticket_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk ticket ID (numeric string)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "ticket_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_ticket"
                ],
                "description": "Create a new support ticket"
              },
              "subject": {
                "type": "string",
                "minLength": 1,
                "description": "Ticket subject line"
              },
              "body": {
                "type": "string",
                "minLength": 1,
                "description": "Ticket description / initial comment body"
              },
              "requester_email": {
                "type": "string",
                "description": "Email of the requester (creates user if not found)"
              },
              "requester_name": {
                "type": "string",
                "description": "Name of the requester (used when creating a new requester alongside email)"
              },
              "assignee_id": {
                "type": "number",
                "description": "Agent ID to assign the ticket to"
              },
              "priority": {
                "type": "string",
                "enum": [
                  "urgent",
                  "high",
                  "normal",
                  "low"
                ],
                "description": "Ticket priority"
              },
              "type": {
                "type": "string",
                "enum": [
                  "problem",
                  "incident",
                  "question",
                  "task"
                ],
                "description": "Ticket type"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Tags to apply to the ticket"
              },
              "custom_fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Custom ticket field ID"
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        {
                          "enum": [
                            "null"
                          ],
                          "nullable": true
                        }
                      ],
                      "description": "Field value. For dropdowns use the tag name, for multiselect use an array of tag names, for dates use \"YYYY-MM-DD\""
                    }
                  },
                  "required": [
                    "id",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Custom field values. Use list_ticket_fields to discover available fields and their IDs."
              },
              "uploads": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Upload tokens from upload_attachment to attach files to the initial ticket comment"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "subject",
              "body"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_ticket"
                ],
                "description": "Update a ticket: add a reply/comment, change status, priority, or assignee"
              },
              "ticket_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk ticket ID (numeric string)"
              },
              "comment": {
                "type": "string",
                "description": "Comment body to add to the ticket (public reply or internal note)"
              },
              "public": {
                "type": "boolean",
                "default": true,
                "description": "Whether the comment is public (visible to requester) or internal note (default: true)"
              },
              "status": {
                "type": "string",
                "enum": [
                  "new",
                  "open",
                  "pending",
                  "hold",
                  "solved",
                  "closed"
                ],
                "description": "Set new ticket status"
              },
              "priority": {
                "type": "string",
                "enum": [
                  "urgent",
                  "high",
                  "normal",
                  "low"
                ],
                "description": "Set new ticket priority"
              },
              "assignee_id": {
                "type": "number",
                "description": "Reassign ticket to this agent ID"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Replace ticket tags with this list"
              },
              "custom_fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Custom ticket field ID"
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        {
                          "enum": [
                            "null"
                          ],
                          "nullable": true
                        }
                      ],
                      "description": "Field value. For dropdowns use the tag name, for multiselect use an array of tag names, for dates use \"YYYY-MM-DD\""
                    }
                  },
                  "required": [
                    "id",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Custom field values to set. Use list_ticket_fields to discover available fields and their IDs."
              },
              "uploads": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Upload tokens from upload_attachment to attach files to the comment"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "ticket_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_ticket_comments"
                ],
                "description": "List comments/replies on a ticket"
              },
              "ticket_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk ticket ID (numeric string)"
              },
              "sort_order": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ],
                "default": "asc",
                "description": "Sort order for comments (default: asc — oldest first)"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Results per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "ticket_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ],
                "description": "List or search users"
              },
              "query": {
                "type": "string",
                "description": "Search query (name or email)"
              },
              "role": {
                "type": "string",
                "enum": [
                  "end-user",
                  "agent",
                  "admin"
                ],
                "description": "Filter by user role"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Results per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ],
                "description": "Retrieve a single user by ID"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk user ID (numeric string)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_organizations"
                ],
                "description": "List or search organizations"
              },
              "query": {
                "type": "string",
                "description": "Search by organization name or external ID"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Results per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_organization"
                ],
                "description": "Retrieve a single organization by ID"
              },
              "organization_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk organization ID (numeric string)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "organization_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ],
                "description": "Unified search across tickets, users, and organizations using Zendesk query syntax"
              },
              "query": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk search query (e.g., \"type:ticket status:open\", \"type:user email:john@example.com\")"
              },
              "sort_by": {
                "type": "string",
                "enum": [
                  "updated_at",
                  "created_at",
                  "priority",
                  "status",
                  "ticket_type"
                ],
                "description": "Sort field"
              },
              "sort_order": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ],
                "default": "desc",
                "description": "Sort order (default: desc)"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Results per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "query"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_articles"
                ],
                "description": "List or search Help Center articles"
              },
              "query": {
                "type": "string",
                "description": "Search query for articles"
              },
              "section_id": {
                "type": "string",
                "description": "Filter articles by section ID"
              },
              "category_id": {
                "type": "string",
                "description": "Filter articles by category ID"
              },
              "locale": {
                "type": "string",
                "description": "Filter by locale (e.g., \"en-us\")"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Results per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_article"
                ],
                "description": "Retrieve a single Help Center article by ID with body content"
              },
              "article_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk Help Center article ID"
              },
              "locale": {
                "type": "string",
                "description": "Locale for the article (e.g., \"en-us\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "article_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_ticket_fields"
                ],
                "description": "List all ticket fields (system and custom) to discover field IDs, types, and allowed values"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_ticket_field"
                ],
                "description": "Create a new custom ticket field (admin only)"
              },
              "type": {
                "type": "string",
                "enum": [
                  "text",
                  "textarea",
                  "checkbox",
                  "date",
                  "integer",
                  "decimal",
                  "regexp",
                  "partialcreditcard",
                  "multiselect",
                  "tagger",
                  "lookup"
                ],
                "description": "Field type"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "Field display title"
              },
              "description": {
                "type": "string",
                "description": "Field description"
              },
              "required": {
                "type": "boolean",
                "description": "Whether agents must fill this field to mark a ticket as solved"
              },
              "active": {
                "type": "boolean",
                "default": true,
                "description": "Whether field is active"
              },
              "custom_field_options": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Display name of the option"
                    },
                    "value": {
                      "type": "string",
                      "description": "Tag value for this option"
                    }
                  },
                  "required": [
                    "name",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "description": "Options for tagger/multiselect fields. Each option needs a display name and a tag value."
              },
              "tag": {
                "type": "string",
                "description": "Tag added when checkbox is selected (checkbox type only)"
              },
              "regexp_for_validation": {
                "type": "string",
                "description": "Validation regex (regexp type only)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "type",
              "title"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_ticket_field"
                ],
                "description": "Delete a custom ticket field (admin only). System fields cannot be deleted."
              },
              "ticket_field_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the ticket field to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "ticket_field_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_macros"
                ],
                "description": "List available macros. Optionally filter by active status or category."
              },
              "active": {
                "type": "boolean",
                "description": "Filter by active status (true = active only, false = inactive only)"
              },
              "category": {
                "type": "string",
                "description": "Filter macros by category name"
              },
              "include": {
                "type": "string",
                "enum": [
                  "usage_7d",
                  "usage_24h",
                  "usage_30d"
                ],
                "description": "Include usage statistics for the given period"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Results per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_macro"
                ],
                "description": "Retrieve a single macro by ID with its full action definitions"
              },
              "macro_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk macro ID (numeric string)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "macro_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "apply_macro"
                ],
                "description": "Apply a macro to a ticket. Returns the resulting ticket changes (comment text, field updates) without actually modifying the ticket. Use this to preview what a macro would do, then use update_ticket to apply the changes."
              },
              "ticket_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk ticket ID (numeric string)"
              },
              "macro_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk macro ID to apply"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "ticket_id",
              "macro_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_macro"
                ],
                "description": "Create a new macro with a title and a set of actions"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "Macro title"
              },
              "actions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string",
                      "description": "The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\", \"group_id\")"
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        {
                          "enum": [
                            "null"
                          ],
                          "nullable": true
                        }
                      ],
                      "description": "The value to set for this field"
                    }
                  },
                  "required": [
                    "field",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "description": "Actions the macro performs. Each action has a field name and value (e.g., {field: \"comment_value\", value: \"Thanks for contacting us!\"})"
              },
              "active": {
                "type": "boolean",
                "default": true,
                "description": "Whether the macro is active (default: true)"
              },
              "description": {
                "type": "string",
                "description": "Macro description"
              },
              "restriction": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "description": "Restriction type (e.g., \"Group\")"
                  },
                  "id": {
                    "type": "number",
                    "description": "Restriction target ID"
                  },
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    },
                    "description": "Restriction target IDs"
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false,
                "description": "Access restriction (e.g., limit to a specific group)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "title",
              "actions"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_macro"
                ],
                "description": "Update an existing macro"
              },
              "macro_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zendesk macro ID to update (numeric string)"
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "description": "New macro title"
              },
              "actions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string",
                      "description": "The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\", \"group_id\")"
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        {
                          "enum": [
                            "null"
                          ],
                          "nullable": true
                        }
                      ],
                      "description": "The value to set for this field"
                    }
                  },
                  "required": [
                    "field",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "description": "New actions for the macro"
              },
              "active": {
                "type": "boolean",
                "description": "Set active status"
              },
              "description": {
                "type": "string",
                "description": "New macro description"
              },
              "restriction": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "description": "Restriction type (e.g., \"Group\")"
                  },
                  "id": {
                    "type": "number",
                    "description": "Restriction target ID"
                  },
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    },
                    "description": "Restriction target IDs"
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false,
                "description": "Access restriction"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "macro_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_macro"
                ],
                "description": "Delete a macro (admin only)"
              },
              "macro_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the macro to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "macro_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_macros"
                ],
                "description": "Search macros by title keyword"
              },
              "query": {
                "type": "string",
                "minLength": 1,
                "description": "Search query (matches macro title)"
              },
              "active": {
                "type": "boolean",
                "description": "Filter by active status"
              },
              "include": {
                "type": "string",
                "enum": [
                  "usage_7d",
                  "usage_24h",
                  "usage_30d"
                ],
                "description": "Include usage statistics for the given period"
              },
              "page": {
                "type": "number",
                "minimum": 1,
                "default": 1,
                "description": "Page number for pagination (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Results per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "query"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "upload_attachment"
                ],
                "description": "Upload a file to Zendesk and get an upload token for attaching to tickets"
              },
              "filename": {
                "type": "string",
                "minLength": 1,
                "description": "Filename with extension (e.g., \"report.pdf\", \"screenshot.png\")"
              },
              "content": {
                "type": "string",
                "minLength": 1,
                "description": "Base64-encoded file content"
              },
              "content_type": {
                "type": "string",
                "description": "MIME type of the file (e.g., \"application/pdf\"). Defaults to \"application/octet-stream\""
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "filename",
              "content"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tickets"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "tickets": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Ticket ID"
                    },
                    "subject": {
                      "type": "string",
                      "description": "Ticket subject"
                    },
                    "description": {
                      "type": "string",
                      "description": "Ticket description"
                    },
                    "status": {
                      "type": "string",
                      "description": "Ticket status"
                    },
                    "priority": {
                      "type": "string",
                      "nullable": true,
                      "description": "Ticket priority"
                    },
                    "type": {
                      "type": "string",
                      "nullable": true,
                      "description": "Ticket type"
                    },
                    "requester_id": {
                      "type": "number",
                      "description": "Requester user ID"
                    },
                    "assignee_id": {
                      "type": "number",
                      "nullable": true,
                      "description": "Assignee user ID"
                    },
                    "organization_id": {
                      "type": "number",
                      "nullable": true,
                      "description": "Organization ID"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Ticket tags"
                    },
                    "custom_fields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "number"
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              {
                                "enum": [
                                  "null"
                                ],
                                "nullable": true
                              }
                            ],
                            "nullable": true
                          }
                        },
                        "required": [
                          "id",
                          "value"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Custom field values on the ticket"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Created timestamp"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Updated timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "A Zendesk ticket"
                },
                "description": "List of tickets"
              },
              "count": {
                "type": "number",
                "description": "Total ticket count"
              },
              "next_page": {
                "type": "string",
                "nullable": true,
                "description": "Next page URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_ticket"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "ticket": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Ticket ID"
                  },
                  "subject": {
                    "type": "string",
                    "description": "Ticket subject"
                  },
                  "description": {
                    "type": "string",
                    "description": "Ticket description"
                  },
                  "status": {
                    "type": "string",
                    "description": "Ticket status"
                  },
                  "priority": {
                    "type": "string",
                    "nullable": true,
                    "description": "Ticket priority"
                  },
                  "type": {
                    "type": "string",
                    "nullable": true,
                    "description": "Ticket type"
                  },
                  "requester_id": {
                    "type": "number",
                    "description": "Requester user ID"
                  },
                  "assignee_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Assignee user ID"
                  },
                  "organization_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Organization ID"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Ticket tags"
                  },
                  "custom_fields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "enum": [
                                "null"
                              ],
                              "nullable": true
                            }
                          ],
                          "nullable": true
                        }
                      },
                      "required": [
                        "id",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Custom field values on the ticket"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Created timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Updated timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Retrieved ticket"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_ticket"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "ticket": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Ticket ID"
                  },
                  "subject": {
                    "type": "string",
                    "description": "Ticket subject"
                  },
                  "description": {
                    "type": "string",
                    "description": "Ticket description"
                  },
                  "status": {
                    "type": "string",
                    "description": "Ticket status"
                  },
                  "priority": {
                    "type": "string",
                    "nullable": true,
                    "description": "Ticket priority"
                  },
                  "type": {
                    "type": "string",
                    "nullable": true,
                    "description": "Ticket type"
                  },
                  "requester_id": {
                    "type": "number",
                    "description": "Requester user ID"
                  },
                  "assignee_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Assignee user ID"
                  },
                  "organization_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Organization ID"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Ticket tags"
                  },
                  "custom_fields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "enum": [
                                "null"
                              ],
                              "nullable": true
                            }
                          ],
                          "nullable": true
                        }
                      },
                      "required": [
                        "id",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Custom field values on the ticket"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Created timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Updated timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Created ticket"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_ticket"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "ticket": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Ticket ID"
                  },
                  "subject": {
                    "type": "string",
                    "description": "Ticket subject"
                  },
                  "description": {
                    "type": "string",
                    "description": "Ticket description"
                  },
                  "status": {
                    "type": "string",
                    "description": "Ticket status"
                  },
                  "priority": {
                    "type": "string",
                    "nullable": true,
                    "description": "Ticket priority"
                  },
                  "type": {
                    "type": "string",
                    "nullable": true,
                    "description": "Ticket type"
                  },
                  "requester_id": {
                    "type": "number",
                    "description": "Requester user ID"
                  },
                  "assignee_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Assignee user ID"
                  },
                  "organization_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Organization ID"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Ticket tags"
                  },
                  "custom_fields": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "enum": [
                                "null"
                              ],
                              "nullable": true
                            }
                          ],
                          "nullable": true
                        }
                      },
                      "required": [
                        "id",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Custom field values on the ticket"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Created timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Updated timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Updated ticket"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_ticket_comments"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "comments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Comment ID"
                    },
                    "body": {
                      "type": "string",
                      "description": "Comment body text"
                    },
                    "html_body": {
                      "type": "string",
                      "description": "Comment body HTML"
                    },
                    "public": {
                      "type": "boolean",
                      "description": "Whether comment is public"
                    },
                    "author_id": {
                      "type": "number",
                      "description": "Author user ID"
                    },
                    "attachments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "number",
                            "description": "Attachment ID"
                          },
                          "file_name": {
                            "type": "string",
                            "description": "Filename"
                          },
                          "content_url": {
                            "type": "string",
                            "description": "URL to download the attachment"
                          },
                          "content_type": {
                            "type": "string",
                            "description": "MIME type"
                          },
                          "size": {
                            "type": "number",
                            "description": "File size in bytes"
                          }
                        },
                        "required": [
                          "id",
                          "file_name",
                          "content_url",
                          "content_type",
                          "size"
                        ],
                        "additionalProperties": false
                      },
                      "description": "File attachments on this comment"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Created timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "A Zendesk ticket comment"
                },
                "description": "List of comments"
              },
              "count": {
                "type": "number",
                "description": "Total comment count"
              },
              "next_page": {
                "type": "string",
                "nullable": true,
                "description": "Next page URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "users": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "User ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "User name"
                    },
                    "email": {
                      "type": "string",
                      "description": "User email"
                    },
                    "role": {
                      "type": "string",
                      "description": "User role (end-user, agent, admin)"
                    },
                    "organization_id": {
                      "type": "number",
                      "nullable": true,
                      "description": "Organization ID"
                    },
                    "active": {
                      "type": "boolean",
                      "description": "Whether user is active"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Created timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "A Zendesk user"
                },
                "description": "List of users"
              },
              "count": {
                "type": "number",
                "description": "Total user count"
              },
              "next_page": {
                "type": "string",
                "nullable": true,
                "description": "Next page URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "user": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "User ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "User name"
                  },
                  "email": {
                    "type": "string",
                    "description": "User email"
                  },
                  "role": {
                    "type": "string",
                    "description": "User role (end-user, agent, admin)"
                  },
                  "organization_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Organization ID"
                  },
                  "active": {
                    "type": "boolean",
                    "description": "Whether user is active"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Created timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Retrieved user"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_organizations"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "organizations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Organization ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Organization name"
                    },
                    "domain_names": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Associated domain names"
                    },
                    "external_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "External ID"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Created timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "A Zendesk organization"
                },
                "description": "List of organizations"
              },
              "count": {
                "type": "number",
                "description": "Total organization count"
              },
              "next_page": {
                "type": "string",
                "nullable": true,
                "description": "Next page URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_organization"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "organization": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Organization ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Organization name"
                  },
                  "domain_names": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Associated domain names"
                  },
                  "external_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "External ID"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Created timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Retrieved organization"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                },
                "description": "Search results (mixed types)"
              },
              "count": {
                "type": "number",
                "description": "Total result count"
              },
              "next_page": {
                "type": "string",
                "nullable": true,
                "description": "Next page URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_ticket_fields"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "ticket_fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Field ID"
                    },
                    "type": {
                      "type": "string",
                      "description": "Field type (text, textarea, checkbox, date, integer, decimal, tagger, multiselect, etc.)"
                    },
                    "title": {
                      "type": "string",
                      "description": "Field display title"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Field description"
                    },
                    "active": {
                      "type": "boolean",
                      "description": "Whether the field is active"
                    },
                    "required": {
                      "type": "boolean",
                      "description": "Whether the field is required"
                    },
                    "custom_field_options": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Display name of the option"
                          },
                          "value": {
                            "type": "string",
                            "description": "Tag value to use when setting this field"
                          }
                        },
                        "required": [
                          "name",
                          "value"
                        ],
                        "additionalProperties": false
                      },
                      "nullable": true,
                      "description": "Available options for dropdown/tagger/multiselect fields"
                    }
                  },
                  "required": [
                    "id",
                    "type",
                    "title"
                  ],
                  "additionalProperties": false
                },
                "description": "List of ticket fields"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_ticket_field"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "ticket_field": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Created field ID"
                  },
                  "type": {
                    "type": "string",
                    "description": "Field type"
                  },
                  "title": {
                    "type": "string",
                    "description": "Field title"
                  },
                  "active": {
                    "type": "boolean",
                    "description": "Whether field is active"
                  },
                  "required": {
                    "type": "boolean",
                    "description": "Whether field is required"
                  },
                  "custom_field_options": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "name",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "nullable": true
                  }
                },
                "required": [
                  "id",
                  "type",
                  "title"
                ],
                "additionalProperties": false,
                "description": "Created ticket field"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_ticket_field"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_articles"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "articles": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Article ID"
                    },
                    "title": {
                      "type": "string",
                      "description": "Article title"
                    },
                    "body": {
                      "type": "string",
                      "description": "Article body HTML"
                    },
                    "locale": {
                      "type": "string",
                      "description": "Article locale"
                    },
                    "section_id": {
                      "type": "number",
                      "description": "Section ID"
                    },
                    "author_id": {
                      "type": "number",
                      "description": "Author user ID"
                    },
                    "draft": {
                      "type": "boolean",
                      "description": "Whether article is a draft"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Created timestamp"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Updated timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "A Zendesk Help Center article"
                },
                "description": "List of articles"
              },
              "count": {
                "type": "number",
                "description": "Total article count"
              },
              "next_page": {
                "type": "string",
                "nullable": true,
                "description": "Next page URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_article"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "article": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Article ID"
                  },
                  "title": {
                    "type": "string",
                    "description": "Article title"
                  },
                  "body": {
                    "type": "string",
                    "description": "Article body HTML"
                  },
                  "locale": {
                    "type": "string",
                    "description": "Article locale"
                  },
                  "section_id": {
                    "type": "number",
                    "description": "Section ID"
                  },
                  "author_id": {
                    "type": "number",
                    "description": "Author user ID"
                  },
                  "draft": {
                    "type": "boolean",
                    "description": "Whether article is a draft"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Created timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Updated timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Retrieved article"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_macros"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "macros": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Macro ID"
                    },
                    "title": {
                      "type": "string",
                      "description": "Macro title/name"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Macro description"
                    },
                    "active": {
                      "type": "boolean",
                      "description": "Whether the macro is active"
                    },
                    "actions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\")"
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              {
                                "enum": [
                                  "null"
                                ],
                                "nullable": true
                              }
                            ],
                            "nullable": true,
                            "description": "The value to set for this field"
                          }
                        },
                        "required": [
                          "field",
                          "value"
                        ],
                        "additionalProperties": false,
                        "description": "A single action within a Zendesk macro"
                      },
                      "description": "List of actions this macro performs"
                    },
                    "restriction": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string"
                        },
                        "id": {
                          "type": "number"
                        },
                        "ids": {
                          "type": "array",
                          "items": {
                            "type": "number"
                          }
                        }
                      },
                      "additionalProperties": false,
                      "nullable": true,
                      "description": "Access restriction (e.g., limited to a group)"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Created timestamp"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Updated timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "A Zendesk macro"
                },
                "description": "List of macros"
              },
              "count": {
                "type": "number",
                "description": "Total macro count"
              },
              "next_page": {
                "type": "string",
                "nullable": true,
                "description": "Next page URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_macro"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "macro": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Macro ID"
                  },
                  "title": {
                    "type": "string",
                    "description": "Macro title/name"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Macro description"
                  },
                  "active": {
                    "type": "boolean",
                    "description": "Whether the macro is active"
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "field": {
                          "type": "string",
                          "description": "The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\")"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "enum": [
                                "null"
                              ],
                              "nullable": true
                            }
                          ],
                          "nullable": true,
                          "description": "The value to set for this field"
                        }
                      },
                      "required": [
                        "field",
                        "value"
                      ],
                      "additionalProperties": false,
                      "description": "A single action within a Zendesk macro"
                    },
                    "description": "List of actions this macro performs"
                  },
                  "restriction": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string"
                      },
                      "id": {
                        "type": "number"
                      },
                      "ids": {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      }
                    },
                    "additionalProperties": false,
                    "nullable": true,
                    "description": "Access restriction (e.g., limited to a group)"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Created timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Updated timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Retrieved macro"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "apply_macro"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "result": {
                "type": "object",
                "properties": {
                  "ticket": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "Ticket fields that would be changed"
                  },
                  "comment": {
                    "type": "object",
                    "properties": {
                      "body": {
                        "type": "string",
                        "description": "Comment body text the macro would add"
                      },
                      "html_body": {
                        "type": "string",
                        "description": "Comment body HTML the macro would add"
                      },
                      "public": {
                        "type": "boolean",
                        "description": "Whether the comment would be public"
                      },
                      "scoped_body": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "description": "Scoped comment bodies (locale-specific)"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Comment that the macro would add to the ticket"
                  }
                },
                "additionalProperties": false,
                "description": "The result of applying the macro — shows what would change"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_macro"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "macro": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Macro ID"
                  },
                  "title": {
                    "type": "string",
                    "description": "Macro title/name"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Macro description"
                  },
                  "active": {
                    "type": "boolean",
                    "description": "Whether the macro is active"
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "field": {
                          "type": "string",
                          "description": "The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\")"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "enum": [
                                "null"
                              ],
                              "nullable": true
                            }
                          ],
                          "nullable": true,
                          "description": "The value to set for this field"
                        }
                      },
                      "required": [
                        "field",
                        "value"
                      ],
                      "additionalProperties": false,
                      "description": "A single action within a Zendesk macro"
                    },
                    "description": "List of actions this macro performs"
                  },
                  "restriction": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string"
                      },
                      "id": {
                        "type": "number"
                      },
                      "ids": {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      }
                    },
                    "additionalProperties": false,
                    "nullable": true,
                    "description": "Access restriction (e.g., limited to a group)"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Created timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Updated timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Created macro"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_macro"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "macro": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Macro ID"
                  },
                  "title": {
                    "type": "string",
                    "description": "Macro title/name"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Macro description"
                  },
                  "active": {
                    "type": "boolean",
                    "description": "Whether the macro is active"
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "field": {
                          "type": "string",
                          "description": "The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\")"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "enum": [
                                "null"
                              ],
                              "nullable": true
                            }
                          ],
                          "nullable": true,
                          "description": "The value to set for this field"
                        }
                      },
                      "required": [
                        "field",
                        "value"
                      ],
                      "additionalProperties": false,
                      "description": "A single action within a Zendesk macro"
                    },
                    "description": "List of actions this macro performs"
                  },
                  "restriction": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string"
                      },
                      "id": {
                        "type": "number"
                      },
                      "ids": {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      }
                    },
                    "additionalProperties": false,
                    "nullable": true,
                    "description": "Access restriction (e.g., limited to a group)"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Created timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Updated timestamp"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "description": "Updated macro"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_macro"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_macros"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "macros": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Macro ID"
                    },
                    "title": {
                      "type": "string",
                      "description": "Macro title/name"
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Macro description"
                    },
                    "active": {
                      "type": "boolean",
                      "description": "Whether the macro is active"
                    },
                    "actions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\")"
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              {
                                "enum": [
                                  "null"
                                ],
                                "nullable": true
                              }
                            ],
                            "nullable": true,
                            "description": "The value to set for this field"
                          }
                        },
                        "required": [
                          "field",
                          "value"
                        ],
                        "additionalProperties": false,
                        "description": "A single action within a Zendesk macro"
                      },
                      "description": "List of actions this macro performs"
                    },
                    "restriction": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string"
                        },
                        "id": {
                          "type": "number"
                        },
                        "ids": {
                          "type": "array",
                          "items": {
                            "type": "number"
                          }
                        }
                      },
                      "additionalProperties": false,
                      "nullable": true,
                      "description": "Access restriction (e.g., limited to a group)"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Created timestamp"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Updated timestamp"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false,
                  "description": "A Zendesk macro"
                },
                "description": "Matching macros"
              },
              "count": {
                "type": "number",
                "description": "Total result count"
              },
              "next_page": {
                "type": "string",
                "nullable": true,
                "description": "Next page URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "upload_attachment"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "upload": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string",
                    "description": "Upload token to include in ticket comment uploads array"
                  },
                  "attachment": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Attachment ID"
                      },
                      "file_name": {
                        "type": "string",
                        "description": "Uploaded filename"
                      },
                      "content_url": {
                        "type": "string",
                        "description": "URL to access the attachment"
                      },
                      "size": {
                        "type": "number",
                        "description": "File size in bytes"
                      },
                      "content_type": {
                        "type": "string",
                        "description": "MIME type of the file"
                      }
                    },
                    "required": [
                      "id",
                      "file_name",
                      "content_url",
                      "size",
                      "content_type"
                    ],
                    "additionalProperties": false,
                    "description": "Attachment metadata"
                  }
                },
                "required": [
                  "token",
                  "attachment"
                ],
                "additionalProperties": false,
                "description": "Upload result with token and attachment info"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Tickets example\nconst zendesk_list_tickets = new ZendeskBubble({\n  operation: \"list_tickets\", // List tickets with optional filters\n  status: \"new\" // options: \"new\", \"open\", \"pending\", \"hold\", \"solved\", \"closed\", // Filter by ticket status\n  sort_by: \"created_at\" // options: \"created_at\", \"updated_at\", \"priority\", \"status\", // Sort field (default: updated_at)\n  sort_order: \"asc\" // options: \"asc\", \"desc\", // Sort order (default: desc)\n  page: 1 // default, // Page number for pagination (default 1)\n  per_page: 25 // default, // Results per page (1-100, default 25)\n});\n\nconst result = await zendesk_list_tickets.action();\n// outputSchema for result.data when operation === 'list_tickets':\n// {\n//   operation: \"list_tickets\",\n//   success: boolean // Whether the operation was successful,\n//   tickets: { id: number // Ticket ID, subject: string | undefined // Ticket subject, description: string | undefined // Ticket description, status: string | undefined // Ticket status, priority: string | undefined | null // Ticket priority, type: string | undefined | null // Ticket type, requester_id: number | undefined // Requester user ID, assignee_id: number | undefined | null // Assignee user ID, organization_id: number | undefined | null // Organization ID, tags: string[] | undefined // Ticket tags, custom_fields: { id: number, value: unknown | null }[] | undefined // Custom field values on the ticket, created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp }[] | undefined // List of tickets,\n//   count: number | undefined // Total ticket count,\n//   next_page: string | undefined | null // Next page URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Ticket example\nconst zendesk_get_ticket = new ZendeskBubble({\n  operation: \"get_ticket\", // Retrieve a single ticket by ID with full details\n  ticket_id: \"example string\", // Zendesk ticket ID (numeric string)\n});\n\nconst result = await zendesk_get_ticket.action();\n// outputSchema for result.data when operation === 'get_ticket':\n// {\n//   operation: \"get_ticket\",\n//   success: boolean // Whether the operation was successful,\n//   ticket: { id: number // Ticket ID, subject: string | undefined // Ticket subject, description: string | undefined // Ticket description, status: string | undefined // Ticket status, priority: string | undefined | null // Ticket priority, type: string | undefined | null // Ticket type, requester_id: number | undefined // Requester user ID, assignee_id: number | undefined | null // Assignee user ID, organization_id: number | undefined | null // Organization ID, tags: string[] | undefined // Ticket tags, custom_fields: { id: number, value: unknown | null }[] | undefined // Custom field values on the ticket, created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp } | undefined // Retrieved ticket,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Ticket example\nconst zendesk_create_ticket = new ZendeskBubble({\n  operation: \"create_ticket\", // Create a new support ticket\n  subject: \"example string\", // Ticket subject line\n  body: \"example string\", // Ticket description / initial comment body\n  requester_email: \"example string\", // Email of the requester (creates user if not found)\n  requester_name: \"example string\", // Name of the requester (used when creating a new requester alongside email)\n  assignee_id: 42, // Agent ID to assign the ticket to\n  priority: \"urgent\" // options: \"urgent\", \"high\", \"normal\", \"low\", // Ticket priority\n  type: \"problem\" // options: \"problem\", \"incident\", \"question\", \"task\", // Ticket type\n  tags: [\"example string\"], // Tags to apply to the ticket\n  custom_fields: [{ id: 42 // Custom ticket field ID, value: [\"example string\"] // Field value. For dropdowns use the tag name, for multiselect use an array of tag names, for dates use \"YYYY-MM-DD\" }], // Custom field values. Use list_ticket_fields to discover available fields and their IDs.\n  uploads: [\"example string\"], // Upload tokens from upload_attachment to attach files to the initial ticket comment\n});\n\nconst result = await zendesk_create_ticket.action();\n// outputSchema for result.data when operation === 'create_ticket':\n// {\n//   operation: \"create_ticket\",\n//   success: boolean // Whether the operation was successful,\n//   ticket: { id: number // Ticket ID, subject: string | undefined // Ticket subject, description: string | undefined // Ticket description, status: string | undefined // Ticket status, priority: string | undefined | null // Ticket priority, type: string | undefined | null // Ticket type, requester_id: number | undefined // Requester user ID, assignee_id: number | undefined | null // Assignee user ID, organization_id: number | undefined | null // Organization ID, tags: string[] | undefined // Ticket tags, custom_fields: { id: number, value: unknown | null }[] | undefined // Custom field values on the ticket, created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp } | undefined // Created ticket,\n//   error: string // Error message if operation failed\n// }\n\n\n// Update Ticket example\nconst zendesk_update_ticket = new ZendeskBubble({\n  operation: \"update_ticket\", // Update a ticket: add a reply/comment, change status, priority, or assignee\n  ticket_id: \"example string\", // Zendesk ticket ID (numeric string)\n  comment: \"example string\", // Comment body to add to the ticket (public reply or internal note)\n  public: true // default, // Whether the comment is public (visible to requester) or internal note (default: true)\n  status: \"new\" // options: \"new\", \"open\", \"pending\", \"hold\", \"solved\", \"closed\", // Set new ticket status\n  priority: \"urgent\" // options: \"urgent\", \"high\", \"normal\", \"low\", // Set new ticket priority\n  assignee_id: 42, // Reassign ticket to this agent ID\n  tags: [\"example string\"], // Replace ticket tags with this list\n  custom_fields: [{ id: 42 // Custom ticket field ID, value: [\"example string\"] // Field value. For dropdowns use the tag name, for multiselect use an array of tag names, for dates use \"YYYY-MM-DD\" }], // Custom field values to set. Use list_ticket_fields to discover available fields and their IDs.\n  uploads: [\"example string\"], // Upload tokens from upload_attachment to attach files to the comment\n});\n\nconst result = await zendesk_update_ticket.action();\n// outputSchema for result.data when operation === 'update_ticket':\n// {\n//   operation: \"update_ticket\",\n//   success: boolean // Whether the operation was successful,\n//   ticket: { id: number // Ticket ID, subject: string | undefined // Ticket subject, description: string | undefined // Ticket description, status: string | undefined // Ticket status, priority: string | undefined | null // Ticket priority, type: string | undefined | null // Ticket type, requester_id: number | undefined // Requester user ID, assignee_id: number | undefined | null // Assignee user ID, organization_id: number | undefined | null // Organization ID, tags: string[] | undefined // Ticket tags, custom_fields: { id: number, value: unknown | null }[] | undefined // Custom field values on the ticket, created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp } | undefined // Updated ticket,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Ticket Comments example\nconst zendesk_list_ticket_comments = new ZendeskBubble({\n  operation: \"list_ticket_comments\", // List comments/replies on a ticket\n  ticket_id: \"example string\", // Zendesk ticket ID (numeric string)\n  sort_order: \"asc\" // options: \"asc\", \"desc\", // Sort order for comments (default: asc — oldest first)\n  page: 1 // default, // Page number for pagination (default 1)\n  per_page: 25 // default, // Results per page (1-100, default 25)\n});\n\nconst result = await zendesk_list_ticket_comments.action();\n// outputSchema for result.data when operation === 'list_ticket_comments':\n// {\n//   operation: \"list_ticket_comments\",\n//   success: boolean // Whether the operation was successful,\n//   comments: { id: number // Comment ID, body: string | undefined // Comment body text, html_body: string | undefined // Comment body HTML, public: boolean | undefined // Whether comment is public, author_id: number | undefined // Author user ID, attachments: { id: number // Attachment ID, file_name: string // Filename, content_url: string // URL to download the attachment, content_type: string // MIME type, size: number // File size in bytes }[] | undefined // File attachments on this comment, created_at: string | undefined // Created timestamp }[] | undefined // List of comments,\n//   count: number | undefined // Total comment count,\n//   next_page: string | undefined | null // Next page URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Users example\nconst zendesk_list_users = new ZendeskBubble({\n  operation: \"list_users\", // List or search users\n  query: \"example string\", // Search query (name or email)\n  role: \"end-user\" // options: \"end-user\", \"agent\", \"admin\", // Filter by user role\n  page: 1 // default, // Page number for pagination (default 1)\n  per_page: 25 // default, // Results per page (1-100, default 25)\n});\n\nconst result = await zendesk_list_users.action();\n// outputSchema for result.data when operation === 'list_users':\n// {\n//   operation: \"list_users\",\n//   success: boolean // Whether the operation was successful,\n//   users: { id: number // User ID, name: string | undefined // User name, email: string | undefined // User email, role: string | undefined // User role (end-user, agent, admin), organization_id: number | undefined | null // Organization ID, active: boolean | undefined // Whether user is active, created_at: string | undefined // Created timestamp }[] | undefined // List of users,\n//   count: number | undefined // Total user count,\n//   next_page: string | undefined | null // Next page URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get User example\nconst zendesk_get_user = new ZendeskBubble({\n  operation: \"get_user\", // Retrieve a single user by ID\n  user_id: \"example string\", // Zendesk user ID (numeric string)\n});\n\nconst result = await zendesk_get_user.action();\n// outputSchema for result.data when operation === 'get_user':\n// {\n//   operation: \"get_user\",\n//   success: boolean // Whether the operation was successful,\n//   user: { id: number // User ID, name: string | undefined // User name, email: string | undefined // User email, role: string | undefined // User role (end-user, agent, admin), organization_id: number | undefined | null // Organization ID, active: boolean | undefined // Whether user is active, created_at: string | undefined // Created timestamp } | undefined // Retrieved user,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Organizations example\nconst zendesk_list_organizations = new ZendeskBubble({\n  operation: \"list_organizations\", // List or search organizations\n  query: \"example string\", // Search by organization name or external ID\n  page: 1 // default, // Page number for pagination (default 1)\n  per_page: 25 // default, // Results per page (1-100, default 25)\n});\n\nconst result = await zendesk_list_organizations.action();\n// outputSchema for result.data when operation === 'list_organizations':\n// {\n//   operation: \"list_organizations\",\n//   success: boolean // Whether the operation was successful,\n//   organizations: { id: number // Organization ID, name: string | undefined // Organization name, domain_names: string[] | undefined // Associated domain names, external_id: string | undefined | null // External ID, created_at: string | undefined // Created timestamp }[] | undefined // List of organizations,\n//   count: number | undefined // Total organization count,\n//   next_page: string | undefined | null // Next page URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Organization example\nconst zendesk_get_organization = new ZendeskBubble({\n  operation: \"get_organization\", // Retrieve a single organization by ID\n  organization_id: \"example string\", // Zendesk organization ID (numeric string)\n});\n\nconst result = await zendesk_get_organization.action();\n// outputSchema for result.data when operation === 'get_organization':\n// {\n//   operation: \"get_organization\",\n//   success: boolean // Whether the operation was successful,\n//   organization: { id: number // Organization ID, name: string | undefined // Organization name, domain_names: string[] | undefined // Associated domain names, external_id: string | undefined | null // External ID, created_at: string | undefined // Created timestamp } | undefined // Retrieved organization,\n//   error: string // Error message if operation failed\n// }\n\n\n// Search example\nconst zendesk_search = new ZendeskBubble({\n  operation: \"search\", // Unified search across tickets, users, and organizations using Zendesk query syntax\n  query: \"example string\", // Zendesk search query (e.g., \"type:ticket status:open\", \"type:user email:john@example.com\")\n  sort_by: \"updated_at\" // options: \"updated_at\", \"created_at\", \"priority\", \"status\", \"ticket_type\", // Sort field\n  sort_order: \"asc\" // options: \"asc\", \"desc\", // Sort order (default: desc)\n  page: 1 // default, // Page number for pagination (default 1)\n  per_page: 25 // default, // Results per page (1-100, default 25)\n});\n\nconst result = await zendesk_search.action();\n// outputSchema for result.data when operation === 'search':\n// {\n//   operation: \"search\",\n//   success: boolean // Whether the operation was successful,\n//   results: Record<string, unknown>[] | undefined // Search results (mixed types),\n//   count: number | undefined // Total result count,\n//   next_page: string | undefined | null // Next page URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Articles example\nconst zendesk_list_articles = new ZendeskBubble({\n  operation: \"list_articles\", // List or search Help Center articles\n  query: \"example string\", // Search query for articles\n  section_id: \"example string\", // Filter articles by section ID\n  category_id: \"example string\", // Filter articles by category ID\n  locale: \"example string\", // Filter by locale (e.g., \"en-us\")\n  page: 1 // default, // Page number for pagination (default 1)\n  per_page: 25 // default, // Results per page (1-100, default 25)\n});\n\nconst result = await zendesk_list_articles.action();\n// outputSchema for result.data when operation === 'list_articles':\n// {\n//   operation: \"list_articles\",\n//   success: boolean // Whether the operation was successful,\n//   articles: { id: number // Article ID, title: string | undefined // Article title, body: string | undefined // Article body HTML, locale: string | undefined // Article locale, section_id: number | undefined // Section ID, author_id: number | undefined // Author user ID, draft: boolean | undefined // Whether article is a draft, created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp }[] | undefined // List of articles,\n//   count: number | undefined // Total article count,\n//   next_page: string | undefined | null // Next page URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Article example\nconst zendesk_get_article = new ZendeskBubble({\n  operation: \"get_article\", // Retrieve a single Help Center article by ID with body content\n  article_id: \"example string\", // Zendesk Help Center article ID\n  locale: \"example string\", // Locale for the article (e.g., \"en-us\")\n});\n\nconst result = await zendesk_get_article.action();\n// outputSchema for result.data when operation === 'get_article':\n// {\n//   operation: \"get_article\",\n//   success: boolean // Whether the operation was successful,\n//   article: { id: number // Article ID, title: string | undefined // Article title, body: string | undefined // Article body HTML, locale: string | undefined // Article locale, section_id: number | undefined // Section ID, author_id: number | undefined // Author user ID, draft: boolean | undefined // Whether article is a draft, created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp } | undefined // Retrieved article,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Ticket Fields example\nconst zendesk_list_ticket_fields = new ZendeskBubble({\n  operation: \"list_ticket_fields\", // List all ticket fields (system and custom) to discover field IDs, types, and allowed values\n});\n\nconst result = await zendesk_list_ticket_fields.action();\n// outputSchema for result.data when operation === 'list_ticket_fields':\n// {\n//   operation: \"list_ticket_fields\",\n//   success: boolean // Whether the operation was successful,\n//   ticket_fields: { id: number // Field ID, type: string // Field type (text, textarea, checkbox, date, integer, decimal, tagger, multiselect, etc.), title: string // Field display title, description: string | undefined | null // Field description, active: boolean | undefined // Whether the field is active, required: boolean | undefined // Whether the field is required, custom_field_options: { name: string // Display name of the option, value: string // Tag value to use when setting this field }[] | undefined | null // Available options for dropdown/tagger/multiselect fields }[] | undefined // List of ticket fields,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Ticket Field example\nconst zendesk_create_ticket_field = new ZendeskBubble({\n  operation: \"create_ticket_field\", // Create a new custom ticket field (admin only)\n  type: \"text\" // options: \"text\", \"textarea\", \"checkbox\", \"date\", \"integer\", \"decimal\", \"regexp\", \"partialcreditcard\", \"multiselect\", \"tagger\", \"lookup\", // Field type\n  title: \"example string\", // Field display title\n  description: \"example string\", // Field description\n  required: true, // Whether agents must fill this field to mark a ticket as solved\n  active: true // default, // Whether field is active\n  custom_field_options: [{ name: \"example string\" // Display name of the option, value: \"example string\" // Tag value for this option }], // Options for tagger/multiselect fields. Each option needs a display name and a tag value.\n  tag: \"example string\", // Tag added when checkbox is selected (checkbox type only)\n  regexp_for_validation: \"example string\", // Validation regex (regexp type only)\n});\n\nconst result = await zendesk_create_ticket_field.action();\n// outputSchema for result.data when operation === 'create_ticket_field':\n// {\n//   operation: \"create_ticket_field\",\n//   success: boolean // Whether the operation was successful,\n//   ticket_field: { id: number // Created field ID, type: string // Field type, title: string // Field title, active: boolean | undefined // Whether field is active, required: boolean | undefined // Whether field is required, custom_field_options: { name: string, value: string }[] | undefined | null } | undefined // Created ticket field,\n//   error: string // Error message if operation failed\n// }\n\n\n// Delete Ticket Field example\nconst zendesk_delete_ticket_field = new ZendeskBubble({\n  operation: \"delete_ticket_field\", // Delete a custom ticket field (admin only). System fields cannot be deleted.\n  ticket_field_id: \"example string\", // ID of the ticket field to delete\n});\n\nconst result = await zendesk_delete_ticket_field.action();\n// outputSchema for result.data when operation === 'delete_ticket_field':\n// {\n//   operation: \"delete_ticket_field\",\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Macros example\nconst zendesk_list_macros = new ZendeskBubble({\n  operation: \"list_macros\", // List available macros. Optionally filter by active status or category.\n  active: true, // Filter by active status (true = active only, false = inactive only)\n  category: \"example string\", // Filter macros by category name\n  include: \"usage_7d\" // options: \"usage_7d\", \"usage_24h\", \"usage_30d\", // Include usage statistics for the given period\n  page: 1 // default, // Page number for pagination (default 1)\n  per_page: 25 // default, // Results per page (1-100, default 25)\n});\n\nconst result = await zendesk_list_macros.action();\n// outputSchema for result.data when operation === 'list_macros':\n// {\n//   operation: \"list_macros\",\n//   success: boolean // Whether the operation was successful,\n//   macros: { id: number // Macro ID, title: string | undefined // Macro title/name, description: string | undefined | null // Macro description, active: boolean | undefined // Whether the macro is active, actions: { field: string // The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\"), value: unknown | null // The value to set for this field }[] | undefined // List of actions this macro performs, restriction: { type: string | undefined, id: number | undefined, ids: number[] | undefined } | undefined | null // Access restriction (e.g., limited to a group), created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp }[] | undefined // List of macros,\n//   count: number | undefined // Total macro count,\n//   next_page: string | undefined | null // Next page URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Macro example\nconst zendesk_get_macro = new ZendeskBubble({\n  operation: \"get_macro\", // Retrieve a single macro by ID with its full action definitions\n  macro_id: \"example string\", // Zendesk macro ID (numeric string)\n});\n\nconst result = await zendesk_get_macro.action();\n// outputSchema for result.data when operation === 'get_macro':\n// {\n//   operation: \"get_macro\",\n//   success: boolean // Whether the operation was successful,\n//   macro: { id: number // Macro ID, title: string | undefined // Macro title/name, description: string | undefined | null // Macro description, active: boolean | undefined // Whether the macro is active, actions: { field: string // The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\"), value: unknown | null // The value to set for this field }[] | undefined // List of actions this macro performs, restriction: { type: string | undefined, id: number | undefined, ids: number[] | undefined } | undefined | null // Access restriction (e.g., limited to a group), created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp } | undefined // Retrieved macro,\n//   error: string // Error message if operation failed\n// }\n\n\n// Apply Macro example\nconst zendesk_apply_macro = new ZendeskBubble({\n  operation: \"apply_macro\", // Apply a macro to a ticket. Returns the resulting ticket changes (comment text, field updates) without actually modifying the ticket. Use this to preview what a macro would do, then use update_ticket to apply the changes.\n  ticket_id: \"example string\", // Zendesk ticket ID (numeric string)\n  macro_id: \"example string\", // Zendesk macro ID to apply\n});\n\nconst result = await zendesk_apply_macro.action();\n// outputSchema for result.data when operation === 'apply_macro':\n// {\n//   operation: \"apply_macro\",\n//   success: boolean // Whether the operation was successful,\n//   result: { ticket: Record<string, unknown> | undefined // Ticket fields that would be changed, comment: { body: string | undefined // Comment body text the macro would add, html_body: string | undefined // Comment body HTML the macro would add, public: boolean | undefined // Whether the comment would be public, scoped_body: string[][] | undefined // Scoped comment bodies (locale-specific) } | undefined // Comment that the macro would add to the ticket } | undefined // The result of applying the macro — shows what would change,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Macro example\nconst zendesk_create_macro = new ZendeskBubble({\n  operation: \"create_macro\", // Create a new macro with a title and a set of actions\n  title: \"example string\", // Macro title\n  actions: [{ field: \"example string\" // The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\", \"group_id\"), value: [\"example string\"] // The value to set for this field }], // Actions the macro performs. Each action has a field name and value (e.g., {field: \"comment_value\", value: \"Thanks for contacting us!\"})\n  active: true // default, // Whether the macro is active (default: true)\n  description: \"example string\", // Macro description\n  restriction: { type: \"example string\" // Restriction type (e.g., \"Group\"), id: 42 // Restriction target ID, ids: [42] // Restriction target IDs }, // Access restriction (e.g., limit to a specific group)\n});\n\nconst result = await zendesk_create_macro.action();\n// outputSchema for result.data when operation === 'create_macro':\n// {\n//   operation: \"create_macro\",\n//   success: boolean // Whether the operation was successful,\n//   macro: { id: number // Macro ID, title: string | undefined // Macro title/name, description: string | undefined | null // Macro description, active: boolean | undefined // Whether the macro is active, actions: { field: string // The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\"), value: unknown | null // The value to set for this field }[] | undefined // List of actions this macro performs, restriction: { type: string | undefined, id: number | undefined, ids: number[] | undefined } | undefined | null // Access restriction (e.g., limited to a group), created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp } | undefined // Created macro,\n//   error: string // Error message if operation failed\n// }\n\n\n// Update Macro example\nconst zendesk_update_macro = new ZendeskBubble({\n  operation: \"update_macro\", // Update an existing macro\n  macro_id: \"example string\", // Zendesk macro ID to update (numeric string)\n  title: \"example string\", // New macro title\n  actions: [{ field: \"example string\" // The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\", \"group_id\"), value: [\"example string\"] // The value to set for this field }], // New actions for the macro\n  active: true, // Set active status\n  description: \"example string\", // New macro description\n  restriction: { type: \"example string\" // Restriction type (e.g., \"Group\"), id: 42 // Restriction target ID, ids: [42] // Restriction target IDs }, // Access restriction\n});\n\nconst result = await zendesk_update_macro.action();\n// outputSchema for result.data when operation === 'update_macro':\n// {\n//   operation: \"update_macro\",\n//   success: boolean // Whether the operation was successful,\n//   macro: { id: number // Macro ID, title: string | undefined // Macro title/name, description: string | undefined | null // Macro description, active: boolean | undefined // Whether the macro is active, actions: { field: string // The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\"), value: unknown | null // The value to set for this field }[] | undefined // List of actions this macro performs, restriction: { type: string | undefined, id: number | undefined, ids: number[] | undefined } | undefined | null // Access restriction (e.g., limited to a group), created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp } | undefined // Updated macro,\n//   error: string // Error message if operation failed\n// }\n\n\n// Delete Macro example\nconst zendesk_delete_macro = new ZendeskBubble({\n  operation: \"delete_macro\", // Delete a macro (admin only)\n  macro_id: \"example string\", // ID of the macro to delete\n});\n\nconst result = await zendesk_delete_macro.action();\n// outputSchema for result.data when operation === 'delete_macro':\n// {\n//   operation: \"delete_macro\",\n//   success: boolean // Whether the operation was successful,\n//   error: string // Error message if operation failed\n// }\n\n\n// Search Macros example\nconst zendesk_search_macros = new ZendeskBubble({\n  operation: \"search_macros\", // Search macros by title keyword\n  query: \"example string\", // Search query (matches macro title)\n  active: true, // Filter by active status\n  include: \"usage_7d\" // options: \"usage_7d\", \"usage_24h\", \"usage_30d\", // Include usage statistics for the given period\n  page: 1 // default, // Page number for pagination (default 1)\n  per_page: 25 // default, // Results per page (1-100, default 25)\n});\n\nconst result = await zendesk_search_macros.action();\n// outputSchema for result.data when operation === 'search_macros':\n// {\n//   operation: \"search_macros\",\n//   success: boolean // Whether the operation was successful,\n//   macros: { id: number // Macro ID, title: string | undefined // Macro title/name, description: string | undefined | null // Macro description, active: boolean | undefined // Whether the macro is active, actions: { field: string // The ticket field this action targets (e.g., \"comment_value\", \"status\", \"priority\", \"assignee_id\"), value: unknown | null // The value to set for this field }[] | undefined // List of actions this macro performs, restriction: { type: string | undefined, id: number | undefined, ids: number[] | undefined } | undefined | null // Access restriction (e.g., limited to a group), created_at: string | undefined // Created timestamp, updated_at: string | undefined // Updated timestamp }[] | undefined // Matching macros,\n//   count: number | undefined // Total result count,\n//   next_page: string | undefined | null // Next page URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// Upload Attachment example\nconst zendesk_upload_attachment = new ZendeskBubble({\n  operation: \"upload_attachment\", // Upload a file to Zendesk and get an upload token for attaching to tickets\n  filename: \"example string\", // Filename with extension (e.g., \"report.pdf\", \"screenshot.png\")\n  content: \"example string\", // Base64-encoded file content\n  content_type: \"example string\", // MIME type of the file (e.g., \"application/pdf\"). Defaults to \"application/octet-stream\"\n});\n\nconst result = await zendesk_upload_attachment.action();\n// outputSchema for result.data when operation === 'upload_attachment':\n// {\n//   operation: \"upload_attachment\",\n//   success: boolean // Whether the operation was successful,\n//   upload: { token: string // Upload token to include in ticket comment uploads array, attachment: { id: number // Attachment ID, file_name: string // Uploaded filename, content_url: string // URL to access the attachment, size: number // File size in bytes, content_type: string // MIME type of the file } // Attachment metadata } | undefined // Upload result with token and attachment info,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`zendesk failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "ZENDESK_CRED"
      ]
    },
    {
      "name": "slab",
      "alias": "slab-kb",
      "type": "service",
      "shortDescription": "Slab knowledge management for searching and managing posts",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_posts"
                ],
                "description": "Search posts across the Slab workspace"
              },
              "query": {
                "type": "string",
                "minLength": 1,
                "description": "Search query string"
              },
              "first": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 20,
                "description": "Number of results to return (1-100, default 20)"
              },
              "after": {
                "type": "string",
                "description": "Cursor for pagination (from previous search result)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "query"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_post"
                ],
                "description": "Get a specific post by ID"
              },
              "post_id": {
                "type": "string",
                "minLength": 1,
                "description": "The ID of the post to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "post_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_posts"
                ],
                "description": "List all posts in the organization"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_topic_posts"
                ],
                "description": "Get all posts within a specific topic"
              },
              "topic_id": {
                "type": "string",
                "minLength": 1,
                "description": "The ID of the topic"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "topic_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_topics"
                ],
                "description": "List all topics in the organization"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_posts"
                ],
                "description": "Search posts operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "posts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Post identifier"
                    },
                    "title": {
                      "type": "string",
                      "description": "Post title"
                    },
                    "highlight": {
                      "nullable": true,
                      "description": "Search result highlight/excerpt (JSON)"
                    },
                    "content": {
                      "nullable": true,
                      "description": "Matched content (JSON)"
                    },
                    "insertedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "Creation timestamp"
                    },
                    "publishedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "Publication timestamp"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "User identifier"
                        },
                        "name": {
                          "type": "string",
                          "description": "User's name"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": false,
                      "description": "Post owner",
                      "nullable": true
                    },
                    "topics": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Topic identifier"
                          },
                          "name": {
                            "type": "string",
                            "description": "Topic name"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": false,
                        "description": "Slab topic (category for organizing posts)"
                      },
                      "nullable": true,
                      "description": "Associated topics"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Slab search result entry"
                },
                "description": "Search result posts"
              },
              "has_more": {
                "type": "boolean",
                "description": "Whether more results are available"
              },
              "end_cursor": {
                "type": "string",
                "nullable": true,
                "description": "Cursor for fetching the next page"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_post"
                ],
                "description": "Get post operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "post": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Post identifier"
                  },
                  "title": {
                    "type": "string",
                    "description": "Post title"
                  },
                  "content": {
                    "nullable": true,
                    "description": "Post content in Quill Delta JSON format"
                  },
                  "insertedAt": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO 8601 creation timestamp"
                  },
                  "publishedAt": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO 8601 publication timestamp"
                  },
                  "updatedAt": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO 8601 last update timestamp"
                  },
                  "archivedAt": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO 8601 archive timestamp (null if not archived)"
                  },
                  "owner": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "User identifier"
                      },
                      "name": {
                        "type": "string",
                        "description": "User's name"
                      }
                    },
                    "required": [
                      "id",
                      "name"
                    ],
                    "additionalProperties": false,
                    "description": "User who owns the post",
                    "nullable": true
                  },
                  "version": {
                    "type": "number",
                    "nullable": true,
                    "description": "Content version number"
                  },
                  "topics": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Topic identifier"
                        },
                        "name": {
                          "type": "string",
                          "description": "Topic name"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": false,
                      "description": "Slab topic (category for organizing posts)"
                    },
                    "nullable": true,
                    "description": "Topics this post belongs to"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false,
                "description": "Post details"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_posts"
                ],
                "description": "List posts operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "posts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Post identifier"
                    },
                    "title": {
                      "type": "string",
                      "description": "Post title"
                    },
                    "content": {
                      "nullable": true,
                      "description": "Post content in Quill Delta JSON format"
                    },
                    "insertedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 creation timestamp"
                    },
                    "publishedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 publication timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 last update timestamp"
                    },
                    "archivedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 archive timestamp (null if not archived)"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "User identifier"
                        },
                        "name": {
                          "type": "string",
                          "description": "User's name"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": false,
                      "description": "User who owns the post",
                      "nullable": true
                    },
                    "version": {
                      "type": "number",
                      "nullable": true,
                      "description": "Content version number"
                    },
                    "topics": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Topic identifier"
                          },
                          "name": {
                            "type": "string",
                            "description": "Topic name"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": false,
                        "description": "Slab topic (category for organizing posts)"
                      },
                      "nullable": true,
                      "description": "Topics this post belongs to"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Slab post/article"
                },
                "description": "List of organization posts"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_topic_posts"
                ],
                "description": "Get topic posts operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "posts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Post identifier"
                    },
                    "title": {
                      "type": "string",
                      "description": "Post title"
                    },
                    "content": {
                      "nullable": true,
                      "description": "Post content in Quill Delta JSON format"
                    },
                    "insertedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 creation timestamp"
                    },
                    "publishedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 publication timestamp"
                    },
                    "updatedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 last update timestamp"
                    },
                    "archivedAt": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 8601 archive timestamp (null if not archived)"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "User identifier"
                        },
                        "name": {
                          "type": "string",
                          "description": "User's name"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": false,
                      "description": "User who owns the post",
                      "nullable": true
                    },
                    "version": {
                      "type": "number",
                      "nullable": true,
                      "description": "Content version number"
                    },
                    "topics": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Topic identifier"
                          },
                          "name": {
                            "type": "string",
                            "description": "Topic name"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": false,
                        "description": "Slab topic (category for organizing posts)"
                      },
                      "nullable": true,
                      "description": "Topics this post belongs to"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false,
                  "description": "Slab post/article"
                },
                "description": "Posts in the topic"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_topics"
                ],
                "description": "List topics operation"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "topics": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Topic identifier"
                    },
                    "name": {
                      "type": "string",
                      "description": "Topic name"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": false,
                  "description": "Slab topic (category for organizing posts)"
                },
                "description": "List of organization topics"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Search Posts example\nconst slab_search_posts = new SlabBubble({\n  operation: \"search_posts\", // Search posts across the Slab workspace\n  query: \"example string\", // Search query string\n  first: 20 // default, // Number of results to return (1-100, default 20)\n  after: \"example string\", // Cursor for pagination (from previous search result)\n});\n\nconst result = await slab_search_posts.action();\n// outputSchema for result.data when operation === 'search_posts':\n// {\n//   operation: \"search_posts\" // Search posts operation,\n//   success: boolean // Whether the operation was successful,\n//   posts: { id: string // Post identifier, title: string // Post title, highlight: unknown | undefined | null // Search result highlight/excerpt (JSON), content: unknown | undefined | null // Matched content (JSON), insertedAt: string | undefined | null // Creation timestamp, publishedAt: string | undefined | null // Publication timestamp, owner: { id: string // User identifier, name: string // User's name } | undefined | null // Post owner, topics: { id: string // Topic identifier, name: string // Topic name }[] | undefined | null // Associated topics }[] | undefined // Search result posts,\n//   has_more: boolean | undefined // Whether more results are available,\n//   end_cursor: string | undefined | null // Cursor for fetching the next page,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Post example\nconst slab_get_post = new SlabBubble({\n  operation: \"get_post\", // Get a specific post by ID\n  post_id: \"example string\", // The ID of the post to retrieve\n});\n\nconst result = await slab_get_post.action();\n// outputSchema for result.data when operation === 'get_post':\n// {\n//   operation: \"get_post\" // Get post operation,\n//   success: boolean // Whether the operation was successful,\n//   post: { id: string // Post identifier, title: string // Post title, content: unknown | undefined | null // Post content in Quill Delta JSON format, insertedAt: string | undefined | null // ISO 8601 creation timestamp, publishedAt: string | undefined | null // ISO 8601 publication timestamp, updatedAt: string | undefined | null // ISO 8601 last update timestamp, archivedAt: string | undefined | null // ISO 8601 archive timestamp (null if not archived), owner: { id: string // User identifier, name: string // User's name } | undefined | null // User who owns the post, version: number | undefined | null // Content version number, topics: { id: string // Topic identifier, name: string // Topic name }[] | undefined | null // Topics this post belongs to } | undefined // Post details,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Posts example\nconst slab_list_posts = new SlabBubble({\n  operation: \"list_posts\", // List all posts in the organization\n});\n\nconst result = await slab_list_posts.action();\n// outputSchema for result.data when operation === 'list_posts':\n// {\n//   operation: \"list_posts\" // List posts operation,\n//   success: boolean // Whether the operation was successful,\n//   posts: { id: string // Post identifier, title: string // Post title, content: unknown | undefined | null // Post content in Quill Delta JSON format, insertedAt: string | undefined | null // ISO 8601 creation timestamp, publishedAt: string | undefined | null // ISO 8601 publication timestamp, updatedAt: string | undefined | null // ISO 8601 last update timestamp, archivedAt: string | undefined | null // ISO 8601 archive timestamp (null if not archived), owner: { id: string // User identifier, name: string // User's name } | undefined | null // User who owns the post, version: number | undefined | null // Content version number, topics: { id: string // Topic identifier, name: string // Topic name }[] | undefined | null // Topics this post belongs to }[] | undefined // List of organization posts,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Topic Posts example\nconst slab_get_topic_posts = new SlabBubble({\n  operation: \"get_topic_posts\", // Get all posts within a specific topic\n  topic_id: \"example string\", // The ID of the topic\n});\n\nconst result = await slab_get_topic_posts.action();\n// outputSchema for result.data when operation === 'get_topic_posts':\n// {\n//   operation: \"get_topic_posts\" // Get topic posts operation,\n//   success: boolean // Whether the operation was successful,\n//   posts: { id: string // Post identifier, title: string // Post title, content: unknown | undefined | null // Post content in Quill Delta JSON format, insertedAt: string | undefined | null // ISO 8601 creation timestamp, publishedAt: string | undefined | null // ISO 8601 publication timestamp, updatedAt: string | undefined | null // ISO 8601 last update timestamp, archivedAt: string | undefined | null // ISO 8601 archive timestamp (null if not archived), owner: { id: string // User identifier, name: string // User's name } | undefined | null // User who owns the post, version: number | undefined | null // Content version number, topics: { id: string // Topic identifier, name: string // Topic name }[] | undefined | null // Topics this post belongs to }[] | undefined // Posts in the topic,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Topics example\nconst slab_list_topics = new SlabBubble({\n  operation: \"list_topics\", // List all topics in the organization\n});\n\nconst result = await slab_list_topics.action();\n// outputSchema for result.data when operation === 'list_topics':\n// {\n//   operation: \"list_topics\" // List topics operation,\n//   success: boolean // Whether the operation was successful,\n//   topics: { id: string // Topic identifier, name: string // Topic name }[] | undefined // List of organization topics,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`slab failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "SLAB_CRED"
      ]
    },
    {
      "name": "snowflake",
      "alias": "snowflake",
      "type": "service",
      "shortDescription": "Snowflake data warehouse integration for SQL queries and metadata",
      "useCase": "- Run SQL queries to fetch data from Snowflake warehouses",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "execute_sql"
                ],
                "description": "Execute a SQL statement against Snowflake"
              },
              "statement": {
                "type": "string",
                "minLength": 1,
                "description": "The SQL statement to execute"
              },
              "database": {
                "type": "string",
                "description": "Database to use for this query (overrides credential default)"
              },
              "schema": {
                "type": "string",
                "description": "Schema to use for this query (overrides credential default)"
              },
              "warehouse": {
                "type": "string",
                "description": "Warehouse to use for this query (overrides credential default)"
              },
              "role": {
                "type": "string",
                "description": "Role to use for this query (overrides credential default)"
              },
              "timeout": {
                "type": "number",
                "default": 60,
                "description": "Query timeout in seconds (default 60)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "statement"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_databases"
                ],
                "description": "List all databases in the Snowflake account"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_schemas"
                ],
                "description": "List all schemas in a database"
              },
              "database": {
                "type": "string",
                "minLength": 1,
                "description": "Database to list schemas from"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "database"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tables"
                ],
                "description": "List all tables in a schema"
              },
              "database": {
                "type": "string",
                "minLength": 1,
                "description": "Database containing the schema"
              },
              "schema": {
                "type": "string",
                "minLength": 1,
                "description": "Schema to list tables from"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "database",
              "schema"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "describe_table"
                ],
                "description": "Get column definitions for a table"
              },
              "database": {
                "type": "string",
                "minLength": 1,
                "description": "Database containing the table"
              },
              "schema": {
                "type": "string",
                "minLength": 1,
                "description": "Schema containing the table"
              },
              "table": {
                "type": "string",
                "minLength": 1,
                "description": "Table to describe"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "database",
              "schema",
              "table"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "execute_sql"
                ],
                "description": "Execute a SQL statement against Snowflake"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "columns": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Column name"
                    },
                    "type": {
                      "type": "string",
                      "description": "Snowflake data type"
                    },
                    "nullable": {
                      "type": "boolean",
                      "description": "Whether the column is nullable"
                    }
                  },
                  "required": [
                    "name",
                    "type"
                  ],
                  "additionalProperties": false,
                  "description": "Column metadata from Snowflake result set"
                },
                "description": "Column metadata for the result set"
              },
              "rows": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "enum": [
                          "null"
                        ],
                        "nullable": true
                      }
                    ]
                  }
                },
                "description": "Result rows as arrays of string values"
              },
              "num_rows": {
                "type": "number",
                "description": "Total number of rows returned"
              },
              "statement_handle": {
                "type": "string",
                "description": "Snowflake statement handle for the executed query"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_databases"
                ],
                "description": "List all databases in the Snowflake account"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "databases": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Database name"
                    },
                    "owner": {
                      "type": "string",
                      "description": "Database owner"
                    },
                    "created_on": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "additionalProperties": false
                },
                "description": "List of databases"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_schemas"
                ],
                "description": "List all schemas in a database"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "schemas": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Schema name"
                    },
                    "database_name": {
                      "type": "string",
                      "description": "Parent database name"
                    },
                    "owner": {
                      "type": "string",
                      "description": "Schema owner"
                    },
                    "created_on": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "additionalProperties": false
                },
                "description": "List of schemas"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tables"
                ],
                "description": "List all tables in a schema"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "tables": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Table name"
                    },
                    "database_name": {
                      "type": "string",
                      "description": "Parent database name"
                    },
                    "schema_name": {
                      "type": "string",
                      "description": "Parent schema name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Table kind (TABLE, VIEW, etc.)"
                    },
                    "rows": {
                      "type": "number",
                      "description": "Approximate row count"
                    },
                    "created_on": {
                      "type": "string",
                      "description": "Creation timestamp"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "additionalProperties": false
                },
                "description": "List of tables"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "describe_table"
                ],
                "description": "Get column definitions for a table"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "columns": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Column name"
                    },
                    "type": {
                      "type": "string",
                      "description": "Data type"
                    },
                    "nullable": {
                      "type": "boolean",
                      "description": "Whether column is nullable"
                    },
                    "default": {
                      "type": "string",
                      "nullable": true,
                      "description": "Default value"
                    },
                    "primary_key": {
                      "type": "boolean",
                      "description": "Whether column is a primary key"
                    },
                    "comment": {
                      "type": "string",
                      "nullable": true,
                      "description": "Column comment"
                    }
                  },
                  "required": [
                    "name",
                    "type"
                  ],
                  "additionalProperties": false
                },
                "description": "Column definitions"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Execute Sql example\nconst snowflake_execute_sql = new SnowflakeBubble({\n  operation: \"execute_sql\", // Execute a SQL statement against Snowflake\n  statement: \"example string\", // The SQL statement to execute\n  database: \"example string\", // Database to use for this query (overrides credential default)\n  schema: \"example string\", // Schema to use for this query (overrides credential default)\n  warehouse: \"example string\", // Warehouse to use for this query (overrides credential default)\n  role: \"example string\", // Role to use for this query (overrides credential default)\n  timeout: 60 // default, // Query timeout in seconds (default 60)\n});\n\nconst result = await snowflake_execute_sql.action();\n// outputSchema for result.data when operation === 'execute_sql':\n// {\n//   operation: \"execute_sql\" // Execute a SQL statement against Snowflake,\n//   success: boolean // Whether the operation was successful,\n//   columns: { name: string // Column name, type: string // Snowflake data type, nullable: boolean | undefined // Whether the column is nullable }[] | undefined // Column metadata for the result set,\n//   rows: unknown[][] | undefined // Result rows as arrays of string values,\n//   num_rows: number | undefined // Total number of rows returned,\n//   statement_handle: string | undefined // Snowflake statement handle for the executed query,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Databases example\nconst snowflake_list_databases = new SnowflakeBubble({\n  operation: \"list_databases\", // List all databases in the Snowflake account\n});\n\nconst result = await snowflake_list_databases.action();\n// outputSchema for result.data when operation === 'list_databases':\n// {\n//   operation: \"list_databases\" // List all databases in the Snowflake account,\n//   success: boolean // Whether the operation was successful,\n//   databases: { name: string // Database name, owner: string | undefined // Database owner, created_on: string | undefined // Creation timestamp }[] | undefined // List of databases,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Schemas example\nconst snowflake_list_schemas = new SnowflakeBubble({\n  operation: \"list_schemas\", // List all schemas in a database\n  database: \"example string\", // Database to list schemas from\n});\n\nconst result = await snowflake_list_schemas.action();\n// outputSchema for result.data when operation === 'list_schemas':\n// {\n//   operation: \"list_schemas\" // List all schemas in a database,\n//   success: boolean // Whether the operation was successful,\n//   schemas: { name: string // Schema name, database_name: string | undefined // Parent database name, owner: string | undefined // Schema owner, created_on: string | undefined // Creation timestamp }[] | undefined // List of schemas,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Tables example\nconst snowflake_list_tables = new SnowflakeBubble({\n  operation: \"list_tables\", // List all tables in a schema\n  database: \"example string\", // Database containing the schema\n  schema: \"example string\", // Schema to list tables from\n});\n\nconst result = await snowflake_list_tables.action();\n// outputSchema for result.data when operation === 'list_tables':\n// {\n//   operation: \"list_tables\" // List all tables in a schema,\n//   success: boolean // Whether the operation was successful,\n//   tables: { name: string // Table name, database_name: string | undefined // Parent database name, schema_name: string | undefined // Parent schema name, kind: string | undefined // Table kind (TABLE, VIEW, etc.), rows: number | undefined // Approximate row count, created_on: string | undefined // Creation timestamp }[] | undefined // List of tables,\n//   error: string // Error message if operation failed\n// }\n\n\n// Describe Table example\nconst snowflake_describe_table = new SnowflakeBubble({\n  operation: \"describe_table\", // Get column definitions for a table\n  database: \"example string\", // Database containing the table\n  schema: \"example string\", // Schema containing the table\n  table: \"example string\", // Table to describe\n});\n\nconst result = await snowflake_describe_table.action();\n// outputSchema for result.data when operation === 'describe_table':\n// {\n//   operation: \"describe_table\" // Get column definitions for a table,\n//   success: boolean // Whether the operation was successful,\n//   columns: { name: string // Column name, type: string // Data type, nullable: boolean | undefined // Whether column is nullable, default: string | null | undefined // Default value, primary_key: boolean | undefined // Whether column is a primary key, comment: string | null | undefined // Column comment }[] | undefined // Column definitions,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`snowflake failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "SNOWFLAKE_CRED"
      ]
    },
    {
      "name": "salesforce",
      "alias": "",
      "type": "service",
      "shortDescription": "Salesforce CRM integration for accounts, contacts, and SOQL queries",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_account"
                ],
                "description": "Retrieve a Salesforce Account record by its ID"
              },
              "record_id": {
                "type": "string",
                "minLength": 1,
                "description": "Salesforce record ID (15 or 18 character ID, e.g. \"001xx000003DGbYAAW\")"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of field API names to include in the response. If not specified, all accessible fields are returned. Common Account fields: Id, Name, Industry, BillingCity, AnnualRevenue, Website, Phone, AccountNumber, Type, OwnerId"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "record_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_accounts"
                ],
                "description": "Search Salesforce Account records by field values using SOQL WHERE conditions"
              },
              "where_clause": {
                "type": "string",
                "description": "SOQL WHERE clause for filtering accounts (e.g. \"Name = 'Acme Corp'\" or \"AccountNumber = 'BIZ-12345'\" or \"Industry = 'Technology' AND BillingState = 'CA'\")"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of field API names to include in the response. If not specified, all accessible fields are returned. Common Account fields: Id, Name, Industry, BillingCity, AnnualRevenue, Website, Phone, AccountNumber, Type, OwnerId"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 2000,
                "default": 100,
                "description": "Maximum number of results to return (1-2000, default 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "where_clause"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_contact"
                ],
                "description": "Retrieve a Salesforce Contact record by its ID"
              },
              "record_id": {
                "type": "string",
                "minLength": 1,
                "description": "Salesforce record ID (15 or 18 character ID, e.g. \"001xx000003DGbYAAW\")"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of field API names to include in the response. If not specified, all accessible fields are returned. Common Account fields: Id, Name, Industry, BillingCity, AnnualRevenue, Website, Phone, AccountNumber, Type, OwnerId"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "record_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_contacts"
                ],
                "description": "Search Salesforce Contact records by field values using SOQL WHERE conditions"
              },
              "where_clause": {
                "type": "string",
                "description": "SOQL WHERE clause for filtering contacts (e.g. \"Email = 'john@example.com'\" or \"LastName = 'Smith'\" or \"AccountId = '001xx000003DGbY'\")"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "List of field API names to include in the response. If not specified, all accessible fields are returned. Common Account fields: Id, Name, Industry, BillingCity, AnnualRevenue, Website, Phone, AccountNumber, Type, OwnerId"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 2000,
                "default": 100,
                "description": "Maximum number of results to return (1-2000, default 100)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "where_clause"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "query"
                ],
                "description": "Execute an arbitrary SOQL (Salesforce Object Query Language) query"
              },
              "soql": {
                "type": "string",
                "minLength": 1,
                "description": "Full SOQL query string (e.g. \"SELECT Id, Name, Industry FROM Account WHERE AnnualRevenue > 1000000 ORDER BY Name LIMIT 10\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "soql"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "describe_object"
                ],
                "description": "Return all fields of a Salesforce object with both API name and user-facing label. Use this to resolve label-vs-API-name mismatches (especially custom fields like \"Saving Status\" → Treasury_Status__c) before constructing SOQL."
              },
              "object_name": {
                "type": "string",
                "minLength": 1,
                "description": "API name of the sObject to describe (e.g. \"Account\", \"Contact\", \"Opportunity\", or a custom object like \"MyCustomObject__c\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "object_name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_objects"
                ],
                "description": "List all sObjects in the connected Salesforce org with their API name and label. Use this when the user references an object by its UI label and the API name is not obvious."
              },
              "include_custom_only": {
                "type": "boolean",
                "default": false,
                "description": "If true, only return custom objects (suffixed __c). Defaults to false (returns all queryable objects)."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_account"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "record": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Salesforce record with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_accounts"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "A Salesforce record with its fields"
                }
              },
              "totalSize": {
                "type": "number"
              },
              "done": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_contact"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "record": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Salesforce record with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_contacts"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "A Salesforce record with its fields"
                }
              },
              "totalSize": {
                "type": "number"
              },
              "done": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "query"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "totalSize": {
                "type": "number"
              },
              "done": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "describe_object"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "object_name": {
                "type": "string"
              },
              "object_label": {
                "type": "string"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "apiName": {
                      "type": "string",
                      "description": "API/backend name of the field (use this in SOQL)"
                    },
                    "label": {
                      "type": "string",
                      "description": "User-facing label shown in the Salesforce UI"
                    },
                    "type": {
                      "type": "string",
                      "description": "Salesforce field type (e.g. \"string\", \"picklist\")"
                    },
                    "custom": {
                      "type": "boolean",
                      "description": "Whether this is a custom field (suffixed __c)"
                    },
                    "picklistValues": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "For picklist fields, the allowed values"
                    },
                    "referenceTo": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "For reference/lookup fields, the sObject(s) referenced"
                    }
                  },
                  "required": [
                    "apiName",
                    "label",
                    "type",
                    "custom"
                  ],
                  "additionalProperties": false
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_objects"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "objects": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "apiName": {
                      "type": "string",
                      "description": "API name of the sObject (use this in SOQL)"
                    },
                    "label": {
                      "type": "string",
                      "description": "User-facing label shown in the Salesforce UI"
                    },
                    "custom": {
                      "type": "boolean",
                      "description": "Whether this is a custom object (suffixed __c)"
                    },
                    "queryable": {
                      "type": "boolean",
                      "description": "Whether this object can be queried via SOQL"
                    }
                  },
                  "required": [
                    "apiName",
                    "label",
                    "custom",
                    "queryable"
                  ],
                  "additionalProperties": false
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Get Account example\nconst salesforce_get_account = new SalesforceBubble({\n  operation: \"get_account\", // Retrieve a Salesforce Account record by its ID\n  record_id: \"example string\", // Salesforce record ID (15 or 18 character ID, e.g. \"001xx000003DGbYAAW\")\n  fields: [\"example string\"], // List of field API names to include in the response. If not specified, all accessible fields are returned. Common Account fields: Id, Name, Industry, BillingCity, AnnualRevenue, Website, Phone, AccountNumber, Type, OwnerId\n});\n\nconst result = await salesforce_get_account.action();\n// outputSchema for result.data when operation === 'get_account':\n// {\n//   operation: \"get_account\",\n//   success: boolean,\n//   record: Record<string, unknown> | undefined // A Salesforce record with its fields,\n//   error: string\n// }\n\n\n// Search Accounts example\nconst salesforce_search_accounts = new SalesforceBubble({\n  operation: \"search_accounts\", // Search Salesforce Account records by field values using SOQL WHERE conditions\n  where_clause: \"example string\", // SOQL WHERE clause for filtering accounts (e.g. \"Name = 'Acme Corp'\" or \"AccountNumber = 'BIZ-12345'\" or \"Industry = 'Technology' AND BillingState = 'CA'\")\n  fields: [\"example string\"], // List of field API names to include in the response. If not specified, all accessible fields are returned. Common Account fields: Id, Name, Industry, BillingCity, AnnualRevenue, Website, Phone, AccountNumber, Type, OwnerId\n  limit: 100 // default, // Maximum number of results to return (1-2000, default 100)\n});\n\nconst result = await salesforce_search_accounts.action();\n// outputSchema for result.data when operation === 'search_accounts':\n// {\n//   operation: \"search_accounts\",\n//   success: boolean,\n//   records: Record<string, unknown>[] | undefined,\n//   totalSize: number | undefined,\n//   done: boolean | undefined,\n//   error: string\n// }\n\n\n// Get Contact example\nconst salesforce_get_contact = new SalesforceBubble({\n  operation: \"get_contact\", // Retrieve a Salesforce Contact record by its ID\n  record_id: \"example string\", // Salesforce record ID (15 or 18 character ID, e.g. \"001xx000003DGbYAAW\")\n  fields: [\"example string\"], // List of field API names to include in the response. If not specified, all accessible fields are returned. Common Account fields: Id, Name, Industry, BillingCity, AnnualRevenue, Website, Phone, AccountNumber, Type, OwnerId\n});\n\nconst result = await salesforce_get_contact.action();\n// outputSchema for result.data when operation === 'get_contact':\n// {\n//   operation: \"get_contact\",\n//   success: boolean,\n//   record: Record<string, unknown> | undefined // A Salesforce record with its fields,\n//   error: string\n// }\n\n\n// Search Contacts example\nconst salesforce_search_contacts = new SalesforceBubble({\n  operation: \"search_contacts\", // Search Salesforce Contact records by field values using SOQL WHERE conditions\n  where_clause: \"example string\", // SOQL WHERE clause for filtering contacts (e.g. \"Email = 'john@example.com'\" or \"LastName = 'Smith'\" or \"AccountId = '001xx000003DGbY'\")\n  fields: [\"example string\"], // List of field API names to include in the response. If not specified, all accessible fields are returned. Common Account fields: Id, Name, Industry, BillingCity, AnnualRevenue, Website, Phone, AccountNumber, Type, OwnerId\n  limit: 100 // default, // Maximum number of results to return (1-2000, default 100)\n});\n\nconst result = await salesforce_search_contacts.action();\n// outputSchema for result.data when operation === 'search_contacts':\n// {\n//   operation: \"search_contacts\",\n//   success: boolean,\n//   records: Record<string, unknown>[] | undefined,\n//   totalSize: number | undefined,\n//   done: boolean | undefined,\n//   error: string\n// }\n\n\n// Query example\nconst salesforce_query = new SalesforceBubble({\n  operation: \"query\", // Execute an arbitrary SOQL (Salesforce Object Query Language) query\n  soql: \"example string\", // Full SOQL query string (e.g. \"SELECT Id, Name, Industry FROM Account WHERE AnnualRevenue > 1000000 ORDER BY Name LIMIT 10\")\n});\n\nconst result = await salesforce_query.action();\n// outputSchema for result.data when operation === 'query':\n// {\n//   operation: \"query\",\n//   success: boolean,\n//   records: Record<string, unknown>[] | undefined,\n//   totalSize: number | undefined,\n//   done: boolean | undefined,\n//   error: string\n// }\n\n\n// Describe Object example\nconst salesforce_describe_object = new SalesforceBubble({\n  operation: \"describe_object\", // Return all fields of a Salesforce object with both API name and user-facing label. Use this to resolve label-vs-API-name mismatches (especially custom fields like \"Saving Status\" → Treasury_Status__c) before constructing SOQL.\n  object_name: \"example string\", // API name of the sObject to describe (e.g. \"Account\", \"Contact\", \"Opportunity\", or a custom object like \"MyCustomObject__c\")\n});\n\nconst result = await salesforce_describe_object.action();\n// outputSchema for result.data when operation === 'describe_object':\n// {\n//   operation: \"describe_object\",\n//   success: boolean,\n//   object_name: string | undefined,\n//   object_label: string | undefined,\n//   fields: { apiName: string // API/backend name of the field (use this in SOQL), label: string // User-facing label shown in the Salesforce UI, type: string // Salesforce field type (e.g. \"string\", \"picklist\"), custom: boolean // Whether this is a custom field (suffixed __c), picklistValues: string[] | undefined // For picklist fields, the allowed values, referenceTo: string[] | undefined // For reference/lookup fields, the sObject(s) referenced }[] | undefined,\n//   error: string\n// }\n\n\n// List Objects example\nconst salesforce_list_objects = new SalesforceBubble({\n  operation: \"list_objects\", // List all sObjects in the connected Salesforce org with their API name and label. Use this when the user references an object by its UI label and the API name is not obvious.\n  include_custom_only: false // default, // If true, only return custom objects (suffixed __c). Defaults to false (returns all queryable objects).\n});\n\nconst result = await salesforce_list_objects.action();\n// outputSchema for result.data when operation === 'list_objects':\n// {\n//   operation: \"list_objects\",\n//   success: boolean,\n//   objects: { apiName: string // API name of the sObject (use this in SOQL), label: string // User-facing label shown in the Salesforce UI, custom: boolean // Whether this is a custom object (suffixed __c), queryable: boolean // Whether this object can be queried via SOQL }[] | undefined,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`salesforce failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "SALESFORCE_CRED"
      ]
    },
    {
      "name": "asana",
      "alias": "",
      "type": "service",
      "shortDescription": "Asana integration for tasks, projects, and team collaboration",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tasks"
                ],
                "description": "List tasks in a project, section, or assigned to a user. Provide at least one of project, section, or assignee."
              },
              "project": {
                "type": "string",
                "description": "[ONEOF:scope] Project GID to list tasks from"
              },
              "section": {
                "type": "string",
                "description": "[ONEOF:scope] Section GID to list tasks from"
              },
              "assignee": {
                "type": "string",
                "description": "[ONEOF:scope] User GID or \"me\" to list tasks assigned to this user (requires workspace)"
              },
              "workspace": {
                "type": "string",
                "description": "Workspace GID (required when filtering by assignee, auto-filled from credential if not provided)"
              },
              "completed_since": {
                "type": "string",
                "description": "Only return tasks completed since this date (ISO 8601 format, e.g. \"2024-01-01T00:00:00Z\"). Use \"now\" to only show incomplete tasks."
              },
              "modified_since": {
                "type": "string",
                "description": "Only return tasks modified since this date (ISO 8601 format)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_task"
                ],
                "description": "Get detailed information about a specific task"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_task"
                ],
                "description": "Create a new task in a project or workspace"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name/title of the task"
              },
              "notes": {
                "type": "string",
                "description": "Description/notes for the task"
              },
              "html_notes": {
                "type": "string",
                "description": "HTML-formatted description (overrides notes if provided)"
              },
              "assignee": {
                "type": "string",
                "description": "User GID to assign the task to, or \"me\""
              },
              "due_on": {
                "type": "string",
                "description": "Due date in YYYY-MM-DD format (e.g. \"2024-12-31\")"
              },
              "due_at": {
                "type": "string",
                "description": "Due date and time in ISO 8601 format (e.g. \"2024-12-31T17:00:00Z\")"
              },
              "start_on": {
                "type": "string",
                "description": "Start date in YYYY-MM-DD format"
              },
              "projects": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of project GIDs to add this task to"
              },
              "memberships": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "project": {
                      "type": "string",
                      "description": "Project GID"
                    },
                    "section": {
                      "type": "string",
                      "description": "Section GID within the project"
                    }
                  },
                  "required": [
                    "project",
                    "section"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of project/section memberships for the task"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of tag GIDs to add to this task"
              },
              "parent": {
                "type": "string",
                "description": "Parent task GID to create this as a subtask"
              },
              "workspace": {
                "type": "string",
                "description": "Workspace GID (required if no project specified, auto-filled from credential)"
              },
              "custom_fields": {
                "type": "object",
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "description": "Custom field values as { custom_field_gid: value }. For enum fields, use the enum option GID as the value."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_task"
                ],
                "description": "Update an existing task (name, assignee, due date, status, etc.)"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "name": {
                "type": "string",
                "description": "New name/title for the task"
              },
              "notes": {
                "type": "string",
                "description": "New description/notes for the task"
              },
              "html_notes": {
                "type": "string",
                "description": "New HTML-formatted description"
              },
              "assignee": {
                "type": "string",
                "nullable": true,
                "description": "User GID to assign the task to, \"me\", or null to unassign"
              },
              "due_on": {
                "type": "string",
                "nullable": true,
                "description": "Due date in YYYY-MM-DD format, or null to clear"
              },
              "due_at": {
                "type": "string",
                "nullable": true,
                "description": "Due date and time in ISO 8601 format, or null to clear"
              },
              "start_on": {
                "type": "string",
                "nullable": true,
                "description": "Start date in YYYY-MM-DD format, or null to clear"
              },
              "completed": {
                "type": "boolean",
                "description": "Set to true to mark complete, false to mark incomplete"
              },
              "custom_fields": {
                "type": "object",
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "enum": [
                        "null"
                      ],
                      "nullable": true
                    }
                  ]
                },
                "description": "Custom field values to update as { custom_field_gid: value }"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_task"
                ],
                "description": "Delete a task permanently"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_tasks"
                ],
                "description": "Search for tasks in a workspace using text and/or filters"
              },
              "workspace": {
                "type": "string",
                "description": "Workspace GID to search in (auto-filled from credential)"
              },
              "text": {
                "type": "string",
                "description": "Text to search for in task names and descriptions"
              },
              "assignee": {
                "type": "string",
                "description": "Filter by assignee user GID or \"me\""
              },
              "projects": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Filter by project GID(s)"
              },
              "completed": {
                "type": "boolean",
                "description": "Filter by completion status (true=completed, false=incomplete)"
              },
              "is_subtask": {
                "type": "boolean",
                "description": "Filter by subtask status"
              },
              "sort_by": {
                "type": "string",
                "enum": [
                  "due_date",
                  "created_at",
                  "completed_at",
                  "likes",
                  "modified_at"
                ],
                "default": "modified_at",
                "description": "Sort results by this field"
              },
              "sort_ascending": {
                "type": "boolean",
                "default": false,
                "description": "Sort in ascending order (default false = descending)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_task_to_section"
                ],
                "description": "Add a task to a specific section within a project"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "section_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Section GID to add the task to"
              },
              "insert_before": {
                "type": "string",
                "description": "Task GID to insert before in the section"
              },
              "insert_after": {
                "type": "string",
                "description": "Task GID to insert after in the section"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid",
              "section_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "set_dependencies"
                ],
                "description": "Set dependencies for a task (tasks that must be completed before this one)"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "dependencies": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of task GIDs that this task depends on"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid",
              "dependencies"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ],
                "description": "List projects in a workspace or team"
              },
              "workspace": {
                "type": "string",
                "description": "[ONEOF:scope] Workspace GID (auto-filled from credential if not provided)"
              },
              "team": {
                "type": "string",
                "description": "[ONEOF:scope] Team GID to list projects for"
              },
              "archived": {
                "type": "boolean",
                "default": false,
                "description": "Include archived projects (default false)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_project"
                ],
                "description": "Get detailed information about a specific project"
              },
              "project_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana project GID"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_project"
                ],
                "description": "Create a new project in a workspace or team"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the project"
              },
              "notes": {
                "type": "string",
                "description": "Description/notes for the project"
              },
              "workspace": {
                "type": "string",
                "description": "Workspace GID (auto-filled from credential)"
              },
              "team": {
                "type": "string",
                "description": "Team GID (required for organization workspaces, optional for personal workspaces)"
              },
              "color": {
                "type": "string",
                "description": "Project color (e.g. \"dark-pink\", \"dark-green\", \"dark-blue\", \"dark-red\", \"dark-orange\", \"dark-purple\", \"dark-warm-gray\", \"light-pink\", \"light-green\", \"light-blue\", \"light-red\", \"light-orange\", \"light-purple\", \"light-warm-gray\")"
              },
              "layout": {
                "type": "string",
                "enum": [
                  "board",
                  "list",
                  "timeline",
                  "calendar"
                ],
                "default": "list",
                "description": "Project layout/view type (default \"list\")"
              },
              "is_template": {
                "type": "boolean",
                "description": "Whether to create as a project template"
              },
              "public": {
                "type": "boolean",
                "description": "Whether the project is public to the organization (default true)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_project"
                ],
                "description": "Update an existing project"
              },
              "project_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana project GID"
              },
              "name": {
                "type": "string",
                "description": "New name for the project"
              },
              "notes": {
                "type": "string",
                "description": "New description/notes"
              },
              "color": {
                "type": "string",
                "description": "New project color"
              },
              "archived": {
                "type": "boolean",
                "description": "Set to true to archive, false to unarchive"
              },
              "public": {
                "type": "boolean",
                "description": "Set project visibility"
              },
              "due_on": {
                "type": "string",
                "nullable": true,
                "description": "Project due date in YYYY-MM-DD format, or null to clear"
              },
              "start_on": {
                "type": "string",
                "nullable": true,
                "description": "Project start date in YYYY-MM-DD format, or null to clear"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_sections"
                ],
                "description": "List sections in a project"
              },
              "project_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana project GID"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_section"
                ],
                "description": "Create a new section in a project"
              },
              "project_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana project GID"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the section"
              },
              "insert_before": {
                "type": "string",
                "description": "Section GID to insert before"
              },
              "insert_after": {
                "type": "string",
                "description": "Section GID to insert after"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_gid",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_comment"
                ],
                "description": "Add a comment to a task"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "text": {
                "type": "string",
                "description": "[ONEOF:body] Plain text comment body"
              },
              "html_text": {
                "type": "string",
                "description": "[ONEOF:body] HTML-formatted comment body (e.g. \"<body>Great work!</body>\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_task_stories"
                ],
                "description": "Get comments and activity stories for a task"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ],
                "description": "List users in a workspace"
              },
              "workspace": {
                "type": "string",
                "description": "Workspace GID (auto-filled from credential)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ],
                "description": "Get details about a specific user"
              },
              "user_gid": {
                "type": "string",
                "minLength": 1,
                "description": "User GID or \"me\" for the authenticated user"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_teams"
                ],
                "description": "List teams in a workspace/organization"
              },
              "workspace": {
                "type": "string",
                "description": "Workspace GID (auto-filled from credential)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_team_members"
                ],
                "description": "List members of a team"
              },
              "team_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Team GID"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "team_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tags"
                ],
                "description": "List tags in a workspace"
              },
              "workspace": {
                "type": "string",
                "description": "Workspace GID (auto-filled from credential)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_tag"
                ],
                "description": "Create a new tag"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Name of the tag"
              },
              "workspace": {
                "type": "string",
                "description": "Workspace GID (auto-filled from credential)"
              },
              "color": {
                "type": "string",
                "description": "Tag color (e.g. \"dark-pink\", \"dark-green\", \"light-blue\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_tag_to_task"
                ],
                "description": "Add a tag to a task"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "tag_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Tag GID to add"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid",
              "tag_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_tag_from_task"
                ],
                "description": "Remove a tag from a task"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "tag_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Tag GID to remove"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid",
              "tag_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_workspaces"
                ],
                "description": "List all workspaces the authenticated user has access to"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_custom_fields"
                ],
                "description": "List custom field settings for a project"
              },
              "project_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana project GID"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_attachments"
                ],
                "description": "List attachments on a task"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_subtasks"
                ],
                "description": "List subtasks (children) of a task"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "opt_fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 50,
                "description": "Maximum number of results to return (1-100, default 50)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_task_to_project"
                ],
                "description": "Add a task to a project (task can belong to multiple projects)"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "project_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana project GID"
              },
              "section_gid": {
                "type": "string",
                "description": "Optional section GID to place the task in within the project"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid",
              "project_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_task_from_project"
                ],
                "description": "Remove a task from a project (task still exists, just no longer in this project)"
              },
              "task_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana task GID (globally unique identifier)"
              },
              "project_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana project GID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "task_gid",
              "project_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_section"
                ],
                "description": "Rename or reorder a section"
              },
              "section_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Section GID to update"
              },
              "name": {
                "type": "string",
                "description": "New name for the section"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "section_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_section"
                ],
                "description": "Delete a section from a project (tasks in it are NOT deleted, they become unsectioned)"
              },
              "section_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Section GID to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "section_gid"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_project"
                ],
                "description": "Permanently delete a project and all its tasks"
              },
              "project_gid": {
                "type": "string",
                "minLength": 1,
                "description": "Asana project GID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "project_gid"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tasks"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "tasks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "task": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "task": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "task": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_tasks"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "tasks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_task_to_section"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "set_dependencies"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_projects"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "projects": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_project"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "project": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_project"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "project": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_project"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "project": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_sections"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "sections": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_section"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "section": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_comment"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "story": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_task_stories"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "stories": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "users": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "user": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_teams"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "teams": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_team_members"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "users": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_tags"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_tag"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "tag": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_tag_to_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_tag_from_task"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_workspaces"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "workspaces": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_custom_fields"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "custom_fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_attachments"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "attachments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_subtasks"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "tasks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "An Asana resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_task_to_project"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "remove_task_from_project"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_section"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "section": {
                "type": "object",
                "additionalProperties": {},
                "description": "An Asana resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_section"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_project"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Tasks example\nconst asana_list_tasks = new AsanaBubble({\n  operation: \"list_tasks\", // List tasks in a project, section, or assigned to a user. Provide at least one of project, section, or assignee.\n  project: \"example string\", // [ONEOF:scope] Project GID to list tasks from\n  section: \"example string\", // [ONEOF:scope] Section GID to list tasks from\n  assignee: \"example string\", // [ONEOF:scope] User GID or \"me\" to list tasks assigned to this user (requires workspace)\n  workspace: \"example string\", // Workspace GID (required when filtering by assignee, auto-filled from credential if not provided)\n  completed_since: \"example string\", // Only return tasks completed since this date (ISO 8601 format, e.g. \"2024-01-01T00:00:00Z\"). Use \"now\" to only show incomplete tasks.\n  modified_since: \"example string\", // Only return tasks modified since this date (ISO 8601 format)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_tasks.action();\n// outputSchema for result.data when operation === 'list_tasks':\n// {\n//   operation: \"list_tasks\",\n//   success: boolean,\n//   tasks: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Get Task example\nconst asana_get_task = new AsanaBubble({\n  operation: \"get_task\", // Get detailed information about a specific task\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n});\n\nconst result = await asana_get_task.action();\n// outputSchema for result.data when operation === 'get_task':\n// {\n//   operation: \"get_task\",\n//   success: boolean,\n//   task: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// Create Task example\nconst asana_create_task = new AsanaBubble({\n  operation: \"create_task\", // Create a new task in a project or workspace\n  name: \"example string\", // Name/title of the task\n  notes: \"example string\", // Description/notes for the task\n  html_notes: \"example string\", // HTML-formatted description (overrides notes if provided)\n  assignee: \"example string\", // User GID to assign the task to, or \"me\"\n  due_on: \"example string\", // Due date in YYYY-MM-DD format (e.g. \"2024-12-31\")\n  due_at: \"example string\", // Due date and time in ISO 8601 format (e.g. \"2024-12-31T17:00:00Z\")\n  start_on: \"example string\", // Start date in YYYY-MM-DD format\n  projects: [\"example string\"], // Array of project GIDs to add this task to\n  memberships: [{ project: \"example string\" // Project GID, section: \"example string\" // Section GID within the project }], // Array of project/section memberships for the task\n  tags: [\"example string\"], // Array of tag GIDs to add to this task\n  parent: \"example string\", // Parent task GID to create this as a subtask\n  workspace: \"example string\", // Workspace GID (required if no project specified, auto-filled from credential)\n  custom_fields: { \"example_key\": \"example string\" }, // Custom field values as { custom_field_gid: value }. For enum fields, use the enum option GID as the value.\n});\n\nconst result = await asana_create_task.action();\n// outputSchema for result.data when operation === 'create_task':\n// {\n//   operation: \"create_task\",\n//   success: boolean,\n//   task: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// Update Task example\nconst asana_update_task = new AsanaBubble({\n  operation: \"update_task\", // Update an existing task (name, assignee, due date, status, etc.)\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  name: \"example string\", // New name/title for the task\n  notes: \"example string\", // New description/notes for the task\n  html_notes: \"example string\", // New HTML-formatted description\n  assignee: \"example string\", // User GID to assign the task to, \"me\", or null to unassign\n  due_on: \"example string\", // Due date in YYYY-MM-DD format, or null to clear\n  due_at: \"example string\", // Due date and time in ISO 8601 format, or null to clear\n  start_on: \"example string\", // Start date in YYYY-MM-DD format, or null to clear\n  completed: true, // Set to true to mark complete, false to mark incomplete\n  custom_fields: { \"example_key\": \"example string\" }, // Custom field values to update as { custom_field_gid: value }\n});\n\nconst result = await asana_update_task.action();\n// outputSchema for result.data when operation === 'update_task':\n// {\n//   operation: \"update_task\",\n//   success: boolean,\n//   task: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// Delete Task example\nconst asana_delete_task = new AsanaBubble({\n  operation: \"delete_task\", // Delete a task permanently\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n});\n\nconst result = await asana_delete_task.action();\n// outputSchema for result.data when operation === 'delete_task':\n// {\n//   operation: \"delete_task\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Search Tasks example\nconst asana_search_tasks = new AsanaBubble({\n  operation: \"search_tasks\", // Search for tasks in a workspace using text and/or filters\n  workspace: \"example string\", // Workspace GID to search in (auto-filled from credential)\n  text: \"example string\", // Text to search for in task names and descriptions\n  assignee: \"example string\", // Filter by assignee user GID or \"me\"\n  projects: [\"example string\"], // Filter by project GID(s)\n  completed: true, // Filter by completion status (true=completed, false=incomplete)\n  is_subtask: true, // Filter by subtask status\n  sort_by: \"due_date\" // options: \"due_date\", \"created_at\", \"completed_at\", \"likes\", \"modified_at\", // Sort results by this field\n  sort_ascending: false // default, // Sort in ascending order (default false = descending)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_search_tasks.action();\n// outputSchema for result.data when operation === 'search_tasks':\n// {\n//   operation: \"search_tasks\",\n//   success: boolean,\n//   tasks: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Add Task To Section example\nconst asana_add_task_to_section = new AsanaBubble({\n  operation: \"add_task_to_section\", // Add a task to a specific section within a project\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  section_gid: \"example string\", // Section GID to add the task to\n  insert_before: \"example string\", // Task GID to insert before in the section\n  insert_after: \"example string\", // Task GID to insert after in the section\n});\n\nconst result = await asana_add_task_to_section.action();\n// outputSchema for result.data when operation === 'add_task_to_section':\n// {\n//   operation: \"add_task_to_section\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Set Dependencies example\nconst asana_set_dependencies = new AsanaBubble({\n  operation: \"set_dependencies\", // Set dependencies for a task (tasks that must be completed before this one)\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  dependencies: [\"example string\"], // Array of task GIDs that this task depends on\n});\n\nconst result = await asana_set_dependencies.action();\n// outputSchema for result.data when operation === 'set_dependencies':\n// {\n//   operation: \"set_dependencies\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Projects example\nconst asana_list_projects = new AsanaBubble({\n  operation: \"list_projects\", // List projects in a workspace or team\n  workspace: \"example string\", // [ONEOF:scope] Workspace GID (auto-filled from credential if not provided)\n  team: \"example string\", // [ONEOF:scope] Team GID to list projects for\n  archived: false // default, // Include archived projects (default false)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_projects.action();\n// outputSchema for result.data when operation === 'list_projects':\n// {\n//   operation: \"list_projects\",\n//   success: boolean,\n//   projects: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Get Project example\nconst asana_get_project = new AsanaBubble({\n  operation: \"get_project\", // Get detailed information about a specific project\n  project_gid: \"example string\", // Asana project GID\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n});\n\nconst result = await asana_get_project.action();\n// outputSchema for result.data when operation === 'get_project':\n// {\n//   operation: \"get_project\",\n//   success: boolean,\n//   project: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// Create Project example\nconst asana_create_project = new AsanaBubble({\n  operation: \"create_project\", // Create a new project in a workspace or team\n  name: \"example string\", // Name of the project\n  notes: \"example string\", // Description/notes for the project\n  workspace: \"example string\", // Workspace GID (auto-filled from credential)\n  team: \"example string\", // Team GID (required for organization workspaces, optional for personal workspaces)\n  color: \"example string\", // Project color (e.g. \"dark-pink\", \"dark-green\", \"dark-blue\", \"dark-red\", \"dark-orange\", \"dark-purple\", \"dark-warm-gray\", \"light-pink\", \"light-green\", \"light-blue\", \"light-red\", \"light-orange\", \"light-purple\", \"light-warm-gray\")\n  layout: \"board\" // options: \"board\", \"list\", \"timeline\", \"calendar\", // Project layout/view type (default \"list\")\n  is_template: true, // Whether to create as a project template\n  public: true, // Whether the project is public to the organization (default true)\n});\n\nconst result = await asana_create_project.action();\n// outputSchema for result.data when operation === 'create_project':\n// {\n//   operation: \"create_project\",\n//   success: boolean,\n//   project: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// Update Project example\nconst asana_update_project = new AsanaBubble({\n  operation: \"update_project\", // Update an existing project\n  project_gid: \"example string\", // Asana project GID\n  name: \"example string\", // New name for the project\n  notes: \"example string\", // New description/notes\n  color: \"example string\", // New project color\n  archived: true, // Set to true to archive, false to unarchive\n  public: true, // Set project visibility\n  due_on: \"example string\", // Project due date in YYYY-MM-DD format, or null to clear\n  start_on: \"example string\", // Project start date in YYYY-MM-DD format, or null to clear\n});\n\nconst result = await asana_update_project.action();\n// outputSchema for result.data when operation === 'update_project':\n// {\n//   operation: \"update_project\",\n//   success: boolean,\n//   project: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// List Sections example\nconst asana_list_sections = new AsanaBubble({\n  operation: \"list_sections\", // List sections in a project\n  project_gid: \"example string\", // Asana project GID\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_sections.action();\n// outputSchema for result.data when operation === 'list_sections':\n// {\n//   operation: \"list_sections\",\n//   success: boolean,\n//   sections: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Create Section example\nconst asana_create_section = new AsanaBubble({\n  operation: \"create_section\", // Create a new section in a project\n  project_gid: \"example string\", // Asana project GID\n  name: \"example string\", // Name of the section\n  insert_before: \"example string\", // Section GID to insert before\n  insert_after: \"example string\", // Section GID to insert after\n});\n\nconst result = await asana_create_section.action();\n// outputSchema for result.data when operation === 'create_section':\n// {\n//   operation: \"create_section\",\n//   success: boolean,\n//   section: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// Add Comment example\nconst asana_add_comment = new AsanaBubble({\n  operation: \"add_comment\", // Add a comment to a task\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  text: \"example string\", // [ONEOF:body] Plain text comment body\n  html_text: \"example string\", // [ONEOF:body] HTML-formatted comment body (e.g. \"<body>Great work!</body>\")\n});\n\nconst result = await asana_add_comment.action();\n// outputSchema for result.data when operation === 'add_comment':\n// {\n//   operation: \"add_comment\",\n//   success: boolean,\n//   story: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// Get Task Stories example\nconst asana_get_task_stories = new AsanaBubble({\n  operation: \"get_task_stories\", // Get comments and activity stories for a task\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_get_task_stories.action();\n// outputSchema for result.data when operation === 'get_task_stories':\n// {\n//   operation: \"get_task_stories\",\n//   success: boolean,\n//   stories: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// List Users example\nconst asana_list_users = new AsanaBubble({\n  operation: \"list_users\", // List users in a workspace\n  workspace: \"example string\", // Workspace GID (auto-filled from credential)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_users.action();\n// outputSchema for result.data when operation === 'list_users':\n// {\n//   operation: \"list_users\",\n//   success: boolean,\n//   users: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Get User example\nconst asana_get_user = new AsanaBubble({\n  operation: \"get_user\", // Get details about a specific user\n  user_gid: \"example string\", // User GID or \"me\" for the authenticated user\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n});\n\nconst result = await asana_get_user.action();\n// outputSchema for result.data when operation === 'get_user':\n// {\n//   operation: \"get_user\",\n//   success: boolean,\n//   user: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// List Teams example\nconst asana_list_teams = new AsanaBubble({\n  operation: \"list_teams\", // List teams in a workspace/organization\n  workspace: \"example string\", // Workspace GID (auto-filled from credential)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_teams.action();\n// outputSchema for result.data when operation === 'list_teams':\n// {\n//   operation: \"list_teams\",\n//   success: boolean,\n//   teams: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// List Team Members example\nconst asana_list_team_members = new AsanaBubble({\n  operation: \"list_team_members\", // List members of a team\n  team_gid: \"example string\", // Team GID\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_team_members.action();\n// outputSchema for result.data when operation === 'list_team_members':\n// {\n//   operation: \"list_team_members\",\n//   success: boolean,\n//   users: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// List Tags example\nconst asana_list_tags = new AsanaBubble({\n  operation: \"list_tags\", // List tags in a workspace\n  workspace: \"example string\", // Workspace GID (auto-filled from credential)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_tags.action();\n// outputSchema for result.data when operation === 'list_tags':\n// {\n//   operation: \"list_tags\",\n//   success: boolean,\n//   tags: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Create Tag example\nconst asana_create_tag = new AsanaBubble({\n  operation: \"create_tag\", // Create a new tag\n  name: \"example string\", // Name of the tag\n  workspace: \"example string\", // Workspace GID (auto-filled from credential)\n  color: \"example string\", // Tag color (e.g. \"dark-pink\", \"dark-green\", \"light-blue\")\n});\n\nconst result = await asana_create_tag.action();\n// outputSchema for result.data when operation === 'create_tag':\n// {\n//   operation: \"create_tag\",\n//   success: boolean,\n//   tag: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// Add Tag To Task example\nconst asana_add_tag_to_task = new AsanaBubble({\n  operation: \"add_tag_to_task\", // Add a tag to a task\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  tag_gid: \"example string\", // Tag GID to add\n});\n\nconst result = await asana_add_tag_to_task.action();\n// outputSchema for result.data when operation === 'add_tag_to_task':\n// {\n//   operation: \"add_tag_to_task\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Remove Tag From Task example\nconst asana_remove_tag_from_task = new AsanaBubble({\n  operation: \"remove_tag_from_task\", // Remove a tag from a task\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  tag_gid: \"example string\", // Tag GID to remove\n});\n\nconst result = await asana_remove_tag_from_task.action();\n// outputSchema for result.data when operation === 'remove_tag_from_task':\n// {\n//   operation: \"remove_tag_from_task\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Workspaces example\nconst asana_list_workspaces = new AsanaBubble({\n  operation: \"list_workspaces\", // List all workspaces the authenticated user has access to\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_workspaces.action();\n// outputSchema for result.data when operation === 'list_workspaces':\n// {\n//   operation: \"list_workspaces\",\n//   success: boolean,\n//   workspaces: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// List Custom Fields example\nconst asana_list_custom_fields = new AsanaBubble({\n  operation: \"list_custom_fields\", // List custom field settings for a project\n  project_gid: \"example string\", // Asana project GID\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_custom_fields.action();\n// outputSchema for result.data when operation === 'list_custom_fields':\n// {\n//   operation: \"list_custom_fields\",\n//   success: boolean,\n//   custom_fields: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// List Attachments example\nconst asana_list_attachments = new AsanaBubble({\n  operation: \"list_attachments\", // List attachments on a task\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_attachments.action();\n// outputSchema for result.data when operation === 'list_attachments':\n// {\n//   operation: \"list_attachments\",\n//   success: boolean,\n//   attachments: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// List Subtasks example\nconst asana_list_subtasks = new AsanaBubble({\n  operation: \"list_subtasks\", // List subtasks (children) of a task\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  opt_fields: [\"example string\"], // Optional fields to include in the response (e.g. [\"name\",\"assignee\",\"due_on\",\"notes\",\"completed\",\"custom_fields\",\"tags\",\"memberships\"])\n  limit: 50 // default, // Maximum number of results to return (1-100, default 50)\n});\n\nconst result = await asana_list_subtasks.action();\n// outputSchema for result.data when operation === 'list_subtasks':\n// {\n//   operation: \"list_subtasks\",\n//   success: boolean,\n//   tasks: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Add Task To Project example\nconst asana_add_task_to_project = new AsanaBubble({\n  operation: \"add_task_to_project\", // Add a task to a project (task can belong to multiple projects)\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  project_gid: \"example string\", // Asana project GID\n  section_gid: \"example string\", // Optional section GID to place the task in within the project\n});\n\nconst result = await asana_add_task_to_project.action();\n// outputSchema for result.data when operation === 'add_task_to_project':\n// {\n//   operation: \"add_task_to_project\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Remove Task From Project example\nconst asana_remove_task_from_project = new AsanaBubble({\n  operation: \"remove_task_from_project\", // Remove a task from a project (task still exists, just no longer in this project)\n  task_gid: \"example string\", // Asana task GID (globally unique identifier)\n  project_gid: \"example string\", // Asana project GID\n});\n\nconst result = await asana_remove_task_from_project.action();\n// outputSchema for result.data when operation === 'remove_task_from_project':\n// {\n//   operation: \"remove_task_from_project\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Update Section example\nconst asana_update_section = new AsanaBubble({\n  operation: \"update_section\", // Rename or reorder a section\n  section_gid: \"example string\", // Section GID to update\n  name: \"example string\", // New name for the section\n});\n\nconst result = await asana_update_section.action();\n// outputSchema for result.data when operation === 'update_section':\n// {\n//   operation: \"update_section\",\n//   success: boolean,\n//   section: Record<string, unknown> | undefined // An Asana resource object with its fields,\n//   error: string\n// }\n\n\n// Delete Section example\nconst asana_delete_section = new AsanaBubble({\n  operation: \"delete_section\", // Delete a section from a project (tasks in it are NOT deleted, they become unsectioned)\n  section_gid: \"example string\", // Section GID to delete\n});\n\nconst result = await asana_delete_section.action();\n// outputSchema for result.data when operation === 'delete_section':\n// {\n//   operation: \"delete_section\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Delete Project example\nconst asana_delete_project = new AsanaBubble({\n  operation: \"delete_project\", // Permanently delete a project and all its tasks\n  project_gid: \"example string\", // Asana project GID\n});\n\nconst result = await asana_delete_project.action();\n// outputSchema for result.data when operation === 'delete_project':\n// {\n//   operation: \"delete_project\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`asana failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "ASANA_CRED"
      ]
    },
    {
      "name": "discord",
      "alias": "",
      "type": "service",
      "shortDescription": "Discord integration for messaging, channels, threads, and server management",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ],
                "description": "Send a message to a Discord channel. Requires Send Messages permission."
              },
              "channel_id": {
                "type": "string",
                "minLength": 1,
                "description": "Discord channel ID (snowflake)"
              },
              "content": {
                "type": "string",
                "maxLength": 2000,
                "description": "[ONEOF:body] Message text content (max 2000 chars)"
              },
              "embeds": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string",
                      "description": "Embed title"
                    },
                    "description": {
                      "type": "string",
                      "description": "Embed description text"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "Embed title URL"
                    },
                    "color": {
                      "type": "number",
                      "description": "Embed color as decimal integer (e.g. 0x5865F2 = 5793266)"
                    },
                    "fields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "value": {
                            "type": "string",
                            "description": "Field value"
                          },
                          "inline": {
                            "type": "boolean",
                            "description": "Whether to display inline"
                          }
                        },
                        "required": [
                          "name",
                          "value"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of embed fields"
                    },
                    "footer": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string",
                          "description": "Footer text"
                        },
                        "icon_url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Footer icon URL"
                        }
                      },
                      "required": [
                        "text"
                      ],
                      "additionalProperties": false,
                      "description": "Embed footer"
                    },
                    "thumbnail": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Thumbnail image URL"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "additionalProperties": false,
                      "description": "Embed thumbnail"
                    },
                    "image": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Image URL"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "additionalProperties": false,
                      "description": "Embed image"
                    },
                    "author": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Author name"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Author URL"
                        },
                        "icon_url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Author icon URL"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "description": "Embed author"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "ISO 8601 timestamp for the embed"
                    }
                  },
                  "additionalProperties": false
                },
                "maxItems": 10,
                "description": "[ONEOF:body] Rich embed objects (max 10)"
              },
              "tts": {
                "type": "boolean",
                "default": false,
                "description": "Whether this is a text-to-speech message"
              },
              "reply_to": {
                "type": "string",
                "description": "Message ID to reply to (creates a threaded reply)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_messages"
                ],
                "description": "Read messages from a Discord channel. Requires Read Message History permission."
              },
              "channel_id": {
                "type": "string",
                "minLength": 1,
                "description": "Discord channel ID (snowflake)"
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Maximum number of results to return (1-100, default 25)"
              },
              "before": {
                "type": "string",
                "description": "Get messages before this message ID (for pagination)"
              },
              "after": {
                "type": "string",
                "description": "Get messages after this message ID (for pagination)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "edit_message"
                ],
                "description": "Edit a message sent by the bot"
              },
              "channel_id": {
                "type": "string",
                "minLength": 1,
                "description": "Discord channel ID (snowflake)"
              },
              "message_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the message to edit"
              },
              "content": {
                "type": "string",
                "maxLength": 2000,
                "description": "New message text content"
              },
              "embeds": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string",
                      "description": "Embed title"
                    },
                    "description": {
                      "type": "string",
                      "description": "Embed description text"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "Embed title URL"
                    },
                    "color": {
                      "type": "number",
                      "description": "Embed color as decimal integer (e.g. 0x5865F2 = 5793266)"
                    },
                    "fields": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "value": {
                            "type": "string",
                            "description": "Field value"
                          },
                          "inline": {
                            "type": "boolean",
                            "description": "Whether to display inline"
                          }
                        },
                        "required": [
                          "name",
                          "value"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Array of embed fields"
                    },
                    "footer": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string",
                          "description": "Footer text"
                        },
                        "icon_url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Footer icon URL"
                        }
                      },
                      "required": [
                        "text"
                      ],
                      "additionalProperties": false,
                      "description": "Embed footer"
                    },
                    "thumbnail": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Thumbnail image URL"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "additionalProperties": false,
                      "description": "Embed thumbnail"
                    },
                    "image": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Image URL"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "additionalProperties": false,
                      "description": "Embed image"
                    },
                    "author": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Author name"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Author URL"
                        },
                        "icon_url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Author icon URL"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "description": "Embed author"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "ISO 8601 timestamp for the embed"
                    }
                  },
                  "additionalProperties": false
                },
                "maxItems": 10,
                "description": "New embed objects"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel_id",
              "message_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_message"
                ],
                "description": "Delete a message. Bot can delete own messages or others with Manage Messages permission."
              },
              "channel_id": {
                "type": "string",
                "minLength": 1,
                "description": "Discord channel ID (snowflake)"
              },
              "message_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the message to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel_id",
              "message_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "pin_message"
                ],
                "description": "Pin a message in a channel. Requires Manage Messages permission."
              },
              "channel_id": {
                "type": "string",
                "minLength": 1,
                "description": "Discord channel ID (snowflake)"
              },
              "message_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the message to pin"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel_id",
              "message_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_reaction"
                ],
                "description": "Add a reaction emoji to a message. Requires Add Reactions permission."
              },
              "channel_id": {
                "type": "string",
                "minLength": 1,
                "description": "Discord channel ID (snowflake)"
              },
              "message_id": {
                "type": "string",
                "minLength": 1,
                "description": "ID of the message to react to"
              },
              "emoji": {
                "type": "string",
                "minLength": 1,
                "description": "Unicode emoji (e.g. \"👍\") or custom emoji in name:id format (e.g. \"my_emoji:123456\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel_id",
              "message_id",
              "emoji"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_channels"
                ],
                "description": "List all channels in a guild/server. Requires View Channels permission."
              },
              "guild_id": {
                "type": "string",
                "description": "Discord guild/server ID (snowflake). Auto-filled from credential if not provided."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_channel"
                ],
                "description": "Create a new channel in a guild. Requires Manage Channels permission."
              },
              "guild_id": {
                "type": "string",
                "description": "Discord guild/server ID (snowflake). Auto-filled from credential if not provided."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100,
                "description": "Channel name (will be lowercased and hyphenated by Discord)"
              },
              "type": {
                "type": "string",
                "enum": [
                  "text",
                  "voice",
                  "category",
                  "announcement",
                  "forum"
                ],
                "default": "text",
                "description": "Channel type (default: text)"
              },
              "topic": {
                "type": "string",
                "maxLength": 1024,
                "description": "Channel topic/description"
              },
              "parent_id": {
                "type": "string",
                "description": "Parent category channel ID to nest this channel under"
              },
              "nsfw": {
                "type": "boolean",
                "description": "Whether channel is NSFW"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_channel"
                ],
                "description": "Delete a channel. Requires Manage Channels permission. This cannot be undone."
              },
              "channel_id": {
                "type": "string",
                "minLength": 1,
                "description": "Discord channel ID (snowflake)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_thread"
                ],
                "description": "Create a new thread in a channel. Requires Send Messages permission."
              },
              "channel_id": {
                "type": "string",
                "minLength": 1,
                "description": "Discord channel ID (snowflake)"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100,
                "description": "Thread name"
              },
              "message_id": {
                "type": "string",
                "description": "Message ID to start thread from (omit to create a thread without a starter message)"
              },
              "auto_archive_duration": {
                "type": "string",
                "enum": [
                  "60",
                  "1440",
                  "4320",
                  "10080"
                ],
                "default": "1440",
                "description": "Minutes of inactivity before auto-archive: 60 (1hr), 1440 (24hr), 4320 (3d), 10080 (7d)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "channel_id",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_threads"
                ],
                "description": "List active threads in a guild"
              },
              "guild_id": {
                "type": "string",
                "description": "Discord guild/server ID (snowflake). Auto-filled from credential if not provided."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_members"
                ],
                "description": "List members of a guild/server. Requires Server Members Intent."
              },
              "guild_id": {
                "type": "string",
                "description": "Discord guild/server ID (snowflake). Auto-filled from credential if not provided."
              },
              "limit": {
                "type": "number",
                "minimum": 1,
                "maximum": 1000,
                "default": 100,
                "description": "Maximum number of members to return (1-1000, default 100)"
              },
              "after": {
                "type": "string",
                "description": "Get members after this user ID (for pagination)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_guild"
                ],
                "description": "Get information about the guild/server"
              },
              "guild_id": {
                "type": "string",
                "description": "Discord guild/server ID (snowflake). Auto-filled from credential if not provided."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "send_message"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "message": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Discord resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_messages"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "messages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "A Discord resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "edit_message"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "message": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Discord resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_message"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "pin_message"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "add_reaction"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_channels"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "channels": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "A Discord resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_channel"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "channel": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Discord resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_channel"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_thread"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "thread": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Discord resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_threads"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "threads": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "A Discord resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_members"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "members": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "A Discord resource object with its fields"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_guild"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "guild": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Discord resource object with its fields"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Send Message example\nconst discord_send_message = new DiscordBubble({\n  operation: \"send_message\", // Send a message to a Discord channel. Requires Send Messages permission.\n  channel_id: \"example string\", // Discord channel ID (snowflake)\n  content: \"example string\", // [ONEOF:body] Message text content (max 2000 chars)\n  embeds: [{ title: \"example string\" // Embed title, description: \"example string\" // Embed description text, url: \"example string\" // Embed title URL, color: 42 // Embed color as decimal integer (e.g. 0x5865F2 = 5793266), fields: [{ name: \"example string\" // Field name, value: \"example string\" // Field value, inline: true // Whether to display inline }] // Array of embed fields, footer: { text: \"example string\" // Footer text, icon_url: \"example string\" // Footer icon URL } // Embed footer, thumbnail: { url: \"example string\" // Thumbnail image URL } // Embed thumbnail, image: { url: \"example string\" // Image URL } // Embed image, author: { name: \"example string\" // Author name, url: \"example string\" // Author URL, icon_url: \"example string\" // Author icon URL } // Embed author, timestamp: \"example string\" // ISO 8601 timestamp for the embed }], // [ONEOF:body] Rich embed objects (max 10)\n  tts: false // default, // Whether this is a text-to-speech message\n  reply_to: \"example string\", // Message ID to reply to (creates a threaded reply)\n});\n\nconst result = await discord_send_message.action();\n// outputSchema for result.data when operation === 'send_message':\n// {\n//   operation: \"send_message\",\n//   success: boolean,\n//   message: Record<string, unknown> | undefined // A Discord resource object with its fields,\n//   error: string\n// }\n\n\n// List Messages example\nconst discord_list_messages = new DiscordBubble({\n  operation: \"list_messages\", // Read messages from a Discord channel. Requires Read Message History permission.\n  channel_id: \"example string\", // Discord channel ID (snowflake)\n  limit: 25 // default, // Maximum number of results to return (1-100, default 25)\n  before: \"example string\", // Get messages before this message ID (for pagination)\n  after: \"example string\", // Get messages after this message ID (for pagination)\n});\n\nconst result = await discord_list_messages.action();\n// outputSchema for result.data when operation === 'list_messages':\n// {\n//   operation: \"list_messages\",\n//   success: boolean,\n//   messages: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Edit Message example\nconst discord_edit_message = new DiscordBubble({\n  operation: \"edit_message\", // Edit a message sent by the bot\n  channel_id: \"example string\", // Discord channel ID (snowflake)\n  message_id: \"example string\", // ID of the message to edit\n  content: \"example string\", // New message text content\n  embeds: [{ title: \"example string\" // Embed title, description: \"example string\" // Embed description text, url: \"example string\" // Embed title URL, color: 42 // Embed color as decimal integer (e.g. 0x5865F2 = 5793266), fields: [{ name: \"example string\" // Field name, value: \"example string\" // Field value, inline: true // Whether to display inline }] // Array of embed fields, footer: { text: \"example string\" // Footer text, icon_url: \"example string\" // Footer icon URL } // Embed footer, thumbnail: { url: \"example string\" // Thumbnail image URL } // Embed thumbnail, image: { url: \"example string\" // Image URL } // Embed image, author: { name: \"example string\" // Author name, url: \"example string\" // Author URL, icon_url: \"example string\" // Author icon URL } // Embed author, timestamp: \"example string\" // ISO 8601 timestamp for the embed }], // New embed objects\n});\n\nconst result = await discord_edit_message.action();\n// outputSchema for result.data when operation === 'edit_message':\n// {\n//   operation: \"edit_message\",\n//   success: boolean,\n//   message: Record<string, unknown> | undefined // A Discord resource object with its fields,\n//   error: string\n// }\n\n\n// Delete Message example\nconst discord_delete_message = new DiscordBubble({\n  operation: \"delete_message\", // Delete a message. Bot can delete own messages or others with Manage Messages permission.\n  channel_id: \"example string\", // Discord channel ID (snowflake)\n  message_id: \"example string\", // ID of the message to delete\n});\n\nconst result = await discord_delete_message.action();\n// outputSchema for result.data when operation === 'delete_message':\n// {\n//   operation: \"delete_message\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Pin Message example\nconst discord_pin_message = new DiscordBubble({\n  operation: \"pin_message\", // Pin a message in a channel. Requires Manage Messages permission.\n  channel_id: \"example string\", // Discord channel ID (snowflake)\n  message_id: \"example string\", // ID of the message to pin\n});\n\nconst result = await discord_pin_message.action();\n// outputSchema for result.data when operation === 'pin_message':\n// {\n//   operation: \"pin_message\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Add Reaction example\nconst discord_add_reaction = new DiscordBubble({\n  operation: \"add_reaction\", // Add a reaction emoji to a message. Requires Add Reactions permission.\n  channel_id: \"example string\", // Discord channel ID (snowflake)\n  message_id: \"example string\", // ID of the message to react to\n  emoji: \"example string\", // Unicode emoji (e.g. \"👍\") or custom emoji in name:id format (e.g. \"my_emoji:123456\")\n});\n\nconst result = await discord_add_reaction.action();\n// outputSchema for result.data when operation === 'add_reaction':\n// {\n//   operation: \"add_reaction\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Channels example\nconst discord_list_channels = new DiscordBubble({\n  operation: \"list_channels\", // List all channels in a guild/server. Requires View Channels permission.\n  guild_id: \"example string\", // Discord guild/server ID (snowflake). Auto-filled from credential if not provided.\n});\n\nconst result = await discord_list_channels.action();\n// outputSchema for result.data when operation === 'list_channels':\n// {\n//   operation: \"list_channels\",\n//   success: boolean,\n//   channels: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Create Channel example\nconst discord_create_channel = new DiscordBubble({\n  operation: \"create_channel\", // Create a new channel in a guild. Requires Manage Channels permission.\n  guild_id: \"example string\", // Discord guild/server ID (snowflake). Auto-filled from credential if not provided.\n  name: \"example string\", // Channel name (will be lowercased and hyphenated by Discord)\n  type: \"text\" // options: \"text\", \"voice\", \"category\", \"announcement\", \"forum\", // Channel type (default: text)\n  topic: \"example string\", // Channel topic/description\n  parent_id: \"example string\", // Parent category channel ID to nest this channel under\n  nsfw: true, // Whether channel is NSFW\n});\n\nconst result = await discord_create_channel.action();\n// outputSchema for result.data when operation === 'create_channel':\n// {\n//   operation: \"create_channel\",\n//   success: boolean,\n//   channel: Record<string, unknown> | undefined // A Discord resource object with its fields,\n//   error: string\n// }\n\n\n// Delete Channel example\nconst discord_delete_channel = new DiscordBubble({\n  operation: \"delete_channel\", // Delete a channel. Requires Manage Channels permission. This cannot be undone.\n  channel_id: \"example string\", // Discord channel ID (snowflake)\n});\n\nconst result = await discord_delete_channel.action();\n// outputSchema for result.data when operation === 'delete_channel':\n// {\n//   operation: \"delete_channel\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Create Thread example\nconst discord_create_thread = new DiscordBubble({\n  operation: \"create_thread\", // Create a new thread in a channel. Requires Send Messages permission.\n  channel_id: \"example string\", // Discord channel ID (snowflake)\n  name: \"example string\", // Thread name\n  message_id: \"example string\", // Message ID to start thread from (omit to create a thread without a starter message)\n  auto_archive_duration: \"60\" // options: \"60\", \"1440\", \"4320\", \"10080\", // Minutes of inactivity before auto-archive: 60 (1hr), 1440 (24hr), 4320 (3d), 10080 (7d)\n});\n\nconst result = await discord_create_thread.action();\n// outputSchema for result.data when operation === 'create_thread':\n// {\n//   operation: \"create_thread\",\n//   success: boolean,\n//   thread: Record<string, unknown> | undefined // A Discord resource object with its fields,\n//   error: string\n// }\n\n\n// List Threads example\nconst discord_list_threads = new DiscordBubble({\n  operation: \"list_threads\", // List active threads in a guild\n  guild_id: \"example string\", // Discord guild/server ID (snowflake). Auto-filled from credential if not provided.\n});\n\nconst result = await discord_list_threads.action();\n// outputSchema for result.data when operation === 'list_threads':\n// {\n//   operation: \"list_threads\",\n//   success: boolean,\n//   threads: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// List Members example\nconst discord_list_members = new DiscordBubble({\n  operation: \"list_members\", // List members of a guild/server. Requires Server Members Intent.\n  guild_id: \"example string\", // Discord guild/server ID (snowflake). Auto-filled from credential if not provided.\n  limit: 100 // default, // Maximum number of members to return (1-1000, default 100)\n  after: \"example string\", // Get members after this user ID (for pagination)\n});\n\nconst result = await discord_list_members.action();\n// outputSchema for result.data when operation === 'list_members':\n// {\n//   operation: \"list_members\",\n//   success: boolean,\n//   members: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Get Guild example\nconst discord_get_guild = new DiscordBubble({\n  operation: \"get_guild\", // Get information about the guild/server\n  guild_id: \"example string\", // Discord guild/server ID (snowflake). Auto-filled from credential if not provided.\n});\n\nconst result = await discord_get_guild.action();\n// outputSchema for result.data when operation === 'get_guild':\n// {\n//   operation: \"get_guild\",\n//   success: boolean,\n//   guild: Record<string, unknown> | undefined // A Discord resource object with its fields,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`discord failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "DISCORD_CRED"
      ]
    },
    {
      "name": "sortly",
      "alias": "inventory",
      "type": "service",
      "shortDescription": "Sortly inventory management for tracking items, folders, and stock levels",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_items"
                ],
                "description": "List inventory items with optional folder and pagination filters"
              },
              "folder_id": {
                "type": "number",
                "description": "Filter by parent folder ID (omit for root items)"
              },
              "page": {
                "type": "number",
                "default": 1,
                "description": "Page number (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Items per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_item"
                ],
                "description": "Get a specific item or folder by ID"
              },
              "item_id": {
                "type": "number",
                "description": "The ID of the item to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "item_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_item"
                ],
                "description": "Create a new inventory item or folder"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Item name"
              },
              "type": {
                "type": "string",
                "enum": [
                  "item",
                  "folder"
                ],
                "default": "item",
                "description": "Type: \"item\" for inventory item, \"folder\" for folder"
              },
              "notes": {
                "type": "string",
                "description": "Item notes or description"
              },
              "price": {
                "type": "string",
                "description": "Item price as string"
              },
              "quantity": {
                "type": "number",
                "description": "Initial quantity"
              },
              "min_quantity": {
                "type": "number",
                "description": "Minimum quantity threshold for alerts"
              },
              "parent_id": {
                "type": "number",
                "description": "Parent folder ID (omit for root level)"
              },
              "sid": {
                "type": "string",
                "description": "Custom identifier / SKU"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Tag names to assign to the item"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_item"
                ],
                "description": "Update an existing item or folder"
              },
              "item_id": {
                "type": "number",
                "description": "The ID of the item to update"
              },
              "name": {
                "type": "string",
                "description": "Updated item name"
              },
              "notes": {
                "type": "string",
                "description": "Updated notes"
              },
              "price": {
                "type": "string",
                "description": "Updated price"
              },
              "quantity": {
                "type": "number",
                "description": "Updated quantity"
              },
              "min_quantity": {
                "type": "number",
                "description": "Updated minimum quantity threshold"
              },
              "sid": {
                "type": "string",
                "description": "Updated custom identifier / SKU"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Updated tag names"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "item_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_item"
                ],
                "description": "Delete an item or folder by ID"
              },
              "item_id": {
                "type": "number",
                "description": "The ID of the item to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "item_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_items"
                ],
                "description": "Search items by name and optional filters"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Search query to match item names"
              },
              "type": {
                "type": "string",
                "enum": [
                  "item",
                  "folder"
                ],
                "description": "Filter by type: \"item\" or \"folder\""
              },
              "page": {
                "type": "number",
                "default": 1,
                "description": "Page number (default 1)"
              },
              "per_page": {
                "type": "number",
                "minimum": 1,
                "maximum": 100,
                "default": 25,
                "description": "Items per page (1-100, default 25)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "move_item"
                ],
                "description": "Move an item to a different folder"
              },
              "item_id": {
                "type": "number",
                "description": "The ID of the item to move"
              },
              "folder_id": {
                "type": "number",
                "nullable": true,
                "description": "Target folder ID (null or omit to move to root)"
              },
              "quantity": {
                "type": "number",
                "description": "Quantity to move"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "item_id",
              "quantity"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_custom_fields"
                ],
                "description": "List all custom field definitions"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_items"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Item identifier"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "notes": {
                      "type": "string",
                      "nullable": true,
                      "description": "Item notes"
                    },
                    "price": {
                      "type": "string",
                      "nullable": true,
                      "description": "Item price"
                    },
                    "quantity": {
                      "type": "number",
                      "nullable": true,
                      "description": "Current quantity"
                    },
                    "min_quantity": {
                      "type": "number",
                      "nullable": true,
                      "description": "Minimum quantity threshold for alerts"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "item",
                        "folder"
                      ],
                      "description": "\"item\" for inventory items, \"folder\" for folders"
                    },
                    "parent_id": {
                      "type": "number",
                      "nullable": true,
                      "description": "Parent folder ID (null for root items)"
                    },
                    "sid": {
                      "type": "string",
                      "nullable": true,
                      "description": "Custom identifier / SKU"
                    },
                    "tag_names": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true,
                      "description": "Tag names associated with this item"
                    },
                    "photos": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "number",
                            "description": "Photo ID"
                          },
                          "url": {
                            "type": "string",
                            "description": "Photo URL"
                          }
                        },
                        "required": [
                          "id",
                          "url"
                        ],
                        "additionalProperties": false
                      },
                      "nullable": true,
                      "description": "Item photos"
                    },
                    "custom_attribute_values": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "number",
                            "description": "Attribute value ID"
                          },
                          "custom_field_id": {
                            "type": "number",
                            "description": "Custom field ID"
                          },
                          "value": {
                            "description": "Attribute value"
                          }
                        },
                        "required": [
                          "id",
                          "custom_field_id"
                        ],
                        "additionalProperties": false
                      },
                      "nullable": true,
                      "description": "Custom field values"
                    },
                    "created_at": {
                      "type": "string",
                      "nullable": true,
                      "description": "Creation timestamp"
                    },
                    "updated_at": {
                      "type": "string",
                      "nullable": true,
                      "description": "Last update timestamp"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "type"
                  ],
                  "additionalProperties": false,
                  "description": "Sortly inventory item or folder"
                }
              },
              "page": {
                "type": "number"
              },
              "per_page": {
                "type": "number"
              },
              "total": {
                "type": "number"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_item"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "item": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Item identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Item name"
                  },
                  "notes": {
                    "type": "string",
                    "nullable": true,
                    "description": "Item notes"
                  },
                  "price": {
                    "type": "string",
                    "nullable": true,
                    "description": "Item price"
                  },
                  "quantity": {
                    "type": "number",
                    "nullable": true,
                    "description": "Current quantity"
                  },
                  "min_quantity": {
                    "type": "number",
                    "nullable": true,
                    "description": "Minimum quantity threshold for alerts"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "item",
                      "folder"
                    ],
                    "description": "\"item\" for inventory items, \"folder\" for folders"
                  },
                  "parent_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Parent folder ID (null for root items)"
                  },
                  "sid": {
                    "type": "string",
                    "nullable": true,
                    "description": "Custom identifier / SKU"
                  },
                  "tag_names": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "nullable": true,
                    "description": "Tag names associated with this item"
                  },
                  "photos": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Photo ID"
                        },
                        "url": {
                          "type": "string",
                          "description": "Photo URL"
                        }
                      },
                      "required": [
                        "id",
                        "url"
                      ],
                      "additionalProperties": false
                    },
                    "nullable": true,
                    "description": "Item photos"
                  },
                  "custom_attribute_values": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Attribute value ID"
                        },
                        "custom_field_id": {
                          "type": "number",
                          "description": "Custom field ID"
                        },
                        "value": {
                          "description": "Attribute value"
                        }
                      },
                      "required": [
                        "id",
                        "custom_field_id"
                      ],
                      "additionalProperties": false
                    },
                    "nullable": true,
                    "description": "Custom field values"
                  },
                  "created_at": {
                    "type": "string",
                    "nullable": true,
                    "description": "Creation timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "nullable": true,
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "type"
                ],
                "additionalProperties": false,
                "description": "Sortly inventory item or folder"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_item"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "item": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Item identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Item name"
                  },
                  "notes": {
                    "type": "string",
                    "nullable": true,
                    "description": "Item notes"
                  },
                  "price": {
                    "type": "string",
                    "nullable": true,
                    "description": "Item price"
                  },
                  "quantity": {
                    "type": "number",
                    "nullable": true,
                    "description": "Current quantity"
                  },
                  "min_quantity": {
                    "type": "number",
                    "nullable": true,
                    "description": "Minimum quantity threshold for alerts"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "item",
                      "folder"
                    ],
                    "description": "\"item\" for inventory items, \"folder\" for folders"
                  },
                  "parent_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Parent folder ID (null for root items)"
                  },
                  "sid": {
                    "type": "string",
                    "nullable": true,
                    "description": "Custom identifier / SKU"
                  },
                  "tag_names": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "nullable": true,
                    "description": "Tag names associated with this item"
                  },
                  "photos": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Photo ID"
                        },
                        "url": {
                          "type": "string",
                          "description": "Photo URL"
                        }
                      },
                      "required": [
                        "id",
                        "url"
                      ],
                      "additionalProperties": false
                    },
                    "nullable": true,
                    "description": "Item photos"
                  },
                  "custom_attribute_values": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Attribute value ID"
                        },
                        "custom_field_id": {
                          "type": "number",
                          "description": "Custom field ID"
                        },
                        "value": {
                          "description": "Attribute value"
                        }
                      },
                      "required": [
                        "id",
                        "custom_field_id"
                      ],
                      "additionalProperties": false
                    },
                    "nullable": true,
                    "description": "Custom field values"
                  },
                  "created_at": {
                    "type": "string",
                    "nullable": true,
                    "description": "Creation timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "nullable": true,
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "type"
                ],
                "additionalProperties": false,
                "description": "Sortly inventory item or folder"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_item"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "item": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Item identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Item name"
                  },
                  "notes": {
                    "type": "string",
                    "nullable": true,
                    "description": "Item notes"
                  },
                  "price": {
                    "type": "string",
                    "nullable": true,
                    "description": "Item price"
                  },
                  "quantity": {
                    "type": "number",
                    "nullable": true,
                    "description": "Current quantity"
                  },
                  "min_quantity": {
                    "type": "number",
                    "nullable": true,
                    "description": "Minimum quantity threshold for alerts"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "item",
                      "folder"
                    ],
                    "description": "\"item\" for inventory items, \"folder\" for folders"
                  },
                  "parent_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Parent folder ID (null for root items)"
                  },
                  "sid": {
                    "type": "string",
                    "nullable": true,
                    "description": "Custom identifier / SKU"
                  },
                  "tag_names": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "nullable": true,
                    "description": "Tag names associated with this item"
                  },
                  "photos": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Photo ID"
                        },
                        "url": {
                          "type": "string",
                          "description": "Photo URL"
                        }
                      },
                      "required": [
                        "id",
                        "url"
                      ],
                      "additionalProperties": false
                    },
                    "nullable": true,
                    "description": "Item photos"
                  },
                  "custom_attribute_values": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Attribute value ID"
                        },
                        "custom_field_id": {
                          "type": "number",
                          "description": "Custom field ID"
                        },
                        "value": {
                          "description": "Attribute value"
                        }
                      },
                      "required": [
                        "id",
                        "custom_field_id"
                      ],
                      "additionalProperties": false
                    },
                    "nullable": true,
                    "description": "Custom field values"
                  },
                  "created_at": {
                    "type": "string",
                    "nullable": true,
                    "description": "Creation timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "nullable": true,
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "type"
                ],
                "additionalProperties": false,
                "description": "Sortly inventory item or folder"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_item"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "search_items"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Item identifier"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item name"
                    },
                    "notes": {
                      "type": "string",
                      "nullable": true,
                      "description": "Item notes"
                    },
                    "price": {
                      "type": "string",
                      "nullable": true,
                      "description": "Item price"
                    },
                    "quantity": {
                      "type": "number",
                      "nullable": true,
                      "description": "Current quantity"
                    },
                    "min_quantity": {
                      "type": "number",
                      "nullable": true,
                      "description": "Minimum quantity threshold for alerts"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "item",
                        "folder"
                      ],
                      "description": "\"item\" for inventory items, \"folder\" for folders"
                    },
                    "parent_id": {
                      "type": "number",
                      "nullable": true,
                      "description": "Parent folder ID (null for root items)"
                    },
                    "sid": {
                      "type": "string",
                      "nullable": true,
                      "description": "Custom identifier / SKU"
                    },
                    "tag_names": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "nullable": true,
                      "description": "Tag names associated with this item"
                    },
                    "photos": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "number",
                            "description": "Photo ID"
                          },
                          "url": {
                            "type": "string",
                            "description": "Photo URL"
                          }
                        },
                        "required": [
                          "id",
                          "url"
                        ],
                        "additionalProperties": false
                      },
                      "nullable": true,
                      "description": "Item photos"
                    },
                    "custom_attribute_values": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "number",
                            "description": "Attribute value ID"
                          },
                          "custom_field_id": {
                            "type": "number",
                            "description": "Custom field ID"
                          },
                          "value": {
                            "description": "Attribute value"
                          }
                        },
                        "required": [
                          "id",
                          "custom_field_id"
                        ],
                        "additionalProperties": false
                      },
                      "nullable": true,
                      "description": "Custom field values"
                    },
                    "created_at": {
                      "type": "string",
                      "nullable": true,
                      "description": "Creation timestamp"
                    },
                    "updated_at": {
                      "type": "string",
                      "nullable": true,
                      "description": "Last update timestamp"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "type"
                  ],
                  "additionalProperties": false,
                  "description": "Sortly inventory item or folder"
                }
              },
              "page": {
                "type": "number"
              },
              "per_page": {
                "type": "number"
              },
              "total": {
                "type": "number"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "move_item"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "item": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Item identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Item name"
                  },
                  "notes": {
                    "type": "string",
                    "nullable": true,
                    "description": "Item notes"
                  },
                  "price": {
                    "type": "string",
                    "nullable": true,
                    "description": "Item price"
                  },
                  "quantity": {
                    "type": "number",
                    "nullable": true,
                    "description": "Current quantity"
                  },
                  "min_quantity": {
                    "type": "number",
                    "nullable": true,
                    "description": "Minimum quantity threshold for alerts"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "item",
                      "folder"
                    ],
                    "description": "\"item\" for inventory items, \"folder\" for folders"
                  },
                  "parent_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Parent folder ID (null for root items)"
                  },
                  "sid": {
                    "type": "string",
                    "nullable": true,
                    "description": "Custom identifier / SKU"
                  },
                  "tag_names": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "nullable": true,
                    "description": "Tag names associated with this item"
                  },
                  "photos": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Photo ID"
                        },
                        "url": {
                          "type": "string",
                          "description": "Photo URL"
                        }
                      },
                      "required": [
                        "id",
                        "url"
                      ],
                      "additionalProperties": false
                    },
                    "nullable": true,
                    "description": "Item photos"
                  },
                  "custom_attribute_values": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Attribute value ID"
                        },
                        "custom_field_id": {
                          "type": "number",
                          "description": "Custom field ID"
                        },
                        "value": {
                          "description": "Attribute value"
                        }
                      },
                      "required": [
                        "id",
                        "custom_field_id"
                      ],
                      "additionalProperties": false
                    },
                    "nullable": true,
                    "description": "Custom field values"
                  },
                  "created_at": {
                    "type": "string",
                    "nullable": true,
                    "description": "Creation timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "nullable": true,
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "type"
                ],
                "additionalProperties": false,
                "description": "Sortly inventory item or folder"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_custom_fields"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "custom_fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "number",
                      "description": "Custom field identifier"
                    },
                    "name": {
                      "type": "string",
                      "description": "Field name"
                    },
                    "type": {
                      "type": "string",
                      "description": "Field type (text, number, date, etc.)"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "type"
                  ],
                  "additionalProperties": false,
                  "description": "Sortly custom field definition"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Items example\nconst sortly_list_items = new SortlyBubble({\n  operation: \"list_items\", // List inventory items with optional folder and pagination filters\n  folder_id: 42, // Filter by parent folder ID (omit for root items)\n  page: 1 // default, // Page number (default 1)\n  per_page: 25 // default, // Items per page (1-100, default 25)\n});\n\nconst result = await sortly_list_items.action();\n// outputSchema for result.data when operation === 'list_items':\n// {\n//   operation: \"list_items\",\n//   success: boolean,\n//   items: { id: number // Item identifier, name: string // Item name, notes: string | undefined | null // Item notes, price: string | undefined | null // Item price, quantity: number | undefined | null // Current quantity, min_quantity: number | undefined | null // Minimum quantity threshold for alerts, type: \"item\" | \"folder\" // \"item\" for inventory items, \"folder\" for folders, parent_id: number | undefined | null // Parent folder ID (null for root items), sid: string | undefined | null // Custom identifier / SKU, tag_names: string[] | undefined | null // Tag names associated with this item, photos: { id: number // Photo ID, url: string // Photo URL }[] | undefined | null // Item photos, custom_attribute_values: { id: number // Attribute value ID, custom_field_id: number // Custom field ID, value: unknown // Attribute value }[] | undefined | null // Custom field values, created_at: string | undefined | null // Creation timestamp, updated_at: string | undefined | null // Last update timestamp }[] | undefined,\n//   page: number | undefined,\n//   per_page: number | undefined,\n//   total: number | undefined,\n//   error: string\n// }\n\n\n// Get Item example\nconst sortly_get_item = new SortlyBubble({\n  operation: \"get_item\", // Get a specific item or folder by ID\n  item_id: 42, // The ID of the item to retrieve\n});\n\nconst result = await sortly_get_item.action();\n// outputSchema for result.data when operation === 'get_item':\n// {\n//   operation: \"get_item\",\n//   success: boolean,\n//   item: { id: number // Item identifier, name: string // Item name, notes: string | undefined | null // Item notes, price: string | undefined | null // Item price, quantity: number | undefined | null // Current quantity, min_quantity: number | undefined | null // Minimum quantity threshold for alerts, type: \"item\" | \"folder\" // \"item\" for inventory items, \"folder\" for folders, parent_id: number | undefined | null // Parent folder ID (null for root items), sid: string | undefined | null // Custom identifier / SKU, tag_names: string[] | undefined | null // Tag names associated with this item, photos: { id: number // Photo ID, url: string // Photo URL }[] | undefined | null // Item photos, custom_attribute_values: { id: number // Attribute value ID, custom_field_id: number // Custom field ID, value: unknown // Attribute value }[] | undefined | null // Custom field values, created_at: string | undefined | null // Creation timestamp, updated_at: string | undefined | null // Last update timestamp } | undefined // Sortly inventory item or folder,\n//   error: string\n// }\n\n\n// Create Item example\nconst sortly_create_item = new SortlyBubble({\n  operation: \"create_item\", // Create a new inventory item or folder\n  name: \"example string\", // Item name\n  type: \"item\" // options: \"item\", \"folder\", // Type: \"item\" for inventory item, \"folder\" for folder\n  notes: \"example string\", // Item notes or description\n  price: \"example string\", // Item price as string\n  quantity: 42, // Initial quantity\n  min_quantity: 42, // Minimum quantity threshold for alerts\n  parent_id: 42, // Parent folder ID (omit for root level)\n  sid: \"example string\", // Custom identifier / SKU\n  tags: [\"example string\"], // Tag names to assign to the item\n});\n\nconst result = await sortly_create_item.action();\n// outputSchema for result.data when operation === 'create_item':\n// {\n//   operation: \"create_item\",\n//   success: boolean,\n//   item: { id: number // Item identifier, name: string // Item name, notes: string | undefined | null // Item notes, price: string | undefined | null // Item price, quantity: number | undefined | null // Current quantity, min_quantity: number | undefined | null // Minimum quantity threshold for alerts, type: \"item\" | \"folder\" // \"item\" for inventory items, \"folder\" for folders, parent_id: number | undefined | null // Parent folder ID (null for root items), sid: string | undefined | null // Custom identifier / SKU, tag_names: string[] | undefined | null // Tag names associated with this item, photos: { id: number // Photo ID, url: string // Photo URL }[] | undefined | null // Item photos, custom_attribute_values: { id: number // Attribute value ID, custom_field_id: number // Custom field ID, value: unknown // Attribute value }[] | undefined | null // Custom field values, created_at: string | undefined | null // Creation timestamp, updated_at: string | undefined | null // Last update timestamp } | undefined // Sortly inventory item or folder,\n//   error: string\n// }\n\n\n// Update Item example\nconst sortly_update_item = new SortlyBubble({\n  operation: \"update_item\", // Update an existing item or folder\n  item_id: 42, // The ID of the item to update\n  name: \"example string\", // Updated item name\n  notes: \"example string\", // Updated notes\n  price: \"example string\", // Updated price\n  quantity: 42, // Updated quantity\n  min_quantity: 42, // Updated minimum quantity threshold\n  sid: \"example string\", // Updated custom identifier / SKU\n  tags: [\"example string\"], // Updated tag names\n});\n\nconst result = await sortly_update_item.action();\n// outputSchema for result.data when operation === 'update_item':\n// {\n//   operation: \"update_item\",\n//   success: boolean,\n//   item: { id: number // Item identifier, name: string // Item name, notes: string | undefined | null // Item notes, price: string | undefined | null // Item price, quantity: number | undefined | null // Current quantity, min_quantity: number | undefined | null // Minimum quantity threshold for alerts, type: \"item\" | \"folder\" // \"item\" for inventory items, \"folder\" for folders, parent_id: number | undefined | null // Parent folder ID (null for root items), sid: string | undefined | null // Custom identifier / SKU, tag_names: string[] | undefined | null // Tag names associated with this item, photos: { id: number // Photo ID, url: string // Photo URL }[] | undefined | null // Item photos, custom_attribute_values: { id: number // Attribute value ID, custom_field_id: number // Custom field ID, value: unknown // Attribute value }[] | undefined | null // Custom field values, created_at: string | undefined | null // Creation timestamp, updated_at: string | undefined | null // Last update timestamp } | undefined // Sortly inventory item or folder,\n//   error: string\n// }\n\n\n// Delete Item example\nconst sortly_delete_item = new SortlyBubble({\n  operation: \"delete_item\", // Delete an item or folder by ID\n  item_id: 42, // The ID of the item to delete\n});\n\nconst result = await sortly_delete_item.action();\n// outputSchema for result.data when operation === 'delete_item':\n// {\n//   operation: \"delete_item\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Search Items example\nconst sortly_search_items = new SortlyBubble({\n  operation: \"search_items\", // Search items by name and optional filters\n  name: \"example string\", // Search query to match item names\n  type: \"item\" // options: \"item\", \"folder\", // Filter by type: \"item\" or \"folder\"\n  page: 1 // default, // Page number (default 1)\n  per_page: 25 // default, // Items per page (1-100, default 25)\n});\n\nconst result = await sortly_search_items.action();\n// outputSchema for result.data when operation === 'search_items':\n// {\n//   operation: \"search_items\",\n//   success: boolean,\n//   items: { id: number // Item identifier, name: string // Item name, notes: string | undefined | null // Item notes, price: string | undefined | null // Item price, quantity: number | undefined | null // Current quantity, min_quantity: number | undefined | null // Minimum quantity threshold for alerts, type: \"item\" | \"folder\" // \"item\" for inventory items, \"folder\" for folders, parent_id: number | undefined | null // Parent folder ID (null for root items), sid: string | undefined | null // Custom identifier / SKU, tag_names: string[] | undefined | null // Tag names associated with this item, photos: { id: number // Photo ID, url: string // Photo URL }[] | undefined | null // Item photos, custom_attribute_values: { id: number // Attribute value ID, custom_field_id: number // Custom field ID, value: unknown // Attribute value }[] | undefined | null // Custom field values, created_at: string | undefined | null // Creation timestamp, updated_at: string | undefined | null // Last update timestamp }[] | undefined,\n//   page: number | undefined,\n//   per_page: number | undefined,\n//   total: number | undefined,\n//   error: string\n// }\n\n\n// Move Item example\nconst sortly_move_item = new SortlyBubble({\n  operation: \"move_item\", // Move an item to a different folder\n  item_id: 42, // The ID of the item to move\n  folder_id: 42, // Target folder ID (null or omit to move to root)\n  quantity: 42, // Quantity to move\n});\n\nconst result = await sortly_move_item.action();\n// outputSchema for result.data when operation === 'move_item':\n// {\n//   operation: \"move_item\",\n//   success: boolean,\n//   item: { id: number // Item identifier, name: string // Item name, notes: string | undefined | null // Item notes, price: string | undefined | null // Item price, quantity: number | undefined | null // Current quantity, min_quantity: number | undefined | null // Minimum quantity threshold for alerts, type: \"item\" | \"folder\" // \"item\" for inventory items, \"folder\" for folders, parent_id: number | undefined | null // Parent folder ID (null for root items), sid: string | undefined | null // Custom identifier / SKU, tag_names: string[] | undefined | null // Tag names associated with this item, photos: { id: number // Photo ID, url: string // Photo URL }[] | undefined | null // Item photos, custom_attribute_values: { id: number // Attribute value ID, custom_field_id: number // Custom field ID, value: unknown // Attribute value }[] | undefined | null // Custom field values, created_at: string | undefined | null // Creation timestamp, updated_at: string | undefined | null // Last update timestamp } | undefined // Sortly inventory item or folder,\n//   error: string\n// }\n\n\n// List Custom Fields example\nconst sortly_list_custom_fields = new SortlyBubble({\n  operation: \"list_custom_fields\", // List all custom field definitions\n});\n\nconst result = await sortly_list_custom_fields.action();\n// outputSchema for result.data when operation === 'list_custom_fields':\n// {\n//   operation: \"list_custom_fields\",\n//   success: boolean,\n//   custom_fields: { id: number // Custom field identifier, name: string // Field name, type: string // Field type (text, number, date, etc.) }[] | undefined,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`sortly failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "SORTLY_API_KEY"
      ]
    },
    {
      "name": "docusign",
      "alias": "docusign",
      "type": "service",
      "shortDescription": "DocuSign eSignature integration for document signing workflows",
      "useCase": "- Automate agreement lifecycle (generate, send, track, remind, escalate)",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_envelope"
                ],
                "description": "Create and send a DocuSign envelope for signing"
              },
              "email_subject": {
                "type": "string",
                "minLength": 1,
                "description": "Subject line for the envelope email"
              },
              "documents": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Document file name (e.g., \"Agreement.pdf\")"
                    },
                    "file_extension": {
                      "type": "string",
                      "default": "pdf",
                      "description": "File extension (pdf, docx, etc.)"
                    },
                    "document_base64": {
                      "type": "string",
                      "description": "Base64-encoded document content"
                    },
                    "document_id": {
                      "type": "string",
                      "default": "1",
                      "description": "Unique document identifier within the envelope"
                    }
                  },
                  "required": [
                    "name",
                    "document_base64"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "description": "Documents to include in the envelope"
              },
              "signers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "Signer email address"
                    },
                    "name": {
                      "type": "string",
                      "description": "Signer full name"
                    },
                    "recipient_id": {
                      "type": "string",
                      "description": "Unique recipient identifier (auto-assigned if omitted)"
                    },
                    "routing_order": {
                      "type": "string",
                      "default": "1",
                      "description": "Order in which signers receive the envelope"
                    },
                    "tabs": {
                      "type": "object",
                      "properties": {
                        "sign_here": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "document_id": {
                                "type": "string",
                                "default": "1",
                                "description": "Document to place the tab on"
                              },
                              "page_number": {
                                "type": "string",
                                "default": "1",
                                "description": "Page number for the tab"
                              },
                              "x_position": {
                                "type": "string",
                                "default": "100",
                                "description": "X position on the page"
                              },
                              "y_position": {
                                "type": "string",
                                "default": "100",
                                "description": "Y position on the page"
                              }
                            },
                            "additionalProperties": false
                          },
                          "description": "Signature tab placements"
                        },
                        "date_signed": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "document_id": {
                                "type": "string",
                                "default": "1",
                                "description": "Document to place the tab on"
                              },
                              "page_number": {
                                "type": "string",
                                "default": "1",
                                "description": "Page number for the tab"
                              },
                              "x_position": {
                                "type": "string",
                                "default": "200",
                                "description": "X position on the page"
                              },
                              "y_position": {
                                "type": "string",
                                "default": "100",
                                "description": "Y position on the page"
                              }
                            },
                            "additionalProperties": false
                          },
                          "description": "Date signed tab placements"
                        },
                        "text": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "document_id": {
                                "type": "string",
                                "default": "1",
                                "description": "Document to place the tab on"
                              },
                              "page_number": {
                                "type": "string",
                                "default": "1",
                                "description": "Page number for the tab"
                              },
                              "x_position": {
                                "type": "string",
                                "description": "X position on the page"
                              },
                              "y_position": {
                                "type": "string",
                                "description": "Y position on the page"
                              },
                              "tab_label": {
                                "type": "string",
                                "description": "Label for the text tab"
                              },
                              "value": {
                                "type": "string",
                                "description": "Pre-filled value for the text tab"
                              },
                              "required": {
                                "type": "string",
                                "default": "true",
                                "description": "Whether the tab is required"
                              }
                            },
                            "required": [
                              "x_position",
                              "y_position",
                              "tab_label"
                            ],
                            "additionalProperties": false
                          },
                          "description": "Text input tab placements"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Tab placements for this signer"
                    }
                  },
                  "required": [
                    "email",
                    "name"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "description": "Signers who need to sign the envelope"
              },
              "cc_recipients": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "CC recipient email address"
                    },
                    "name": {
                      "type": "string",
                      "description": "CC recipient full name"
                    },
                    "recipient_id": {
                      "type": "string",
                      "description": "Unique recipient identifier"
                    },
                    "routing_order": {
                      "type": "string",
                      "default": "1",
                      "description": "Routing order"
                    }
                  },
                  "required": [
                    "email",
                    "name"
                  ],
                  "additionalProperties": false
                },
                "description": "CC recipients who receive a copy but do not sign"
              },
              "email_body": {
                "type": "string",
                "description": "Custom email body message for the envelope"
              },
              "status": {
                "type": "string",
                "enum": [
                  "sent",
                  "created"
                ],
                "default": "sent",
                "description": "Envelope status: \"sent\" to send immediately, \"created\" to save as draft"
              },
              "reminder_enabled": {
                "type": "boolean",
                "description": "Enable automatic reminders"
              },
              "reminder_delay": {
                "type": "string",
                "description": "Days before first reminder is sent"
              },
              "reminder_frequency": {
                "type": "string",
                "description": "Days between subsequent reminders"
              },
              "expire_enabled": {
                "type": "boolean",
                "description": "Enable envelope expiration"
              },
              "expire_after": {
                "type": "string",
                "description": "Days until envelope expires"
              },
              "expire_warn": {
                "type": "string",
                "description": "Days before expiration to send warning"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "email_subject",
              "documents",
              "signers"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_envelope_from_template"
                ],
                "description": "Create and send an envelope using a DocuSign template"
              },
              "template_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign template ID to use"
              },
              "email_subject": {
                "type": "string",
                "description": "Override the template email subject"
              },
              "email_body": {
                "type": "string",
                "description": "Override the template email body"
              },
              "signers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "Signer email address"
                    },
                    "name": {
                      "type": "string",
                      "description": "Signer full name"
                    },
                    "role_name": {
                      "type": "string",
                      "description": "Template role name to assign this signer to"
                    },
                    "recipient_id": {
                      "type": "string",
                      "description": "Unique recipient identifier"
                    }
                  },
                  "required": [
                    "email",
                    "name",
                    "role_name"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "description": "Signers mapped to template roles"
              },
              "cc_recipients": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "CC recipient email address"
                    },
                    "name": {
                      "type": "string",
                      "description": "CC recipient full name"
                    },
                    "role_name": {
                      "type": "string",
                      "description": "Template role name for this CC recipient"
                    },
                    "recipient_id": {
                      "type": "string",
                      "description": "Unique recipient identifier"
                    }
                  },
                  "required": [
                    "email",
                    "name",
                    "role_name"
                  ],
                  "additionalProperties": false
                },
                "description": "CC recipients mapped to template roles"
              },
              "status": {
                "type": "string",
                "enum": [
                  "sent",
                  "created"
                ],
                "default": "sent",
                "description": "Envelope status"
              },
              "template_data": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Key-value pairs to pre-fill template fields (tab labels to values)"
              },
              "reminder_enabled": {
                "type": "boolean",
                "description": "Enable automatic reminders"
              },
              "reminder_delay": {
                "type": "string",
                "description": "Days before first reminder"
              },
              "reminder_frequency": {
                "type": "string",
                "description": "Days between subsequent reminders"
              },
              "expire_enabled": {
                "type": "boolean",
                "description": "Enable envelope expiration"
              },
              "expire_after": {
                "type": "string",
                "description": "Days until envelope expires"
              },
              "expire_warn": {
                "type": "string",
                "description": "Days before expiration to warn"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "template_id",
              "signers"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_envelope"
                ],
                "description": "Get the status and details of an envelope"
              },
              "envelope_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign envelope ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "envelope_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_envelopes"
                ],
                "description": "List envelopes with optional filters"
              },
              "from_date": {
                "type": "string",
                "description": "Start date for filtering (ISO 8601 format, e.g., \"2024-01-01T00:00:00Z\"). Defaults to 30 days ago."
              },
              "to_date": {
                "type": "string",
                "description": "End date for filtering (ISO 8601 format)"
              },
              "status": {
                "type": "string",
                "description": "Filter by status: \"sent\", \"completed\", \"declined\", \"voided\", \"created\". Comma-separate for multiple."
              },
              "search_text": {
                "type": "string",
                "description": "Search text to filter envelopes (searches subject, recipient names/emails)"
              },
              "count": {
                "type": "string",
                "default": "25",
                "description": "Number of envelopes to return (max 100)"
              },
              "start_position": {
                "type": "string",
                "description": "Starting position for pagination"
              },
              "order_by": {
                "type": "string",
                "description": "Field to order by (e.g., \"last_modified\", \"created\")"
              },
              "order": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ],
                "default": "desc",
                "description": "Sort order"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_recipients"
                ],
                "description": "Get the recipient status details for an envelope"
              },
              "envelope_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign envelope ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "envelope_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_templates"
                ],
                "description": "List available DocuSign templates"
              },
              "search_text": {
                "type": "string",
                "description": "Search text to filter templates by name"
              },
              "count": {
                "type": "string",
                "default": "25",
                "description": "Number of templates to return"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_template"
                ],
                "description": "Get details of a DocuSign template including its roles and fields"
              },
              "template_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign template ID"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "template_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "download_document"
                ],
                "description": "Download a document from a completed envelope"
              },
              "envelope_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign envelope ID"
              },
              "document_id": {
                "type": "string",
                "default": "combined",
                "description": "Document ID to download, or \"combined\" for all documents merged, or \"certificate\" for the certificate of completion"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "envelope_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "void_envelope"
                ],
                "description": "Void an in-progress envelope to cancel it"
              },
              "envelope_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign envelope ID to void"
              },
              "void_reason": {
                "type": "string",
                "minLength": 1,
                "description": "Reason for voiding the envelope"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "envelope_id",
              "void_reason"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "resend_envelope"
                ],
                "description": "Resend notifications to recipients who have not yet signed"
              },
              "envelope_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign envelope ID to resend"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "envelope_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "bulk_send_from_template"
                ],
                "description": "Create and send one envelope per recipient using a DocuSign template"
              },
              "template_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign template ID to use"
              },
              "recipients": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "Recipient email address"
                    },
                    "name": {
                      "type": "string",
                      "description": "Recipient full name"
                    },
                    "role_name": {
                      "type": "string",
                      "description": "Template role name to assign this recipient to"
                    }
                  },
                  "required": [
                    "email",
                    "name",
                    "role_name"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "description": "Array of recipients — one envelope is created per recipient"
              },
              "email_subject": {
                "type": "string",
                "description": "Override the template email subject"
              },
              "email_body": {
                "type": "string",
                "description": "Override the template email body"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "template_id",
              "recipients"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_signing_url"
                ],
                "description": "Generate an embedded signing URL for a recipient"
              },
              "envelope_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign envelope ID"
              },
              "signer_email": {
                "type": "string",
                "format": "email",
                "description": "Email of the signer who will use the embedded signing session"
              },
              "signer_name": {
                "type": "string",
                "description": "Full name of the signer"
              },
              "return_url": {
                "type": "string",
                "description": "URL to redirect the signer to after signing is complete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "envelope_id",
              "signer_email",
              "signer_name",
              "return_url"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "correct_recipient"
                ],
                "description": "Update a recipient email or name on an in-progress envelope"
              },
              "envelope_id": {
                "type": "string",
                "minLength": 1,
                "description": "DocuSign envelope ID"
              },
              "old_email": {
                "type": "string",
                "format": "email",
                "description": "Current email of the recipient to update (used to find recipientId)"
              },
              "new_email": {
                "type": "string",
                "format": "email",
                "description": "New email address for the recipient"
              },
              "new_name": {
                "type": "string",
                "description": "New name for the recipient (keeps existing name if omitted)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "envelope_id",
              "old_email",
              "new_email"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_envelope"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "envelope_id": {
                "type": "string",
                "description": "Created envelope ID"
              },
              "status": {
                "type": "string",
                "description": "Envelope status"
              },
              "status_date_time": {
                "type": "string",
                "description": "Status timestamp"
              },
              "uri": {
                "type": "string",
                "description": "Envelope URI"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_envelope_from_template"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "envelope_id": {
                "type": "string",
                "description": "Created envelope ID"
              },
              "status": {
                "type": "string",
                "description": "Envelope status"
              },
              "status_date_time": {
                "type": "string",
                "description": "Status timestamp"
              },
              "uri": {
                "type": "string",
                "description": "Envelope URI"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_envelope"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "envelope_id": {
                "type": "string",
                "description": "Envelope ID"
              },
              "status": {
                "type": "string",
                "description": "Current envelope status"
              },
              "email_subject": {
                "type": "string",
                "description": "Envelope email subject"
              },
              "sent_date_time": {
                "type": "string",
                "description": "When the envelope was sent"
              },
              "completed_date_time": {
                "type": "string",
                "description": "When signing was completed"
              },
              "declined_date_time": {
                "type": "string",
                "description": "When the envelope was declined"
              },
              "voided_date_time": {
                "type": "string",
                "description": "When the envelope was voided"
              },
              "status_changed_date_time": {
                "type": "string",
                "description": "When status last changed"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_envelopes"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "envelopes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "envelope_id": {
                      "type": "string",
                      "description": "Envelope ID"
                    },
                    "status": {
                      "type": "string",
                      "description": "Envelope status"
                    },
                    "email_subject": {
                      "type": "string",
                      "description": "Email subject"
                    },
                    "sent_date_time": {
                      "type": "string",
                      "description": "When sent"
                    },
                    "completed_date_time": {
                      "type": "string",
                      "description": "When completed"
                    },
                    "status_changed_date_time": {
                      "type": "string",
                      "description": "Last status change"
                    }
                  },
                  "required": [
                    "envelope_id",
                    "status"
                  ],
                  "additionalProperties": false
                },
                "description": "List of envelopes"
              },
              "result_set_size": {
                "type": "string",
                "description": "Number of results returned"
              },
              "total_set_size": {
                "type": "string",
                "description": "Total matching envelopes"
              },
              "next_uri": {
                "type": "string",
                "description": "URI for next page of results"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_recipients"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "signers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "description": "Signer email"
                    },
                    "name": {
                      "type": "string",
                      "description": "Signer name"
                    },
                    "status": {
                      "type": "string",
                      "description": "Signer status (sent, delivered, completed, declined, etc.)"
                    },
                    "signed_date_time": {
                      "type": "string",
                      "description": "When the signer signed"
                    },
                    "delivered_date_time": {
                      "type": "string",
                      "description": "When delivered to signer"
                    },
                    "declined_date_time": {
                      "type": "string",
                      "description": "When the signer declined"
                    },
                    "decline_reason": {
                      "type": "string",
                      "description": "Reason for declining"
                    },
                    "recipient_id": {
                      "type": "string",
                      "description": "Recipient ID"
                    },
                    "routing_order": {
                      "type": "string",
                      "description": "Routing order"
                    }
                  },
                  "required": [
                    "email",
                    "name",
                    "status"
                  ],
                  "additionalProperties": false
                },
                "description": "List of signers and their statuses"
              },
              "cc_recipients": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "description": "CC recipient email"
                    },
                    "name": {
                      "type": "string",
                      "description": "CC recipient name"
                    },
                    "status": {
                      "type": "string",
                      "description": "Delivery status"
                    },
                    "recipient_id": {
                      "type": "string",
                      "description": "Recipient ID"
                    }
                  },
                  "required": [
                    "email",
                    "name",
                    "status"
                  ],
                  "additionalProperties": false
                },
                "description": "List of CC recipients"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_templates"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "templates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "template_id": {
                      "type": "string",
                      "description": "Template ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Template name"
                    },
                    "description": {
                      "type": "string",
                      "description": "Template description"
                    },
                    "created": {
                      "type": "string",
                      "description": "When the template was created"
                    },
                    "last_modified": {
                      "type": "string",
                      "description": "When last modified"
                    }
                  },
                  "required": [
                    "template_id",
                    "name"
                  ],
                  "additionalProperties": false
                },
                "description": "List of templates"
              },
              "result_set_size": {
                "type": "string",
                "description": "Number of results returned"
              },
              "total_set_size": {
                "type": "string",
                "description": "Total matching templates"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_template"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "template_id": {
                "type": "string",
                "description": "Template ID"
              },
              "name": {
                "type": "string",
                "description": "Template name"
              },
              "description": {
                "type": "string",
                "description": "Template description"
              },
              "roles": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "role_name": {
                      "type": "string",
                      "description": "Role name used for signer mapping"
                    },
                    "role_id": {
                      "type": "string",
                      "description": "Role ID"
                    },
                    "signing_order": {
                      "type": "string",
                      "description": "Signing order"
                    }
                  },
                  "required": [
                    "role_name"
                  ],
                  "additionalProperties": false
                },
                "description": "Template roles that signers can be mapped to"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "tab_label": {
                      "type": "string",
                      "description": "Field label (use as key in template_data)"
                    },
                    "tab_type": {
                      "type": "string",
                      "description": "Field type (e.g., text, signHere, dateSigned)"
                    },
                    "role_name": {
                      "type": "string",
                      "description": "Which role this field belongs to"
                    }
                  },
                  "required": [
                    "tab_label",
                    "tab_type"
                  ],
                  "additionalProperties": false
                },
                "description": "Template fields/tabs that can be pre-filled"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "download_document"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "document_base64": {
                "type": "string",
                "description": "Base64-encoded document content"
              },
              "document_name": {
                "type": "string",
                "description": "Document file name"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "void_envelope"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "envelope_id": {
                "type": "string",
                "description": "Voided envelope ID"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "resend_envelope"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "envelope_id": {
                "type": "string",
                "description": "Resent envelope ID"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "bulk_send_from_template"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "envelope_id": {
                      "type": "string",
                      "description": "Created envelope ID"
                    },
                    "status": {
                      "type": "string",
                      "description": "Envelope status"
                    },
                    "recipient_email": {
                      "type": "string",
                      "description": "Recipient email address"
                    },
                    "error": {
                      "type": "string",
                      "description": "Error message if this individual send failed"
                    }
                  },
                  "required": [
                    "recipient_email"
                  ],
                  "additionalProperties": false
                },
                "description": "Array of results, one per recipient"
              },
              "total_sent": {
                "type": "number",
                "description": "Number of envelopes successfully sent"
              },
              "total_failed": {
                "type": "number",
                "description": "Number of envelopes that failed"
              },
              "error": {
                "type": "string",
                "description": "Error message if the entire operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_signing_url"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "signing_url": {
                "type": "string",
                "description": "Embedded signing URL"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "correct_recipient"
                ]
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful"
              },
              "envelope_id": {
                "type": "string",
                "description": "Envelope ID"
              },
              "old_email": {
                "type": "string",
                "description": "Previous recipient email"
              },
              "new_email": {
                "type": "string",
                "description": "Updated recipient email"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Create Envelope example\nconst docusign_create_envelope = new DocuSignBubble({\n  operation: \"create_envelope\", // Create and send a DocuSign envelope for signing\n  email_subject: \"example string\", // Subject line for the envelope email\n  documents: [{ name: \"example string\" // Document file name (e.g., \"Agreement.pdf\"), file_extension: \"pdf\" // default // File extension (pdf, docx, etc.), document_base64: \"example string\" // Base64-encoded document content, document_id: \"1\" // default // Unique document identifier within the envelope }], // Documents to include in the envelope\n  signers: [{ email: \"example string\" // Signer email address, name: \"example string\" // Signer full name, recipient_id: \"example string\" // Unique recipient identifier (auto-assigned if omitted), routing_order: \"1\" // default // Order in which signers receive the envelope, tabs: { sign_here: [{ document_id: \"1\" // default // Document to place the tab on, page_number: \"1\" // default // Page number for the tab, x_position: \"100\" // default // X position on the page, y_position: \"100\" // default // Y position on the page }] // Signature tab placements, date_signed: [{ document_id: \"1\" // default // Document to place the tab on, page_number: \"1\" // default // Page number for the tab, x_position: \"200\" // default // X position on the page, y_position: \"100\" // default // Y position on the page }] // Date signed tab placements, text: [{ document_id: \"1\" // default // Document to place the tab on, page_number: \"1\" // default // Page number for the tab, x_position: \"example string\" // X position on the page, y_position: \"example string\" // Y position on the page, tab_label: \"example string\" // Label for the text tab, value: \"example string\" // Pre-filled value for the text tab, required: \"true\" // default // Whether the tab is required }] // Text input tab placements } // Tab placements for this signer }], // Signers who need to sign the envelope\n  cc_recipients: [{ email: \"example string\" // CC recipient email address, name: \"example string\" // CC recipient full name, recipient_id: \"example string\" // Unique recipient identifier, routing_order: \"1\" // default // Routing order }], // CC recipients who receive a copy but do not sign\n  email_body: \"example string\", // Custom email body message for the envelope\n  status: \"sent\" // options: \"sent\", \"created\", // Envelope status: \"sent\" to send immediately, \"created\" to save as draft\n  reminder_enabled: true, // Enable automatic reminders\n  reminder_delay: \"example string\", // Days before first reminder is sent\n  reminder_frequency: \"example string\", // Days between subsequent reminders\n  expire_enabled: true, // Enable envelope expiration\n  expire_after: \"example string\", // Days until envelope expires\n  expire_warn: \"example string\", // Days before expiration to send warning\n});\n\nconst result = await docusign_create_envelope.action();\n// outputSchema for result.data when operation === 'create_envelope':\n// {\n//   operation: \"create_envelope\",\n//   success: boolean // Whether the operation was successful,\n//   envelope_id: string | undefined // Created envelope ID,\n//   status: string | undefined // Envelope status,\n//   status_date_time: string | undefined // Status timestamp,\n//   uri: string | undefined // Envelope URI,\n//   error: string // Error message if operation failed\n// }\n\n\n// Create Envelope From Template example\nconst docusign_create_envelope_from_template = new DocuSignBubble({\n  operation: \"create_envelope_from_template\", // Create and send an envelope using a DocuSign template\n  template_id: \"example string\", // DocuSign template ID to use\n  email_subject: \"example string\", // Override the template email subject\n  email_body: \"example string\", // Override the template email body\n  signers: [{ email: \"example string\" // Signer email address, name: \"example string\" // Signer full name, role_name: \"example string\" // Template role name to assign this signer to, recipient_id: \"example string\" // Unique recipient identifier }], // Signers mapped to template roles\n  cc_recipients: [{ email: \"example string\" // CC recipient email address, name: \"example string\" // CC recipient full name, role_name: \"example string\" // Template role name for this CC recipient, recipient_id: \"example string\" // Unique recipient identifier }], // CC recipients mapped to template roles\n  status: \"sent\" // options: \"sent\", \"created\", // Envelope status\n  template_data: { \"example_key\": \"example string\" }, // Key-value pairs to pre-fill template fields (tab labels to values)\n  reminder_enabled: true, // Enable automatic reminders\n  reminder_delay: \"example string\", // Days before first reminder\n  reminder_frequency: \"example string\", // Days between subsequent reminders\n  expire_enabled: true, // Enable envelope expiration\n  expire_after: \"example string\", // Days until envelope expires\n  expire_warn: \"example string\", // Days before expiration to warn\n});\n\nconst result = await docusign_create_envelope_from_template.action();\n// outputSchema for result.data when operation === 'create_envelope_from_template':\n// {\n//   operation: \"create_envelope_from_template\",\n//   success: boolean // Whether the operation was successful,\n//   envelope_id: string | undefined // Created envelope ID,\n//   status: string | undefined // Envelope status,\n//   status_date_time: string | undefined // Status timestamp,\n//   uri: string | undefined // Envelope URI,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Envelope example\nconst docusign_get_envelope = new DocuSignBubble({\n  operation: \"get_envelope\", // Get the status and details of an envelope\n  envelope_id: \"example string\", // DocuSign envelope ID\n});\n\nconst result = await docusign_get_envelope.action();\n// outputSchema for result.data when operation === 'get_envelope':\n// {\n//   operation: \"get_envelope\",\n//   success: boolean // Whether the operation was successful,\n//   envelope_id: string | undefined // Envelope ID,\n//   status: string | undefined // Current envelope status,\n//   email_subject: string | undefined // Envelope email subject,\n//   sent_date_time: string | undefined // When the envelope was sent,\n//   completed_date_time: string | undefined // When signing was completed,\n//   declined_date_time: string | undefined // When the envelope was declined,\n//   voided_date_time: string | undefined // When the envelope was voided,\n//   status_changed_date_time: string | undefined // When status last changed,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Envelopes example\nconst docusign_list_envelopes = new DocuSignBubble({\n  operation: \"list_envelopes\", // List envelopes with optional filters\n  from_date: \"example string\", // Start date for filtering (ISO 8601 format, e.g., \"2024-01-01T00:00:00Z\"). Defaults to 30 days ago.\n  to_date: \"example string\", // End date for filtering (ISO 8601 format)\n  status: \"example string\", // Filter by status: \"sent\", \"completed\", \"declined\", \"voided\", \"created\". Comma-separate for multiple.\n  search_text: \"example string\", // Search text to filter envelopes (searches subject, recipient names/emails)\n  count: \"25\" // default, // Number of envelopes to return (max 100)\n  start_position: \"example string\", // Starting position for pagination\n  order_by: \"example string\", // Field to order by (e.g., \"last_modified\", \"created\")\n  order: \"asc\" // options: \"asc\", \"desc\", // Sort order\n});\n\nconst result = await docusign_list_envelopes.action();\n// outputSchema for result.data when operation === 'list_envelopes':\n// {\n//   operation: \"list_envelopes\",\n//   success: boolean // Whether the operation was successful,\n//   envelopes: { envelope_id: string // Envelope ID, status: string // Envelope status, email_subject: string | undefined // Email subject, sent_date_time: string | undefined // When sent, completed_date_time: string | undefined // When completed, status_changed_date_time: string | undefined // Last status change }[] | undefined // List of envelopes,\n//   result_set_size: string | undefined // Number of results returned,\n//   total_set_size: string | undefined // Total matching envelopes,\n//   next_uri: string | undefined // URI for next page of results,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Recipients example\nconst docusign_get_recipients = new DocuSignBubble({\n  operation: \"get_recipients\", // Get the recipient status details for an envelope\n  envelope_id: \"example string\", // DocuSign envelope ID\n});\n\nconst result = await docusign_get_recipients.action();\n// outputSchema for result.data when operation === 'get_recipients':\n// {\n//   operation: \"get_recipients\",\n//   success: boolean // Whether the operation was successful,\n//   signers: { email: string // Signer email, name: string // Signer name, status: string // Signer status (sent, delivered, completed, declined, etc.), signed_date_time: string | undefined // When the signer signed, delivered_date_time: string | undefined // When delivered to signer, declined_date_time: string | undefined // When the signer declined, decline_reason: string | undefined // Reason for declining, recipient_id: string | undefined // Recipient ID, routing_order: string | undefined // Routing order }[] | undefined // List of signers and their statuses,\n//   cc_recipients: { email: string // CC recipient email, name: string // CC recipient name, status: string // Delivery status, recipient_id: string | undefined // Recipient ID }[] | undefined // List of CC recipients,\n//   error: string // Error message if operation failed\n// }\n\n\n// List Templates example\nconst docusign_list_templates = new DocuSignBubble({\n  operation: \"list_templates\", // List available DocuSign templates\n  search_text: \"example string\", // Search text to filter templates by name\n  count: \"25\" // default, // Number of templates to return\n});\n\nconst result = await docusign_list_templates.action();\n// outputSchema for result.data when operation === 'list_templates':\n// {\n//   operation: \"list_templates\",\n//   success: boolean // Whether the operation was successful,\n//   templates: { template_id: string // Template ID, name: string // Template name, description: string | undefined // Template description, created: string | undefined // When the template was created, last_modified: string | undefined // When last modified }[] | undefined // List of templates,\n//   result_set_size: string | undefined // Number of results returned,\n//   total_set_size: string | undefined // Total matching templates,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Template example\nconst docusign_get_template = new DocuSignBubble({\n  operation: \"get_template\", // Get details of a DocuSign template including its roles and fields\n  template_id: \"example string\", // DocuSign template ID\n});\n\nconst result = await docusign_get_template.action();\n// outputSchema for result.data when operation === 'get_template':\n// {\n//   operation: \"get_template\",\n//   success: boolean // Whether the operation was successful,\n//   template_id: string | undefined // Template ID,\n//   name: string | undefined // Template name,\n//   description: string | undefined // Template description,\n//   roles: { role_name: string // Role name used for signer mapping, role_id: string | undefined // Role ID, signing_order: string | undefined // Signing order }[] | undefined // Template roles that signers can be mapped to,\n//   fields: { tab_label: string // Field label (use as key in template_data), tab_type: string // Field type (e.g., text, signHere, dateSigned), role_name: string | undefined // Which role this field belongs to }[] | undefined // Template fields/tabs that can be pre-filled,\n//   error: string // Error message if operation failed\n// }\n\n\n// Download Document example\nconst docusign_download_document = new DocuSignBubble({\n  operation: \"download_document\", // Download a document from a completed envelope\n  envelope_id: \"example string\", // DocuSign envelope ID\n  document_id: \"combined\" // default, // Document ID to download, or \"combined\" for all documents merged, or \"certificate\" for the certificate of completion\n});\n\nconst result = await docusign_download_document.action();\n// outputSchema for result.data when operation === 'download_document':\n// {\n//   operation: \"download_document\",\n//   success: boolean // Whether the operation was successful,\n//   document_base64: string | undefined // Base64-encoded document content,\n//   document_name: string | undefined // Document file name,\n//   error: string // Error message if operation failed\n// }\n\n\n// Void Envelope example\nconst docusign_void_envelope = new DocuSignBubble({\n  operation: \"void_envelope\", // Void an in-progress envelope to cancel it\n  envelope_id: \"example string\", // DocuSign envelope ID to void\n  void_reason: \"example string\", // Reason for voiding the envelope\n});\n\nconst result = await docusign_void_envelope.action();\n// outputSchema for result.data when operation === 'void_envelope':\n// {\n//   operation: \"void_envelope\",\n//   success: boolean // Whether the operation was successful,\n//   envelope_id: string | undefined // Voided envelope ID,\n//   error: string // Error message if operation failed\n// }\n\n\n// Resend Envelope example\nconst docusign_resend_envelope = new DocuSignBubble({\n  operation: \"resend_envelope\", // Resend notifications to recipients who have not yet signed\n  envelope_id: \"example string\", // DocuSign envelope ID to resend\n});\n\nconst result = await docusign_resend_envelope.action();\n// outputSchema for result.data when operation === 'resend_envelope':\n// {\n//   operation: \"resend_envelope\",\n//   success: boolean // Whether the operation was successful,\n//   envelope_id: string | undefined // Resent envelope ID,\n//   error: string // Error message if operation failed\n// }\n\n\n// Bulk Send From Template example\nconst docusign_bulk_send_from_template = new DocuSignBubble({\n  operation: \"bulk_send_from_template\", // Create and send one envelope per recipient using a DocuSign template\n  template_id: \"example string\", // DocuSign template ID to use\n  recipients: [{ email: \"example string\" // Recipient email address, name: \"example string\" // Recipient full name, role_name: \"example string\" // Template role name to assign this recipient to }], // Array of recipients — one envelope is created per recipient\n  email_subject: \"example string\", // Override the template email subject\n  email_body: \"example string\", // Override the template email body\n});\n\nconst result = await docusign_bulk_send_from_template.action();\n// outputSchema for result.data when operation === 'bulk_send_from_template':\n// {\n//   operation: \"bulk_send_from_template\",\n//   success: boolean // Whether the operation was successful,\n//   results: { envelope_id: string | undefined // Created envelope ID, status: string | undefined // Envelope status, recipient_email: string // Recipient email address, error: string | undefined // Error message if this individual send failed }[] | undefined // Array of results, one per recipient,\n//   total_sent: number | undefined // Number of envelopes successfully sent,\n//   total_failed: number | undefined // Number of envelopes that failed,\n//   error: string // Error message if the entire operation failed\n// }\n\n\n// Get Signing Url example\nconst docusign_get_signing_url = new DocuSignBubble({\n  operation: \"get_signing_url\", // Generate an embedded signing URL for a recipient\n  envelope_id: \"example string\", // DocuSign envelope ID\n  signer_email: \"example string\", // Email of the signer who will use the embedded signing session\n  signer_name: \"example string\", // Full name of the signer\n  return_url: \"example string\", // URL to redirect the signer to after signing is complete\n});\n\nconst result = await docusign_get_signing_url.action();\n// outputSchema for result.data when operation === 'get_signing_url':\n// {\n//   operation: \"get_signing_url\",\n//   success: boolean // Whether the operation was successful,\n//   signing_url: string | undefined // Embedded signing URL,\n//   error: string // Error message if operation failed\n// }\n\n\n// Correct Recipient example\nconst docusign_correct_recipient = new DocuSignBubble({\n  operation: \"correct_recipient\", // Update a recipient email or name on an in-progress envelope\n  envelope_id: \"example string\", // DocuSign envelope ID\n  old_email: \"example string\", // Current email of the recipient to update (used to find recipientId)\n  new_email: \"example string\", // New email address for the recipient\n  new_name: \"example string\", // New name for the recipient (keeps existing name if omitted)\n});\n\nconst result = await docusign_correct_recipient.action();\n// outputSchema for result.data when operation === 'correct_recipient':\n// {\n//   operation: \"correct_recipient\",\n//   success: boolean // Whether the operation was successful,\n//   envelope_id: string | undefined // Envelope ID,\n//   old_email: string | undefined // Previous recipient email,\n//   new_email: string | undefined // Updated recipient email,\n//   error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`docusign failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "DOCUSIGN_CRED"
      ]
    },
    {
      "name": "metabase",
      "alias": "analytics",
      "type": "service",
      "shortDescription": "Metabase integration for dashboards, cards, and analytics queries",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_dashboard"
                ],
                "description": "Get dashboard by ID"
              },
              "dashboard_id": {
                "type": "number",
                "description": "The dashboard ID to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation",
              "dashboard_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_dashboards"
                ],
                "description": "List all available dashboards"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_card"
                ],
                "description": "Get card metadata by ID"
              },
              "card_id": {
                "type": "number",
                "description": "The card ID to retrieve"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation",
              "card_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "query_card"
                ],
                "description": "Execute a card's query and return results"
              },
              "card_id": {
                "type": "number",
                "description": "The card ID to query"
              },
              "pivot": {
                "type": "boolean",
                "description": "Use the pivot endpoint (/api/card/pivot/:id/query) for pivot-table results"
              },
              "parameters": {
                "type": "object",
                "additionalProperties": {},
                "description": "Optional query parameters (filters)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation",
              "card_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_dashboard"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique dashboard identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Dashboard name"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Dashboard description"
                  },
                  "collection_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Collection the dashboard belongs to"
                  },
                  "dashcards": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Unique dashcard identifier"
                        },
                        "card_id": {
                          "type": "number",
                          "nullable": true,
                          "description": "ID of the card in this dashcard"
                        },
                        "card": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number",
                              "nullable": true,
                              "description": "Card ID (null/absent for text/heading dashcards)"
                            },
                            "name": {
                              "type": "string",
                              "nullable": true,
                              "description": "Card name (null/absent for text/heading dashcards)"
                            },
                            "display": {
                              "type": "string",
                              "description": "Card display type"
                            },
                            "description": {
                              "type": "string",
                              "nullable": true,
                              "description": "Card description"
                            }
                          },
                          "additionalProperties": true,
                          "nullable": true,
                          "description": "Embedded card metadata (null for virtual/text dashcards)"
                        },
                        "row": {
                          "type": "number",
                          "description": "Row position on dashboard grid"
                        },
                        "col": {
                          "type": "number",
                          "description": "Column position on dashboard grid"
                        },
                        "size_x": {
                          "type": "number",
                          "description": "Width in grid units"
                        },
                        "size_y": {
                          "type": "number",
                          "description": "Height in grid units"
                        }
                      },
                      "required": [
                        "id",
                        "card_id",
                        "row",
                        "col",
                        "size_x",
                        "size_y"
                      ],
                      "additionalProperties": true,
                      "description": "Dashboard card (dashcard) object"
                    },
                    "description": "List of dashcards on this dashboard"
                  },
                  "parameters": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    "description": "Dashboard filter parameters"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": true,
                "description": "Metabase dashboard object"
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_dashboards"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "type": "object",
                "properties": {
                  "dashboards": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "Unique dashboard identifier"
                        },
                        "name": {
                          "type": "string",
                          "description": "Dashboard name"
                        },
                        "description": {
                          "type": "string",
                          "nullable": true,
                          "description": "Dashboard description"
                        },
                        "collection_id": {
                          "type": "number",
                          "nullable": true,
                          "description": "Collection the dashboard belongs to"
                        },
                        "model": {
                          "type": "string",
                          "description": "Entity model type"
                        },
                        "created_at": {
                          "type": "string",
                          "description": "Creation timestamp"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": true,
                      "description": "Dashboard list item"
                    }
                  },
                  "total": {
                    "type": "number"
                  }
                },
                "required": [
                  "dashboards",
                  "total"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_card"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number",
                    "description": "Unique card identifier"
                  },
                  "name": {
                    "type": "string",
                    "description": "Card name"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Card description"
                  },
                  "display": {
                    "type": "string",
                    "description": "Visualization type"
                  },
                  "collection_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Collection the card belongs to"
                  },
                  "database_id": {
                    "type": "number",
                    "nullable": true,
                    "description": "Database this card queries"
                  },
                  "dataset_query": {
                    "type": "object",
                    "additionalProperties": {},
                    "description": "The query definition"
                  },
                  "result_metadata": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    "description": "Column metadata from the result"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Creation timestamp"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Last update timestamp"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": true,
                "description": "Metabase card (saved question) object"
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "query_card"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "items": {}
                    },
                    "description": "Result data rows"
                  },
                  "cols": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Column name"
                        },
                        "display_name": {
                          "type": "string",
                          "description": "Display name for column"
                        },
                        "base_type": {
                          "type": "string",
                          "description": "Base data type of column"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "additionalProperties": true
                    },
                    "description": "Column metadata"
                  },
                  "row_count": {
                    "type": "number",
                    "description": "Total number of rows returned"
                  },
                  "status": {
                    "type": "string",
                    "description": "Query execution status"
                  }
                },
                "required": [
                  "rows",
                  "cols"
                ],
                "additionalProperties": true,
                "description": "Flattened Metabase query result — rows and cols at top level"
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Get Dashboard example\nconst metabase_get_dashboard = new MetabaseBubble({\n  operation: \"get_dashboard\", // Get dashboard by ID\n  dashboard_id: 42, // The dashboard ID to retrieve\n});\n\nconst result = await metabase_get_dashboard.action();\n// outputSchema for result.data when operation === 'get_dashboard':\n// {\n//   operation: \"get_dashboard\",\n//   success: boolean,\n//   error: string,\n//   data: { id: number // Unique dashboard identifier, name: string // Dashboard name, description: string | null | undefined // Dashboard description, collection_id: number | null | undefined // Collection the dashboard belongs to, dashcards: { id: number // Unique dashcard identifier, card_id: number | null // ID of the card in this dashcard, card: { id: number | null | undefined // Card ID (null/absent for text/heading dashcards), name: string | null | undefined // Card name (null/absent for text/heading dashcards), display: string | undefined // Card display type, description: string | null | undefined // Card description } | null | undefined // Embedded card metadata (null for virtual/text dashcards), row: number // Row position on dashboard grid, col: number // Column position on dashboard grid, size_x: number // Width in grid units, size_y: number // Height in grid units }[] | undefined // List of dashcards on this dashboard, parameters: Record<string, unknown>[] | undefined // Dashboard filter parameters, created_at: string | undefined // Creation timestamp, updated_at: string | undefined // Last update timestamp } | undefined // Metabase dashboard object\n// }\n\n\n// List Dashboards example\nconst metabase_list_dashboards = new MetabaseBubble({\n  operation: \"list_dashboards\", // List all available dashboards\n});\n\nconst result = await metabase_list_dashboards.action();\n// outputSchema for result.data when operation === 'list_dashboards':\n// {\n//   operation: \"list_dashboards\",\n//   success: boolean,\n//   error: string,\n//   data: { dashboards: { id: number // Unique dashboard identifier, name: string // Dashboard name, description: string | null | undefined // Dashboard description, collection_id: number | null | undefined // Collection the dashboard belongs to, model: string | undefined // Entity model type, created_at: string | undefined // Creation timestamp }[], total: number } | undefined\n// }\n\n\n// Get Card example\nconst metabase_get_card = new MetabaseBubble({\n  operation: \"get_card\", // Get card metadata by ID\n  card_id: 42, // The card ID to retrieve\n});\n\nconst result = await metabase_get_card.action();\n// outputSchema for result.data when operation === 'get_card':\n// {\n//   operation: \"get_card\",\n//   success: boolean,\n//   error: string,\n//   data: { id: number // Unique card identifier, name: string // Card name, description: string | null | undefined // Card description, display: string | undefined // Visualization type, collection_id: number | null | undefined // Collection the card belongs to, database_id: number | null | undefined // Database this card queries, dataset_query: Record<string, unknown> | undefined // The query definition, result_metadata: Record<string, unknown>[] | undefined // Column metadata from the result, created_at: string | undefined // Creation timestamp, updated_at: string | undefined // Last update timestamp } | undefined // Metabase card (saved question) object\n// }\n\n\n// Query Card example\nconst metabase_query_card = new MetabaseBubble({\n  operation: \"query_card\", // Execute a card's query and return results\n  card_id: 42, // The card ID to query\n  pivot: true, // Use the pivot endpoint (/api/card/pivot/:id/query) for pivot-table results\n  parameters: {}, // Optional query parameters (filters)\n});\n\nconst result = await metabase_query_card.action();\n// outputSchema for result.data when operation === 'query_card':\n// {\n//   operation: \"query_card\",\n//   success: boolean,\n//   error: string,\n//   data: { rows: unknown[][] // Result data rows, cols: { name: string // Column name, display_name: string | undefined // Display name for column, base_type: string | undefined // Base data type of column }[] // Column metadata, row_count: number | undefined // Total number of rows returned, status: string | undefined // Query execution status } | undefined // Flattened Metabase query result — rows and cols at top level\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`metabase failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "METABASE_CRED"
      ]
    },
    {
      "name": "clerk",
      "alias": "clerk",
      "type": "service",
      "shortDescription": "Clerk integration for user management, organizations, and billing",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ],
                "description": "List users with optional filtering and pagination"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 10,
                "description": "Maximum number of users to return (1-500)"
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "default": 0,
                "description": "Number of users to skip for pagination"
              },
              "order_by": {
                "type": "string",
                "description": "Sort field (e.g. \"-created_at\" for newest first, \"+created_at\" for oldest)"
              },
              "query": {
                "type": "string",
                "description": "Search query across first name, last name, and email"
              },
              "email_address": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Filter by specific email addresses"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ],
                "description": "Get a single user by their ID"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "description": "The Clerk user ID (e.g. \"user_abc123\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_user"
                ],
                "description": "Create a new user in Clerk"
              },
              "email_address": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "email"
                },
                "minItems": 1,
                "description": "Email addresses for the new user"
              },
              "first_name": {
                "type": "string",
                "description": "First name"
              },
              "last_name": {
                "type": "string",
                "description": "Last name"
              },
              "username": {
                "type": "string",
                "description": "Username"
              },
              "password": {
                "type": "string",
                "description": "Password for the user"
              },
              "public_metadata": {
                "type": "object",
                "additionalProperties": {},
                "description": "Public metadata visible to frontend and backend"
              },
              "private_metadata": {
                "type": "object",
                "additionalProperties": {},
                "description": "Private metadata visible only to the backend"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "email_address"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_user"
                ],
                "description": "Update an existing user"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "description": "The Clerk user ID to update"
              },
              "first_name": {
                "type": "string",
                "description": "Updated first name"
              },
              "last_name": {
                "type": "string",
                "description": "Updated last name"
              },
              "username": {
                "type": "string",
                "description": "Updated username"
              },
              "public_metadata": {
                "type": "object",
                "additionalProperties": {},
                "description": "Updated public metadata"
              },
              "private_metadata": {
                "type": "object",
                "additionalProperties": {},
                "description": "Updated private metadata"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_user"
                ],
                "description": "Delete a user by ID"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "description": "The Clerk user ID to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "ban_user"
                ],
                "description": "Ban a user, preventing them from signing in"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "description": "The Clerk user ID to ban"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "unban_user"
                ],
                "description": "Unban a previously banned user"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "description": "The Clerk user ID to unban"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_organizations"
                ],
                "description": "List all organizations"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 10,
                "description": "Maximum number of organizations to return"
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "default": 0,
                "description": "Number of organizations to skip for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_organization"
                ],
                "description": "Get a single organization by ID or slug"
              },
              "organization_id": {
                "type": "string",
                "minLength": 1,
                "description": "Organization ID or slug"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "organization_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_organization"
                ],
                "description": "Create a new organization"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Organization name"
              },
              "slug": {
                "type": "string",
                "description": "URL-friendly slug"
              },
              "created_by": {
                "type": "string",
                "description": "User ID of the organization creator"
              },
              "public_metadata": {
                "type": "object",
                "additionalProperties": {},
                "description": "Public metadata for the organization"
              },
              "private_metadata": {
                "type": "object",
                "additionalProperties": {},
                "description": "Private metadata for the organization"
              },
              "max_allowed_memberships": {
                "type": "integer",
                "description": "Maximum number of members allowed"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "name"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_organization"
                ],
                "description": "Update an existing organization"
              },
              "organization_id": {
                "type": "string",
                "minLength": 1,
                "description": "Organization ID or slug to update"
              },
              "name": {
                "type": "string",
                "description": "Updated organization name"
              },
              "slug": {
                "type": "string",
                "description": "Updated slug"
              },
              "public_metadata": {
                "type": "object",
                "additionalProperties": {},
                "description": "Updated public metadata"
              },
              "private_metadata": {
                "type": "object",
                "additionalProperties": {},
                "description": "Updated private metadata"
              },
              "max_allowed_memberships": {
                "type": "integer",
                "description": "Updated max allowed memberships"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "organization_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_organization"
                ],
                "description": "Delete an organization by ID or slug"
              },
              "organization_id": {
                "type": "string",
                "minLength": 1,
                "description": "Organization ID or slug to delete"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "organization_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_organization_memberships"
                ],
                "description": "List memberships for an organization"
              },
              "organization_id": {
                "type": "string",
                "minLength": 1,
                "description": "Organization ID to list memberships for"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 10,
                "description": "Maximum number of memberships to return"
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "default": 0,
                "description": "Number of memberships to skip for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "organization_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_invitations"
                ],
                "description": "List all pending invitations"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 10,
                "description": "Maximum number of invitations to return"
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "default": 0,
                "description": "Number of invitations to skip for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_invitation"
                ],
                "description": "Create an invitation to sign up"
              },
              "email_address": {
                "type": "string",
                "format": "email",
                "description": "Email address to invite"
              },
              "redirect_url": {
                "type": "string",
                "format": "uri",
                "description": "URL to redirect to after the invitation is accepted"
              },
              "public_metadata": {
                "type": "object",
                "additionalProperties": {},
                "description": "Public metadata for the invitation"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "email_address"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "revoke_invitation"
                ],
                "description": "Revoke a pending invitation"
              },
              "invitation_id": {
                "type": "string",
                "minLength": 1,
                "description": "The invitation ID to revoke (e.g. \"inv_abc123\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "invitation_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_sessions"
                ],
                "description": "List sessions for a user"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "description": "User ID to list sessions for (required by Clerk API)"
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "ended",
                  "expired",
                  "removed",
                  "replaced",
                  "revoked",
                  "abandoned"
                ],
                "description": "Filter by session status"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 10,
                "description": "Maximum number of sessions to return"
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "default": 0,
                "description": "Number of sessions to skip for pagination"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "revoke_session"
                ],
                "description": "Revoke an active session"
              },
              "session_id": {
                "type": "string",
                "minLength": 1,
                "description": "The session ID to revoke"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "session_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user_subscription"
                ],
                "description": "Get a user's billing subscription status"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "description": "The user ID to get subscription info for"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "user_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_organization_subscription"
                ],
                "description": "Get an organization's billing subscription status"
              },
              "organization_id": {
                "type": "string",
                "minLength": 1,
                "description": "The organization ID to get subscription info for"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "organization_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_users"
                ]
              },
              "users": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "total_count": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ]
              },
              "user": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_user"
                ]
              },
              "user": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_user"
                ]
              },
              "user": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_user"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "ban_user"
                ]
              },
              "user": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "unban_user"
                ]
              },
              "user": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_organizations"
                ]
              },
              "organizations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "total_count": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_organization"
                ]
              },
              "organization": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_organization"
                ]
              },
              "organization": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "update_organization"
                ]
              },
              "organization": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "delete_organization"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_organization_memberships"
                ]
              },
              "memberships": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "total_count": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_invitations"
                ]
              },
              "invitations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "total_count": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_invitation"
                ]
              },
              "invitation": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "revoke_invitation"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_sessions"
                ]
              },
              "sessions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "total_count": {
                "type": "number"
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "revoke_session"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user_subscription"
                ]
              },
              "subscription": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_organization_subscription"
                ]
              },
              "subscription": {
                "type": "object",
                "additionalProperties": {}
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Users example\nconst clerk_list_users = new ClerkBubble({\n  operation: \"list_users\", // List users with optional filtering and pagination\n  limit: 10 // default, // Maximum number of users to return (1-500)\n  offset: 0 // default, // Number of users to skip for pagination\n  order_by: \"example string\", // Sort field (e.g. \"-created_at\" for newest first, \"+created_at\" for oldest)\n  query: \"example string\", // Search query across first name, last name, and email\n  email_address: [\"example string\"], // Filter by specific email addresses\n});\n\nconst result = await clerk_list_users.action();\n// outputSchema for result.data when operation === 'list_users':\n// {\n//   operation: \"list_users\",\n//   users: Record<string, unknown>[] | undefined,\n//   total_count: number | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Get User example\nconst clerk_get_user = new ClerkBubble({\n  operation: \"get_user\", // Get a single user by their ID\n  user_id: \"example string\", // The Clerk user ID (e.g. \"user_abc123\")\n});\n\nconst result = await clerk_get_user.action();\n// outputSchema for result.data when operation === 'get_user':\n// {\n//   operation: \"get_user\",\n//   user: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Create User example\nconst clerk_create_user = new ClerkBubble({\n  operation: \"create_user\", // Create a new user in Clerk\n  email_address: [\"example string\"], // Email addresses for the new user\n  first_name: \"example string\", // First name\n  last_name: \"example string\", // Last name\n  username: \"example string\", // Username\n  password: \"example string\", // Password for the user\n  public_metadata: {}, // Public metadata visible to frontend and backend\n  private_metadata: {}, // Private metadata visible only to the backend\n});\n\nconst result = await clerk_create_user.action();\n// outputSchema for result.data when operation === 'create_user':\n// {\n//   operation: \"create_user\",\n//   user: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Update User example\nconst clerk_update_user = new ClerkBubble({\n  operation: \"update_user\", // Update an existing user\n  user_id: \"example string\", // The Clerk user ID to update\n  first_name: \"example string\", // Updated first name\n  last_name: \"example string\", // Updated last name\n  username: \"example string\", // Updated username\n  public_metadata: {}, // Updated public metadata\n  private_metadata: {}, // Updated private metadata\n});\n\nconst result = await clerk_update_user.action();\n// outputSchema for result.data when operation === 'update_user':\n// {\n//   operation: \"update_user\",\n//   user: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Delete User example\nconst clerk_delete_user = new ClerkBubble({\n  operation: \"delete_user\", // Delete a user by ID\n  user_id: \"example string\", // The Clerk user ID to delete\n});\n\nconst result = await clerk_delete_user.action();\n// outputSchema for result.data when operation === 'delete_user':\n// {\n//   operation: \"delete_user\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Ban User example\nconst clerk_ban_user = new ClerkBubble({\n  operation: \"ban_user\", // Ban a user, preventing them from signing in\n  user_id: \"example string\", // The Clerk user ID to ban\n});\n\nconst result = await clerk_ban_user.action();\n// outputSchema for result.data when operation === 'ban_user':\n// {\n//   operation: \"ban_user\",\n//   user: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Unban User example\nconst clerk_unban_user = new ClerkBubble({\n  operation: \"unban_user\", // Unban a previously banned user\n  user_id: \"example string\", // The Clerk user ID to unban\n});\n\nconst result = await clerk_unban_user.action();\n// outputSchema for result.data when operation === 'unban_user':\n// {\n//   operation: \"unban_user\",\n//   user: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Organizations example\nconst clerk_list_organizations = new ClerkBubble({\n  operation: \"list_organizations\", // List all organizations\n  limit: 10 // default, // Maximum number of organizations to return\n  offset: 0 // default, // Number of organizations to skip for pagination\n});\n\nconst result = await clerk_list_organizations.action();\n// outputSchema for result.data when operation === 'list_organizations':\n// {\n//   operation: \"list_organizations\",\n//   organizations: Record<string, unknown>[] | undefined,\n//   total_count: number | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Get Organization example\nconst clerk_get_organization = new ClerkBubble({\n  operation: \"get_organization\", // Get a single organization by ID or slug\n  organization_id: \"example string\", // Organization ID or slug\n});\n\nconst result = await clerk_get_organization.action();\n// outputSchema for result.data when operation === 'get_organization':\n// {\n//   operation: \"get_organization\",\n//   organization: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Create Organization example\nconst clerk_create_organization = new ClerkBubble({\n  operation: \"create_organization\", // Create a new organization\n  name: \"example string\", // Organization name\n  slug: \"example string\", // URL-friendly slug\n  created_by: \"example string\", // User ID of the organization creator\n  public_metadata: {}, // Public metadata for the organization\n  private_metadata: {}, // Private metadata for the organization\n  max_allowed_memberships: 42, // Maximum number of members allowed\n});\n\nconst result = await clerk_create_organization.action();\n// outputSchema for result.data when operation === 'create_organization':\n// {\n//   operation: \"create_organization\",\n//   organization: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Update Organization example\nconst clerk_update_organization = new ClerkBubble({\n  operation: \"update_organization\", // Update an existing organization\n  organization_id: \"example string\", // Organization ID or slug to update\n  name: \"example string\", // Updated organization name\n  slug: \"example string\", // Updated slug\n  public_metadata: {}, // Updated public metadata\n  private_metadata: {}, // Updated private metadata\n  max_allowed_memberships: 42, // Updated max allowed memberships\n});\n\nconst result = await clerk_update_organization.action();\n// outputSchema for result.data when operation === 'update_organization':\n// {\n//   operation: \"update_organization\",\n//   organization: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Delete Organization example\nconst clerk_delete_organization = new ClerkBubble({\n  operation: \"delete_organization\", // Delete an organization by ID or slug\n  organization_id: \"example string\", // Organization ID or slug to delete\n});\n\nconst result = await clerk_delete_organization.action();\n// outputSchema for result.data when operation === 'delete_organization':\n// {\n//   operation: \"delete_organization\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Organization Memberships example\nconst clerk_list_organization_memberships = new ClerkBubble({\n  operation: \"list_organization_memberships\", // List memberships for an organization\n  organization_id: \"example string\", // Organization ID to list memberships for\n  limit: 10 // default, // Maximum number of memberships to return\n  offset: 0 // default, // Number of memberships to skip for pagination\n});\n\nconst result = await clerk_list_organization_memberships.action();\n// outputSchema for result.data when operation === 'list_organization_memberships':\n// {\n//   operation: \"list_organization_memberships\",\n//   memberships: Record<string, unknown>[] | undefined,\n//   total_count: number | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Invitations example\nconst clerk_list_invitations = new ClerkBubble({\n  operation: \"list_invitations\", // List all pending invitations\n  limit: 10 // default, // Maximum number of invitations to return\n  offset: 0 // default, // Number of invitations to skip for pagination\n});\n\nconst result = await clerk_list_invitations.action();\n// outputSchema for result.data when operation === 'list_invitations':\n// {\n//   operation: \"list_invitations\",\n//   invitations: Record<string, unknown>[] | undefined,\n//   total_count: number | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Create Invitation example\nconst clerk_create_invitation = new ClerkBubble({\n  operation: \"create_invitation\", // Create an invitation to sign up\n  email_address: \"example string\", // Email address to invite\n  redirect_url: \"example string\", // URL to redirect to after the invitation is accepted\n  public_metadata: {}, // Public metadata for the invitation\n});\n\nconst result = await clerk_create_invitation.action();\n// outputSchema for result.data when operation === 'create_invitation':\n// {\n//   operation: \"create_invitation\",\n//   invitation: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Revoke Invitation example\nconst clerk_revoke_invitation = new ClerkBubble({\n  operation: \"revoke_invitation\", // Revoke a pending invitation\n  invitation_id: \"example string\", // The invitation ID to revoke (e.g. \"inv_abc123\")\n});\n\nconst result = await clerk_revoke_invitation.action();\n// outputSchema for result.data when operation === 'revoke_invitation':\n// {\n//   operation: \"revoke_invitation\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// List Sessions example\nconst clerk_list_sessions = new ClerkBubble({\n  operation: \"list_sessions\", // List sessions for a user\n  user_id: \"example string\", // User ID to list sessions for (required by Clerk API)\n  status: \"active\" // options: \"active\", \"ended\", \"expired\", \"removed\", \"replaced\", \"revoked\", \"abandoned\", // Filter by session status\n  limit: 10 // default, // Maximum number of sessions to return\n  offset: 0 // default, // Number of sessions to skip for pagination\n});\n\nconst result = await clerk_list_sessions.action();\n// outputSchema for result.data when operation === 'list_sessions':\n// {\n//   operation: \"list_sessions\",\n//   sessions: Record<string, unknown>[] | undefined,\n//   total_count: number | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Revoke Session example\nconst clerk_revoke_session = new ClerkBubble({\n  operation: \"revoke_session\", // Revoke an active session\n  session_id: \"example string\", // The session ID to revoke\n});\n\nconst result = await clerk_revoke_session.action();\n// outputSchema for result.data when operation === 'revoke_session':\n// {\n//   operation: \"revoke_session\",\n//   success: boolean,\n//   error: string\n// }\n\n\n// Get User Subscription example\nconst clerk_get_user_subscription = new ClerkBubble({\n  operation: \"get_user_subscription\", // Get a user's billing subscription status\n  user_id: \"example string\", // The user ID to get subscription info for\n});\n\nconst result = await clerk_get_user_subscription.action();\n// outputSchema for result.data when operation === 'get_user_subscription':\n// {\n//   operation: \"get_user_subscription\",\n//   subscription: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Get Organization Subscription example\nconst clerk_get_organization_subscription = new ClerkBubble({\n  operation: \"get_organization_subscription\", // Get an organization's billing subscription status\n  organization_id: \"example string\", // The organization ID to get subscription info for\n});\n\nconst result = await clerk_get_organization_subscription.action();\n// outputSchema for result.data when operation === 'get_organization_subscription':\n// {\n//   operation: \"get_organization_subscription\",\n//   subscription: Record<string, unknown> | undefined,\n//   success: boolean,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`clerk failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "CLERK_CRED"
      ]
    },
    {
      "name": "granola",
      "alias": "granola-notes",
      "type": "service",
      "shortDescription": "Granola meeting notes and transcription integration",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_notes"
                ],
                "description": "List accessible meeting notes with pagination"
              },
              "createdBefore": {
                "type": "string",
                "description": "Filter notes created before this date (ISO 8601 date or datetime)"
              },
              "createdAfter": {
                "type": "string",
                "description": "Filter notes created after this date (ISO 8601 date or datetime)"
              },
              "updatedAfter": {
                "type": "string",
                "description": "Filter notes updated after this date (ISO 8601 date or datetime)"
              },
              "cursor": {
                "type": "string",
                "description": "Pagination cursor from previous response"
              },
              "pageSize": {
                "type": "integer",
                "minimum": 1,
                "maximum": 30,
                "default": 10,
                "description": "Number of notes per page (1-30, default 10)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential map for authentication"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_note"
                ],
                "description": "Retrieve a single note with full details"
              },
              "noteId": {
                "type": "string",
                "description": "The note ID to retrieve (format: not_XXXXXXXXXXXXXX)"
              },
              "sections": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "summary",
                    "attendees",
                    "calendar",
                    "folders",
                    "transcript"
                  ]
                },
                "description": "Which sections to return. Default: [\"summary\",\"attendees\",\"calendar\",\"folders\"] (transcript excluded — request it only when needed)."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential map for authentication"
              }
            },
            "required": [
              "operation",
              "noteId"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_notes"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "notes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Note ID (format: not_XXXXXXXXXXXXXX)"
                    },
                    "title": {
                      "type": "string",
                      "nullable": true,
                      "description": "Meeting title"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "nullable": true,
                          "description": "User display name"
                        },
                        "email": {
                          "type": "string",
                          "description": "User email address"
                        }
                      },
                      "required": [
                        "name",
                        "email"
                      ],
                      "additionalProperties": false,
                      "description": "Note owner"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "Creation timestamp (ISO 8601)"
                    },
                    "updatedAt": {
                      "type": "string",
                      "description": "Last updated timestamp (ISO 8601)"
                    }
                  },
                  "required": [
                    "id",
                    "title",
                    "owner",
                    "createdAt",
                    "updatedAt"
                  ],
                  "additionalProperties": false,
                  "description": "Granola note summary"
                }
              },
              "hasMore": {
                "type": "boolean"
              },
              "cursor": {
                "type": "string",
                "nullable": true
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_note"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "description": "Error message if operation failed"
              },
              "id": {
                "type": "string",
                "description": "Note ID"
              },
              "title": {
                "type": "string",
                "nullable": true,
                "description": "Meeting title"
              },
              "owner": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "nullable": true,
                    "description": "User display name"
                  },
                  "email": {
                    "type": "string",
                    "description": "User email address"
                  }
                },
                "required": [
                  "name",
                  "email"
                ],
                "additionalProperties": false,
                "description": "Note owner"
              },
              "createdAt": {
                "type": "string",
                "description": "Creation timestamp (ISO 8601)"
              },
              "updatedAt": {
                "type": "string",
                "description": "Last updated timestamp (ISO 8601)"
              },
              "notesUrl": {
                "type": "string",
                "nullable": true,
                "description": "Direct web link to this meeting in Granola (extracted from summary footer)."
              },
              "summaryText": {
                "type": "string",
                "description": "Plain text summary (included when sections has \"summary\")"
              },
              "summaryMarkdown": {
                "type": "string",
                "nullable": true,
                "description": "Markdown summary (included when sections has \"summary\")"
              },
              "attendees": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "nullable": true,
                      "description": "User display name"
                    },
                    "email": {
                      "type": "string",
                      "description": "User email address"
                    }
                  },
                  "required": [
                    "name",
                    "email"
                  ],
                  "additionalProperties": false,
                  "description": "Granola user information"
                },
                "description": "Attendees (included when sections has \"attendees\")"
              },
              "calendarEvent": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "nullable": true,
                    "description": "Calendar event title"
                  },
                  "invitees": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of invitee email addresses"
                  },
                  "organiser": {
                    "type": "string",
                    "nullable": true,
                    "description": "Event organiser email"
                  },
                  "calendarEventId": {
                    "type": "string",
                    "nullable": true,
                    "description": "External calendar event ID"
                  },
                  "startTime": {
                    "type": "string",
                    "nullable": true,
                    "description": "Scheduled start time (ISO 8601)"
                  },
                  "endTime": {
                    "type": "string",
                    "nullable": true,
                    "description": "Scheduled end time (ISO 8601)"
                  }
                },
                "required": [
                  "title",
                  "invitees",
                  "organiser",
                  "calendarEventId",
                  "startTime",
                  "endTime"
                ],
                "additionalProperties": false,
                "description": "Calendar event (included when sections has \"calendar\")",
                "nullable": true
              },
              "folders": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Folder ID"
                    },
                    "name": {
                      "type": "string",
                      "description": "Folder name"
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": false,
                  "description": "Granola folder"
                },
                "description": "Folders (included when sections has \"folders\")"
              },
              "transcript": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "enum": [
                        "microphone",
                        "speaker"
                      ],
                      "description": "Audio source (microphone or speaker)"
                    },
                    "speakerLabel": {
                      "type": "string",
                      "nullable": true,
                      "description": "Speaker label (iOS only when diarization available)"
                    },
                    "text": {
                      "type": "string",
                      "description": "Transcript text content"
                    },
                    "startTime": {
                      "type": "string",
                      "description": "Start time (ISO 8601)"
                    },
                    "endTime": {
                      "type": "string",
                      "description": "End time (ISO 8601)"
                    }
                  },
                  "required": [
                    "source",
                    "speakerLabel",
                    "text",
                    "startTime",
                    "endTime"
                  ],
                  "additionalProperties": false,
                  "description": "Single transcript entry"
                },
                "nullable": true,
                "description": "Transcript (included only when sections has \"transcript\")"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Notes example\nconst granola_list_notes = new GranolaBubble({\n  operation: \"list_notes\", // List accessible meeting notes with pagination\n  createdBefore: \"example string\", // Filter notes created before this date (ISO 8601 date or datetime)\n  createdAfter: \"example string\", // Filter notes created after this date (ISO 8601 date or datetime)\n  updatedAfter: \"example string\", // Filter notes updated after this date (ISO 8601 date or datetime)\n  cursor: \"example string\", // Pagination cursor from previous response\n  pageSize: 10 // default, // Number of notes per page (1-30, default 10)\n});\n\nconst result = await granola_list_notes.action();\n// outputSchema for result.data when operation === 'list_notes':\n// {\n//   operation: \"list_notes\",\n//   success: boolean,\n//   notes: { id: string // Note ID (format: not_XXXXXXXXXXXXXX), title: string | null // Meeting title, owner: { name: string | null // User display name, email: string // User email address } // Note owner, createdAt: string // Creation timestamp (ISO 8601), updatedAt: string // Last updated timestamp (ISO 8601) }[] | undefined,\n//   hasMore: boolean | undefined,\n//   cursor: string | null | undefined,\n//   error: string // Error message if operation failed\n// }\n\n\n// Get Note example\nconst granola_get_note = new GranolaBubble({\n  operation: \"get_note\", // Retrieve a single note with full details\n  noteId: \"example string\", // The note ID to retrieve (format: not_XXXXXXXXXXXXXX)\n  sections: [\"summary\" // options: \"summary\", \"attendees\", \"calendar\", \"folders\", \"transcript\"], // Which sections to return. Default: [\"summary\",\"attendees\",\"calendar\",\"folders\"] (transcript excluded — request it only when needed).\n});\n\nconst result = await granola_get_note.action();\n// outputSchema for result.data when operation === 'get_note':\n// {\n//   operation: \"get_note\",\n//   success: boolean,\n//   error: string // Error message if operation failed,\n//   id: string | undefined // Note ID,\n//   title: string | null | undefined // Meeting title,\n//   owner: { name: string | null // User display name, email: string // User email address } | undefined | undefined // Note owner,\n//   createdAt: string | undefined // Creation timestamp (ISO 8601),\n//   updatedAt: string | undefined // Last updated timestamp (ISO 8601),\n//   notesUrl: string | null | undefined // Direct web link to this meeting in Granola (extracted from summary footer).,\n//   summaryText: string | undefined | undefined // Plain text summary (included when sections has \"summary\"),\n//   summaryMarkdown: string | null | undefined | undefined // Markdown summary (included when sections has \"summary\"),\n//   attendees: { name: string | null // User display name, email: string // User email address }[] | undefined | undefined // Attendees (included when sections has \"attendees\"),\n//   calendarEvent: { title: string | null // Calendar event title, invitees: string[] // List of invitee email addresses, organiser: string | null // Event organiser email, calendarEventId: string | null // External calendar event ID, startTime: string | null // Scheduled start time (ISO 8601), endTime: string | null // Scheduled end time (ISO 8601) } | null | undefined | undefined // Calendar event (included when sections has \"calendar\"),\n//   folders: { id: string // Folder ID, name: string // Folder name }[] | undefined | undefined // Folders (included when sections has \"folders\"),\n//   transcript: { source: \"microphone\" | \"speaker\" // Audio source (microphone or speaker), speakerLabel: string | null // Speaker label (iOS only when diarization available), text: string // Transcript text content, startTime: string // Start time (ISO 8601), endTime: string // End time (ISO 8601) }[] | null | undefined | undefined // Transcript (included only when sections has \"transcript\")\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`granola failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "GRANOLA_API_KEY"
      ]
    },
    {
      "name": "memberful",
      "alias": "memberful",
      "type": "service",
      "shortDescription": "Memberful integration for members, subscriptions, plans, and orders",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_members"
                ],
                "description": "List members on the site with pagination. Memberful does not support free-text search over members via API — filter client-side or use get_member with email for exact lookup."
              },
              "state": {
                "type": "string",
                "enum": [
                  "active",
                  "inactive"
                ],
                "description": "Optional filter by MemberState (active/inactive — mapped to ACTIVE/INACTIVE on the wire)"
              },
              "first": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0,
                "maximum": 100,
                "default": 25,
                "description": "Page size (max 100)"
              },
              "after": {
                "type": "string",
                "description": "Cursor to fetch the next page (from previous response pageInfo.endCursor)"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_member"
                ],
                "description": "Get a single member by ID or email. Exactly one of id/email required."
              },
              "id": {
                "type": "string",
                "description": "[ONEOF:lookup] Member ID — uses Memberful member(id:) query"
              },
              "email": {
                "type": "string",
                "description": "[ONEOF:lookup] Member email — uses Memberful memberByEmail(email:) query"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_subscriptions"
                ],
                "description": "List subscriptions on the site with pagination"
              },
              "first": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0,
                "maximum": 100,
                "default": 25,
                "description": "Page size (max 100)"
              },
              "after": {
                "type": "string",
                "description": "Cursor to fetch the next page"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_plans"
                ],
                "description": "List all membership plans on the site"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_orders"
                ],
                "description": "List orders on the site with pagination"
              },
              "first": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0,
                "maximum": 100,
                "default": 25,
                "description": "Page size (max 100)"
              },
              "after": {
                "type": "string",
                "description": "Cursor to fetch the next page"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "raw_query"
                ],
                "description": "Execute an arbitrary GraphQL query against the Memberful admin API. Use this for any fields not covered by the other operations."
              },
              "query": {
                "type": "string",
                "description": "GraphQL query or mutation document"
              },
              "variables": {
                "type": "object",
                "additionalProperties": {},
                "description": "GraphQL variables object"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Credential mapping for authentication"
              }
            },
            "required": [
              "operation",
              "query"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_members"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "type": "object",
                "properties": {
                  "members": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Member ID"
                        },
                        "email": {
                          "type": "string",
                          "description": "Member email"
                        },
                        "fullName": {
                          "type": "string",
                          "nullable": true,
                          "description": "Member full name (Memberful has no firstName/lastName — only fullName)"
                        },
                        "username": {
                          "type": "string",
                          "nullable": true,
                          "description": "Username"
                        },
                        "phoneNumber": {
                          "type": "string",
                          "nullable": true,
                          "description": "Phone number"
                        },
                        "totalSpendCents": {
                          "type": "number",
                          "description": "Lifetime spend in cents"
                        },
                        "totalOrders": {
                          "type": "number",
                          "description": "Total orders count"
                        },
                        "unrestrictedAccess": {
                          "type": "boolean",
                          "description": "Whether member has unrestricted access"
                        },
                        "subscriptions": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "Subscription ID"
                              },
                              "active": {
                                "type": "boolean",
                                "description": "Whether subscription is active"
                              },
                              "autorenew": {
                                "type": "boolean",
                                "description": "Whether subscription auto-renews"
                              },
                              "expiresAt": {
                                "type": "number",
                                "nullable": true,
                                "description": "Expiration unix timestamp (seconds)"
                              },
                              "createdAt": {
                                "type": "number",
                                "nullable": true,
                                "description": "Created unix timestamp (seconds)"
                              },
                              "plan": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "Plan ID"
                                  },
                                  "label": {
                                    "type": "string",
                                    "description": "Plan display label (Memberful uses \"label\", not \"name\")"
                                  },
                                  "slug": {
                                    "type": "string",
                                    "description": "Plan URL slug"
                                  },
                                  "priceCents": {
                                    "type": "number",
                                    "description": "Price in cents"
                                  },
                                  "intervalCount": {
                                    "type": "number",
                                    "nullable": true,
                                    "description": "Billing interval count (e.g. 1 for monthly, 12 for yearly)"
                                  },
                                  "intervalUnit": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "Billing interval unit (month, year, etc.)"
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "Plan type (subscription, pass, etc.)"
                                  },
                                  "forSale": {
                                    "type": "boolean",
                                    "description": "Whether plan is currently for sale"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label"
                                ],
                                "additionalProperties": true,
                                "description": "Associated plan"
                              }
                            },
                            "required": [
                              "id"
                            ],
                            "additionalProperties": true,
                            "description": "Memberful subscription object"
                          },
                          "description": "Active/historical subscriptions for this member"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": true,
                      "description": "Memberful member object"
                    }
                  },
                  "pageInfo": {
                    "type": "object",
                    "properties": {
                      "endCursor": {
                        "type": "string",
                        "nullable": true
                      },
                      "hasNextPage": {
                        "type": "boolean"
                      }
                    },
                    "additionalProperties": true,
                    "description": "Relay pagination info"
                  }
                },
                "required": [
                  "members"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_member"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Member ID"
                  },
                  "email": {
                    "type": "string",
                    "description": "Member email"
                  },
                  "fullName": {
                    "type": "string",
                    "nullable": true,
                    "description": "Member full name (Memberful has no firstName/lastName — only fullName)"
                  },
                  "username": {
                    "type": "string",
                    "nullable": true,
                    "description": "Username"
                  },
                  "phoneNumber": {
                    "type": "string",
                    "nullable": true,
                    "description": "Phone number"
                  },
                  "totalSpendCents": {
                    "type": "number",
                    "description": "Lifetime spend in cents"
                  },
                  "totalOrders": {
                    "type": "number",
                    "description": "Total orders count"
                  },
                  "unrestrictedAccess": {
                    "type": "boolean",
                    "description": "Whether member has unrestricted access"
                  },
                  "subscriptions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Subscription ID"
                        },
                        "active": {
                          "type": "boolean",
                          "description": "Whether subscription is active"
                        },
                        "autorenew": {
                          "type": "boolean",
                          "description": "Whether subscription auto-renews"
                        },
                        "expiresAt": {
                          "type": "number",
                          "nullable": true,
                          "description": "Expiration unix timestamp (seconds)"
                        },
                        "createdAt": {
                          "type": "number",
                          "nullable": true,
                          "description": "Created unix timestamp (seconds)"
                        },
                        "plan": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Plan ID"
                            },
                            "label": {
                              "type": "string",
                              "description": "Plan display label (Memberful uses \"label\", not \"name\")"
                            },
                            "slug": {
                              "type": "string",
                              "description": "Plan URL slug"
                            },
                            "priceCents": {
                              "type": "number",
                              "description": "Price in cents"
                            },
                            "intervalCount": {
                              "type": "number",
                              "nullable": true,
                              "description": "Billing interval count (e.g. 1 for monthly, 12 for yearly)"
                            },
                            "intervalUnit": {
                              "type": "string",
                              "nullable": true,
                              "description": "Billing interval unit (month, year, etc.)"
                            },
                            "type": {
                              "type": "string",
                              "description": "Plan type (subscription, pass, etc.)"
                            },
                            "forSale": {
                              "type": "boolean",
                              "description": "Whether plan is currently for sale"
                            }
                          },
                          "required": [
                            "id",
                            "label"
                          ],
                          "additionalProperties": true,
                          "description": "Associated plan"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": true,
                      "description": "Memberful subscription object"
                    },
                    "description": "Active/historical subscriptions for this member"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": true,
                "description": "Memberful member object"
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_subscriptions"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "type": "object",
                "properties": {
                  "subscriptions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Subscription ID"
                        },
                        "active": {
                          "type": "boolean",
                          "description": "Whether subscription is active"
                        },
                        "autorenew": {
                          "type": "boolean",
                          "description": "Whether subscription auto-renews"
                        },
                        "expiresAt": {
                          "type": "number",
                          "nullable": true,
                          "description": "Expiration unix timestamp (seconds)"
                        },
                        "createdAt": {
                          "type": "number",
                          "nullable": true,
                          "description": "Created unix timestamp (seconds)"
                        },
                        "plan": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Plan ID"
                            },
                            "label": {
                              "type": "string",
                              "description": "Plan display label (Memberful uses \"label\", not \"name\")"
                            },
                            "slug": {
                              "type": "string",
                              "description": "Plan URL slug"
                            },
                            "priceCents": {
                              "type": "number",
                              "description": "Price in cents"
                            },
                            "intervalCount": {
                              "type": "number",
                              "nullable": true,
                              "description": "Billing interval count (e.g. 1 for monthly, 12 for yearly)"
                            },
                            "intervalUnit": {
                              "type": "string",
                              "nullable": true,
                              "description": "Billing interval unit (month, year, etc.)"
                            },
                            "type": {
                              "type": "string",
                              "description": "Plan type (subscription, pass, etc.)"
                            },
                            "forSale": {
                              "type": "boolean",
                              "description": "Whether plan is currently for sale"
                            }
                          },
                          "required": [
                            "id",
                            "label"
                          ],
                          "additionalProperties": true,
                          "description": "Associated plan"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "additionalProperties": true,
                      "description": "Memberful subscription object"
                    }
                  },
                  "pageInfo": {
                    "type": "object",
                    "properties": {
                      "endCursor": {
                        "type": "string",
                        "nullable": true
                      },
                      "hasNextPage": {
                        "type": "boolean"
                      }
                    },
                    "additionalProperties": true,
                    "description": "Relay pagination info"
                  }
                },
                "required": [
                  "subscriptions"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_plans"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "type": "object",
                "properties": {
                  "plans": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Plan ID"
                        },
                        "label": {
                          "type": "string",
                          "description": "Plan display label (Memberful uses \"label\", not \"name\")"
                        },
                        "slug": {
                          "type": "string",
                          "description": "Plan URL slug"
                        },
                        "priceCents": {
                          "type": "number",
                          "description": "Price in cents"
                        },
                        "intervalCount": {
                          "type": "number",
                          "nullable": true,
                          "description": "Billing interval count (e.g. 1 for monthly, 12 for yearly)"
                        },
                        "intervalUnit": {
                          "type": "string",
                          "nullable": true,
                          "description": "Billing interval unit (month, year, etc.)"
                        },
                        "type": {
                          "type": "string",
                          "description": "Plan type (subscription, pass, etc.)"
                        },
                        "forSale": {
                          "type": "boolean",
                          "description": "Whether plan is currently for sale"
                        }
                      },
                      "required": [
                        "id",
                        "label"
                      ],
                      "additionalProperties": true,
                      "description": "Memberful plan object"
                    }
                  }
                },
                "required": [
                  "plans"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_orders"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "type": "object",
                "properties": {
                  "orders": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "uuid": {
                          "type": "string",
                          "description": "Order UUID (Memberful uses \"uuid\" as its unique identifier — there is no integer \"id\" on Order)"
                        },
                        "totalCents": {
                          "type": "number",
                          "nullable": true,
                          "description": "Order total in cents"
                        },
                        "currency": {
                          "type": "string",
                          "nullable": true,
                          "description": "ISO currency code"
                        },
                        "status": {
                          "type": "string",
                          "description": "Order status enum"
                        },
                        "type": {
                          "type": "string",
                          "nullable": true,
                          "description": "Order type enum"
                        },
                        "taxAmountCents": {
                          "type": "number",
                          "nullable": true,
                          "description": "Tax amount in cents"
                        },
                        "couponDiscountAmountCents": {
                          "type": "number",
                          "nullable": true,
                          "description": "Coupon discount applied in cents"
                        },
                        "createdAt": {
                          "type": "number",
                          "nullable": true,
                          "description": "Created unix timestamp (SECONDS, not milliseconds)"
                        }
                      },
                      "required": [
                        "uuid"
                      ],
                      "additionalProperties": true,
                      "description": "Memberful order object"
                    }
                  },
                  "pageInfo": {
                    "type": "object",
                    "properties": {
                      "endCursor": {
                        "type": "string",
                        "nullable": true
                      },
                      "hasNextPage": {
                        "type": "boolean"
                      }
                    },
                    "additionalProperties": true,
                    "description": "Relay pagination info"
                  }
                },
                "required": [
                  "orders"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "raw_query"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": "string",
                "default": ""
              },
              "data": {
                "description": "Raw GraphQL response data field"
              }
            },
            "required": [
              "operation",
              "success"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// List Members example\nconst memberful_list_members = new MemberfulBubble({\n  operation: \"list_members\", // List members on the site with pagination. Memberful does not support free-text search over members via API — filter client-side or use get_member with email for exact lookup.\n  state: \"active\" // options: \"active\", \"inactive\", // Optional filter by MemberState (active/inactive — mapped to ACTIVE/INACTIVE on the wire)\n  first: 25 // default, // Page size (max 100)\n  after: \"example string\", // Cursor to fetch the next page (from previous response pageInfo.endCursor)\n});\n\nconst result = await memberful_list_members.action();\n// outputSchema for result.data when operation === 'list_members':\n// {\n//   operation: \"list_members\",\n//   success: boolean,\n//   error: string,\n//   data: { members: { id: string // Member ID, email: string | undefined // Member email, fullName: string | null | undefined // Member full name (Memberful has no firstName/lastName — only fullName), username: string | null | undefined // Username, phoneNumber: string | null | undefined // Phone number, totalSpendCents: number | undefined // Lifetime spend in cents, totalOrders: number | undefined // Total orders count, unrestrictedAccess: boolean | undefined // Whether member has unrestricted access, subscriptions: { id: string // Subscription ID, active: boolean | undefined // Whether subscription is active, autorenew: boolean | undefined // Whether subscription auto-renews, expiresAt: number | null | undefined // Expiration unix timestamp (seconds), createdAt: number | null | undefined // Created unix timestamp (seconds), plan: { id: string // Plan ID, label: string // Plan display label (Memberful uses \"label\", not \"name\"), slug: string | undefined // Plan URL slug, priceCents: number | undefined // Price in cents, intervalCount: number | null | undefined // Billing interval count (e.g. 1 for monthly, 12 for yearly), intervalUnit: string | null | undefined // Billing interval unit (month, year, etc.), type: string | undefined // Plan type (subscription, pass, etc.), forSale: boolean | undefined // Whether plan is currently for sale } | undefined // Associated plan }[] | undefined // Active/historical subscriptions for this member }[], pageInfo: { endCursor: string | null | undefined, hasNextPage: boolean | undefined } | undefined // Relay pagination info } | undefined\n// }\n\n\n// Get Member example\nconst memberful_get_member = new MemberfulBubble({\n  operation: \"get_member\", // Get a single member by ID or email. Exactly one of id/email required.\n  id: \"example string\", // [ONEOF:lookup] Member ID — uses Memberful member(id:) query\n  email: \"example string\", // [ONEOF:lookup] Member email — uses Memberful memberByEmail(email:) query\n});\n\nconst result = await memberful_get_member.action();\n// outputSchema for result.data when operation === 'get_member':\n// {\n//   operation: \"get_member\",\n//   success: boolean,\n//   error: string,\n//   data: { id: string // Member ID, email: string | undefined // Member email, fullName: string | null | undefined // Member full name (Memberful has no firstName/lastName — only fullName), username: string | null | undefined // Username, phoneNumber: string | null | undefined // Phone number, totalSpendCents: number | undefined // Lifetime spend in cents, totalOrders: number | undefined // Total orders count, unrestrictedAccess: boolean | undefined // Whether member has unrestricted access, subscriptions: { id: string // Subscription ID, active: boolean | undefined // Whether subscription is active, autorenew: boolean | undefined // Whether subscription auto-renews, expiresAt: number | null | undefined // Expiration unix timestamp (seconds), createdAt: number | null | undefined // Created unix timestamp (seconds), plan: { id: string // Plan ID, label: string // Plan display label (Memberful uses \"label\", not \"name\"), slug: string | undefined // Plan URL slug, priceCents: number | undefined // Price in cents, intervalCount: number | null | undefined // Billing interval count (e.g. 1 for monthly, 12 for yearly), intervalUnit: string | null | undefined // Billing interval unit (month, year, etc.), type: string | undefined // Plan type (subscription, pass, etc.), forSale: boolean | undefined // Whether plan is currently for sale } | undefined // Associated plan }[] | undefined // Active/historical subscriptions for this member } | undefined // Memberful member object\n// }\n\n\n// List Subscriptions example\nconst memberful_list_subscriptions = new MemberfulBubble({\n  operation: \"list_subscriptions\", // List subscriptions on the site with pagination\n  first: 25 // default, // Page size (max 100)\n  after: \"example string\", // Cursor to fetch the next page\n});\n\nconst result = await memberful_list_subscriptions.action();\n// outputSchema for result.data when operation === 'list_subscriptions':\n// {\n//   operation: \"list_subscriptions\",\n//   success: boolean,\n//   error: string,\n//   data: { subscriptions: { id: string // Subscription ID, active: boolean | undefined // Whether subscription is active, autorenew: boolean | undefined // Whether subscription auto-renews, expiresAt: number | null | undefined // Expiration unix timestamp (seconds), createdAt: number | null | undefined // Created unix timestamp (seconds), plan: { id: string // Plan ID, label: string // Plan display label (Memberful uses \"label\", not \"name\"), slug: string | undefined // Plan URL slug, priceCents: number | undefined // Price in cents, intervalCount: number | null | undefined // Billing interval count (e.g. 1 for monthly, 12 for yearly), intervalUnit: string | null | undefined // Billing interval unit (month, year, etc.), type: string | undefined // Plan type (subscription, pass, etc.), forSale: boolean | undefined // Whether plan is currently for sale } | undefined // Associated plan }[], pageInfo: { endCursor: string | null | undefined, hasNextPage: boolean | undefined } | undefined // Relay pagination info } | undefined\n// }\n\n\n// List Plans example\nconst memberful_list_plans = new MemberfulBubble({\n  operation: \"list_plans\", // List all membership plans on the site\n});\n\nconst result = await memberful_list_plans.action();\n// outputSchema for result.data when operation === 'list_plans':\n// {\n//   operation: \"list_plans\",\n//   success: boolean,\n//   error: string,\n//   data: { plans: { id: string // Plan ID, label: string // Plan display label (Memberful uses \"label\", not \"name\"), slug: string | undefined // Plan URL slug, priceCents: number | undefined // Price in cents, intervalCount: number | null | undefined // Billing interval count (e.g. 1 for monthly, 12 for yearly), intervalUnit: string | null | undefined // Billing interval unit (month, year, etc.), type: string | undefined // Plan type (subscription, pass, etc.), forSale: boolean | undefined // Whether plan is currently for sale }[] } | undefined\n// }\n\n\n// List Orders example\nconst memberful_list_orders = new MemberfulBubble({\n  operation: \"list_orders\", // List orders on the site with pagination\n  first: 25 // default, // Page size (max 100)\n  after: \"example string\", // Cursor to fetch the next page\n});\n\nconst result = await memberful_list_orders.action();\n// outputSchema for result.data when operation === 'list_orders':\n// {\n//   operation: \"list_orders\",\n//   success: boolean,\n//   error: string,\n//   data: { orders: { uuid: string // Order UUID (Memberful uses \"uuid\" as its unique identifier — there is no integer \"id\" on Order), totalCents: number | null | undefined // Order total in cents, currency: string | null | undefined // ISO currency code, status: string | undefined // Order status enum, type: string | null | undefined // Order type enum, taxAmountCents: number | null | undefined // Tax amount in cents, couponDiscountAmountCents: number | null | undefined // Coupon discount applied in cents, createdAt: number | null | undefined // Created unix timestamp (SECONDS, not milliseconds) }[], pageInfo: { endCursor: string | null | undefined, hasNextPage: boolean | undefined } | undefined // Relay pagination info } | undefined\n// }\n\n\n// Raw Query example\nconst memberful_raw_query = new MemberfulBubble({\n  operation: \"raw_query\", // Execute an arbitrary GraphQL query against the Memberful admin API. Use this for any fields not covered by the other operations.\n  query: \"example string\", // GraphQL query or mutation document\n  variables: {}, // GraphQL variables object\n});\n\nconst result = await memberful_raw_query.action();\n// outputSchema for result.data when operation === 'raw_query':\n// {\n//   operation: \"raw_query\",\n//   success: boolean,\n//   error: string,\n//   data: unknown | undefined // Raw GraphQL response data field\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`memberful failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "MEMBERFUL_CRED"
      ]
    },
    {
      "name": "luma",
      "alias": "luma-events",
      "type": "service",
      "shortDescription": "Scrape a Luma (lu.ma) calendar or event page — returns upcoming events with hosts, location, tickets, tags, cover art, and descriptions. Use for event digests, meetup reminders, RSVP monitoring, and community newsletter automation.",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "{\n  source: \"calendar\" | \"event\" | \"unknown\" // Whether the URL was a calendar page, single event page, or unrecognized,\n  events: { api_id: string | null, name: string | null, url: string // Full Luma URL, e.g. https://luma.com/<slug>, slug: string | null // Luma URL slug (the bit after the /), start_at: string | null // ISO UTC start time, end_at: string | null // ISO UTC end time, timezone: string | null, event_type: string | null, visibility: string | null, hide_rsvp: boolean | null, recurrence_id: string | null, location: { type: string | null // Location provider type, e.g. \"google\", full_address: string | null, short_address: string | null, address: string | null, city: string | null, region: string | null, country: string | null, country_code: string | null, sublocality: string | null, city_state: string | null, place_id: string | null, apple_maps_place_id: string | null, description: string | null, coordinate: { latitude: number, longitude: number } | null, location_type: string | null // Luma event location_type: offline, meet, zoom, etc. } | null, hosts: { api_id: string | null, name: string | null, first_name: string | null, last_name: string | null, username: string | null, avatar_url: string | null, bio_short: string | null, is_verified: boolean | null, website: string | null, linkedin_handle: string | null, twitter_handle: string | null, instagram_handle: string | null, tiktok_handle: string | null, youtube_handle: string | null, timezone: string | null }[], ticket: { is_free: boolean | null, price: unknown | null // Raw Luma price object or null, max_price: unknown | null, is_sold_out: boolean | null, spots_remaining: number | null, is_near_capacity: boolean | null, require_approval: boolean | null, waitlist_enabled: boolean | null, waitlist_status: string | null, waitlist_active: boolean | null }, tags: { api_id: string | null, name: string, color: string | null }[], cover: { url: string | null, colors: string[] // Dominant hex colors extracted by Luma }, calendar: { api_id: string | null, name: string | null, slug: string | null, description_short: string | null, avatar_url: string | null, cover_image_url: string | null, website: string | null, linkedin_handle: string | null, twitter_handle: string | null, instagram_handle: string | null, tiktok_handle: string | null, youtube_handle: string | null, tint_color: string | null, verified_at: string | null, luma_plan: string | null } | null, engagement: { guest_count: number | null, ticket_count: number | null, featured_guests_count: number | null }, description: unknown | null // Rich description as a ProseMirror doc (single-event pages only); shape: { type: \"doc\", content: [...] }, description_text: string | null // Plain-text extraction of the description (best effort), ticket_types: unknown[] | null // Ticket type list (single-event pages only), sessions: unknown[] | null // Sessions list (single-event pages only), categories: unknown[] | null // Categories (single-event pages only), raw: unknown // Un-normalized source item from Luma for passthrough }[],\n  success: boolean,\n  error: string\n}",
      "inputJsonSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Luma URL. Accepts calendar pages (https://luma.com/ogc) or single event pages (https://luma.com/<slug>)."
          },
          "credentials": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Object mapping credential types to values (unused — Luma endpoint is public)"
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "outputJsonSchema": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "calendar",
              "event",
              "unknown"
            ],
            "description": "Whether the URL was a calendar page, single event page, or unrecognized"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "api_id": {
                  "type": "string",
                  "nullable": true
                },
                "name": {
                  "type": "string",
                  "nullable": true
                },
                "url": {
                  "type": "string",
                  "description": "Full Luma URL, e.g. https://luma.com/<slug>"
                },
                "slug": {
                  "type": "string",
                  "nullable": true,
                  "description": "Luma URL slug (the bit after the /)"
                },
                "start_at": {
                  "type": "string",
                  "nullable": true,
                  "description": "ISO UTC start time"
                },
                "end_at": {
                  "type": "string",
                  "nullable": true,
                  "description": "ISO UTC end time"
                },
                "timezone": {
                  "type": "string",
                  "nullable": true
                },
                "event_type": {
                  "type": "string",
                  "nullable": true
                },
                "visibility": {
                  "type": "string",
                  "nullable": true
                },
                "hide_rsvp": {
                  "type": "boolean",
                  "nullable": true
                },
                "recurrence_id": {
                  "type": "string",
                  "nullable": true
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "nullable": true,
                      "description": "Location provider type, e.g. \"google\""
                    },
                    "full_address": {
                      "type": "string",
                      "nullable": true
                    },
                    "short_address": {
                      "type": "string",
                      "nullable": true
                    },
                    "address": {
                      "type": "string",
                      "nullable": true
                    },
                    "city": {
                      "type": "string",
                      "nullable": true
                    },
                    "region": {
                      "type": "string",
                      "nullable": true
                    },
                    "country": {
                      "type": "string",
                      "nullable": true
                    },
                    "country_code": {
                      "type": "string",
                      "nullable": true
                    },
                    "sublocality": {
                      "type": "string",
                      "nullable": true
                    },
                    "city_state": {
                      "type": "string",
                      "nullable": true
                    },
                    "place_id": {
                      "type": "string",
                      "nullable": true
                    },
                    "apple_maps_place_id": {
                      "type": "string",
                      "nullable": true
                    },
                    "description": {
                      "type": "string",
                      "nullable": true
                    },
                    "coordinate": {
                      "type": "object",
                      "properties": {
                        "latitude": {
                          "type": "number"
                        },
                        "longitude": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "latitude",
                        "longitude"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    },
                    "location_type": {
                      "type": "string",
                      "nullable": true,
                      "description": "Luma event location_type: offline, meet, zoom, etc."
                    }
                  },
                  "required": [
                    "type",
                    "full_address",
                    "short_address",
                    "address",
                    "city",
                    "region",
                    "country",
                    "country_code",
                    "sublocality",
                    "city_state",
                    "place_id",
                    "apple_maps_place_id",
                    "description",
                    "coordinate",
                    "location_type"
                  ],
                  "additionalProperties": false,
                  "nullable": true
                },
                "hosts": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "api_id": {
                        "type": "string",
                        "nullable": true
                      },
                      "name": {
                        "type": "string",
                        "nullable": true
                      },
                      "first_name": {
                        "type": "string",
                        "nullable": true
                      },
                      "last_name": {
                        "type": "string",
                        "nullable": true
                      },
                      "username": {
                        "type": "string",
                        "nullable": true
                      },
                      "avatar_url": {
                        "type": "string",
                        "nullable": true
                      },
                      "bio_short": {
                        "type": "string",
                        "nullable": true
                      },
                      "is_verified": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "website": {
                        "type": "string",
                        "nullable": true
                      },
                      "linkedin_handle": {
                        "type": "string",
                        "nullable": true
                      },
                      "twitter_handle": {
                        "type": "string",
                        "nullable": true
                      },
                      "instagram_handle": {
                        "type": "string",
                        "nullable": true
                      },
                      "tiktok_handle": {
                        "type": "string",
                        "nullable": true
                      },
                      "youtube_handle": {
                        "type": "string",
                        "nullable": true
                      },
                      "timezone": {
                        "type": "string",
                        "nullable": true
                      }
                    },
                    "required": [
                      "api_id",
                      "name",
                      "first_name",
                      "last_name",
                      "username",
                      "avatar_url",
                      "bio_short",
                      "is_verified",
                      "website",
                      "linkedin_handle",
                      "twitter_handle",
                      "instagram_handle",
                      "tiktok_handle",
                      "youtube_handle",
                      "timezone"
                    ],
                    "additionalProperties": false
                  }
                },
                "ticket": {
                  "type": "object",
                  "properties": {
                    "is_free": {
                      "type": "boolean",
                      "nullable": true
                    },
                    "price": {
                      "nullable": true,
                      "description": "Raw Luma price object or null"
                    },
                    "max_price": {
                      "nullable": true
                    },
                    "is_sold_out": {
                      "type": "boolean",
                      "nullable": true
                    },
                    "spots_remaining": {
                      "type": "number",
                      "nullable": true
                    },
                    "is_near_capacity": {
                      "type": "boolean",
                      "nullable": true
                    },
                    "require_approval": {
                      "type": "boolean",
                      "nullable": true
                    },
                    "waitlist_enabled": {
                      "type": "boolean",
                      "nullable": true
                    },
                    "waitlist_status": {
                      "type": "string",
                      "nullable": true
                    },
                    "waitlist_active": {
                      "type": "boolean",
                      "nullable": true
                    }
                  },
                  "required": [
                    "is_free",
                    "is_sold_out",
                    "spots_remaining",
                    "is_near_capacity",
                    "require_approval",
                    "waitlist_enabled",
                    "waitlist_status",
                    "waitlist_active"
                  ],
                  "additionalProperties": false
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "api_id": {
                        "type": "string",
                        "nullable": true
                      },
                      "name": {
                        "type": "string"
                      },
                      "color": {
                        "type": "string",
                        "nullable": true
                      }
                    },
                    "required": [
                      "api_id",
                      "name",
                      "color"
                    ],
                    "additionalProperties": false
                  }
                },
                "cover": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "nullable": true
                    },
                    "colors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Dominant hex colors extracted by Luma"
                    }
                  },
                  "required": [
                    "url",
                    "colors"
                  ],
                  "additionalProperties": false
                },
                "calendar": {
                  "type": "object",
                  "properties": {
                    "api_id": {
                      "type": "string",
                      "nullable": true
                    },
                    "name": {
                      "type": "string",
                      "nullable": true
                    },
                    "slug": {
                      "type": "string",
                      "nullable": true
                    },
                    "description_short": {
                      "type": "string",
                      "nullable": true
                    },
                    "avatar_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "cover_image_url": {
                      "type": "string",
                      "nullable": true
                    },
                    "website": {
                      "type": "string",
                      "nullable": true
                    },
                    "linkedin_handle": {
                      "type": "string",
                      "nullable": true
                    },
                    "twitter_handle": {
                      "type": "string",
                      "nullable": true
                    },
                    "instagram_handle": {
                      "type": "string",
                      "nullable": true
                    },
                    "tiktok_handle": {
                      "type": "string",
                      "nullable": true
                    },
                    "youtube_handle": {
                      "type": "string",
                      "nullable": true
                    },
                    "tint_color": {
                      "type": "string",
                      "nullable": true
                    },
                    "verified_at": {
                      "type": "string",
                      "nullable": true
                    },
                    "luma_plan": {
                      "type": "string",
                      "nullable": true
                    }
                  },
                  "required": [
                    "api_id",
                    "name",
                    "slug",
                    "description_short",
                    "avatar_url",
                    "cover_image_url",
                    "website",
                    "linkedin_handle",
                    "twitter_handle",
                    "instagram_handle",
                    "tiktok_handle",
                    "youtube_handle",
                    "tint_color",
                    "verified_at",
                    "luma_plan"
                  ],
                  "additionalProperties": false,
                  "nullable": true
                },
                "engagement": {
                  "type": "object",
                  "properties": {
                    "guest_count": {
                      "type": "number",
                      "nullable": true
                    },
                    "ticket_count": {
                      "type": "number",
                      "nullable": true
                    },
                    "featured_guests_count": {
                      "type": "number",
                      "nullable": true
                    }
                  },
                  "required": [
                    "guest_count",
                    "ticket_count",
                    "featured_guests_count"
                  ],
                  "additionalProperties": false
                },
                "description": {
                  "nullable": true,
                  "description": "Rich description as a ProseMirror doc (single-event pages only); shape: { type: \"doc\", content: [...] }"
                },
                "description_text": {
                  "type": "string",
                  "nullable": true,
                  "description": "Plain-text extraction of the description (best effort)"
                },
                "ticket_types": {
                  "type": "array",
                  "items": {},
                  "nullable": true,
                  "description": "Ticket type list (single-event pages only)"
                },
                "sessions": {
                  "type": "array",
                  "items": {},
                  "nullable": true,
                  "description": "Sessions list (single-event pages only)"
                },
                "categories": {
                  "type": "array",
                  "items": {},
                  "nullable": true,
                  "description": "Categories (single-event pages only)"
                },
                "raw": {
                  "description": "Un-normalized source item from Luma for passthrough"
                }
              },
              "required": [
                "api_id",
                "name",
                "url",
                "slug",
                "start_at",
                "end_at",
                "timezone",
                "event_type",
                "visibility",
                "hide_rsvp",
                "recurrence_id",
                "location",
                "hosts",
                "ticket",
                "tags",
                "cover",
                "calendar",
                "engagement",
                "description_text",
                "ticket_types",
                "sessions",
                "categories"
              ],
              "additionalProperties": false
            }
          },
          "success": {
            "type": "boolean"
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "source",
          "events",
          "success",
          "error"
        ],
        "additionalProperties": false
      },
      "usageExample": "// Example usage of luma bubble\nconst luma = new LumaBubble({\n  url: \"example string\", // Luma URL. Accepts calendar pages (https://luma.com/ogc) or single event pages (https://luma.com/<slug>).,\n});\n\nconst result = await luma.action();\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n//   source: \"calendar\" | \"event\" | \"unknown\" // Whether the URL was a calendar page, single event page, or unrecognized,\n//   events: { api_id: string | null, name: string | null, url: string // Full Luma URL, e.g. https://luma.com/<slug>, slug: string | null // Luma URL slug (the bit after the /), start_at: string | null // ISO UTC start time, end_at: string | null // ISO UTC end time, timezone: string | null, event_type: string | null, visibility: string | null, hide_rsvp: boolean | null, recurrence_id: string | null, location: { type: string | null // Location provider type, e.g. \"google\", full_address: string | null, short_address: string | null, address: string | null, city: string | null, region: string | null, country: string | null, country_code: string | null, sublocality: string | null, city_state: string | null, place_id: string | null, apple_maps_place_id: string | null, description: string | null, coordinate: { latitude: number, longitude: number } | null, location_type: string | null // Luma event location_type: offline, meet, zoom, etc. } | null, hosts: { api_id: string | null, name: string | null, first_name: string | null, last_name: string | null, username: string | null, avatar_url: string | null, bio_short: string | null, is_verified: boolean | null, website: string | null, linkedin_handle: string | null, twitter_handle: string | null, instagram_handle: string | null, tiktok_handle: string | null, youtube_handle: string | null, timezone: string | null }[], ticket: { is_free: boolean | null, price: unknown | null // Raw Luma price object or null, max_price: unknown | null, is_sold_out: boolean | null, spots_remaining: number | null, is_near_capacity: boolean | null, require_approval: boolean | null, waitlist_enabled: boolean | null, waitlist_status: string | null, waitlist_active: boolean | null }, tags: { api_id: string | null, name: string, color: string | null }[], cover: { url: string | null, colors: string[] // Dominant hex colors extracted by Luma }, calendar: { api_id: string | null, name: string | null, slug: string | null, description_short: string | null, avatar_url: string | null, cover_image_url: string | null, website: string | null, linkedin_handle: string | null, twitter_handle: string | null, instagram_handle: string | null, tiktok_handle: string | null, youtube_handle: string | null, tint_color: string | null, verified_at: string | null, luma_plan: string | null } | null, engagement: { guest_count: number | null, ticket_count: number | null, featured_guests_count: number | null }, description: unknown | null // Rich description as a ProseMirror doc (single-event pages only); shape: { type: \"doc\", content: [...] }, description_text: string | null // Plain-text extraction of the description (best effort), ticket_types: unknown[] | null // Ticket type list (single-event pages only), sessions: unknown[] | null // Sessions list (single-event pages only), categories: unknown[] | null // Categories (single-event pages only), raw: unknown // Un-normalized source item from Luma for passthrough }[],\n//   success: boolean,\n//   error: string\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": []
    },
    {
      "name": "zoom",
      "alias": "",
      "type": "service",
      "shortDescription": "Zoom integration for meetings, cloud recordings, transcripts, and users",
      "useCase": "General purpose bubble for various workflow needs",
      "outputSchema": "Complex schema - see usage example for structure",
      "inputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_meeting"
                ],
                "description": "Create a scheduled or instant meeting for a user"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "default": "me",
                "description": "Zoom user ID or email. Use \"me\" for the authenticated user (default)."
              },
              "topic": {
                "type": "string",
                "minLength": 1,
                "description": "Meeting topic / title"
              },
              "type": {
                "anyOf": [
                  {
                    "type": "number",
                    "enum": [
                      1
                    ]
                  },
                  {
                    "type": "number",
                    "enum": [
                      2
                    ]
                  },
                  {
                    "type": "number",
                    "enum": [
                      3
                    ]
                  },
                  {
                    "type": "number",
                    "enum": [
                      8
                    ]
                  }
                ],
                "default": 2,
                "description": "Meeting type: 1=instant, 2=scheduled (default), 3=recurring no fixed time, 8=recurring with fixed time"
              },
              "start_time": {
                "type": "string",
                "description": "ISO 8601 start time in UTC (e.g. \"2026-05-01T15:00:00Z\"). Required for type=2 or 8."
              },
              "duration": {
                "type": "integer",
                "minimum": 1,
                "default": 30,
                "description": "Scheduled meeting duration in minutes (default 30)"
              },
              "timezone": {
                "type": "string",
                "description": "IANA timezone for start_time (e.g. \"America/Los_Angeles\")"
              },
              "agenda": {
                "type": "string",
                "description": "Meeting agenda / description"
              },
              "password": {
                "type": "string",
                "description": "Meeting passcode (max 10 chars, alphanumeric)"
              },
              "settings": {
                "type": "object",
                "additionalProperties": {},
                "description": "Zoom meeting settings object (host_video, participant_video, mute_upon_entry, auto_recording, etc.). NOTE: recurrence does NOT go here — use the top-level `recurrence` field instead."
              },
              "recurrence": {
                "type": "object",
                "properties": {
                  "type": {
                    "anyOf": [
                      {
                        "type": "number",
                        "enum": [
                          1
                        ]
                      },
                      {
                        "type": "number",
                        "enum": [
                          2
                        ]
                      },
                      {
                        "type": "number",
                        "enum": [
                          3
                        ]
                      }
                    ],
                    "description": "Recurrence type: 1=daily, 2=weekly, 3=monthly"
                  },
                  "repeat_interval": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Interval between recurrences (e.g. 2 = every 2 weeks). Defaults to 1."
                  },
                  "weekly_days": {
                    "type": "string",
                    "description": "Comma-separated days of week (1=Sun..7=Sat). Required when type=2."
                  },
                  "monthly_day": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 31,
                    "description": "Day of month (1-31). Use with type=3 for \"monthly on day N\" recurrence."
                  },
                  "monthly_week": {
                    "anyOf": [
                      {
                        "type": "number",
                        "enum": [
                          -1
                        ]
                      },
                      {
                        "type": "number",
                        "enum": [
                          1
                        ]
                      },
                      {
                        "type": "number",
                        "enum": [
                          2
                        ]
                      },
                      {
                        "type": "number",
                        "enum": [
                          3
                        ]
                      },
                      {
                        "type": "number",
                        "enum": [
                          4
                        ]
                      }
                    ],
                    "description": "Week of month: -1=last, 1=first, 2=second, 3=third, 4=fourth. Use with monthly_week_day for type=3."
                  },
                  "monthly_week_day": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 7,
                    "description": "Day of week for monthly_week (1=Sun..7=Sat). Use with monthly_week."
                  },
                  "end_times": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 60,
                    "description": "[ONEOF:end] Number of occurrences before stopping (max 60)."
                  },
                  "end_date_time": {
                    "type": "string",
                    "description": "[ONEOF:end] ISO 8601 datetime to stop recurring (e.g. \"2026-12-31T00:00:00Z\")."
                  }
                },
                "required": [
                  "type"
                ],
                "additionalProperties": false,
                "description": "Recurrence settings — required when type=8 (recurring with fixed time). Goes at the top of the request body, not inside `settings`. Shape: { type: 1=daily | 2=weekly | 3=monthly, repeat_interval?: number (default 1), weekly_days?: comma-separated \"1=Sun..7=Sat\" (required for type=2), monthly_day?: 1-31 (for type=3 nth-day), monthly_week?: -1=last|1|2|3|4 + monthly_week_day?: 1=Sun..7=Sat (for type=3 nth-weekday), end_times?: 1-60 occurrences OR end_date_time?: ISO 8601 — provide one of the two }."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "topic"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_meeting"
                ],
                "description": "Retrieve details of a single scheduled meeting by ID"
              },
              "meeting_id": {
                "type": "string",
                "minLength": 1,
                "description": "Numeric Zoom meeting ID (e.g. \"123456789\")"
              },
              "occurrence_id": {
                "type": "string",
                "description": "Specific occurrence ID for recurring meetings"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "meeting_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_meetings"
                ],
                "description": "List a user's meetings. Returns flat: { meetings: [...], total_records, next_page_token }"
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "default": "me",
                "description": "Zoom user ID or email. Use \"me\" for the authenticated user (default)."
              },
              "type": {
                "type": "string",
                "enum": [
                  "scheduled",
                  "live",
                  "upcoming",
                  "upcoming_meetings",
                  "previous_meetings"
                ],
                "default": "scheduled",
                "description": "Filter: scheduled (default — all upcoming + recurring meetings the user is host of), live (currently in progress), upcoming (next instance of every meeting, including recurring), upcoming_meetings (newer alias for upcoming), previous_meetings (already-ended meetings). Most flows want \"scheduled\" or \"previous_meetings\"."
              },
              "page_size": {
                "type": "integer",
                "minimum": 1,
                "maximum": 300,
                "default": 30,
                "description": "Results per page (1-300, default 30)"
              },
              "next_page_token": {
                "type": "string",
                "description": "Pagination token from a previous response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_past_meeting"
                ],
                "description": "Retrieve details of a past meeting by UUID or ID"
              },
              "meeting_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zoom meeting UUID (preferred for past meetings) or numeric meeting ID. IMPORTANT: if the UUID contains \"/\" or \"+\", you must pre-encode it with encodeURIComponent yourself before passing — Zoom requires double-encoding for these characters and the bubble only single-encodes."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "meeting_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_past_instances"
                ],
                "description": "List ended instances of a recurring meeting. Use the returned UUIDs to fetch recordings or summaries. Returns an empty array for non-recurring meetings (type 1 or 2) — that is not an error."
              },
              "meeting_id": {
                "type": "string",
                "minLength": 1,
                "description": "Numeric Zoom meeting ID (e.g. \"123456789\")"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "meeting_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_user_recordings"
                ],
                "description": "List a user's cloud recordings within an optional date range. IMPORTANT: Zoom silently clamps the (from, to) window to a maximum of ~30 days — wider ranges are accepted but Zoom will only return recordings from the last 30 days of the requested window. To cover a longer period, paginate by issuing multiple back-to-back 30-day calls."
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "default": "me",
                "description": "Zoom user ID or email. Use \"me\" for the authenticated user (default)."
              },
              "from": {
                "type": "string",
                "description": "Start date (YYYY-MM-DD). Defaults to one month ago. Window is capped at ~30 days by Zoom."
              },
              "to": {
                "type": "string",
                "description": "End date (YYYY-MM-DD). Defaults to today."
              },
              "page_size": {
                "type": "integer",
                "minimum": 1,
                "maximum": 300,
                "default": 30,
                "description": "Results per page (1-300, default 30)"
              },
              "next_page_token": {
                "type": "string",
                "description": "Pagination token from a previous response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_recording"
                ],
                "description": "Get a meeting's cloud recording bundle (all files, including audio, video, chat, transcript)"
              },
              "meeting_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zoom meeting UUID (preferred for past meetings) or numeric meeting ID. IMPORTANT: if the UUID contains \"/\" or \"+\", you must pre-encode it with encodeURIComponent yourself before passing — Zoom requires double-encoding for these characters and the bubble only single-encodes."
              },
              "include_fields": {
                "type": "string",
                "description": "Comma-separated extra fields (e.g. \"download_access_token\") to include in the response"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "meeting_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_meeting_transcript"
                ],
                "description": "Fetch a meeting's transcript. Locates the TRANSCRIPT file in the recording and optionally downloads its VTT content."
              },
              "meeting_id": {
                "type": "string",
                "minLength": 1,
                "description": "Zoom meeting UUID (preferred for past meetings) or numeric meeting ID. IMPORTANT: if the UUID contains \"/\" or \"+\", you must pre-encode it with encodeURIComponent yourself before passing — Zoom requires double-encoding for these characters and the bubble only single-encodes."
              },
              "download": {
                "type": "boolean",
                "default": true,
                "description": "When true (default), download the VTT transcript content using the access token"
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation",
              "meeting_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ],
                "description": "Get a Zoom user profile by ID, email, or \"me\""
              },
              "user_id": {
                "type": "string",
                "minLength": 1,
                "default": "me",
                "description": "Zoom user ID or email. Use \"me\" for the authenticated user (default)."
              },
              "credentials": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object mapping credential types to values (injected at runtime)"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "outputJsonSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "create_meeting"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "meeting": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Zoom meeting record (fields vary by API endpoint)"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_meeting"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "meeting": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Zoom meeting record (fields vary by API endpoint)"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_meetings"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "meetings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "A Zoom meeting record (fields vary by API endpoint)"
                }
              },
              "page_size": {
                "type": "number"
              },
              "total_records": {
                "type": "number"
              },
              "next_page_token": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_past_meeting"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "meeting": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Zoom meeting record (fields vary by API endpoint)"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_past_instances"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "meetings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "A Zoom meeting record (fields vary by API endpoint)"
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "list_user_recordings"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "meetings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {}
                }
              },
              "page_size": {
                "type": "number"
              },
              "total_records": {
                "type": "number"
              },
              "next_page_token": {
                "type": "string"
              },
              "from": {
                "type": "string"
              },
              "to": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_recording"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "recording": {
                "type": "object",
                "additionalProperties": {}
              },
              "recording_files": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {},
                  "description": "A single recording file (audio, video, chat, transcript). Includes id, file_type, download_url, recording_start, recording_end, status."
                }
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_meeting_transcript"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "transcript_file": {
                "type": "object",
                "additionalProperties": {},
                "description": "A single recording file (audio, video, chat, transcript). Includes id, file_type, download_url, recording_start, recording_end, status."
              },
              "transcript_vtt": {
                "type": "string",
                "description": "Raw WebVTT transcript content (when download=true)"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "enum": [
                  "get_user"
                ]
              },
              "success": {
                "type": "boolean"
              },
              "user": {
                "type": "object",
                "additionalProperties": {},
                "description": "A Zoom user profile record"
              },
              "error": {
                "type": "string"
              }
            },
            "required": [
              "operation",
              "success",
              "error"
            ],
            "additionalProperties": false
          }
        ]
      },
      "usageExample": "// Create Meeting example\nconst zoom_create_meeting = new ZoomBubble({\n  operation: \"create_meeting\", // Create a scheduled or instant meeting for a user\n  user_id: \"me\" // default, // Zoom user ID or email. Use \"me\" for the authenticated user (default).\n  topic: \"example string\", // Meeting topic / title\n  type: 2 // default, // Meeting type: 1=instant, 2=scheduled (default), 3=recurring no fixed time, 8=recurring with fixed time\n  start_time: \"example string\", // ISO 8601 start time in UTC (e.g. \"2026-05-01T15:00:00Z\"). Required for type=2 or 8.\n  duration: 30 // default, // Scheduled meeting duration in minutes (default 30)\n  timezone: \"example string\", // IANA timezone for start_time (e.g. \"America/Los_Angeles\")\n  agenda: \"example string\", // Meeting agenda / description\n  password: \"example string\", // Meeting passcode (max 10 chars, alphanumeric)\n  settings: {}, // Zoom meeting settings object (host_video, participant_video, mute_upon_entry, auto_recording, etc.). NOTE: recurrence does NOT go here — use the top-level `recurrence` field instead.\n  recurrence: { type: 1 // Recurrence type: 1=daily, 2=weekly, 3=monthly, repeat_interval: 42 // Interval between recurrences (e.g. 2 = every 2 weeks). Defaults to 1., weekly_days: \"example string\" // Comma-separated days of week (1=Sun..7=Sat). Required when type=2., monthly_day: 42 // Day of month (1-31). Use with type=3 for \"monthly on day N\" recurrence., monthly_week: -1 // Week of month: -1=last, 1=first, 2=second, 3=third, 4=fourth. Use with monthly_week_day for type=3., monthly_week_day: 42 // Day of week for monthly_week (1=Sun..7=Sat). Use with monthly_week., end_times: 42 // [ONEOF:end] Number of occurrences before stopping (max 60)., end_date_time: \"example string\" // [ONEOF:end] ISO 8601 datetime to stop recurring (e.g. \"2026-12-31T00:00:00Z\"). }, // Recurrence settings — required when type=8 (recurring with fixed time). Goes at the top of the request body, not inside `settings`. Shape: { type: 1=daily | 2=weekly | 3=monthly, repeat_interval?: number (default 1), weekly_days?: comma-separated \"1=Sun..7=Sat\" (required for type=2), monthly_day?: 1-31 (for type=3 nth-day), monthly_week?: -1=last|1|2|3|4 + monthly_week_day?: 1=Sun..7=Sat (for type=3 nth-weekday), end_times?: 1-60 occurrences OR end_date_time?: ISO 8601 — provide one of the two }.\n});\n\nconst result = await zoom_create_meeting.action();\n// outputSchema for result.data when operation === 'create_meeting':\n// {\n//   operation: \"create_meeting\",\n//   success: boolean,\n//   meeting: Record<string, unknown> | undefined // A Zoom meeting record (fields vary by API endpoint),\n//   error: string\n// }\n\n\n// Get Meeting example\nconst zoom_get_meeting = new ZoomBubble({\n  operation: \"get_meeting\", // Retrieve details of a single scheduled meeting by ID\n  meeting_id: \"example string\", // Numeric Zoom meeting ID (e.g. \"123456789\")\n  occurrence_id: \"example string\", // Specific occurrence ID for recurring meetings\n});\n\nconst result = await zoom_get_meeting.action();\n// outputSchema for result.data when operation === 'get_meeting':\n// {\n//   operation: \"get_meeting\",\n//   success: boolean,\n//   meeting: Record<string, unknown> | undefined // A Zoom meeting record (fields vary by API endpoint),\n//   error: string\n// }\n\n\n// List Meetings example\nconst zoom_list_meetings = new ZoomBubble({\n  operation: \"list_meetings\", // List a user's meetings. Returns flat: { meetings: [...], total_records, next_page_token }\n  user_id: \"me\" // default, // Zoom user ID or email. Use \"me\" for the authenticated user (default).\n  type: \"scheduled\" // options: \"scheduled\", \"live\", \"upcoming\", \"upcoming_meetings\", \"previous_meetings\", // Filter: scheduled (default — all upcoming + recurring meetings the user is host of), live (currently in progress), upcoming (next instance of every meeting, including recurring), upcoming_meetings (newer alias for upcoming), previous_meetings (already-ended meetings). Most flows want \"scheduled\" or \"previous_meetings\".\n  page_size: 30 // default, // Results per page (1-300, default 30)\n  next_page_token: \"example string\", // Pagination token from a previous response\n});\n\nconst result = await zoom_list_meetings.action();\n// outputSchema for result.data when operation === 'list_meetings':\n// {\n//   operation: \"list_meetings\",\n//   success: boolean,\n//   meetings: Record<string, unknown>[] | undefined,\n//   page_size: number | undefined,\n//   total_records: number | undefined,\n//   next_page_token: string | undefined,\n//   error: string\n// }\n\n\n// Get Past Meeting example\nconst zoom_get_past_meeting = new ZoomBubble({\n  operation: \"get_past_meeting\", // Retrieve details of a past meeting by UUID or ID\n  meeting_id: \"example string\", // Zoom meeting UUID (preferred for past meetings) or numeric meeting ID. IMPORTANT: if the UUID contains \"/\" or \"+\", you must pre-encode it with encodeURIComponent yourself before passing — Zoom requires double-encoding for these characters and the bubble only single-encodes.\n});\n\nconst result = await zoom_get_past_meeting.action();\n// outputSchema for result.data when operation === 'get_past_meeting':\n// {\n//   operation: \"get_past_meeting\",\n//   success: boolean,\n//   meeting: Record<string, unknown> | undefined // A Zoom meeting record (fields vary by API endpoint),\n//   error: string\n// }\n\n\n// List Past Instances example\nconst zoom_list_past_instances = new ZoomBubble({\n  operation: \"list_past_instances\", // List ended instances of a recurring meeting. Use the returned UUIDs to fetch recordings or summaries. Returns an empty array for non-recurring meetings (type 1 or 2) — that is not an error.\n  meeting_id: \"example string\", // Numeric Zoom meeting ID (e.g. \"123456789\")\n});\n\nconst result = await zoom_list_past_instances.action();\n// outputSchema for result.data when operation === 'list_past_instances':\n// {\n//   operation: \"list_past_instances\",\n//   success: boolean,\n//   meetings: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// List User Recordings example\nconst zoom_list_user_recordings = new ZoomBubble({\n  operation: \"list_user_recordings\", // List a user's cloud recordings within an optional date range. IMPORTANT: Zoom silently clamps the (from, to) window to a maximum of ~30 days — wider ranges are accepted but Zoom will only return recordings from the last 30 days of the requested window. To cover a longer period, paginate by issuing multiple back-to-back 30-day calls.\n  user_id: \"me\" // default, // Zoom user ID or email. Use \"me\" for the authenticated user (default).\n  from: \"example string\", // Start date (YYYY-MM-DD). Defaults to one month ago. Window is capped at ~30 days by Zoom.\n  to: \"example string\", // End date (YYYY-MM-DD). Defaults to today.\n  page_size: 30 // default, // Results per page (1-300, default 30)\n  next_page_token: \"example string\", // Pagination token from a previous response\n});\n\nconst result = await zoom_list_user_recordings.action();\n// outputSchema for result.data when operation === 'list_user_recordings':\n// {\n//   operation: \"list_user_recordings\",\n//   success: boolean,\n//   meetings: Record<string, unknown>[] | undefined,\n//   page_size: number | undefined,\n//   total_records: number | undefined,\n//   next_page_token: string | undefined,\n//   from: string | undefined,\n//   to: string | undefined,\n//   error: string\n// }\n\n\n// Get Recording example\nconst zoom_get_recording = new ZoomBubble({\n  operation: \"get_recording\", // Get a meeting's cloud recording bundle (all files, including audio, video, chat, transcript)\n  meeting_id: \"example string\", // Zoom meeting UUID (preferred for past meetings) or numeric meeting ID. IMPORTANT: if the UUID contains \"/\" or \"+\", you must pre-encode it with encodeURIComponent yourself before passing — Zoom requires double-encoding for these characters and the bubble only single-encodes.\n  include_fields: \"example string\", // Comma-separated extra fields (e.g. \"download_access_token\") to include in the response\n});\n\nconst result = await zoom_get_recording.action();\n// outputSchema for result.data when operation === 'get_recording':\n// {\n//   operation: \"get_recording\",\n//   success: boolean,\n//   recording: Record<string, unknown> | undefined,\n//   recording_files: Record<string, unknown>[] | undefined,\n//   error: string\n// }\n\n\n// Get Meeting Transcript example\nconst zoom_get_meeting_transcript = new ZoomBubble({\n  operation: \"get_meeting_transcript\", // Fetch a meeting's transcript. Locates the TRANSCRIPT file in the recording and optionally downloads its VTT content.\n  meeting_id: \"example string\", // Zoom meeting UUID (preferred for past meetings) or numeric meeting ID. IMPORTANT: if the UUID contains \"/\" or \"+\", you must pre-encode it with encodeURIComponent yourself before passing — Zoom requires double-encoding for these characters and the bubble only single-encodes.\n  download: true // default, // When true (default), download the VTT transcript content using the access token\n});\n\nconst result = await zoom_get_meeting_transcript.action();\n// outputSchema for result.data when operation === 'get_meeting_transcript':\n// {\n//   operation: \"get_meeting_transcript\",\n//   success: boolean,\n//   transcript_file: Record<string, unknown> | undefined // A single recording file (audio, video, chat, transcript). Includes id, file_type, download_url, recording_start, recording_end, status.,\n//   transcript_vtt: string | undefined // Raw WebVTT transcript content (when download=true),\n//   error: string\n// }\n\n\n// Get User example\nconst zoom_get_user = new ZoomBubble({\n  operation: \"get_user\", // Get a Zoom user profile by ID, email, or \"me\"\n  user_id: \"me\" // default, // Zoom user ID or email. Use \"me\" for the authenticated user (default).\n});\n\nconst result = await zoom_get_user.action();\n// outputSchema for result.data when operation === 'get_user':\n// {\n//   operation: \"get_user\",\n//   success: boolean,\n//   user: Record<string, unknown> | undefined // A Zoom user profile record,\n//   error: string\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n  throw new Error(`zoom failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
      "requiredCredentials": [
        "ZOOM_CRED"
      ]
    }
  ]
}