diff --git a/.claude/commands/add-block.md b/.claude/commands/add-block.md index 12629d2ce6..a4d6ad0f6f 100644 --- a/.claude/commands/add-block.md +++ b/.claude/commands/add-block.md @@ -577,6 +577,17 @@ export const ServiceBlock: BlockConfig = { See the `/add-trigger` skill for creating triggers. +## Icon Requirement + +If the icon doesn't already exist in `@/components/icons.tsx`, **do NOT search for it yourself**. After completing the block, ask the user to provide the SVG: + +``` +The block is complete, but I need an icon for {Service}. +Please provide the SVG and I'll convert it to a React component. + +You can usually find this in the service's brand/press kit page, or copy it from their website. +``` + ## Checklist Before Finishing - [ ] All subBlocks have `id`, `title` (except switch), and `type` @@ -588,4 +599,5 @@ See the `/add-trigger` skill for creating triggers. - [ ] Tools.config.tool returns correct tool ID - [ ] Outputs match tool outputs - [ ] Block registered in registry.ts +- [ ] If icon missing: asked user to provide SVG - [ ] If triggers exist: `triggers` config set, trigger subBlocks spread diff --git a/.claude/commands/add-integration.md b/.claude/commands/add-integration.md index 9a8e3ca69b..a6d2af5cf5 100644 --- a/.claude/commands/add-integration.md +++ b/.claude/commands/add-integration.md @@ -226,17 +226,26 @@ export function {Service}Icon(props: SVGProps) { fill="none" xmlns="http://www.w3.org/2000/svg" > - {/* SVG paths from brand assets */} + {/* SVG paths from user-provided SVG */} ) } ``` -### Finding Icons -1. Check the service's brand/press kit page -2. Download SVG logo -3. Convert to React component -4. Ensure it accepts and spreads props +### Getting Icons +**Do NOT search for icons yourself.** At the end of implementation, ask the user to provide the SVG: + +``` +I've completed the integration. Before I can add the icon, please provide the SVG for {Service}. +You can usually find this in the service's brand/press kit page, or copy it from their website. + +Paste the SVG code here and I'll convert it to a React component. +``` + +Once the user provides the SVG: +1. Extract the SVG paths/content +2. Create a React component that spreads props +3. Ensure viewBox is preserved from the original SVG ## Step 5: Create Triggers (Optional) @@ -405,6 +414,7 @@ If creating V2 versions (API-aligned outputs): - [ ] If triggers: spread trigger subBlocks with `getTrigger()` ### Icon +- [ ] Asked user to provide SVG - [ ] Added icon to `components/icons.tsx` - [ ] Icon spreads props correctly @@ -433,11 +443,18 @@ You: I'll add the Stripe integration. Let me: 1. First, research the Stripe API using Context7 2. Create the tools for key operations (payments, subscriptions, etc.) 3. Create the block with operation dropdown -4. Add the Stripe icon -5. Register everything -6. Generate docs +4. Register everything +5. Generate docs +6. Ask you for the Stripe icon SVG [Proceed with implementation...] + +[After completing steps 1-5...] + +I've completed the Stripe integration. Before I can add the icon, please provide the SVG for Stripe. +You can usually find this in the service's brand/press kit page, or copy it from their website. + +Paste the SVG code here and I'll convert it to a React component. ``` ## Common Gotchas diff --git a/.claude/commands/add-trigger.md b/.claude/commands/add-trigger.md index b65edf42a6..d252bf6166 100644 --- a/.claude/commands/add-trigger.md +++ b/.claude/commands/add-trigger.md @@ -552,6 +552,53 @@ All fields automatically have: - `mode: 'trigger'` - Only shown in trigger mode - `condition: { field: 'selectedTriggerId', value: triggerId }` - Only shown when this trigger is selected +## Trigger Outputs & Webhook Input Formatting + +### Important: Two Sources of Truth + +There are two related but separate concerns: + +1. **Trigger `outputs`** - Schema/contract defining what fields SHOULD be available. Used by UI for tag dropdown. +2. **`formatWebhookInput`** - Implementation that transforms raw webhook payload into actual data. Located in `apps/sim/lib/webhooks/utils.server.ts`. + +**These MUST be aligned.** The fields returned by `formatWebhookInput` should match what's defined in trigger `outputs`. If they differ: +- Tag dropdown shows fields that don't exist (broken variable resolution) +- Or actual data has fields not shown in dropdown (users can't discover them) + +### When to Add a formatWebhookInput Handler + +- **Simple providers**: If the raw webhook payload structure already matches your outputs, you don't need a handler. The generic fallback returns `body` directly. +- **Complex providers**: If you need to transform, flatten, extract nested data, compute fields, or handle conditional logic, add a handler. + +### Adding a Handler + +In `apps/sim/lib/webhooks/utils.server.ts`, add a handler block: + +```typescript +if (foundWebhook.provider === '{service}') { + // Transform raw webhook body to match trigger outputs + return { + eventType: body.type, + resourceId: body.data?.id || '', + timestamp: body.created_at, + resource: body.data, + } +} +``` + +**Key rules:** +- Return fields that match your trigger `outputs` definition exactly +- No wrapper objects like `webhook: { data: ... }` or `{service}: { ... }` +- No duplication (don't spread body AND add individual fields) +- Use `null` for missing optional data, not empty objects with empty strings + +### Verify Alignment + +Run the alignment checker: +```bash +bunx scripts/check-trigger-alignment.ts {service} +``` + ## Trigger Outputs Trigger outputs use the same schema as block outputs (NOT tool outputs). @@ -649,6 +696,11 @@ export const {service}WebhookTrigger: TriggerConfig = { - [ ] Added `delete{Service}Webhook` function to `provider-subscriptions.ts` - [ ] Added provider to `cleanupExternalWebhook` function +### Webhook Input Formatting +- [ ] Added handler in `apps/sim/lib/webhooks/utils.server.ts` (if custom formatting needed) +- [ ] Handler returns fields matching trigger `outputs` exactly +- [ ] Run `bunx scripts/check-trigger-alignment.ts {service}` to verify alignment + ### Testing - [ ] Run `bun run type-check` to verify no TypeScript errors - [ ] Restart dev server to pick up new triggers diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index bc01dfa94a..486504b174 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -1,11 +1,10 @@ name: 'Auto-translate Documentation' on: - push: - branches: [ staging ] - paths: - - 'apps/docs/content/docs/en/**' - - 'apps/docs/i18n.json' + schedule: + # Run every Sunday at midnight UTC + - cron: '0 0 * * 0' + workflow_dispatch: # Allow manual triggers permissions: contents: write @@ -20,6 +19,7 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 with: + ref: staging token: ${{ secrets.GH_PAT }} fetch-depth: 0 @@ -68,12 +68,11 @@ jobs: title: "feat(i18n): update translations" body: | ## Summary - Automated translation updates triggered by changes to documentation. - - This PR was automatically created after content changes were made, updating translations for all supported languages using Lingo.dev AI translation engine. - - **Original trigger**: ${{ github.event.head_commit.message }} - **Commit**: ${{ github.sha }} + Automated weekly translation updates for documentation. + + This PR was automatically created by the scheduled weekly i18n workflow, updating translations for all supported languages using Lingo.dev AI translation engine. + + **Triggered**: Weekly scheduled run **Workflow**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} ## Type of Change @@ -107,7 +106,7 @@ jobs: ## Screenshots/Videos - branch: auto-translate/staging-merge-${{ github.run_id }} + branch: auto-translate/weekly-${{ github.run_id }} base: staging labels: | i18n @@ -145,6 +144,8 @@ jobs: bun install --frozen-lockfile - name: Build documentation to verify translations + env: + DATABASE_URL: postgresql://dummy:dummy@localhost:5432/dummy run: | cd apps/docs bun run build @@ -153,7 +154,7 @@ jobs: run: | cd apps/docs echo "## Translation Status Report" >> $GITHUB_STEP_SUMMARY - echo "**Triggered by merge to staging branch**" >> $GITHUB_STEP_SUMMARY + echo "**Weekly scheduled translation run**" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY en_count=$(find content/docs/en -name "*.mdx" | wc -l) diff --git a/apps/docs/components/icons.tsx b/apps/docs/components/icons.tsx index 7addb30eaa..d8ebc1641e 100644 --- a/apps/docs/components/icons.tsx +++ b/apps/docs/components/icons.tsx @@ -1853,19 +1853,48 @@ export function LinearIcon(props: React.SVGProps) { ) } +export function LangsmithIcon(props: SVGProps) { + return ( + + + + + + ) +} + export function LemlistIcon(props: SVGProps) { return ( - - - - + + + + + ) } @@ -1889,6 +1918,19 @@ export function TelegramIcon(props: SVGProps) { ) } +export function TinybirdIcon(props: SVGProps) { + return ( + + + + + + + + + ) +} + export function ClayIcon(props: SVGProps) { return ( diff --git a/apps/docs/components/ui/icon-mapping.ts b/apps/docs/components/ui/icon-mapping.ts index fe03d578c1..79cd7c945e 100644 --- a/apps/docs/components/ui/icon-mapping.ts +++ b/apps/docs/components/ui/icon-mapping.ts @@ -55,6 +55,7 @@ import { JiraIcon, JiraServiceManagementIcon, KalshiIcon, + LangsmithIcon, LemlistIcon, LinearIcon, LinkedInIcon, @@ -107,6 +108,7 @@ import { SupabaseIcon, TavilyIcon, TelegramIcon, + TinybirdIcon, TranslateIcon, TrelloIcon, TTSIcon, @@ -179,6 +181,7 @@ export const blockTypeToIconMap: Record = { jira_service_management: JiraServiceManagementIcon, kalshi: KalshiIcon, knowledge: PackageSearchIcon, + langsmith: LangsmithIcon, lemlist: LemlistIcon, linear: LinearIcon, linkedin: LinkedInIcon, @@ -230,6 +233,7 @@ export const blockTypeToIconMap: Record = { supabase: SupabaseIcon, tavily: TavilyIcon, telegram: TelegramIcon, + tinybird: TinybirdIcon, translate: TranslateIcon, trello: TrelloIcon, tts: TTSIcon, diff --git a/apps/docs/content/docs/en/execution/costs.mdx b/apps/docs/content/docs/en/execution/costs.mdx index 54c8a5dda5..65dcd8a583 100644 --- a/apps/docs/content/docs/en/execution/costs.mdx +++ b/apps/docs/content/docs/en/execution/costs.mdx @@ -12,7 +12,7 @@ Sim automatically calculates costs for all workflow executions, providing transp Every workflow execution includes two cost components: -**Base Execution Charge**: $0.001 per execution +**Base Execution Charge**: $0.005 per execution **AI Model Usage**: Variable cost based on token consumption ```javascript @@ -48,40 +48,40 @@ The model breakdown shows: - **Hosted Models** - Sim provides API keys with a 1.4x pricing multiplier for Agent blocks: + **Hosted Models** - Sim provides API keys with a 1.1x pricing multiplier for Agent blocks: **OpenAI** | Model | Base Price (Input/Output) | Hosted Price (Input/Output) | |-------|---------------------------|----------------------------| - | GPT-5.1 | $1.25 / $10.00 | $1.75 / $14.00 | - | GPT-5 | $1.25 / $10.00 | $1.75 / $14.00 | - | GPT-5 Mini | $0.25 / $2.00 | $0.35 / $2.80 | - | GPT-5 Nano | $0.05 / $0.40 | $0.07 / $0.56 | - | GPT-4o | $2.50 / $10.00 | $3.50 / $14.00 | - | GPT-4.1 | $2.00 / $8.00 | $2.80 / $11.20 | - | GPT-4.1 Mini | $0.40 / $1.60 | $0.56 / $2.24 | - | GPT-4.1 Nano | $0.10 / $0.40 | $0.14 / $0.56 | - | o1 | $15.00 / $60.00 | $21.00 / $84.00 | - | o3 | $2.00 / $8.00 | $2.80 / $11.20 | - | o4 Mini | $1.10 / $4.40 | $1.54 / $6.16 | + | GPT-5.1 | $1.25 / $10.00 | $1.38 / $11.00 | + | GPT-5 | $1.25 / $10.00 | $1.38 / $11.00 | + | GPT-5 Mini | $0.25 / $2.00 | $0.28 / $2.20 | + | GPT-5 Nano | $0.05 / $0.40 | $0.06 / $0.44 | + | GPT-4o | $2.50 / $10.00 | $2.75 / $11.00 | + | GPT-4.1 | $2.00 / $8.00 | $2.20 / $8.80 | + | GPT-4.1 Mini | $0.40 / $1.60 | $0.44 / $1.76 | + | GPT-4.1 Nano | $0.10 / $0.40 | $0.11 / $0.44 | + | o1 | $15.00 / $60.00 | $16.50 / $66.00 | + | o3 | $2.00 / $8.00 | $2.20 / $8.80 | + | o4 Mini | $1.10 / $4.40 | $1.21 / $4.84 | **Anthropic** | Model | Base Price (Input/Output) | Hosted Price (Input/Output) | |-------|---------------------------|----------------------------| - | Claude Opus 4.5 | $5.00 / $25.00 | $7.00 / $35.00 | - | Claude Opus 4.1 | $15.00 / $75.00 | $21.00 / $105.00 | - | Claude Sonnet 4.5 | $3.00 / $15.00 | $4.20 / $21.00 | - | Claude Sonnet 4.0 | $3.00 / $15.00 | $4.20 / $21.00 | - | Claude Haiku 4.5 | $1.00 / $5.00 | $1.40 / $7.00 | + | Claude Opus 4.5 | $5.00 / $25.00 | $5.50 / $27.50 | + | Claude Opus 4.1 | $15.00 / $75.00 | $16.50 / $82.50 | + | Claude Sonnet 4.5 | $3.00 / $15.00 | $3.30 / $16.50 | + | Claude Sonnet 4.0 | $3.00 / $15.00 | $3.30 / $16.50 | + | Claude Haiku 4.5 | $1.00 / $5.00 | $1.10 / $5.50 | **Google** | Model | Base Price (Input/Output) | Hosted Price (Input/Output) | |-------|---------------------------|----------------------------| - | Gemini 3 Pro Preview | $2.00 / $12.00 | $2.80 / $16.80 | - | Gemini 2.5 Pro | $1.25 / $10.00 | $1.75 / $14.00 | - | Gemini 2.5 Flash | $0.30 / $2.50 | $0.42 / $3.50 | + | Gemini 3 Pro Preview | $2.00 / $12.00 | $2.20 / $13.20 | + | Gemini 2.5 Pro | $1.25 / $10.00 | $1.38 / $11.00 | + | Gemini 2.5 Flash | $0.30 / $2.50 | $0.33 / $2.75 | - *The 1.4x multiplier covers infrastructure and API management costs.* + *The 1.1x multiplier covers infrastructure and API management costs.* diff --git a/apps/docs/content/docs/en/tools/a2a.mdx b/apps/docs/content/docs/en/tools/a2a.mdx index 558f1f907e..9e7ea9ee4e 100644 --- a/apps/docs/content/docs/en/tools/a2a.mdx +++ b/apps/docs/content/docs/en/tools/a2a.mdx @@ -44,6 +44,8 @@ Send a message to an external A2A-compatible agent. | `message` | string | Yes | Message to send to the agent | | `taskId` | string | No | Task ID for continuing an existing task | | `contextId` | string | No | Context ID for conversation continuity | +| `data` | string | No | Structured data to include with the message \(JSON string\) | +| `files` | array | No | Files to include with the message | | `apiKey` | string | No | API key for authentication | #### Output @@ -208,8 +210,3 @@ Delete the push notification webhook configuration for a task. | `success` | boolean | Whether deletion was successful | - -## Notes - -- Category: `tools` -- Type: `a2a` diff --git a/apps/docs/content/docs/en/tools/ahrefs.mdx b/apps/docs/content/docs/en/tools/ahrefs.mdx index 1ad2148757..0326071ddb 100644 --- a/apps/docs/content/docs/en/tools/ahrefs.mdx +++ b/apps/docs/content/docs/en/tools/ahrefs.mdx @@ -72,6 +72,13 @@ Get a list of backlinks pointing to a target domain or URL. Returns details abou | Parameter | Type | Description | | --------- | ---- | ----------- | | `backlinks` | array | List of backlinks pointing to the target | +| ↳ `urlFrom` | string | The URL of the page containing the backlink | +| ↳ `urlTo` | string | The URL being linked to | +| ↳ `anchor` | string | The anchor text of the link | +| ↳ `domainRatingSource` | number | Domain Rating of the linking domain | +| ↳ `isDofollow` | boolean | Whether the link is dofollow | +| ↳ `firstSeen` | string | When the backlink was first discovered | +| ↳ `lastVisited` | string | When the backlink was last checked | ### `ahrefs_backlinks_stats` @@ -91,6 +98,12 @@ Get backlink statistics for a target domain or URL. Returns totals for different | Parameter | Type | Description | | --------- | ---- | ----------- | | `stats` | object | Backlink statistics summary | +| ↳ `total` | number | Total number of live backlinks | +| ↳ `dofollow` | number | Number of dofollow backlinks | +| ↳ `nofollow` | number | Number of nofollow backlinks | +| ↳ `text` | number | Number of text backlinks | +| ↳ `image` | number | Number of image backlinks | +| ↳ `redirect` | number | Number of redirect backlinks | ### `ahrefs_referring_domains` @@ -112,6 +125,12 @@ Get a list of domains that link to a target domain or URL. Returns unique referr | Parameter | Type | Description | | --------- | ---- | ----------- | | `referringDomains` | array | List of domains linking to the target | +| ↳ `domain` | string | The referring domain | +| ↳ `domainRating` | number | Domain Rating of the referring domain | +| ↳ `backlinks` | number | Total number of backlinks from this domain | +| ↳ `dofollowBacklinks` | number | Number of dofollow backlinks from this domain | +| ↳ `firstSeen` | string | When the domain was first seen linking | +| ↳ `lastVisited` | string | When the domain was last checked | ### `ahrefs_organic_keywords` @@ -134,6 +153,12 @@ Get organic keywords that a target domain or URL ranks for in Google search resu | Parameter | Type | Description | | --------- | ---- | ----------- | | `keywords` | array | List of organic keywords the target ranks for | +| ↳ `keyword` | string | The keyword | +| ↳ `volume` | number | Monthly search volume | +| ↳ `position` | number | Current ranking position | +| ↳ `url` | string | The URL that ranks for this keyword | +| ↳ `traffic` | number | Estimated monthly organic traffic | +| ↳ `keywordDifficulty` | number | Keyword difficulty score \(0-100\) | ### `ahrefs_top_pages` @@ -157,6 +182,11 @@ Get the top pages of a target domain sorted by organic traffic. Returns page URL | Parameter | Type | Description | | --------- | ---- | ----------- | | `pages` | array | List of top pages by organic traffic | +| ↳ `url` | string | The page URL | +| ↳ `traffic` | number | Estimated monthly organic traffic | +| ↳ `keywords` | number | Number of keywords the page ranks for | +| ↳ `topKeyword` | string | The top keyword driving traffic to this page | +| ↳ `value` | number | Estimated traffic value in USD | ### `ahrefs_keyword_overview` @@ -175,6 +205,14 @@ Get detailed metrics for a keyword including search volume, keyword difficulty, | Parameter | Type | Description | | --------- | ---- | ----------- | | `overview` | object | Keyword metrics overview | +| ↳ `keyword` | string | The analyzed keyword | +| ↳ `searchVolume` | number | Monthly search volume | +| ↳ `keywordDifficulty` | number | Keyword difficulty score \(0-100\) | +| ↳ `cpc` | number | Cost per click in USD | +| ↳ `clicks` | number | Estimated clicks per month | +| ↳ `clicksPercentage` | number | Percentage of searches that result in clicks | +| ↳ `parentTopic` | string | The parent topic for this keyword | +| ↳ `trafficPotential` | number | Estimated traffic potential if ranking #1 | ### `ahrefs_broken_backlinks` @@ -196,5 +234,10 @@ Get a list of broken backlinks pointing to a target domain or URL. Useful for id | Parameter | Type | Description | | --------- | ---- | ----------- | | `brokenBacklinks` | array | List of broken backlinks | +| ↳ `urlFrom` | string | The URL of the page containing the broken link | +| ↳ `urlTo` | string | The broken URL being linked to | +| ↳ `httpCode` | number | HTTP status code \(e.g., 404, 410\) | +| ↳ `anchor` | string | The anchor text of the link | +| ↳ `domainRatingSource` | number | Domain Rating of the linking domain | diff --git a/apps/docs/content/docs/en/tools/airtable.mdx b/apps/docs/content/docs/en/tools/airtable.mdx index 8986c0e2f5..2c573c4ba3 100644 --- a/apps/docs/content/docs/en/tools/airtable.mdx +++ b/apps/docs/content/docs/en/tools/airtable.mdx @@ -50,6 +50,7 @@ Read records from an Airtable table | Parameter | Type | Description | | --------- | ---- | ----------- | | `records` | json | Array of retrieved Airtable records | +| `metadata` | json | Operation metadata including pagination offset and total records count | ### `airtable_get_record` @@ -88,6 +89,7 @@ Write new records to an Airtable table | Parameter | Type | Description | | --------- | ---- | ----------- | | `records` | json | Array of created Airtable records | +| `metadata` | json | Operation metadata | ### `airtable_update_record` @@ -126,5 +128,6 @@ Update multiple existing records in an Airtable table | Parameter | Type | Description | | --------- | ---- | ----------- | | `records` | json | Array of updated Airtable records | +| `metadata` | json | Operation metadata including record count and updated record IDs | diff --git a/apps/docs/content/docs/en/tools/arxiv.mdx b/apps/docs/content/docs/en/tools/arxiv.mdx index acb1e6b0f3..011a79929b 100644 --- a/apps/docs/content/docs/en/tools/arxiv.mdx +++ b/apps/docs/content/docs/en/tools/arxiv.mdx @@ -52,6 +52,7 @@ Search for academic papers on ArXiv by keywords, authors, titles, or other field | Parameter | Type | Description | | --------- | ---- | ----------- | | `papers` | json | Array of papers matching the search query | +| `totalResults` | number | Total number of results found for the search query | ### `arxiv_get_paper` @@ -85,5 +86,6 @@ Search for papers by a specific author on ArXiv. | Parameter | Type | Description | | --------- | ---- | ----------- | | `authorPapers` | json | Array of papers authored by the specified author | +| `totalResults` | number | Total number of papers found for the author | diff --git a/apps/docs/content/docs/en/tools/asana.mdx b/apps/docs/content/docs/en/tools/asana.mdx index 0c3823c93d..6c4e6a39e0 100644 --- a/apps/docs/content/docs/en/tools/asana.mdx +++ b/apps/docs/content/docs/en/tools/asana.mdx @@ -44,6 +44,18 @@ Retrieve a single task by GID or get multiple tasks with filters | `notes` | string | Task notes or description | | `completed` | boolean | Whether the task is completed | | `assignee` | object | Assignee details | +| ↳ `gid` | string | Assignee GID | +| ↳ `name` | string | Assignee name | +| `created_by` | object | Creator details | +| ↳ `gid` | string | Creator GID | +| ↳ `name` | string | Creator name | +| `due_on` | string | Due date \(YYYY-MM-DD\) | +| `created_at` | string | Task creation timestamp | +| `modified_at` | string | Task last modified timestamp | +| `tasks` | array | Array of tasks \(when fetching multiple\) | +| ↳ `gid` | string | Task GID | +| ↳ `name` | string | Task name | +| ↳ `completed` | boolean | Completion status | ### `asana_create_task` @@ -116,6 +128,9 @@ Retrieve all projects from an Asana workspace | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `projects` | array | Array of projects | +| ↳ `gid` | string | Project GID | +| ↳ `name` | string | Project name | +| ↳ `resource_type` | string | Resource type \(project\) | ### `asana_search_tasks` @@ -138,6 +153,22 @@ Search for tasks in an Asana workspace | `success` | boolean | Operation success status | | `ts` | string | Timestamp of the response | | `tasks` | array | Array of matching tasks | +| ↳ `gid` | string | Assignee GID | +| ↳ `resource_type` | string | Resource type | +| ↳ `resource_subtype` | string | Resource subtype | +| ↳ `name` | string | Assignee name | +| ↳ `notes` | string | Task notes | +| ↳ `completed` | boolean | Completion status | +| ↳ `assignee` | object | Assignee details | +| ↳ `gid` | string | Assignee GID | +| ↳ `name` | string | Assignee name | +| ↳ `due_on` | string | Due date | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `modified_at` | string | Modified timestamp | +| `next_page` | object | Pagination info | +| ↳ `offset` | string | Offset token | +| ↳ `path` | string | API path | +| ↳ `uri` | string | Full URI | ### `asana_add_comment` @@ -160,5 +191,7 @@ Add a comment (story) to an Asana task | `text` | string | Comment text content | | `created_at` | string | Comment creation timestamp | | `created_by` | object | Comment author details | +| ↳ `gid` | string | Author GID | +| ↳ `name` | string | Author name | diff --git a/apps/docs/content/docs/en/tools/calendly.mdx b/apps/docs/content/docs/en/tools/calendly.mdx index ac6fdbb70c..1d212e5c93 100644 --- a/apps/docs/content/docs/en/tools/calendly.mdx +++ b/apps/docs/content/docs/en/tools/calendly.mdx @@ -47,6 +47,16 @@ Get information about the currently authenticated Calendly user | Parameter | Type | Description | | --------- | ---- | ----------- | | `resource` | object | Current user information | +| ↳ `uri` | string | Canonical reference to the user | +| ↳ `name` | string | User full name | +| ↳ `slug` | string | Unique identifier for the user in URLs | +| ↳ `email` | string | User email address | +| ↳ `scheduling_url` | string | URL to the user | +| ↳ `timezone` | string | User timezone | +| ↳ `avatar_url` | string | URL to user avatar image | +| ↳ `created_at` | string | ISO timestamp when user was created | +| ↳ `updated_at` | string | ISO timestamp when user was last updated | +| ↳ `current_organization` | string | URI of current organization | ### `calendly_list_event_types` @@ -69,6 +79,25 @@ Retrieve a list of all event types for a user or organization | Parameter | Type | Description | | --------- | ---- | ----------- | | `collection` | array | Array of event type objects | +| ↳ `uri` | string | Canonical reference to the event type | +| ↳ `name` | string | Event type name | +| ↳ `active` | boolean | Whether the event type is active | +| ↳ `booking_method` | string | Booking method \(e.g., | +| ↳ `color` | string | Hex color code | +| ↳ `created_at` | string | ISO timestamp of creation | +| ↳ `description_html` | string | HTML formatted description | +| ↳ `description_plain` | string | Plain text description | +| ↳ `duration` | number | Duration in minutes | +| ↳ `scheduling_url` | string | URL to scheduling page | +| ↳ `slug` | string | Unique identifier for URLs | +| ↳ `type` | string | Event type classification | +| ↳ `updated_at` | string | ISO timestamp of last update | +| `pagination` | object | Pagination information | +| ↳ `count` | number | Number of results in this page | +| ↳ `next_page` | string | URL to next page \(if available\) | +| ↳ `previous_page` | string | URL to previous page \(if available\) | +| ↳ `next_page_token` | string | Token for next page | +| ↳ `previous_page_token` | string | Token for previous page | ### `calendly_get_event_type` @@ -86,6 +115,30 @@ Get detailed information about a specific event type | Parameter | Type | Description | | --------- | ---- | ----------- | | `resource` | object | Event type details | +| ↳ `uri` | string | Canonical reference to the event type | +| ↳ `name` | string | Question text | +| ↳ `active` | boolean | Whether the event type is active | +| ↳ `booking_method` | string | Booking method | +| ↳ `color` | string | Hex color code | +| ↳ `created_at` | string | ISO timestamp of creation | +| ↳ `custom_questions` | array | Custom questions for invitees | +| ↳ `name` | string | Question text | +| ↳ `type` | string | Question type \(text, single_select, multi_select, etc.\) | +| ↳ `position` | number | Question order | +| ↳ `enabled` | boolean | Whether question is enabled | +| ↳ `required` | boolean | Whether question is required | +| ↳ `answer_choices` | array | Available answer choices | +| ↳ `type` | string | Event type classification | +| ↳ `position` | number | Question order | +| ↳ `enabled` | boolean | Whether question is enabled | +| ↳ `required` | boolean | Whether question is required | +| ↳ `answer_choices` | array | Available answer choices | +| ↳ `description_html` | string | HTML formatted description | +| ↳ `description_plain` | string | Plain text description | +| ↳ `duration` | number | Duration in minutes | +| ↳ `scheduling_url` | string | URL to scheduling page | +| ↳ `slug` | string | Unique identifier for URLs | +| ↳ `updated_at` | string | ISO timestamp of last update | ### `calendly_list_scheduled_events` @@ -111,6 +164,30 @@ Retrieve a list of scheduled events for a user or organization | Parameter | Type | Description | | --------- | ---- | ----------- | | `collection` | array | Array of scheduled event objects | +| ↳ `uri` | string | Canonical reference to the event | +| ↳ `name` | string | Event name | +| ↳ `status` | string | Event status \(active or canceled\) | +| ↳ `start_time` | string | ISO timestamp of event start | +| ↳ `end_time` | string | ISO timestamp of event end | +| ↳ `event_type` | string | URI of the event type | +| ↳ `location` | string | Location description | +| ↳ `type` | string | Location type \(e.g., | +| ↳ `join_url` | string | URL to join online meeting \(if applicable\) | +| ↳ `invitees_counter` | object | Invitee count information | +| ↳ `total` | number | Total number of invitees | +| ↳ `active` | number | Number of active invitees | +| ↳ `limit` | number | Maximum number of invitees | +| ↳ `total` | number | Total number of invitees | +| ↳ `active` | number | Number of active invitees | +| ↳ `limit` | number | Maximum number of invitees | +| ↳ `created_at` | string | ISO timestamp of event creation | +| ↳ `updated_at` | string | ISO timestamp of last update | +| `pagination` | object | Pagination information | +| ↳ `count` | number | Number of results in this page | +| ↳ `next_page` | string | URL to next page \(if available\) | +| ↳ `previous_page` | string | URL to previous page \(if available\) | +| ↳ `next_page_token` | string | Token for next page | +| ↳ `previous_page_token` | string | Token for previous page | ### `calendly_get_scheduled_event` @@ -128,6 +205,36 @@ Get detailed information about a specific scheduled event | Parameter | Type | Description | | --------- | ---- | ----------- | | `resource` | object | Scheduled event details | +| ↳ `uri` | string | Canonical reference to the event | +| ↳ `name` | string | Event name | +| ↳ `status` | string | Event status \(active or canceled\) | +| ↳ `start_time` | string | ISO timestamp of event start | +| ↳ `end_time` | string | ISO timestamp of event end | +| ↳ `event_type` | string | URI of the event type | +| ↳ `location` | string | Location description | +| ↳ `type` | string | Location type | +| ↳ `join_url` | string | URL to join online meeting | +| ↳ `invitees_counter` | object | Invitee count information | +| ↳ `total` | number | Total number of invitees | +| ↳ `active` | number | Number of active invitees | +| ↳ `limit` | number | Maximum number of invitees | +| ↳ `total` | number | Total number of invitees | +| ↳ `active` | number | Number of active invitees | +| ↳ `limit` | number | Maximum number of invitees | +| ↳ `event_memberships` | array | Event hosts/members | +| ↳ `user` | string | User URI | +| ↳ `user_email` | string | User email | +| ↳ `user_name` | string | User name | +| ↳ `user` | string | User URI | +| ↳ `user_email` | string | User email | +| ↳ `user_name` | string | User name | +| ↳ `event_guests` | array | Additional guests | +| ↳ `email` | string | Guest email | +| ↳ `created_at` | string | When guest was added | +| ↳ `updated_at` | string | When guest info was updated | +| ↳ `email` | string | Guest email | +| ↳ `created_at` | string | ISO timestamp of event creation | +| ↳ `updated_at` | string | ISO timestamp of last update | ### `calendly_list_event_invitees` @@ -150,6 +257,32 @@ Retrieve a list of invitees for a scheduled event | Parameter | Type | Description | | --------- | ---- | ----------- | | `collection` | array | Array of invitee objects | +| ↳ `uri` | string | Canonical reference to the invitee | +| ↳ `email` | string | Invitee email address | +| ↳ `name` | string | Invitee full name | +| ↳ `first_name` | string | Invitee first name | +| ↳ `last_name` | string | Invitee last name | +| ↳ `status` | string | Invitee status \(active or canceled\) | +| ↳ `questions_and_answers` | array | Responses to custom questions | +| ↳ `question` | string | Question text | +| ↳ `answer` | string | Invitee answer | +| ↳ `position` | number | Question order | +| ↳ `question` | string | Question text | +| ↳ `answer` | string | Invitee answer | +| ↳ `position` | number | Question order | +| ↳ `timezone` | string | Invitee timezone | +| ↳ `event` | string | URI of the scheduled event | +| ↳ `created_at` | string | ISO timestamp when invitee was created | +| ↳ `updated_at` | string | ISO timestamp when invitee was updated | +| ↳ `cancel_url` | string | URL to cancel the booking | +| ↳ `reschedule_url` | string | URL to reschedule the booking | +| ↳ `rescheduled` | boolean | Whether invitee rescheduled | +| `pagination` | object | Pagination information | +| ↳ `count` | number | Number of results in this page | +| ↳ `next_page` | string | URL to next page \(if available\) | +| ↳ `previous_page` | string | URL to previous page \(if available\) | +| ↳ `next_page_token` | string | Token for next page | +| ↳ `previous_page_token` | string | Token for previous page | ### `calendly_cancel_event` @@ -168,5 +301,9 @@ Cancel a scheduled event | Parameter | Type | Description | | --------- | ---- | ----------- | | `resource` | object | Cancellation details | +| ↳ `canceler_type` | string | Type of canceler \(host or invitee\) | +| ↳ `canceled_by` | string | Name of person who canceled | +| ↳ `reason` | string | Cancellation reason | +| ↳ `created_at` | string | ISO timestamp when event was canceled | diff --git a/apps/docs/content/docs/en/tools/clay.mdx b/apps/docs/content/docs/en/tools/clay.mdx index 2dca8e9390..b3b84178b2 100644 --- a/apps/docs/content/docs/en/tools/clay.mdx +++ b/apps/docs/content/docs/en/tools/clay.mdx @@ -61,5 +61,10 @@ Populate Clay with data from a JSON file. Enables direct communication and notif | --------- | ---- | ----------- | | `data` | json | Response data from Clay webhook | | `metadata` | object | Webhook response metadata | +| ↳ `status` | number | HTTP status code | +| ↳ `statusText` | string | HTTP status text | +| ↳ `headers` | object | Response headers from Clay | +| ↳ `timestamp` | string | ISO timestamp when webhook was received | +| ↳ `contentType` | string | Content type of the response | diff --git a/apps/docs/content/docs/en/tools/datadog.mdx b/apps/docs/content/docs/en/tools/datadog.mdx index 25c9fe784f..bbcc32d8a0 100644 --- a/apps/docs/content/docs/en/tools/datadog.mdx +++ b/apps/docs/content/docs/en/tools/datadog.mdx @@ -99,6 +99,15 @@ Post an event to the Datadog event stream. Use for deployment notifications, ale | Parameter | Type | Description | | --------- | ---- | ----------- | | `event` | object | The created event details | +| ↳ `id` | number | Event ID | +| ↳ `title` | string | Event title | +| ↳ `text` | string | Event text | +| ↳ `date_happened` | number | Unix timestamp when event occurred | +| ↳ `priority` | string | Event priority | +| ↳ `alert_type` | string | Alert type | +| ↳ `host` | string | Associated host | +| ↳ `tags` | array | Event tags | +| ↳ `url` | string | URL to view the event in Datadog | ### `datadog_create_monitor` @@ -124,6 +133,16 @@ Create a new monitor/alert in Datadog. Monitors can track metrics, service check | Parameter | Type | Description | | --------- | ---- | ----------- | | `monitor` | object | The created monitor details | +| ↳ `id` | number | Monitor ID | +| ↳ `name` | string | Monitor name | +| ↳ `type` | string | Monitor type | +| ↳ `query` | string | Monitor query | +| ↳ `message` | string | Notification message | +| ↳ `tags` | array | Monitor tags | +| ↳ `priority` | number | Monitor priority | +| ↳ `overall_state` | string | Current monitor state | +| ↳ `created` | string | Creation timestamp | +| ↳ `modified` | string | Last modification timestamp | ### `datadog_get_monitor` @@ -145,6 +164,16 @@ Retrieve details of a specific monitor by ID. | Parameter | Type | Description | | --------- | ---- | ----------- | | `monitor` | object | The monitor details | +| ↳ `id` | number | Monitor ID | +| ↳ `name` | string | Monitor name | +| ↳ `type` | string | Monitor type | +| ↳ `query` | string | Monitor query | +| ↳ `message` | string | Notification message | +| ↳ `tags` | array | Monitor tags | +| ↳ `priority` | number | Monitor priority | +| ↳ `overall_state` | string | Current monitor state | +| ↳ `created` | string | Creation timestamp | +| ↳ `modified` | string | Last modification timestamp | ### `datadog_list_monitors` @@ -170,6 +199,12 @@ List all monitors in Datadog with optional filtering by name, tags, or state. | Parameter | Type | Description | | --------- | ---- | ----------- | | `monitors` | array | List of monitors | +| ↳ `id` | number | Monitor ID | +| ↳ `name` | string | Monitor name | +| ↳ `type` | string | Monitor type | +| ↳ `query` | string | Monitor query | +| ↳ `overall_state` | string | Current state | +| ↳ `tags` | array | Tags | ### `datadog_mute_monitor` @@ -215,6 +250,19 @@ Search and retrieve logs from Datadog. Use for troubleshooting, analysis, or mon | Parameter | Type | Description | | --------- | ---- | ----------- | | `logs` | array | List of log entries | +| ↳ `id` | string | Log ID | +| ↳ `content` | object | Log content | +| ↳ `timestamp` | string | Log timestamp | +| ↳ `host` | string | Host name | +| ↳ `service` | string | Service name | +| ↳ `message` | string | Log message | +| ↳ `status` | string | Log status/level | +| ↳ `timestamp` | string | Log timestamp | +| ↳ `host` | string | Host name | +| ↳ `service` | string | Service name | +| ↳ `message` | string | Log message | +| ↳ `status` | string | Log status/level | +| `nextLogId` | string | Cursor for pagination | ### `datadog_send_logs` @@ -259,6 +307,12 @@ Schedule a downtime to suppress monitor notifications during maintenance windows | Parameter | Type | Description | | --------- | ---- | ----------- | | `downtime` | object | The created downtime details | +| ↳ `id` | number | Downtime ID | +| ↳ `scope` | array | Downtime scope | +| ↳ `message` | string | Downtime message | +| ↳ `start` | number | Start time \(Unix timestamp\) | +| ↳ `end` | number | End time \(Unix timestamp\) | +| ↳ `active` | boolean | Whether downtime is currently active | ### `datadog_list_downtimes` @@ -279,6 +333,12 @@ List all scheduled downtimes in Datadog. | Parameter | Type | Description | | --------- | ---- | ----------- | | `downtimes` | array | List of downtimes | +| ↳ `id` | number | Downtime ID | +| ↳ `scope` | array | Downtime scope | +| ↳ `message` | string | Downtime message | +| ↳ `start` | number | Start time \(Unix timestamp\) | +| ↳ `end` | number | End time \(Unix timestamp\) | +| ↳ `active` | boolean | Whether downtime is currently active | ### `datadog_cancel_downtime` diff --git a/apps/docs/content/docs/en/tools/discord.mdx b/apps/docs/content/docs/en/tools/discord.mdx index 27c77f10f5..4640536573 100644 --- a/apps/docs/content/docs/en/tools/discord.mdx +++ b/apps/docs/content/docs/en/tools/discord.mdx @@ -64,6 +64,24 @@ Send a message to a Discord channel | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Discord message data | +| ↳ `id` | string | Author user ID | +| ↳ `content` | string | Message content | +| ↳ `channel_id` | string | Channel ID where message was sent | +| ↳ `author` | object | Message author information | +| ↳ `id` | string | Author user ID | +| ↳ `username` | string | Author username | +| ↳ `avatar` | string | Author avatar hash | +| ↳ `bot` | boolean | Whether author is a bot | +| ↳ `username` | string | Author username | +| ↳ `avatar` | string | Author avatar hash | +| ↳ `bot` | boolean | Whether author is a bot | +| ↳ `timestamp` | string | Message timestamp | +| ↳ `edited_timestamp` | string | Message edited timestamp | +| ↳ `embeds` | array | Message embeds | +| ↳ `attachments` | array | Message attachments | +| ↳ `mentions` | array | User mentions in message | +| ↳ `mention_roles` | array | Role mentions in message | +| ↳ `mention_everyone` | boolean | Whether message mentions everyone | ### `discord_get_messages` @@ -83,6 +101,43 @@ Retrieve messages from a Discord channel | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Container for messages data | +| ↳ `messages` | array | Array of Discord messages with full metadata | +| ↳ `id` | string | Author user ID | +| ↳ `content` | string | Message content | +| ↳ `channel_id` | string | Channel ID | +| ↳ `author` | object | Message author information | +| ↳ `id` | string | Author user ID | +| ↳ `username` | string | Author username | +| ↳ `avatar` | string | Author avatar hash | +| ↳ `bot` | boolean | Whether author is a bot | +| ↳ `username` | string | Author username | +| ↳ `avatar` | string | Author avatar hash | +| ↳ `bot` | boolean | Whether author is a bot | +| ↳ `timestamp` | string | Message timestamp | +| ↳ `edited_timestamp` | string | Message edited timestamp | +| ↳ `embeds` | array | Message embeds | +| ↳ `attachments` | array | Message attachments | +| ↳ `mentions` | array | User mentions in message | +| ↳ `mention_roles` | array | Role mentions in message | +| ↳ `mention_everyone` | boolean | Whether message mentions everyone | +| ↳ `id` | string | Author user ID | +| ↳ `content` | string | Message content | +| ↳ `channel_id` | string | Channel ID | +| ↳ `author` | object | Message author information | +| ↳ `id` | string | Author user ID | +| ↳ `username` | string | Author username | +| ↳ `avatar` | string | Author avatar hash | +| ↳ `bot` | boolean | Whether author is a bot | +| ↳ `username` | string | Author username | +| ↳ `avatar` | string | Author avatar hash | +| ↳ `bot` | boolean | Whether author is a bot | +| ↳ `timestamp` | string | Message timestamp | +| ↳ `edited_timestamp` | string | Message edited timestamp | +| ↳ `embeds` | array | Message embeds | +| ↳ `attachments` | array | Message attachments | +| ↳ `mentions` | array | User mentions in message | +| ↳ `mention_roles` | array | Role mentions in message | +| ↳ `mention_everyone` | boolean | Whether message mentions everyone | ### `discord_get_server` @@ -101,6 +156,14 @@ Retrieve information about a Discord server (guild) | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Discord server \(guild\) information | +| ↳ `id` | string | Server ID | +| ↳ `name` | string | Server name | +| ↳ `icon` | string | Server icon hash | +| ↳ `description` | string | Server description | +| ↳ `owner_id` | string | Server owner user ID | +| ↳ `roles` | array | Server roles | +| ↳ `channels` | array | Server channels | +| ↳ `member_count` | number | Number of members in server | ### `discord_get_user` @@ -119,6 +182,14 @@ Retrieve information about a Discord user | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Discord user information | +| ↳ `id` | string | User ID | +| ↳ `username` | string | Username | +| ↳ `discriminator` | string | User discriminator \(4-digit number\) | +| ↳ `avatar` | string | User avatar hash | +| ↳ `bot` | boolean | Whether user is a bot | +| ↳ `system` | boolean | Whether user is a system user | +| ↳ `email` | string | User email \(if available\) | +| ↳ `verified` | boolean | Whether user email is verified | ### `discord_edit_message` @@ -140,6 +211,10 @@ Edit an existing message in a Discord channel | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Updated Discord message data | +| ↳ `id` | string | Message ID | +| ↳ `content` | string | Updated message content | +| ↳ `channel_id` | string | Channel ID | +| ↳ `edited_timestamp` | string | Message edited timestamp | ### `discord_delete_message` @@ -260,6 +335,11 @@ Create a thread in a Discord channel | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Created thread data | +| ↳ `id` | string | Thread ID | +| ↳ `name` | string | Thread name | +| ↳ `type` | number | Thread channel type | +| ↳ `guild_id` | string | Server ID | +| ↳ `parent_id` | string | Parent channel ID | ### `discord_join_thread` @@ -316,6 +396,8 @@ Archive or unarchive a thread in Discord | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Updated thread data | +| ↳ `id` | string | Thread ID | +| ↳ `archived` | boolean | Whether thread is archived | ### `discord_create_channel` @@ -338,6 +420,10 @@ Create a new channel in a Discord server | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Created channel data | +| ↳ `id` | string | Channel ID | +| ↳ `name` | string | Channel name | +| ↳ `type` | number | Channel type | +| ↳ `guild_id` | string | Server ID | ### `discord_update_channel` @@ -359,6 +445,10 @@ Update a Discord channel | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Updated channel data | +| ↳ `id` | string | Channel ID | +| ↳ `name` | string | Channel name | +| ↳ `type` | number | Channel type | +| ↳ `topic` | string | Channel topic | ### `discord_delete_channel` @@ -396,6 +486,11 @@ Get information about a Discord channel | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Channel data | +| ↳ `id` | string | Channel ID | +| ↳ `name` | string | Channel name | +| ↳ `type` | number | Channel type | +| ↳ `topic` | string | Channel topic | +| ↳ `guild_id` | string | Server ID | ### `discord_create_role` @@ -418,6 +513,11 @@ Create a new role in a Discord server | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Created role data | +| ↳ `id` | string | Role ID | +| ↳ `name` | string | Role name | +| ↳ `color` | number | Role color | +| ↳ `hoist` | boolean | Whether role is hoisted | +| ↳ `mentionable` | boolean | Whether role is mentionable | ### `discord_update_role` @@ -441,6 +541,9 @@ Update a role in a Discord server | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Updated role data | +| ↳ `id` | string | Role ID | +| ↳ `name` | string | Role name | +| ↳ `color` | number | Role color | ### `discord_delete_role` @@ -574,6 +677,16 @@ Get information about a member in a Discord server | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Member data | +| ↳ `user` | object | User information | +| ↳ `id` | string | User ID | +| ↳ `username` | string | Username | +| ↳ `avatar` | string | Avatar hash | +| ↳ `id` | string | User ID | +| ↳ `username` | string | Username | +| ↳ `avatar` | string | Avatar hash | +| ↳ `nick` | string | Server nickname | +| ↳ `roles` | array | Array of role IDs | +| ↳ `joined_at` | string | When the member joined | ### `discord_update_member` @@ -596,6 +709,9 @@ Update a member in a Discord server (e.g., change nickname) | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Updated member data | +| ↳ `nick` | string | Server nickname | +| ↳ `mute` | boolean | Voice mute status | +| ↳ `deaf` | boolean | Voice deaf status | ### `discord_create_invite` @@ -618,6 +734,11 @@ Create an invite link for a Discord channel | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Created invite data | +| ↳ `code` | string | Invite code | +| ↳ `url` | string | Full invite URL | +| ↳ `max_age` | number | Max age in seconds | +| ↳ `max_uses` | number | Max uses | +| ↳ `temporary` | boolean | Whether temporary | ### `discord_get_invite` @@ -637,6 +758,11 @@ Get information about a Discord invite | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Invite data | +| ↳ `code` | string | Invite code | +| ↳ `guild` | object | Server information | +| ↳ `channel` | object | Channel information | +| ↳ `approximate_member_count` | number | Approximate member count | +| ↳ `approximate_presence_count` | number | Approximate online count | ### `discord_delete_invite` @@ -675,6 +801,11 @@ Create a webhook in a Discord channel | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Created webhook data | +| ↳ `id` | string | Webhook ID | +| ↳ `name` | string | Webhook name | +| ↳ `token` | string | Webhook token | +| ↳ `url` | string | Webhook URL | +| ↳ `channel_id` | string | Channel ID | ### `discord_execute_webhook` @@ -696,6 +827,10 @@ Execute a Discord webhook to send a message | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Message sent via webhook | +| ↳ `id` | string | Message ID | +| ↳ `content` | string | Message content | +| ↳ `channel_id` | string | Channel ID | +| ↳ `timestamp` | string | Message timestamp | ### `discord_get_webhook` @@ -715,6 +850,11 @@ Get information about a Discord webhook | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Webhook data | +| ↳ `id` | string | Webhook ID | +| ↳ `name` | string | Webhook name | +| ↳ `channel_id` | string | Channel ID | +| ↳ `guild_id` | string | Server ID | +| ↳ `token` | string | Webhook token | ### `discord_delete_webhook` diff --git a/apps/docs/content/docs/en/tools/dropbox.mdx b/apps/docs/content/docs/en/tools/dropbox.mdx index 49a6ce22e8..a8ebc653b9 100644 --- a/apps/docs/content/docs/en/tools/dropbox.mdx +++ b/apps/docs/content/docs/en/tools/dropbox.mdx @@ -54,6 +54,15 @@ Upload a file to Dropbox | Parameter | Type | Description | | --------- | ---- | ----------- | | `file` | object | The uploaded file metadata | +| ↳ `id` | string | Unique identifier for the file | +| ↳ `name` | string | Name of the file | +| ↳ `path_display` | string | Display path of the file | +| ↳ `path_lower` | string | Lowercase path of the file | +| ↳ `size` | number | Size of the file in bytes | +| ↳ `client_modified` | string | Client modification time | +| ↳ `server_modified` | string | Server modification time | +| ↳ `rev` | string | Revision identifier | +| ↳ `content_hash` | string | Content hash for the file | ### `dropbox_download` @@ -70,6 +79,12 @@ Download a file from Dropbox and get a temporary link | Parameter | Type | Description | | --------- | ---- | ----------- | | `file` | object | The file metadata | +| ↳ `id` | string | Unique identifier for the file | +| ↳ `name` | string | Name of the file | +| ↳ `path_display` | string | Display path of the file | +| ↳ `size` | number | Size of the file in bytes | +| `temporaryLink` | string | Temporary link to download the file \(valid for ~4 hours\) | +| `content` | string | Base64 encoded file content \(if fetched\) | ### `dropbox_list_folder` @@ -90,6 +105,12 @@ List the contents of a folder in Dropbox | Parameter | Type | Description | | --------- | ---- | ----------- | | `entries` | array | List of files and folders in the directory | +| ↳ `id` | string | Unique identifier | +| ↳ `name` | string | Name of the file/folder | +| ↳ `path_display` | string | Display path | +| ↳ `size` | number | Size in bytes \(files only\) | +| `cursor` | string | Cursor for pagination | +| `hasMore` | boolean | Whether there are more results | ### `dropbox_create_folder` @@ -107,6 +128,10 @@ Create a new folder in Dropbox | Parameter | Type | Description | | --------- | ---- | ----------- | | `folder` | object | The created folder metadata | +| ↳ `id` | string | Unique identifier for the folder | +| ↳ `name` | string | Name of the folder | +| ↳ `path_display` | string | Display path of the folder | +| ↳ `path_lower` | string | Lowercase path of the folder | ### `dropbox_delete` @@ -123,6 +148,9 @@ Delete a file or folder in Dropbox (moves to trash) | Parameter | Type | Description | | --------- | ---- | ----------- | | `metadata` | object | Metadata of the deleted item | +| ↳ `name` | string | Name of the deleted item | +| ↳ `path_display` | string | Display path | +| `deleted` | boolean | Whether the deletion was successful | ### `dropbox_copy` @@ -141,6 +169,10 @@ Copy a file or folder in Dropbox | Parameter | Type | Description | | --------- | ---- | ----------- | | `metadata` | object | Metadata of the copied item | +| ↳ `id` | string | Unique identifier | +| ↳ `name` | string | Name of the copied item | +| ↳ `path_display` | string | Display path | +| ↳ `size` | number | Size in bytes \(files only\) | ### `dropbox_move` @@ -159,6 +191,10 @@ Move or rename a file or folder in Dropbox | Parameter | Type | Description | | --------- | ---- | ----------- | | `metadata` | object | Metadata of the moved item | +| ↳ `id` | string | Unique identifier | +| ↳ `name` | string | Name of the moved item | +| ↳ `path_display` | string | Display path | +| ↳ `size` | number | Size in bytes \(files only\) | ### `dropbox_get_metadata` @@ -177,6 +213,15 @@ Get metadata for a file or folder in Dropbox | Parameter | Type | Description | | --------- | ---- | ----------- | | `metadata` | object | Metadata for the file or folder | +| ↳ `id` | string | Unique identifier | +| ↳ `name` | string | Name of the item | +| ↳ `path_display` | string | Display path | +| ↳ `path_lower` | string | Lowercase path | +| ↳ `size` | number | Size in bytes \(files only\) | +| ↳ `client_modified` | string | Client modification time | +| ↳ `server_modified` | string | Server modification time | +| ↳ `rev` | string | Revision identifier | +| ↳ `content_hash` | string | Content hash | ### `dropbox_create_shared_link` @@ -196,6 +241,11 @@ Create a shareable link for a file or folder in Dropbox | Parameter | Type | Description | | --------- | ---- | ----------- | | `sharedLink` | object | The created shared link | +| ↳ `url` | string | The shared link URL | +| ↳ `name` | string | Name of the shared item | +| ↳ `path_lower` | string | Lowercase path of the shared item | +| ↳ `expires` | string | Expiration date if set | +| ↳ `link_permissions` | object | Permissions for the shared link | ### `dropbox_search` @@ -215,5 +265,9 @@ Search for files and folders in Dropbox | Parameter | Type | Description | | --------- | ---- | ----------- | | `matches` | array | Search results | +| ↳ `match_type` | object | Type of match: filename, content, or both | +| ↳ `metadata` | object | File or folder metadata | +| `hasMore` | boolean | Whether there are more results | +| `cursor` | string | Cursor for pagination | diff --git a/apps/docs/content/docs/en/tools/duckduckgo.mdx b/apps/docs/content/docs/en/tools/duckduckgo.mdx index 3530d15339..5cf62617e2 100644 --- a/apps/docs/content/docs/en/tools/duckduckgo.mdx +++ b/apps/docs/content/docs/en/tools/duckduckgo.mdx @@ -59,5 +59,12 @@ Search the web using DuckDuckGo Instant Answers API. Returns instant answers, ab | `answerType` | string | Type of the answer \(e.g., calc, ip, etc.\) | | `type` | string | Response type: A \(article\), D \(disambiguation\), C \(category\), N \(name\), E \(exclusive\) | | `relatedTopics` | array | Array of related topics with URLs and descriptions | +| ↳ `FirstURL` | string | URL to the related topic | +| ↳ `Text` | string | Description of the related topic | +| ↳ `Result` | string | HTML result snippet | +| `results` | array | Array of external link results | +| ↳ `FirstURL` | string | URL of the result | +| ↳ `Text` | string | Description of the result | +| ↳ `Result` | string | HTML result snippet | diff --git a/apps/docs/content/docs/en/tools/exa.mdx b/apps/docs/content/docs/en/tools/exa.mdx index b9200f332d..d1d4644df1 100644 --- a/apps/docs/content/docs/en/tools/exa.mdx +++ b/apps/docs/content/docs/en/tools/exa.mdx @@ -61,6 +61,15 @@ Search the web using Exa AI. Returns relevant search results with titles, URLs, | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Search results with titles, URLs, and text snippets | +| ↳ `title` | string | The title of the search result | +| ↳ `url` | string | The URL of the search result | +| ↳ `publishedDate` | string | Date when the content was published | +| ↳ `author` | string | The author of the content | +| ↳ `summary` | string | A brief summary of the content | +| ↳ `favicon` | string | URL of the site | +| ↳ `image` | string | URL of a representative image from the page | +| ↳ `text` | string | Text snippet or full content from the page | +| ↳ `score` | number | Relevance score for the search result | ### `exa_get_contents` @@ -84,6 +93,10 @@ Retrieve the contents of webpages using Exa AI. Returns the title, text content, | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Retrieved content from URLs with title, text, and summaries | +| ↳ `url` | string | The URL that content was retrieved from | +| ↳ `title` | string | The title of the webpage | +| ↳ `text` | string | The full text content of the webpage | +| ↳ `summary` | string | AI-generated summary of the webpage content | ### `exa_find_similar_links` @@ -109,6 +122,10 @@ Find webpages similar to a given URL using Exa AI. Returns a list of similar lin | Parameter | Type | Description | | --------- | ---- | ----------- | | `similarLinks` | array | Similar links found with titles, URLs, and text snippets | +| ↳ `title` | string | The title of the similar webpage | +| ↳ `url` | string | The URL of the similar webpage | +| ↳ `text` | string | Text snippet or full content from the similar webpage | +| ↳ `score` | number | Similarity score indicating how similar the page is | ### `exa_answer` @@ -128,6 +145,9 @@ Get an AI-generated answer to a question with citations from the web using Exa A | --------- | ---- | ----------- | | `answer` | string | AI-generated answer to the question | | `citations` | array | Sources and citations for the answer | +| ↳ `title` | string | The title of the cited source | +| ↳ `url` | string | The URL of the cited source | +| ↳ `text` | string | Relevant text from the cited source | ### `exa_research` diff --git a/apps/docs/content/docs/en/tools/firecrawl.mdx b/apps/docs/content/docs/en/tools/firecrawl.mdx index ab76814c8f..42b091655f 100644 --- a/apps/docs/content/docs/en/tools/firecrawl.mdx +++ b/apps/docs/content/docs/en/tools/firecrawl.mdx @@ -97,6 +97,21 @@ Crawl entire websites and extract structured content from all accessible pages | Parameter | Type | Description | | --------- | ---- | ----------- | | `pages` | array | Array of crawled pages with their content and metadata | +| ↳ `markdown` | string | Page content in markdown format | +| ↳ `html` | string | Page HTML content | +| ↳ `metadata` | object | Page metadata | +| ↳ `title` | string | Page title | +| ↳ `description` | string | Page description | +| ↳ `language` | string | Page language | +| ↳ `sourceURL` | string | Source URL of the page | +| ↳ `statusCode` | number | HTTP status code | +| ↳ `title` | string | Page title | +| ↳ `description` | string | Page description | +| ↳ `language` | string | Page language | +| ↳ `sourceURL` | string | Source URL of the page | +| ↳ `statusCode` | number | HTTP status code | +| `total` | number | Total number of pages found during crawl | +| `creditsUsed` | number | Number of credits consumed by the crawl operation | ### `firecrawl_map` diff --git a/apps/docs/content/docs/en/tools/fireflies.mdx b/apps/docs/content/docs/en/tools/fireflies.mdx index cdc57bc9fa..86d4f9ade5 100644 --- a/apps/docs/content/docs/en/tools/fireflies.mdx +++ b/apps/docs/content/docs/en/tools/fireflies.mdx @@ -75,6 +75,18 @@ Get a single transcript with full details including summary, action items, and a | Parameter | Type | Description | | --------- | ---- | ----------- | | `transcript` | object | The transcript with full details | +| ↳ `id` | string | Transcript ID | +| ↳ `title` | string | Meeting title | +| ↳ `date` | number | Meeting timestamp | +| ↳ `duration` | number | Meeting duration in seconds | +| ↳ `transcript_url` | string | URL to view transcript | +| ↳ `audio_url` | string | URL to audio recording | +| ↳ `host_email` | string | Host email address | +| ↳ `participants` | array | List of participant emails | +| ↳ `speakers` | array | List of speakers | +| ↳ `sentences` | array | Transcript sentences | +| ↳ `summary` | object | Meeting summary and action items | +| ↳ `analytics` | object | Meeting analytics and sentiment | ### `fireflies_get_user` @@ -92,6 +104,15 @@ Get user information from Fireflies.ai. Returns current user if no ID specified. | Parameter | Type | Description | | --------- | ---- | ----------- | | `user` | object | User information | +| ↳ `user_id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `integrations` | array | Connected integrations | +| ↳ `is_admin` | boolean | Whether user is admin | +| ↳ `minutes_consumed` | number | Total minutes transcribed | +| ↳ `num_transcripts` | number | Number of transcripts | +| ↳ `recent_transcript` | string | Most recent transcript ID | +| ↳ `recent_meeting` | string | Most recent meeting date | ### `fireflies_list_users` @@ -193,6 +214,9 @@ Create a soundbite/highlight from a specific time range in a transcript | Parameter | Type | Description | | --------- | ---- | ----------- | | `bite` | object | Created bite details | +| ↳ `id` | string | Bite ID | +| ↳ `name` | string | Bite name | +| ↳ `status` | string | Processing status | ### `fireflies_list_bites` diff --git a/apps/docs/content/docs/en/tools/google_docs.mdx b/apps/docs/content/docs/en/tools/google_docs.mdx index e9b9af71b9..597d547db8 100644 --- a/apps/docs/content/docs/en/tools/google_docs.mdx +++ b/apps/docs/content/docs/en/tools/google_docs.mdx @@ -87,6 +87,10 @@ Read content from a Google Docs document | --------- | ---- | ----------- | | `content` | string | Extracted document text content | | `metadata` | json | Document metadata including ID, title, and URL | +| ↳ `documentId` | string | Google Docs document ID | +| ↳ `title` | string | Document title | +| ↳ `mimeType` | string | Document MIME type | +| ↳ `url` | string | Document URL | ### `google_docs_write` @@ -105,6 +109,10 @@ Write or update content in a Google Docs document | --------- | ---- | ----------- | | `updatedContent` | boolean | Indicates if document content was updated successfully | | `metadata` | json | Updated document metadata including ID, title, and URL | +| ↳ `documentId` | string | Google Docs document ID | +| ↳ `title` | string | Document title | +| ↳ `mimeType` | string | Document MIME type | +| ↳ `url` | string | Document URL | ### `google_docs_create` @@ -124,5 +132,9 @@ Create a new Google Docs document | Parameter | Type | Description | | --------- | ---- | ----------- | | `metadata` | json | Created document metadata including ID, title, and URL | +| ↳ `documentId` | string | Google Docs document ID | +| ↳ `title` | string | Document title | +| ↳ `mimeType` | string | Document MIME type | +| ↳ `url` | string | Document URL | diff --git a/apps/docs/content/docs/en/tools/google_drive.mdx b/apps/docs/content/docs/en/tools/google_drive.mdx index 15c184e0a0..6dc71fee68 100644 --- a/apps/docs/content/docs/en/tools/google_drive.mdx +++ b/apps/docs/content/docs/en/tools/google_drive.mdx @@ -66,6 +66,58 @@ Upload a file to Google Drive with complete metadata returned | Parameter | Type | Description | | --------- | ---- | ----------- | | `file` | object | Complete uploaded file metadata from Google Drive | +| ↳ `id` | string | Google Drive file ID | +| ↳ `name` | string | File name | +| ↳ `mimeType` | string | MIME type | +| ↳ `kind` | string | Resource type identifier | +| ↳ `description` | string | File description | +| ↳ `originalFilename` | string | Original uploaded filename | +| ↳ `fullFileExtension` | string | Full file extension | +| ↳ `fileExtension` | string | File extension | +| ↳ `owners` | json | List of file owners | +| ↳ `permissions` | json | File permissions | +| ↳ `permissionIds` | json | Permission IDs | +| ↳ `shared` | boolean | Whether file is shared | +| ↳ `ownedByMe` | boolean | Whether owned by current user | +| ↳ `writersCanShare` | boolean | Whether writers can share | +| ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy | +| ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission | +| ↳ `sharingUser` | json | User who shared the file | +| ↳ `starred` | boolean | Whether file is starred | +| ↳ `trashed` | boolean | Whether file is in trash | +| ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed | +| ↳ `appProperties` | json | App-specific properties | +| ↳ `createdTime` | string | File creation time | +| ↳ `modifiedTime` | string | Last modification time | +| ↳ `modifiedByMeTime` | string | When modified by current user | +| ↳ `viewedByMeTime` | string | When last viewed by current user | +| ↳ `sharedWithMeTime` | string | When shared with current user | +| ↳ `lastModifyingUser` | json | User who last modified the file | +| ↳ `viewedByMe` | boolean | Whether viewed by current user | +| ↳ `modifiedByMe` | boolean | Whether modified by current user | +| ↳ `webViewLink` | string | URL to view in browser | +| ↳ `webContentLink` | string | Direct download URL | +| ↳ `iconLink` | string | URL to file icon | +| ↳ `thumbnailLink` | string | URL to thumbnail | +| ↳ `exportLinks` | json | Export format links | +| ↳ `size` | string | File size in bytes | +| ↳ `quotaBytesUsed` | string | Storage quota used | +| ↳ `md5Checksum` | string | MD5 hash | +| ↳ `sha1Checksum` | string | SHA-1 hash | +| ↳ `sha256Checksum` | string | SHA-256 hash | +| ↳ `parents` | json | Parent folder IDs | +| ↳ `spaces` | json | Spaces containing file | +| ↳ `driveId` | string | Shared drive ID | +| ↳ `capabilities` | json | User capabilities on file | +| ↳ `version` | string | Version number | +| ↳ `headRevisionId` | string | Head revision ID | +| ↳ `hasThumbnail` | boolean | Whether has thumbnail | +| ↳ `thumbnailVersion` | string | Thumbnail version | +| ↳ `imageMediaMetadata` | json | Image-specific metadata | +| ↳ `videoMediaMetadata` | json | Video-specific metadata | +| ↳ `isAppAuthorized` | boolean | Whether created by requesting app | +| ↳ `contentRestrictions` | json | Content restrictions | +| ↳ `linkShareMetadata` | json | Link share metadata | ### `google_drive_create_folder` @@ -84,6 +136,43 @@ Create a new folder in Google Drive with complete metadata returned | Parameter | Type | Description | | --------- | ---- | ----------- | | `file` | object | Complete created folder metadata from Google Drive | +| ↳ `id` | string | Google Drive folder ID | +| ↳ `name` | string | Folder name | +| ↳ `mimeType` | string | MIME type \(application/vnd.google-apps.folder\) | +| ↳ `kind` | string | Resource type identifier | +| ↳ `description` | string | Folder description | +| ↳ `owners` | json | List of folder owners | +| ↳ `permissions` | json | Folder permissions | +| ↳ `permissionIds` | json | Permission IDs | +| ↳ `shared` | boolean | Whether folder is shared | +| ↳ `ownedByMe` | boolean | Whether owned by current user | +| ↳ `writersCanShare` | boolean | Whether writers can share | +| ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy | +| ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission | +| ↳ `sharingUser` | json | User who shared the folder | +| ↳ `starred` | boolean | Whether folder is starred | +| ↳ `trashed` | boolean | Whether folder is in trash | +| ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed | +| ↳ `appProperties` | json | App-specific properties | +| ↳ `folderColorRgb` | string | Folder color | +| ↳ `createdTime` | string | Folder creation time | +| ↳ `modifiedTime` | string | Last modification time | +| ↳ `modifiedByMeTime` | string | When modified by current user | +| ↳ `viewedByMeTime` | string | When last viewed by current user | +| ↳ `sharedWithMeTime` | string | When shared with current user | +| ↳ `lastModifyingUser` | json | User who last modified the folder | +| ↳ `viewedByMe` | boolean | Whether viewed by current user | +| ↳ `modifiedByMe` | boolean | Whether modified by current user | +| ↳ `webViewLink` | string | URL to view in browser | +| ↳ `iconLink` | string | URL to folder icon | +| ↳ `parents` | json | Parent folder IDs | +| ↳ `spaces` | json | Spaces containing folder | +| ↳ `driveId` | string | Shared drive ID | +| ↳ `capabilities` | json | User capabilities on folder | +| ↳ `version` | string | Version number | +| ↳ `isAppAuthorized` | boolean | Whether created by requesting app | +| ↳ `contentRestrictions` | json | Content restrictions | +| ↳ `linkShareMetadata` | json | Link share metadata | ### `google_drive_download` @@ -103,6 +192,64 @@ Download a file from Google Drive with complete metadata (exports Google Workspa | Parameter | Type | Description | | --------- | ---- | ----------- | | `file` | object | Downloaded file data | +| ↳ `name` | string | File name | +| ↳ `mimeType` | string | MIME type of the file | +| ↳ `data` | string | File content as base64-encoded string | +| ↳ `size` | number | File size in bytes | +| `metadata` | object | Complete file metadata from Google Drive | +| ↳ `id` | string | Google Drive file ID | +| ↳ `name` | string | File name | +| ↳ `mimeType` | string | MIME type | +| ↳ `kind` | string | Resource type identifier | +| ↳ `description` | string | File description | +| ↳ `originalFilename` | string | Original uploaded filename | +| ↳ `fullFileExtension` | string | Full file extension | +| ↳ `fileExtension` | string | File extension | +| ↳ `owners` | json | List of file owners | +| ↳ `permissions` | json | File permissions | +| ↳ `permissionIds` | json | Permission IDs | +| ↳ `shared` | boolean | Whether file is shared | +| ↳ `ownedByMe` | boolean | Whether owned by current user | +| ↳ `writersCanShare` | boolean | Whether writers can share | +| ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy | +| ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission | +| ↳ `sharingUser` | json | User who shared the file | +| ↳ `starred` | boolean | Whether file is starred | +| ↳ `trashed` | boolean | Whether file is in trash | +| ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed | +| ↳ `appProperties` | json | App-specific properties | +| ↳ `createdTime` | string | File creation time | +| ↳ `modifiedTime` | string | Last modification time | +| ↳ `modifiedByMeTime` | string | When modified by current user | +| ↳ `viewedByMeTime` | string | When last viewed by current user | +| ↳ `sharedWithMeTime` | string | When shared with current user | +| ↳ `lastModifyingUser` | json | User who last modified the file | +| ↳ `viewedByMe` | boolean | Whether viewed by current user | +| ↳ `modifiedByMe` | boolean | Whether modified by current user | +| ↳ `webViewLink` | string | URL to view in browser | +| ↳ `webContentLink` | string | Direct download URL | +| ↳ `iconLink` | string | URL to file icon | +| ↳ `thumbnailLink` | string | URL to thumbnail | +| ↳ `exportLinks` | json | Export format links | +| ↳ `size` | string | File size in bytes | +| ↳ `quotaBytesUsed` | string | Storage quota used | +| ↳ `md5Checksum` | string | MD5 hash | +| ↳ `sha1Checksum` | string | SHA-1 hash | +| ↳ `sha256Checksum` | string | SHA-256 hash | +| ↳ `parents` | json | Parent folder IDs | +| ↳ `spaces` | json | Spaces containing file | +| ↳ `driveId` | string | Shared drive ID | +| ↳ `capabilities` | json | User capabilities on file | +| ↳ `version` | string | Version number | +| ↳ `headRevisionId` | string | Head revision ID | +| ↳ `hasThumbnail` | boolean | Whether has thumbnail | +| ↳ `thumbnailVersion` | string | Thumbnail version | +| ↳ `imageMediaMetadata` | json | Image-specific metadata | +| ↳ `videoMediaMetadata` | json | Video-specific metadata | +| ↳ `isAppAuthorized` | boolean | Whether created by requesting app | +| ↳ `contentRestrictions` | json | Content restrictions | +| ↳ `linkShareMetadata` | json | Link share metadata | +| ↳ `revisions` | json | File revision history \(first 100 revisions only\) | ### `google_drive_list` @@ -123,5 +270,58 @@ List files and folders in Google Drive with complete metadata | Parameter | Type | Description | | --------- | ---- | ----------- | | `files` | array | Array of file metadata objects from Google Drive | +| ↳ `id` | string | Google Drive file ID | +| ↳ `name` | string | File name | +| ↳ `mimeType` | string | MIME type | +| ↳ `kind` | string | Resource type identifier | +| ↳ `description` | string | File description | +| ↳ `originalFilename` | string | Original uploaded filename | +| ↳ `fullFileExtension` | string | Full file extension | +| ↳ `fileExtension` | string | File extension | +| ↳ `owners` | json | List of file owners | +| ↳ `permissions` | json | File permissions | +| ↳ `permissionIds` | json | Permission IDs | +| ↳ `shared` | boolean | Whether file is shared | +| ↳ `ownedByMe` | boolean | Whether owned by current user | +| ↳ `writersCanShare` | boolean | Whether writers can share | +| ↳ `viewersCanCopyContent` | boolean | Whether viewers can copy | +| ↳ `copyRequiresWriterPermission` | boolean | Whether copy requires writer permission | +| ↳ `sharingUser` | json | User who shared the file | +| ↳ `starred` | boolean | Whether file is starred | +| ↳ `trashed` | boolean | Whether file is in trash | +| ↳ `explicitlyTrashed` | boolean | Whether explicitly trashed | +| ↳ `appProperties` | json | App-specific properties | +| ↳ `createdTime` | string | File creation time | +| ↳ `modifiedTime` | string | Last modification time | +| ↳ `modifiedByMeTime` | string | When modified by current user | +| ↳ `viewedByMeTime` | string | When last viewed by current user | +| ↳ `sharedWithMeTime` | string | When shared with current user | +| ↳ `lastModifyingUser` | json | User who last modified the file | +| ↳ `viewedByMe` | boolean | Whether viewed by current user | +| ↳ `modifiedByMe` | boolean | Whether modified by current user | +| ↳ `webViewLink` | string | URL to view in browser | +| ↳ `webContentLink` | string | Direct download URL | +| ↳ `iconLink` | string | URL to file icon | +| ↳ `thumbnailLink` | string | URL to thumbnail | +| ↳ `exportLinks` | json | Export format links | +| ↳ `size` | string | File size in bytes | +| ↳ `quotaBytesUsed` | string | Storage quota used | +| ↳ `md5Checksum` | string | MD5 hash | +| ↳ `sha1Checksum` | string | SHA-1 hash | +| ↳ `sha256Checksum` | string | SHA-256 hash | +| ↳ `parents` | json | Parent folder IDs | +| ↳ `spaces` | json | Spaces containing file | +| ↳ `driveId` | string | Shared drive ID | +| ↳ `capabilities` | json | User capabilities on file | +| ↳ `version` | string | Version number | +| ↳ `headRevisionId` | string | Head revision ID | +| ↳ `hasThumbnail` | boolean | Whether has thumbnail | +| ↳ `thumbnailVersion` | string | Thumbnail version | +| ↳ `imageMediaMetadata` | json | Image-specific metadata | +| ↳ `videoMediaMetadata` | json | Video-specific metadata | +| ↳ `isAppAuthorized` | boolean | Whether created by requesting app | +| ↳ `contentRestrictions` | json | Content restrictions | +| ↳ `linkShareMetadata` | json | Link share metadata | +| `nextPageToken` | string | Token for fetching the next page of results | diff --git a/apps/docs/content/docs/en/tools/google_search.mdx b/apps/docs/content/docs/en/tools/google_search.mdx index 17a599c9d6..d051eef9f2 100644 --- a/apps/docs/content/docs/en/tools/google_search.mdx +++ b/apps/docs/content/docs/en/tools/google_search.mdx @@ -63,5 +63,15 @@ Search the web with the Custom Search API | Parameter | Type | Description | | --------- | ---- | ----------- | | `items` | array | Array of search results from Google | +| ↳ `title` | string | Title of the search result | +| ↳ `link` | string | URL of the search result | +| ↳ `snippet` | string | Snippet or description of the search result | +| ↳ `displayLink` | string | Display URL | +| ↳ `pagemap` | object | Additional page metadata | +| `searchInformation` | object | Information about the search query and results | +| ↳ `totalResults` | string | Total number of search results available | +| ↳ `searchTime` | number | Time taken to perform the search in seconds | +| ↳ `formattedSearchTime` | string | Formatted search time for display | +| ↳ `formattedTotalResults` | string | Formatted total results count for display | diff --git a/apps/docs/content/docs/en/tools/google_sheets.mdx b/apps/docs/content/docs/en/tools/google_sheets.mdx index 8d93c7a045..307d376dee 100644 --- a/apps/docs/content/docs/en/tools/google_sheets.mdx +++ b/apps/docs/content/docs/en/tools/google_sheets.mdx @@ -100,6 +100,8 @@ Read data from a Google Sheets spreadsheet | --------- | ---- | ----------- | | `data` | json | Sheet data including range and cell values | | `metadata` | json | Spreadsheet metadata including ID and URL | +| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | +| ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### `google_sheets_write` @@ -124,6 +126,8 @@ Write data to a Google Sheets spreadsheet | `updatedColumns` | number | Number of columns updated | | `updatedCells` | number | Number of cells updated | | `metadata` | json | Spreadsheet metadata including ID and URL | +| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | +| ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### `google_sheets_update` @@ -148,6 +152,8 @@ Update data in a Google Sheets spreadsheet | `updatedColumns` | number | Number of columns updated | | `updatedCells` | number | Number of cells updated | | `metadata` | json | Spreadsheet metadata including ID and URL | +| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | +| ↳ `spreadsheetUrl` | string | Spreadsheet URL | ### `google_sheets_append` @@ -174,5 +180,7 @@ Append data to the end of a Google Sheets spreadsheet | `updatedColumns` | number | Number of columns updated | | `updatedCells` | number | Number of cells updated | | `metadata` | json | Spreadsheet metadata including ID and URL | +| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID | +| ↳ `spreadsheetUrl` | string | Spreadsheet URL | diff --git a/apps/docs/content/docs/en/tools/grafana.mdx b/apps/docs/content/docs/en/tools/grafana.mdx index 656370efd5..f50cd21cc3 100644 --- a/apps/docs/content/docs/en/tools/grafana.mdx +++ b/apps/docs/content/docs/en/tools/grafana.mdx @@ -80,6 +80,12 @@ Search and list all dashboards | Parameter | Type | Description | | --------- | ---- | ----------- | | `dashboards` | array | List of dashboard search results | +| ↳ `id` | number | Dashboard ID | +| ↳ `uid` | string | Dashboard UID | +| ↳ `title` | string | Dashboard title | +| ↳ `url` | string | Dashboard URL path | +| ↳ `tags` | array | Dashboard tags | +| ↳ `folderTitle` | string | Parent folder title | ### `grafana_create_dashboard` @@ -182,6 +188,13 @@ List all alert rules in the Grafana instance | Parameter | Type | Description | | --------- | ---- | ----------- | | `rules` | array | List of alert rules | +| ↳ `uid` | string | Alert rule UID | +| ↳ `title` | string | Alert rule title | +| ↳ `condition` | string | Alert condition | +| ↳ `folderUID` | string | Parent folder UID | +| ↳ `ruleGroup` | string | Rule group name | +| ↳ `noDataState` | string | State when no data is returned | +| ↳ `execErrState` | string | State on execution error | ### `grafana_get_alert_rule` @@ -310,6 +323,10 @@ List all alert notification contact points | Parameter | Type | Description | | --------- | ---- | ----------- | | `contactPoints` | array | List of contact points | +| ↳ `uid` | string | Contact point UID | +| ↳ `name` | string | Contact point name | +| ↳ `type` | string | Notification type \(email, slack, etc.\) | +| ↳ `settings` | object | Type-specific settings | ### `grafana_create_annotation` @@ -360,6 +377,19 @@ Query annotations by time range, dashboard, or tags | Parameter | Type | Description | | --------- | ---- | ----------- | | `annotations` | array | List of annotations | +| ↳ `id` | number | Annotation ID | +| ↳ `dashboardId` | number | Dashboard ID | +| ↳ `dashboardUID` | string | Dashboard UID | +| ↳ `created` | number | Creation timestamp in epoch ms | +| ↳ `updated` | number | Last update timestamp in epoch ms | +| ↳ `time` | number | Start time in epoch ms | +| ↳ `timeEnd` | number | End time in epoch ms | +| ↳ `text` | string | Annotation text | +| ↳ `tags` | array | Annotation tags | +| ↳ `login` | string | Login of the user who created the annotation | +| ↳ `email` | string | Email of the user who created the annotation | +| ↳ `avatarUrl` | string | Avatar URL of the user | +| ↳ `data` | json | Additional annotation data object from Grafana | ### `grafana_update_annotation` @@ -421,6 +451,12 @@ List all data sources configured in Grafana | Parameter | Type | Description | | --------- | ---- | ----------- | | `dataSources` | array | List of data sources | +| ↳ `id` | number | Data source ID | +| ↳ `uid` | string | Data source UID | +| ↳ `name` | string | Data source name | +| ↳ `type` | string | Data source type \(prometheus, mysql, etc.\) | +| ↳ `url` | string | Data source URL | +| ↳ `isDefault` | boolean | Whether this is the default data source | ### `grafana_get_data_source` @@ -467,6 +503,19 @@ List all folders in Grafana | Parameter | Type | Description | | --------- | ---- | ----------- | | `folders` | array | List of folders | +| ↳ `id` | number | Folder ID | +| ↳ `uid` | string | Folder UID | +| ↳ `title` | string | Folder title | +| ↳ `hasAcl` | boolean | Whether the folder has custom ACL permissions | +| ↳ `canSave` | boolean | Whether the current user can save the folder | +| ↳ `canEdit` | boolean | Whether the current user can edit the folder | +| ↳ `canAdmin` | boolean | Whether the current user has admin rights | +| ↳ `canDelete` | boolean | Whether the current user can delete the folder | +| ↳ `createdBy` | string | Username of who created the folder | +| ↳ `created` | string | Timestamp when the folder was created | +| ↳ `updatedBy` | string | Username of who last updated the folder | +| ↳ `updated` | string | Timestamp when the folder was last updated | +| ↳ `version` | number | Version number of the folder | ### `grafana_create_folder` diff --git a/apps/docs/content/docs/en/tools/grain.mdx b/apps/docs/content/docs/en/tools/grain.mdx index 8d223acb16..3ef69b6095 100644 --- a/apps/docs/content/docs/en/tools/grain.mdx +++ b/apps/docs/content/docs/en/tools/grain.mdx @@ -64,6 +64,19 @@ List recordings from Grain with optional filters and pagination | Parameter | Type | Description | | --------- | ---- | ----------- | | `recordings` | array | Array of recording objects | +| ↳ `id` | string | Recording UUID | +| ↳ `title` | string | Recording title | +| ↳ `start_datetime` | string | ISO8601 start timestamp | +| ↳ `end_datetime` | string | ISO8601 end timestamp | +| ↳ `duration_ms` | number | Duration in milliseconds | +| ↳ `media_type` | string | audio, transcript, or video | +| ↳ `source` | string | Recording source | +| ↳ `url` | string | URL to view in Grain | +| ↳ `thumbnail_url` | string | Thumbnail URL | +| ↳ `tags` | array | Array of tags | +| ↳ `teams` | array | Teams the recording belongs to | +| ↳ `meeting_type` | object | Meeting type info | +| `cursor` | string | Cursor for next page \(null if no more\) | ### `grain_get_recording` @@ -119,6 +132,11 @@ Get the full transcript of a recording | Parameter | Type | Description | | --------- | ---- | ----------- | | `transcript` | array | Array of transcript sections | +| ↳ `participant_id` | string | Participant UUID \(nullable\) | +| ↳ `speaker` | string | Speaker name | +| ↳ `start` | number | Start timestamp in ms | +| ↳ `end` | number | End timestamp in ms | +| ↳ `text` | string | Transcript text | ### `grain_list_teams` @@ -135,6 +153,8 @@ List all teams in the workspace | Parameter | Type | Description | | --------- | ---- | ----------- | | `teams` | array | Array of team objects | +| ↳ `id` | string | Team UUID | +| ↳ `name` | string | Team name | ### `grain_list_meeting_types` @@ -151,6 +171,9 @@ List all meeting types in the workspace | Parameter | Type | Description | | --------- | ---- | ----------- | | `meeting_types` | array | Array of meeting type objects | +| ↳ `id` | string | Meeting type UUID | +| ↳ `name` | string | Meeting type name | +| ↳ `scope` | string | internal or external | ### `grain_create_hook` @@ -199,6 +222,13 @@ List all webhooks for the account | Parameter | Type | Description | | --------- | ---- | ----------- | | `hooks` | array | Array of hook objects | +| ↳ `id` | string | Hook UUID | +| ↳ `enabled` | boolean | Whether hook is active | +| ↳ `hook_url` | string | Webhook URL | +| ↳ `hook_type` | string | Type: recording_added or upload_status | +| ↳ `filter` | object | Applied filters | +| ↳ `include` | object | Included fields | +| ↳ `inserted_at` | string | Creation timestamp | ### `grain_delete_hook` diff --git a/apps/docs/content/docs/en/tools/greptile.mdx b/apps/docs/content/docs/en/tools/greptile.mdx index 726243bfcc..86a2737734 100644 --- a/apps/docs/content/docs/en/tools/greptile.mdx +++ b/apps/docs/content/docs/en/tools/greptile.mdx @@ -59,6 +59,14 @@ Query repositories in natural language and get answers with relevant code refere | --------- | ---- | ----------- | | `message` | string | AI-generated answer to the query | | `sources` | array | Relevant code references that support the answer | +| ↳ `repository` | string | Repository name \(owner/repo\) | +| ↳ `remote` | string | Git remote \(github/gitlab\) | +| ↳ `branch` | string | Branch name | +| ↳ `filepath` | string | Path to the file | +| ↳ `linestart` | number | Starting line number | +| ↳ `lineend` | number | Ending line number | +| ↳ `summary` | string | Summary of the code section | +| ↳ `distance` | number | Similarity score \(lower = more relevant\) | ### `greptile_search` @@ -80,6 +88,14 @@ Search repositories in natural language and get relevant code references without | Parameter | Type | Description | | --------- | ---- | ----------- | | `sources` | array | Relevant code references matching the search query | +| ↳ `repository` | string | Repository name \(owner/repo\) | +| ↳ `remote` | string | Git remote \(github/gitlab\) | +| ↳ `branch` | string | Branch name | +| ↳ `filepath` | string | Path to the file | +| ↳ `linestart` | number | Starting line number | +| ↳ `lineend` | number | Ending line number | +| ↳ `summary` | string | Summary of the code section | +| ↳ `distance` | number | Similarity score \(lower = more relevant\) | ### `greptile_index_repo` diff --git a/apps/docs/content/docs/en/tools/huggingface.mdx b/apps/docs/content/docs/en/tools/huggingface.mdx index c6b0cafecb..7e7232fb08 100644 --- a/apps/docs/content/docs/en/tools/huggingface.mdx +++ b/apps/docs/content/docs/en/tools/huggingface.mdx @@ -54,5 +54,14 @@ Generate completions using Hugging Face Inference API | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Chat completion results | +| ↳ `content` | string | Generated text content | +| ↳ `model` | string | Model used for generation | +| ↳ `usage` | object | Token usage information | +| ↳ `prompt_tokens` | number | Number of tokens in the prompt | +| ↳ `completion_tokens` | number | Number of tokens in the completion | +| ↳ `total_tokens` | number | Total number of tokens used | +| ↳ `prompt_tokens` | number | Number of tokens in the prompt | +| ↳ `completion_tokens` | number | Number of tokens in the completion | +| ↳ `total_tokens` | number | Total number of tokens used | diff --git a/apps/docs/content/docs/en/tools/image_generator.mdx b/apps/docs/content/docs/en/tools/image_generator.mdx index 3d59c450c9..2cfc55b228 100644 --- a/apps/docs/content/docs/en/tools/image_generator.mdx +++ b/apps/docs/content/docs/en/tools/image_generator.mdx @@ -58,5 +58,10 @@ Generate images using OpenAI | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Generated image data | +| ↳ `content` | string | Image URL or identifier | +| ↳ `image` | string | Base64 encoded image data | +| ↳ `metadata` | object | Image generation metadata | +| ↳ `model` | string | Model used for image generation | +| ↳ `model` | string | Model used for image generation | diff --git a/apps/docs/content/docs/en/tools/incidentio.mdx b/apps/docs/content/docs/en/tools/incidentio.mdx index ee44247b5f..ac59dfbf55 100644 --- a/apps/docs/content/docs/en/tools/incidentio.mdx +++ b/apps/docs/content/docs/en/tools/incidentio.mdx @@ -57,6 +57,35 @@ List incidents from incident.io. Returns a list of incidents with their details | Parameter | Type | Description | | --------- | ---- | ----------- | | `incidents` | array | List of incidents | +| ↳ `id` | string | Type ID | +| ↳ `name` | string | Type name | +| ↳ `summary` | string | Brief summary of the incident | +| ↳ `description` | string | Detailed description of the incident | +| ↳ `mode` | string | Incident mode \(e.g., standard, retrospective\) | +| ↳ `call_url` | string | URL for the incident call/bridge | +| ↳ `severity` | object | Severity of the incident | +| ↳ `id` | string | Severity ID | +| ↳ `name` | string | Severity name | +| ↳ `rank` | number | Severity rank | +| ↳ `rank` | number | Severity rank | +| ↳ `status` | object | Current status of the incident | +| ↳ `id` | string | Status ID | +| ↳ `name` | string | Status name | +| ↳ `category` | string | Status category | +| ↳ `category` | string | Status category | +| ↳ `incident_type` | object | Type of the incident | +| ↳ `id` | string | Type ID | +| ↳ `name` | string | Type name | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `incident_url` | string | URL to the incident | +| ↳ `slack_channel_id` | string | Associated Slack channel ID | +| ↳ `slack_channel_name` | string | Associated Slack channel name | +| ↳ `visibility` | string | Incident visibility | +| `pagination_meta` | object | Pagination metadata | +| ↳ `after` | string | Cursor for the next page | +| ↳ `page_size` | number | Number of items per page | +| ↳ `total_record_count` | number | Total number of records available | ### `incidentio_incidents_create` @@ -80,6 +109,31 @@ Create a new incident in incident.io. Requires idempotency_key, severity_id, and | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident` | object | The created incident object | +| ↳ `id` | string | Type ID | +| ↳ `name` | string | Type name | +| ↳ `summary` | string | Brief summary of the incident | +| ↳ `description` | string | Detailed description of the incident | +| ↳ `mode` | string | Incident mode \(e.g., standard, retrospective\) | +| ↳ `call_url` | string | URL for the incident call/bridge | +| ↳ `severity` | object | Severity of the incident | +| ↳ `id` | string | Severity ID | +| ↳ `name` | string | Severity name | +| ↳ `rank` | number | Severity rank | +| ↳ `rank` | number | Severity rank | +| ↳ `status` | object | Current status of the incident | +| ↳ `id` | string | Status ID | +| ↳ `name` | string | Status name | +| ↳ `category` | string | Status category | +| ↳ `category` | string | Status category | +| ↳ `incident_type` | object | Type of the incident | +| ↳ `id` | string | Type ID | +| ↳ `name` | string | Type name | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `incident_url` | string | URL to the incident | +| ↳ `slack_channel_id` | string | Associated Slack channel ID | +| ↳ `slack_channel_name` | string | Associated Slack channel name | +| ↳ `visibility` | string | Incident visibility | ### `incidentio_incidents_show` @@ -97,6 +151,34 @@ Retrieve detailed information about a specific incident from incident.io by its | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident` | object | Detailed incident information | +| ↳ `id` | string | Type ID | +| ↳ `name` | string | Type name | +| ↳ `summary` | string | Brief summary of the incident | +| ↳ `description` | string | Detailed description of the incident | +| ↳ `mode` | string | Incident mode \(e.g., standard, retrospective\) | +| ↳ `call_url` | string | URL for the incident call/bridge | +| ↳ `permalink` | string | Permanent link to the incident | +| ↳ `severity` | object | Severity of the incident | +| ↳ `id` | string | Severity ID | +| ↳ `name` | string | Severity name | +| ↳ `rank` | number | Severity rank | +| ↳ `rank` | number | Severity rank | +| ↳ `status` | object | Current status of the incident | +| ↳ `id` | string | Status ID | +| ↳ `name` | string | Status name | +| ↳ `category` | string | Status category | +| ↳ `category` | string | Status category | +| ↳ `incident_type` | object | Type of the incident | +| ↳ `id` | string | Type ID | +| ↳ `name` | string | Type name | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `incident_url` | string | URL to the incident | +| ↳ `slack_channel_id` | string | Associated Slack channel ID | +| ↳ `slack_channel_name` | string | Associated Slack channel name | +| ↳ `visibility` | string | Incident visibility | +| ↳ `custom_field_entries` | array | Custom field values for the incident | +| ↳ `incident_role_assignments` | array | Role assignments for the incident | ### `incidentio_incidents_update` @@ -120,6 +202,31 @@ Update an existing incident in incident.io. Can update name, summary, severity, | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident` | object | The updated incident object | +| ↳ `id` | string | Type ID | +| ↳ `name` | string | Type name | +| ↳ `summary` | string | Brief summary of the incident | +| ↳ `description` | string | Detailed description of the incident | +| ↳ `mode` | string | Incident mode \(e.g., standard, retrospective\) | +| ↳ `call_url` | string | URL for the incident call/bridge | +| ↳ `severity` | object | Severity of the incident | +| ↳ `id` | string | Severity ID | +| ↳ `name` | string | Severity name | +| ↳ `rank` | number | Severity rank | +| ↳ `rank` | number | Severity rank | +| ↳ `status` | object | Current status of the incident | +| ↳ `id` | string | Status ID | +| ↳ `name` | string | Status name | +| ↳ `category` | string | Status category | +| ↳ `category` | string | Status category | +| ↳ `incident_type` | object | Type of the incident | +| ↳ `id` | string | Type ID | +| ↳ `name` | string | Type name | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `incident_url` | string | URL to the incident | +| ↳ `slack_channel_id` | string | Associated Slack channel ID | +| ↳ `slack_channel_name` | string | Associated Slack channel name | +| ↳ `visibility` | string | Incident visibility | ### `incidentio_actions_list` @@ -138,6 +245,31 @@ List actions from incident.io. Optionally filter by incident ID. | Parameter | Type | Description | | --------- | ---- | ----------- | | `actions` | array | List of actions | +| ↳ `id` | string | User ID | +| ↳ `description` | string | Action description | +| ↳ `assignee` | object | Assigned user | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `status` | string | Action status | +| ↳ `due_at` | string | Due date/time | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `incident_id` | string | Associated incident ID | +| ↳ `creator` | object | User who created the action | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `completed_at` | string | Completion timestamp | +| ↳ `external_issue_reference` | object | External issue tracking reference | +| ↳ `provider` | string | Issue tracking provider \(e.g., Jira, Linear\) | +| ↳ `issue_name` | string | Issue identifier | +| ↳ `issue_permalink` | string | URL to the external issue | +| ↳ `provider` | string | Issue tracking provider \(e.g., Jira, Linear\) | +| ↳ `issue_name` | string | Issue identifier | +| ↳ `issue_permalink` | string | URL to the external issue | ### `incidentio_actions_show` @@ -155,6 +287,31 @@ Get detailed information about a specific action from incident.io. | Parameter | Type | Description | | --------- | ---- | ----------- | | `action` | object | Action details | +| ↳ `id` | string | User ID | +| ↳ `description` | string | Action description | +| ↳ `assignee` | object | Assigned user | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `status` | string | Action status | +| ↳ `due_at` | string | Due date/time | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `incident_id` | string | Associated incident ID | +| ↳ `creator` | object | User who created the action | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `completed_at` | string | Completion timestamp | +| ↳ `external_issue_reference` | object | External issue tracking reference | +| ↳ `provider` | string | Issue tracking provider \(e.g., Jira, Linear\) | +| ↳ `issue_name` | string | Issue identifier | +| ↳ `issue_permalink` | string | URL to the external issue | +| ↳ `provider` | string | Issue tracking provider \(e.g., Jira, Linear\) | +| ↳ `issue_name` | string | Issue identifier | +| ↳ `issue_permalink` | string | URL to the external issue | ### `incidentio_follow_ups_list` @@ -173,6 +330,38 @@ List follow-ups from incident.io. Optionally filter by incident ID. | Parameter | Type | Description | | --------- | ---- | ----------- | | `follow_ups` | array | List of follow-ups | +| ↳ `id` | string | User ID | +| ↳ `title` | string | Follow-up title | +| ↳ `description` | string | Priority description | +| ↳ `assignee` | object | Assigned user | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `status` | string | Follow-up status | +| ↳ `priority` | object | Follow-up priority | +| ↳ `id` | string | Priority ID | +| ↳ `name` | string | Priority name | +| ↳ `description` | string | Priority description | +| ↳ `rank` | number | Priority rank | +| ↳ `rank` | number | Priority rank | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `incident_id` | string | Associated incident ID | +| ↳ `creator` | object | User who created the follow-up | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `completed_at` | string | Completion timestamp | +| ↳ `labels` | array | Labels associated with the follow-up | +| ↳ `external_issue_reference` | object | External issue tracking reference | +| ↳ `provider` | string | External provider name | +| ↳ `issue_name` | string | External issue name or ID | +| ↳ `issue_permalink` | string | Permalink to external issue | +| ↳ `provider` | string | External provider name | +| ↳ `issue_name` | string | External issue name or ID | +| ↳ `issue_permalink` | string | Permalink to external issue | ### `incidentio_follow_ups_show` @@ -190,6 +379,38 @@ Get detailed information about a specific follow-up from incident.io. | Parameter | Type | Description | | --------- | ---- | ----------- | | `follow_up` | object | Follow-up details | +| ↳ `id` | string | User ID | +| ↳ `title` | string | Follow-up title | +| ↳ `description` | string | Priority description | +| ↳ `assignee` | object | Assigned user | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `status` | string | Follow-up status | +| ↳ `priority` | object | Follow-up priority | +| ↳ `id` | string | Priority ID | +| ↳ `name` | string | Priority name | +| ↳ `description` | string | Priority description | +| ↳ `rank` | number | Priority rank | +| ↳ `rank` | number | Priority rank | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `incident_id` | string | Associated incident ID | +| ↳ `creator` | object | User who created the follow-up | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `completed_at` | string | Completion timestamp | +| ↳ `labels` | array | Labels associated with the follow-up | +| ↳ `external_issue_reference` | object | External issue tracking reference | +| ↳ `provider` | string | External provider name | +| ↳ `issue_name` | string | External issue name or ID | +| ↳ `issue_permalink` | string | Permalink to external issue | +| ↳ `provider` | string | External provider name | +| ↳ `issue_name` | string | External issue name or ID | +| ↳ `issue_permalink` | string | Permalink to external issue | ### `incidentio_users_list` @@ -207,6 +428,10 @@ List all users in your Incident.io workspace. Returns user details including id, | Parameter | Type | Description | | --------- | ---- | ----------- | | `users` | array | List of users in the workspace | +| ↳ `id` | string | Unique identifier for the user | +| ↳ `name` | string | Full name of the user | +| ↳ `email` | string | Email address of the user | +| ↳ `role` | string | Role of the user in the workspace | ### `incidentio_users_show` @@ -224,6 +449,10 @@ Get detailed information about a specific user in your Incident.io workspace by | Parameter | Type | Description | | --------- | ---- | ----------- | | `user` | object | Details of the requested user | +| ↳ `id` | string | Unique identifier for the user | +| ↳ `name` | string | Full name of the user | +| ↳ `email` | string | Email address of the user | +| ↳ `role` | string | Role of the user in the workspace | ### `incidentio_workflows_list` @@ -242,6 +471,15 @@ List all workflows in your incident.io workspace. | Parameter | Type | Description | | --------- | ---- | ----------- | | `workflows` | array | List of workflows | +| ↳ `id` | string | Unique identifier for the workflow | +| ↳ `name` | string | Name of the workflow | +| ↳ `state` | string | State of the workflow \(active, draft, or disabled\) | +| ↳ `folder` | string | Folder the workflow belongs to | +| ↳ `created_at` | string | When the workflow was created | +| ↳ `updated_at` | string | When the workflow was last updated | +| `pagination_meta` | object | Pagination metadata | +| ↳ `after` | string | Cursor for next page | +| ↳ `page_size` | number | Number of results per page | ### `incidentio_workflows_show` @@ -259,6 +497,12 @@ Get details of a specific workflow in incident.io. | Parameter | Type | Description | | --------- | ---- | ----------- | | `workflow` | object | The workflow details | +| ↳ `id` | string | Unique identifier for the workflow | +| ↳ `name` | string | Name of the workflow | +| ↳ `state` | string | State of the workflow \(active, draft, or disabled\) | +| ↳ `folder` | string | Folder the workflow belongs to | +| ↳ `created_at` | string | When the workflow was created | +| ↳ `updated_at` | string | When the workflow was last updated | ### `incidentio_workflows_update` @@ -279,6 +523,12 @@ Update an existing workflow in incident.io. | Parameter | Type | Description | | --------- | ---- | ----------- | | `workflow` | object | The updated workflow | +| ↳ `id` | string | Unique identifier for the workflow | +| ↳ `name` | string | Name of the workflow | +| ↳ `state` | string | State of the workflow \(active, draft, or disabled\) | +| ↳ `folder` | string | Folder the workflow belongs to | +| ↳ `created_at` | string | When the workflow was created | +| ↳ `updated_at` | string | When the workflow was last updated | ### `incidentio_workflows_delete` @@ -314,6 +564,14 @@ List all schedules in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `schedules` | array | List of schedules | +| ↳ `id` | string | The schedule ID | +| ↳ `name` | string | The schedule name | +| ↳ `timezone` | string | The schedule timezone | +| ↳ `created_at` | string | When the schedule was created | +| ↳ `updated_at` | string | When the schedule was last updated | +| `pagination_meta` | object | Pagination metadata | +| ↳ `after` | string | Cursor for next page | +| ↳ `page_size` | number | Number of results per page | ### `incidentio_schedules_create` @@ -334,6 +592,11 @@ Create a new schedule in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `schedule` | object | The created schedule | +| ↳ `id` | string | The schedule ID | +| ↳ `name` | string | The schedule name | +| ↳ `timezone` | string | The schedule timezone | +| ↳ `created_at` | string | When the schedule was created | +| ↳ `updated_at` | string | When the schedule was last updated | ### `incidentio_schedules_show` @@ -351,6 +614,11 @@ Get details of a specific schedule in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `schedule` | object | The schedule details | +| ↳ `id` | string | The schedule ID | +| ↳ `name` | string | The schedule name | +| ↳ `timezone` | string | The schedule timezone | +| ↳ `created_at` | string | When the schedule was created | +| ↳ `updated_at` | string | When the schedule was last updated | ### `incidentio_schedules_update` @@ -372,6 +640,11 @@ Update an existing schedule in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `schedule` | object | The updated schedule | +| ↳ `id` | string | The schedule ID | +| ↳ `name` | string | The schedule name | +| ↳ `timezone` | string | The schedule timezone | +| ↳ `created_at` | string | When the schedule was created | +| ↳ `updated_at` | string | When the schedule was last updated | ### `incidentio_schedules_delete` @@ -406,6 +679,10 @@ List all escalation policies in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `escalations` | array | List of escalation policies | +| ↳ `id` | string | The escalation policy ID | +| ↳ `name` | string | The escalation policy name | +| ↳ `created_at` | string | When the escalation policy was created | +| ↳ `updated_at` | string | When the escalation policy was last updated | ### `incidentio_escalations_create` @@ -426,6 +703,10 @@ Create a new escalation policy in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `escalation` | object | The created escalation policy | +| ↳ `id` | string | The escalation policy ID | +| ↳ `name` | string | The escalation policy name | +| ↳ `created_at` | string | When the escalation policy was created | +| ↳ `updated_at` | string | When the escalation policy was last updated | ### `incidentio_escalations_show` @@ -443,6 +724,10 @@ Get details of a specific escalation policy in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `escalation` | object | The escalation policy details | +| ↳ `id` | string | The escalation policy ID | +| ↳ `name` | string | The escalation policy name | +| ↳ `created_at` | string | When the escalation policy was created | +| ↳ `updated_at` | string | When the escalation policy was last updated | ### `incidentio_custom_fields_list` @@ -459,6 +744,12 @@ List all custom fields from incident.io. | Parameter | Type | Description | | --------- | ---- | ----------- | | `custom_fields` | array | List of custom fields | +| ↳ `id` | string | Custom field ID | +| ↳ `name` | string | Custom field name | +| ↳ `description` | string | Custom field description | +| ↳ `field_type` | string | Custom field type | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | ### `incidentio_custom_fields_create` @@ -478,6 +769,12 @@ Create a new custom field in incident.io. | Parameter | Type | Description | | --------- | ---- | ----------- | | `custom_field` | object | Created custom field | +| ↳ `id` | string | Custom field ID | +| ↳ `name` | string | Custom field name | +| ↳ `description` | string | Custom field description | +| ↳ `field_type` | string | Custom field type | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | ### `incidentio_custom_fields_show` @@ -495,6 +792,12 @@ Get detailed information about a specific custom field from incident.io. | Parameter | Type | Description | | --------- | ---- | ----------- | | `custom_field` | object | Custom field details | +| ↳ `id` | string | Custom field ID | +| ↳ `name` | string | Custom field name | +| ↳ `description` | string | Custom field description | +| ↳ `field_type` | string | Custom field type | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | ### `incidentio_custom_fields_update` @@ -514,6 +817,12 @@ Update an existing custom field in incident.io. | Parameter | Type | Description | | --------- | ---- | ----------- | | `custom_field` | object | Updated custom field | +| ↳ `id` | string | Custom field ID | +| ↳ `name` | string | Custom field name | +| ↳ `description` | string | Custom field description | +| ↳ `field_type` | string | Custom field type | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | ### `incidentio_custom_fields_delete` @@ -547,6 +856,10 @@ List all severity levels configured in your Incident.io workspace. Returns sever | Parameter | Type | Description | | --------- | ---- | ----------- | | `severities` | array | List of severity levels | +| ↳ `id` | string | Unique identifier for the severity level | +| ↳ `name` | string | Name of the severity level | +| ↳ `description` | string | Description of the severity level | +| ↳ `rank` | number | Rank/order of the severity level | ### `incidentio_incident_statuses_list` @@ -563,6 +876,10 @@ List all incident statuses configured in your Incident.io workspace. Returns sta | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident_statuses` | array | List of incident statuses | +| ↳ `id` | string | Unique identifier for the incident status | +| ↳ `name` | string | Name of the incident status | +| ↳ `description` | string | Description of the incident status | +| ↳ `category` | string | Category of the incident status | ### `incidentio_incident_types_list` @@ -579,6 +896,10 @@ List all incident types configured in your Incident.io workspace. Returns type d | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident_types` | array | List of incident types | +| ↳ `id` | string | Unique identifier for the incident type | +| ↳ `name` | string | Name of the incident type | +| ↳ `description` | string | Description of the incident type | +| ↳ `is_default` | boolean | Whether this is the default incident type | ### `incidentio_incident_roles_list` @@ -595,6 +916,15 @@ List all incident roles in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident_roles` | array | List of incident roles | +| ↳ `id` | string | The incident role ID | +| ↳ `name` | string | The incident role name | +| ↳ `description` | string | The incident role description | +| ↳ `instructions` | string | Instructions for the role | +| ↳ `shortform` | string | Short form abbreviation of the role | +| ↳ `role_type` | string | The type of role | +| ↳ `required` | boolean | Whether the role is required | +| ↳ `created_at` | string | When the role was created | +| ↳ `updated_at` | string | When the role was last updated | ### `incidentio_incident_roles_create` @@ -615,6 +945,15 @@ Create a new incident role in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident_role` | object | The created incident role | +| ↳ `id` | string | The incident role ID | +| ↳ `name` | string | The incident role name | +| ↳ `description` | string | The incident role description | +| ↳ `instructions` | string | Instructions for the role | +| ↳ `shortform` | string | Short form abbreviation of the role | +| ↳ `role_type` | string | The type of role | +| ↳ `required` | boolean | Whether the role is required | +| ↳ `created_at` | string | When the role was created | +| ↳ `updated_at` | string | When the role was last updated | ### `incidentio_incident_roles_show` @@ -632,6 +971,15 @@ Get details of a specific incident role in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident_role` | object | The incident role details | +| ↳ `id` | string | The incident role ID | +| ↳ `name` | string | The incident role name | +| ↳ `description` | string | The incident role description | +| ↳ `instructions` | string | Instructions for the role | +| ↳ `shortform` | string | Short form abbreviation of the role | +| ↳ `role_type` | string | The type of role | +| ↳ `required` | boolean | Whether the role is required | +| ↳ `created_at` | string | When the role was created | +| ↳ `updated_at` | string | When the role was last updated | ### `incidentio_incident_roles_update` @@ -653,6 +1001,15 @@ Update an existing incident role in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident_role` | object | The updated incident role | +| ↳ `id` | string | The incident role ID | +| ↳ `name` | string | The incident role name | +| ↳ `description` | string | The incident role description | +| ↳ `instructions` | string | Instructions for the role | +| ↳ `shortform` | string | Short form abbreviation of the role | +| ↳ `role_type` | string | The type of role | +| ↳ `required` | boolean | Whether the role is required | +| ↳ `created_at` | string | When the role was created | +| ↳ `updated_at` | string | When the role was last updated | ### `incidentio_incident_roles_delete` @@ -686,6 +1043,11 @@ List all incident timestamp definitions in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident_timestamps` | array | List of incident timestamp definitions | +| ↳ `id` | string | The timestamp ID | +| ↳ `name` | string | The timestamp name | +| ↳ `rank` | number | The rank/order of the timestamp | +| ↳ `created_at` | string | When the timestamp was created | +| ↳ `updated_at` | string | When the timestamp was last updated | ### `incidentio_incident_timestamps_show` @@ -703,6 +1065,11 @@ Get details of a specific incident timestamp definition in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident_timestamp` | object | The incident timestamp details | +| ↳ `id` | string | The timestamp ID | +| ↳ `name` | string | The timestamp name | +| ↳ `rank` | number | The rank/order of the timestamp | +| ↳ `created_at` | string | When the timestamp was created | +| ↳ `updated_at` | string | When the timestamp was last updated | ### `incidentio_incident_updates_list` @@ -722,6 +1089,30 @@ List all updates for a specific incident in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `incident_updates` | array | List of incident updates | +| ↳ `id` | string | User ID | +| ↳ `incident_id` | string | The incident ID | +| ↳ `message` | string | The update message | +| ↳ `new_severity` | object | New severity if changed | +| ↳ `id` | string | Severity ID | +| ↳ `name` | string | Severity name | +| ↳ `rank` | number | Severity rank | +| ↳ `name` | string | User name | +| ↳ `rank` | number | Severity rank | +| ↳ `new_status` | object | New status if changed | +| ↳ `id` | string | Status ID | +| ↳ `name` | string | Status name | +| ↳ `category` | string | Status category | +| ↳ `category` | string | Status category | +| ↳ `updater` | object | User who created the update | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `email` | string | User email | +| ↳ `created_at` | string | When the update was created | +| ↳ `updated_at` | string | When the update was last modified | +| `pagination_meta` | object | Pagination information | +| ↳ `after` | string | Cursor for next page | +| ↳ `page_size` | number | Number of results per page | ### `incidentio_schedule_entries_list` @@ -743,6 +1134,23 @@ List all entries for a specific schedule in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `schedule_entries` | array | List of schedule entries | +| ↳ `id` | string | User ID | +| ↳ `schedule_id` | string | The schedule ID | +| ↳ `user` | object | User assigned to this entry | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `start_at` | string | When the entry starts | +| ↳ `end_at` | string | When the entry ends | +| ↳ `layer_id` | string | The schedule layer ID | +| ↳ `created_at` | string | When the entry was created | +| ↳ `updated_at` | string | When the entry was last updated | +| `pagination_meta` | object | Pagination information | +| ↳ `after` | string | Cursor for next page | +| ↳ `after_url` | string | URL for next page | +| ↳ `page_size` | number | Number of results per page | ### `incidentio_schedule_overrides_create` @@ -766,6 +1174,19 @@ Create a new schedule override in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `override` | object | The created schedule override | +| ↳ `id` | string | User ID | +| ↳ `rotation_id` | string | The rotation ID | +| ↳ `schedule_id` | string | The schedule ID | +| ↳ `user` | object | User assigned to this override | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `start_at` | string | When the override starts | +| ↳ `end_at` | string | When the override ends | +| ↳ `created_at` | string | When the override was created | +| ↳ `updated_at` | string | When the override was last updated | ### `incidentio_escalation_paths_create` @@ -785,6 +1206,41 @@ Create a new escalation path in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `escalation_path` | object | The created escalation path | +| ↳ `id` | string | Target ID | +| ↳ `name` | string | The escalation path name | +| ↳ `path` | array | Array of escalation levels | +| ↳ `targets` | array | Targets for this level | +| ↳ `id` | string | Target ID | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `id` | string | Target ID | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds | +| ↳ `targets` | array | Targets for this level | +| ↳ `id` | string | Target ID | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds | +| ↳ `working_hours` | array | Working hours configuration | +| ↳ `weekday` | string | Day of week | +| ↳ `start_time` | string | Start time | +| ↳ `end_time` | string | End time | +| ↳ `weekday` | string | Day of week | +| ↳ `start_time` | string | Start time | +| ↳ `end_time` | string | End time | +| ↳ `created_at` | string | When the path was created | +| ↳ `updated_at` | string | When the path was last updated | ### `incidentio_escalation_paths_show` @@ -802,6 +1258,41 @@ Get details of a specific escalation path in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `escalation_path` | object | The escalation path details | +| ↳ `id` | string | Target ID | +| ↳ `name` | string | The escalation path name | +| ↳ `path` | array | Array of escalation levels | +| ↳ `targets` | array | Targets for this level | +| ↳ `id` | string | Target ID | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `id` | string | Target ID | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds | +| ↳ `targets` | array | Targets for this level | +| ↳ `id` | string | Target ID | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds | +| ↳ `working_hours` | array | Working hours configuration | +| ↳ `weekday` | string | Day of week | +| ↳ `start_time` | string | Start time | +| ↳ `end_time` | string | End time | +| ↳ `weekday` | string | Day of week | +| ↳ `start_time` | string | Start time | +| ↳ `end_time` | string | End time | +| ↳ `created_at` | string | When the path was created | +| ↳ `updated_at` | string | When the path was last updated | ### `incidentio_escalation_paths_update` @@ -822,6 +1313,41 @@ Update an existing escalation path in incident.io | Parameter | Type | Description | | --------- | ---- | ----------- | | `escalation_path` | object | The updated escalation path | +| ↳ `id` | string | Target ID | +| ↳ `name` | string | The escalation path name | +| ↳ `path` | array | Array of escalation levels | +| ↳ `targets` | array | Targets for this level | +| ↳ `id` | string | Target ID | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `id` | string | Target ID | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds | +| ↳ `targets` | array | Targets for this level | +| ↳ `id` | string | Target ID | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `type` | string | Target type | +| ↳ `schedule_id` | string | Schedule ID if type is schedule | +| ↳ `user_id` | string | User ID if type is user | +| ↳ `urgency` | string | Urgency level | +| ↳ `time_to_ack_seconds` | number | Time to acknowledge in seconds | +| ↳ `working_hours` | array | Working hours configuration | +| ↳ `weekday` | string | Day of week | +| ↳ `start_time` | string | Start time | +| ↳ `end_time` | string | End time | +| ↳ `weekday` | string | Day of week | +| ↳ `start_time` | string | Start time | +| ↳ `end_time` | string | End time | +| ↳ `created_at` | string | When the path was created | +| ↳ `updated_at` | string | When the path was last updated | ### `incidentio_escalation_paths_delete` diff --git a/apps/docs/content/docs/en/tools/intercom.mdx b/apps/docs/content/docs/en/tools/intercom.mdx index b84c02d974..e0f49e6ece 100644 --- a/apps/docs/content/docs/en/tools/intercom.mdx +++ b/apps/docs/content/docs/en/tools/intercom.mdx @@ -40,6 +40,60 @@ Create a new contact in Intercom with email, external_id, or role. Returns API-a | Parameter | Type | Description | | --------- | ---- | ----------- | | `contact` | object | Created contact object | +| ↳ `id` | string | Unique identifier for the contact | +| ↳ `type` | string | List type | +| ↳ `role` | string | Role of the contact \(user or lead\) | +| ↳ `email` | string | Email address of the contact | +| ↳ `phone` | string | Phone number of the contact | +| ↳ `name` | string | Name of the contact | +| ↳ `avatar` | string | Avatar URL of the contact | +| ↳ `owner_id` | string | ID of the admin assigned to this contact | +| ↳ `external_id` | string | External identifier for the contact | +| ↳ `created_at` | number | Unix timestamp when contact was created | +| ↳ `updated_at` | number | Unix timestamp when contact was last updated | +| ↳ `signed_up_at` | number | Unix timestamp when user signed up | +| ↳ `last_seen_at` | number | Unix timestamp when user was last seen | +| ↳ `workspace_id` | string | Workspace ID the contact belongs to | +| ↳ `custom_attributes` | object | Custom attributes set on the contact | +| ↳ `tags` | object | Tags associated with the contact | +| ↳ `type` | string | List type | +| ↳ `url` | string | URL to fetch tags | +| ↳ `data` | array | Array of tag objects | +| ↳ `has_more` | boolean | Whether there are more tags | +| ↳ `total_count` | number | Total number of tags | +| ↳ `url` | string | URL to fetch companies | +| ↳ `data` | array | Array of social profile objects | +| ↳ `has_more` | boolean | Whether there are more companies | +| ↳ `total_count` | number | Total number of companies | +| ↳ `notes` | object | Notes associated with the contact | +| ↳ `type` | string | List type | +| ↳ `url` | string | URL to fetch notes | +| ↳ `data` | array | Array of note objects | +| ↳ `has_more` | boolean | Whether there are more notes | +| ↳ `total_count` | number | Total number of notes | +| ↳ `companies` | object | Companies associated with the contact | +| ↳ `type` | string | List type | +| ↳ `url` | string | URL to fetch companies | +| ↳ `data` | array | Array of company objects | +| ↳ `has_more` | boolean | Whether there are more companies | +| ↳ `total_count` | number | Total number of companies | +| ↳ `location` | object | Location information for the contact | +| ↳ `type` | string | Location type | +| ↳ `city` | string | City | +| ↳ `region` | string | Region/State | +| ↳ `country` | string | Country | +| ↳ `country_code` | string | Country code | +| ↳ `continent_code` | string | Continent code | +| ↳ `city` | string | City | +| ↳ `region` | string | Region/State | +| ↳ `country` | string | Country | +| ↳ `country_code` | string | Country code | +| ↳ `continent_code` | string | Continent code | +| ↳ `social_profiles` | object | Social profiles of the contact | +| ↳ `type` | string | List type | +| ↳ `data` | array | Array of social profile objects | +| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails | +| `contactId` | string | ID of the created contact | ### `intercom_get_contact` @@ -56,6 +110,25 @@ Get a single contact by ID from Intercom. Returns API-aligned fields only. | Parameter | Type | Description | | --------- | ---- | ----------- | | `contact` | object | Contact object | +| ↳ `id` | string | Unique identifier for the contact | +| ↳ `type` | string | Object type \(contact\) | +| ↳ `role` | string | Role of the contact \(user or lead\) | +| ↳ `email` | string | Email address of the contact | +| ↳ `phone` | string | Phone number of the contact | +| ↳ `name` | string | Name of the contact | +| ↳ `avatar` | string | Avatar URL of the contact | +| ↳ `owner_id` | string | ID of the admin assigned to this contact | +| ↳ `external_id` | string | External identifier for the contact | +| ↳ `created_at` | number | Unix timestamp when contact was created | +| ↳ `updated_at` | number | Unix timestamp when contact was last updated | +| ↳ `workspace_id` | string | Workspace ID the contact belongs to | +| ↳ `custom_attributes` | object | Custom attributes set on the contact | +| ↳ `tags` | object | Tags associated with the contact | +| ↳ `notes` | object | Notes associated with the contact | +| ↳ `companies` | object | Companies associated with the contact | +| ↳ `location` | object | Location information for the contact | +| ↳ `social_profiles` | object | Social profiles of the contact | +| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails | ### `intercom_update_contact` @@ -84,6 +157,26 @@ Update an existing contact in Intercom. Returns API-aligned fields only. | Parameter | Type | Description | | --------- | ---- | ----------- | | `contact` | object | Updated contact object | +| ↳ `id` | string | Unique identifier for the contact | +| ↳ `type` | string | Object type \(contact\) | +| ↳ `role` | string | Role of the contact \(user or lead\) | +| ↳ `email` | string | Email address of the contact | +| ↳ `phone` | string | Phone number of the contact | +| ↳ `name` | string | Name of the contact | +| ↳ `avatar` | string | Avatar URL of the contact | +| ↳ `owner_id` | string | ID of the admin assigned to this contact | +| ↳ `external_id` | string | External identifier for the contact | +| ↳ `created_at` | number | Unix timestamp when contact was created | +| ↳ `updated_at` | number | Unix timestamp when contact was last updated | +| ↳ `workspace_id` | string | Workspace ID the contact belongs to | +| ↳ `custom_attributes` | object | Custom attributes set on the contact | +| ↳ `tags` | object | Tags associated with the contact | +| ↳ `notes` | object | Notes associated with the contact | +| ↳ `companies` | object | Companies associated with the contact | +| ↳ `location` | object | Location information for the contact | +| ↳ `social_profiles` | object | Social profiles of the contact | +| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails | +| `contactId` | string | ID of the updated contact | ### `intercom_list_contacts` @@ -101,6 +194,25 @@ List all contacts from Intercom with pagination support | Parameter | Type | Description | | --------- | ---- | ----------- | | `contacts` | array | Array of contact objects | +| ↳ `id` | string | Unique identifier for the contact | +| ↳ `type` | string | Object type \(contact\) | +| ↳ `role` | string | Role of the contact \(user or lead\) | +| ↳ `email` | string | Email address of the contact | +| ↳ `phone` | string | Phone number of the contact | +| ↳ `name` | string | Name of the contact | +| ↳ `external_id` | string | External identifier for the contact | +| ↳ `created_at` | number | Unix timestamp when contact was created | +| ↳ `updated_at` | number | Unix timestamp when contact was last updated | +| ↳ `workspace_id` | string | Workspace ID the contact belongs to | +| ↳ `custom_attributes` | object | Custom attributes set on the contact | +| ↳ `tags` | object | Tags associated with the contact | +| ↳ `companies` | object | Companies associated with the contact | +| `pages` | object | Pagination information | +| ↳ `type` | string | Pages type identifier | +| ↳ `page` | number | Current page number | +| ↳ `per_page` | number | Number of results per page | +| ↳ `total_pages` | number | Total number of pages | +| `total_count` | number | Total number of contacts | ### `intercom_search_contacts` @@ -121,6 +233,33 @@ Search for contacts in Intercom using a query | Parameter | Type | Description | | --------- | ---- | ----------- | | `contacts` | array | Array of matching contact objects | +| ↳ `id` | string | Unique identifier for the contact | +| ↳ `type` | string | Object type \(contact\) | +| ↳ `role` | string | Role of the contact \(user or lead\) | +| ↳ `email` | string | Email address of the contact | +| ↳ `phone` | string | Phone number of the contact | +| ↳ `name` | string | Name of the contact | +| ↳ `avatar` | string | Avatar URL of the contact | +| ↳ `owner_id` | string | ID of the admin assigned to this contact | +| ↳ `external_id` | string | External identifier for the contact | +| ↳ `created_at` | number | Unix timestamp when contact was created | +| ↳ `updated_at` | number | Unix timestamp when contact was last updated | +| ↳ `signed_up_at` | number | Unix timestamp when user signed up | +| ↳ `last_seen_at` | number | Unix timestamp when user was last seen | +| ↳ `workspace_id` | string | Workspace ID the contact belongs to | +| ↳ `custom_attributes` | object | Custom attributes set on the contact | +| ↳ `tags` | object | Tags associated with the contact | +| ↳ `notes` | object | Notes associated with the contact | +| ↳ `companies` | object | Companies associated with the contact | +| ↳ `location` | object | Location information for the contact | +| ↳ `social_profiles` | object | Social profiles of the contact | +| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails | +| `pages` | object | Pagination information | +| ↳ `type` | string | Pages type identifier | +| ↳ `page` | number | Current page number | +| ↳ `per_page` | number | Number of results per page | +| ↳ `total_pages` | number | Total number of pages | +| `total_count` | number | Total number of matching contacts | ### `intercom_delete_contact` @@ -162,6 +301,25 @@ Create or update a company in Intercom | Parameter | Type | Description | | --------- | ---- | ----------- | | `company` | object | Created or updated company object | +| ↳ `id` | string | Unique identifier for the company | +| ↳ `type` | string | Segment list type | +| ↳ `app_id` | string | Intercom app ID | +| ↳ `company_id` | string | Your unique identifier for the company | +| ↳ `name` | string | Name of the company | +| ↳ `website` | string | Company website URL | +| ↳ `plan` | object | Company plan information | +| ↳ `size` | number | Number of employees | +| ↳ `industry` | string | Industry the company operates in | +| ↳ `monthly_spend` | number | Monthly revenue from this company | +| ↳ `session_count` | number | Number of sessions | +| ↳ `user_count` | number | Number of users in the company | +| ↳ `created_at` | number | Unix timestamp when company was created | +| ↳ `updated_at` | number | Unix timestamp when company was last updated | +| ↳ `remote_created_at` | number | Unix timestamp when company was created by you | +| ↳ `custom_attributes` | object | Custom attributes set on the company | +| ↳ `tags` | array | Array of tag objects | +| ↳ `segments` | array | Array of segment objects | +| `companyId` | string | ID of the created/updated company | ### `intercom_get_company` @@ -178,6 +336,23 @@ Retrieve a single company by ID from Intercom | Parameter | Type | Description | | --------- | ---- | ----------- | | `company` | object | Company object | +| ↳ `id` | string | Unique identifier for the company | +| ↳ `type` | string | Object type \(company\) | +| ↳ `app_id` | string | Intercom app ID | +| ↳ `company_id` | string | Your unique identifier for the company | +| ↳ `name` | string | Name of the company | +| ↳ `website` | string | Company website URL | +| ↳ `plan` | object | Company plan information | +| ↳ `size` | number | Number of employees | +| ↳ `industry` | string | Industry the company operates in | +| ↳ `monthly_spend` | number | Monthly revenue from this company | +| ↳ `session_count` | number | Number of sessions | +| ↳ `user_count` | number | Number of users in the company | +| ↳ `created_at` | number | Unix timestamp when company was created | +| ↳ `updated_at` | number | Unix timestamp when company was last updated | +| ↳ `custom_attributes` | object | Custom attributes set on the company | +| ↳ `tags` | object | Tags associated with the company | +| ↳ `segments` | object | Segments the company belongs to | ### `intercom_list_companies` @@ -196,6 +371,28 @@ List all companies from Intercom with pagination support. Note: This endpoint ha | Parameter | Type | Description | | --------- | ---- | ----------- | | `companies` | array | Array of company objects | +| ↳ `id` | string | Unique identifier for the company | +| ↳ `type` | string | Object type \(company\) | +| ↳ `app_id` | string | Intercom app ID | +| ↳ `company_id` | string | Your unique identifier for the company | +| ↳ `name` | string | Name of the company | +| ↳ `website` | string | Company website URL | +| ↳ `plan` | object | Company plan information | +| ↳ `monthly_spend` | number | Monthly revenue from this company | +| ↳ `session_count` | number | Number of sessions | +| ↳ `user_count` | number | Number of users in the company | +| ↳ `created_at` | number | Unix timestamp when company was created | +| ↳ `updated_at` | number | Unix timestamp when company was last updated | +| ↳ `custom_attributes` | object | Custom attributes set on the company | +| ↳ `tags` | object | Tags associated with the company | +| ↳ `segments` | object | Segments the company belongs to | +| `pages` | object | Pagination information | +| ↳ `type` | string | Pages type identifier | +| ↳ `page` | number | Current page number | +| ↳ `per_page` | number | Number of results per page | +| ↳ `total_pages` | number | Total number of pages | +| `total_count` | number | Total number of companies | +| `success` | boolean | Operation success status | ### `intercom_get_conversation` @@ -214,6 +411,26 @@ Retrieve a single conversation by ID from Intercom | Parameter | Type | Description | | --------- | ---- | ----------- | | `conversation` | object | Conversation object | +| ↳ `id` | string | Unique identifier for the conversation | +| ↳ `type` | string | Object type \(conversation\) | +| ↳ `title` | string | Title of the conversation | +| ↳ `created_at` | number | Unix timestamp when conversation was created | +| ↳ `updated_at` | number | Unix timestamp when conversation was last updated | +| ↳ `waiting_since` | number | Unix timestamp when waiting for reply | +| ↳ `snoozed_until` | number | Unix timestamp when snooze ends | +| ↳ `open` | boolean | Whether the conversation is open | +| ↳ `state` | string | State of the conversation | +| ↳ `read` | boolean | Whether the conversation has been read | +| ↳ `priority` | string | Priority of the conversation | +| ↳ `admin_assignee_id` | number | ID of assigned admin | +| ↳ `team_assignee_id` | string | ID of assigned team | +| ↳ `tags` | object | Tags on the conversation | +| ↳ `source` | object | Source of the conversation | +| ↳ `contacts` | object | Contacts in the conversation | +| ↳ `teammates` | object | Teammates in the conversation | +| ↳ `conversation_parts` | object | Parts of the conversation | +| ↳ `statistics` | object | Conversation statistics | +| `success` | boolean | Operation success status | ### `intercom_list_conversations` @@ -233,6 +450,28 @@ List all conversations from Intercom with pagination support | Parameter | Type | Description | | --------- | ---- | ----------- | | `conversations` | array | Array of conversation objects | +| ↳ `id` | string | Unique identifier for the conversation | +| ↳ `type` | string | Object type \(conversation\) | +| ↳ `title` | string | Title of the conversation | +| ↳ `created_at` | number | Unix timestamp when conversation was created | +| ↳ `updated_at` | number | Unix timestamp when conversation was last updated | +| ↳ `waiting_since` | number | Unix timestamp when waiting for reply | +| ↳ `open` | boolean | Whether the conversation is open | +| ↳ `state` | string | State of the conversation | +| ↳ `read` | boolean | Whether the conversation has been read | +| ↳ `priority` | string | Priority of the conversation | +| ↳ `admin_assignee_id` | number | ID of assigned admin | +| ↳ `team_assignee_id` | string | ID of assigned team | +| ↳ `tags` | object | Tags on the conversation | +| ↳ `source` | object | Source of the conversation | +| ↳ `contacts` | object | Contacts in the conversation | +| `pages` | object | Pagination information | +| ↳ `type` | string | Pages type identifier | +| ↳ `page` | number | Current page number | +| ↳ `per_page` | number | Number of results per page | +| ↳ `total_pages` | number | Total number of pages | +| `total_count` | number | Total number of conversations | +| `success` | boolean | Operation success status | ### `intercom_reply_conversation` @@ -254,6 +493,24 @@ Reply to a conversation as an admin in Intercom | Parameter | Type | Description | | --------- | ---- | ----------- | | `conversation` | object | Updated conversation object | +| ↳ `id` | string | Unique identifier for the conversation | +| ↳ `type` | string | Object type \(conversation\) | +| ↳ `title` | string | Title of the conversation | +| ↳ `created_at` | number | Unix timestamp when conversation was created | +| ↳ `updated_at` | number | Unix timestamp when conversation was last updated | +| ↳ `waiting_since` | number | Unix timestamp when waiting for reply | +| ↳ `open` | boolean | Whether the conversation is open | +| ↳ `state` | string | State of the conversation | +| ↳ `read` | boolean | Whether the conversation has been read | +| ↳ `priority` | string | Priority of the conversation | +| ↳ `admin_assignee_id` | number | ID of assigned admin | +| ↳ `team_assignee_id` | string | ID of assigned team | +| ↳ `tags` | object | Tags on the conversation | +| ↳ `source` | object | Source of the conversation | +| ↳ `contacts` | object | Contacts in the conversation | +| ↳ `conversation_parts` | object | Parts of the conversation | +| `conversationId` | string | ID of the conversation | +| `success` | boolean | Operation success status | ### `intercom_search_conversations` @@ -274,6 +531,28 @@ Search for conversations in Intercom using a query. Returns API-aligned fields o | Parameter | Type | Description | | --------- | ---- | ----------- | | `conversations` | array | Array of matching conversation objects | +| ↳ `id` | string | Unique identifier for the conversation | +| ↳ `type` | string | Object type \(conversation\) | +| ↳ `title` | string | Title of the conversation | +| ↳ `created_at` | number | Unix timestamp when conversation was created | +| ↳ `updated_at` | number | Unix timestamp when conversation was last updated | +| ↳ `waiting_since` | number | Unix timestamp when waiting for reply | +| ↳ `open` | boolean | Whether the conversation is open | +| ↳ `state` | string | State of the conversation | +| ↳ `read` | boolean | Whether the conversation has been read | +| ↳ `priority` | string | Priority of the conversation | +| ↳ `admin_assignee_id` | number | ID of assigned admin | +| ↳ `team_assignee_id` | string | ID of assigned team | +| ↳ `tags` | object | Tags on the conversation | +| ↳ `source` | object | Source of the conversation | +| ↳ `contacts` | object | Contacts in the conversation | +| `pages` | object | Pagination information | +| ↳ `type` | string | Pages type identifier | +| ↳ `page` | number | Current page number | +| ↳ `per_page` | number | Number of results per page | +| ↳ `total_pages` | number | Total number of pages | +| `total_count` | number | Total number of matching conversations | +| `success` | boolean | Operation success status | ### `intercom_create_ticket` @@ -296,6 +575,23 @@ Create a new ticket in Intercom. Returns API-aligned fields only. | Parameter | Type | Description | | --------- | ---- | ----------- | | `ticket` | object | Created ticket object | +| ↳ `id` | string | Unique identifier for the ticket | +| ↳ `type` | string | Object type \(ticket\) | +| ↳ `ticket_id` | string | Ticket ID | +| ↳ `ticket_type` | object | Type of the ticket | +| ↳ `ticket_attributes` | object | Attributes of the ticket | +| ↳ `ticket_state` | string | State of the ticket | +| ↳ `ticket_state_internal_label` | string | Internal label for ticket state | +| ↳ `ticket_state_external_label` | string | External label for ticket state | +| ↳ `created_at` | number | Unix timestamp when ticket was created | +| ↳ `updated_at` | number | Unix timestamp when ticket was last updated | +| ↳ `contacts` | object | Contacts associated with the ticket | +| ↳ `admin_assignee_id` | string | ID of assigned admin | +| ↳ `team_assignee_id` | string | ID of assigned team | +| ↳ `is_shared` | boolean | Whether the ticket is shared | +| ↳ `open` | boolean | Whether the ticket is open | +| `ticketId` | string | ID of the created ticket | +| `success` | boolean | Operation success status | ### `intercom_get_ticket` @@ -312,6 +608,23 @@ Retrieve a single ticket by ID from Intercom. Returns API-aligned fields only. | Parameter | Type | Description | | --------- | ---- | ----------- | | `ticket` | object | Ticket object | +| ↳ `id` | string | Unique identifier for the ticket | +| ↳ `type` | string | Object type \(ticket\) | +| ↳ `ticket_id` | string | Ticket ID | +| ↳ `ticket_type` | object | Type of the ticket | +| ↳ `ticket_attributes` | object | Attributes of the ticket | +| ↳ `ticket_state` | string | State of the ticket | +| ↳ `ticket_state_internal_label` | string | Internal label for ticket state | +| ↳ `ticket_state_external_label` | string | External label for ticket state | +| ↳ `created_at` | number | Unix timestamp when ticket was created | +| ↳ `updated_at` | number | Unix timestamp when ticket was last updated | +| ↳ `contacts` | object | Contacts associated with the ticket | +| ↳ `admin_assignee_id` | string | ID of assigned admin | +| ↳ `team_assignee_id` | string | ID of assigned team | +| ↳ `is_shared` | boolean | Whether the ticket is shared | +| ↳ `open` | boolean | Whether the ticket is open | +| `ticketId` | string | ID of the retrieved ticket | +| `success` | boolean | Operation success status | ### `intercom_create_message` @@ -336,5 +649,14 @@ Create and send a new admin-initiated message in Intercom. Returns API-aligned f | Parameter | Type | Description | | --------- | ---- | ----------- | | `message` | object | Created message object | +| ↳ `id` | string | Unique identifier for the message | +| ↳ `type` | string | Object type \(message\) | +| ↳ `created_at` | number | Unix timestamp when message was created | +| ↳ `body` | string | Body of the message | +| ↳ `message_type` | string | Type of the message \(in_app or email\) | +| ↳ `conversation_id` | string | ID of the conversation created | +| ↳ `owner` | object | Owner of the message | +| `messageId` | string | ID of the created message | +| `success` | boolean | Operation success status | diff --git a/apps/docs/content/docs/en/tools/jira_service_management.mdx b/apps/docs/content/docs/en/tools/jira_service_management.mdx index a068f3a65b..361e091348 100644 --- a/apps/docs/content/docs/en/tools/jira_service_management.mdx +++ b/apps/docs/content/docs/en/tools/jira_service_management.mdx @@ -108,6 +108,7 @@ Get a single service request from Jira Service Management | Parameter | Type | Description | | --------- | ---- | ----------- | | `ts` | string | Timestamp of the operation | +| `request` | json | The service request object | ### `jsm_get_requests` diff --git a/apps/docs/content/docs/en/tools/knowledge.mdx b/apps/docs/content/docs/en/tools/knowledge.mdx index 00aca66cd8..21405f8150 100644 --- a/apps/docs/content/docs/en/tools/knowledge.mdx +++ b/apps/docs/content/docs/en/tools/knowledge.mdx @@ -57,6 +57,15 @@ Search for similar content in a knowledge base using vector similarity | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Array of search results from the knowledge base | +| ↳ `documentId` | string | Document ID | +| ↳ `documentName` | string | Document name | +| ↳ `content` | string | Content of the result | +| ↳ `chunkIndex` | number | Index of the chunk within the document | +| ↳ `similarity` | number | Similarity score of the result | +| ↳ `metadata` | object | Metadata of the result, including tags | +| `query` | string | The search query that was executed | +| `totalResults` | number | Total number of results found | +| `cost` | object | Cost information for the search operation | ### `knowledge_upload_chunk` @@ -75,6 +84,18 @@ Upload a new chunk to a document in a knowledge base | Parameter | Type | Description | | --------- | ---- | ----------- | | `data` | object | Information about the uploaded chunk | +| ↳ `chunkId` | string | Chunk ID | +| ↳ `chunkIndex` | number | Index of the chunk within the document | +| ↳ `content` | string | Content of the chunk | +| ↳ `contentLength` | number | Length of the content in characters | +| ↳ `tokenCount` | number | Number of tokens in the chunk | +| ↳ `enabled` | boolean | Whether the chunk is enabled | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `updatedAt` | string | Last update timestamp | +| `message` | string | Success or error message describing the operation result | +| `documentId` | string | ID of the document the chunk was added to | +| `documentName` | string | Name of the document the chunk was added to | +| `cost` | object | Cost information for the upload operation | ### `knowledge_create_document` @@ -106,5 +127,13 @@ Create a new document in a knowledge base | Parameter | Type | Description | | --------- | ---- | ----------- | | `data` | object | Information about the created document | +| ↳ `documentId` | string | Document ID | +| ↳ `documentName` | string | Document name | +| ↳ `type` | string | Document type | +| ↳ `enabled` | boolean | Whether the document is enabled | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `updatedAt` | string | Last update timestamp | +| `message` | string | Success or error message describing the operation result | +| `documentId` | string | ID of the created document | diff --git a/apps/docs/content/docs/en/tools/langsmith.mdx b/apps/docs/content/docs/en/tools/langsmith.mdx new file mode 100644 index 0000000000..bde6f5c91c --- /dev/null +++ b/apps/docs/content/docs/en/tools/langsmith.mdx @@ -0,0 +1,77 @@ +--- +title: LangSmith +description: Forward workflow runs to LangSmith for observability +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +## Usage Instructions + +Send run data to LangSmith to trace executions, attach metadata, and monitor workflow performance. + + + +## Tools + +### `langsmith_create_run` + +Forward a single run to LangSmith for ingestion. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `apiKey` | string | Yes | LangSmith API key | +| `id` | string | No | Unique run identifier | +| `name` | string | Yes | Run name | +| `run_type` | string | Yes | Run type \(tool, chain, llm, retriever, embedding, prompt, parser\) | +| `start_time` | string | No | Run start time in ISO-8601 format | +| `end_time` | string | No | Run end time in ISO-8601 format | +| `inputs` | json | No | Inputs payload | +| `run_outputs` | json | No | Outputs payload | +| `extra` | json | No | Additional metadata \(extra\) | +| `tags` | json | No | Array of tag strings | +| `parent_run_id` | string | No | Parent run ID | +| `trace_id` | string | No | Trace ID | +| `session_id` | string | No | Session ID | +| `session_name` | string | No | Session name | +| `status` | string | No | Run status | +| `error` | string | No | Error details | +| `dotted_order` | string | No | Dotted order string | +| `events` | json | No | Structured events array | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `accepted` | boolean | Whether the run was accepted for ingestion | +| `runId` | string | Run identifier provided in the request | +| `message` | string | Response message from LangSmith | + +### `langsmith_create_runs_batch` + +Forward multiple runs to LangSmith in a single batch. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `apiKey` | string | Yes | LangSmith API key | +| `post` | json | No | Array of new runs to ingest | +| `patch` | json | No | Array of runs to update/patch | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `accepted` | boolean | Whether the batch was accepted for ingestion | +| `runIds` | array | Run identifiers provided in the request | +| `message` | string | Response message from LangSmith | +| `messages` | array | Per-run response messages, when provided | + + diff --git a/apps/docs/content/docs/en/tools/lemlist.mdx b/apps/docs/content/docs/en/tools/lemlist.mdx index c3b38bb720..15d419162d 100644 --- a/apps/docs/content/docs/en/tools/lemlist.mdx +++ b/apps/docs/content/docs/en/tools/lemlist.mdx @@ -39,6 +39,14 @@ Retrieves campaign activities and steps performed, including email opens, clicks | Parameter | Type | Description | | --------- | ---- | ----------- | | `activities` | array | List of activities | +| ↳ `_id` | string | Activity ID | +| ↳ `type` | string | Activity type | +| ↳ `leadId` | string | Associated lead ID | +| ↳ `campaignId` | string | Campaign ID | +| ↳ `sequenceId` | string | Sequence ID | +| ↳ `stepId` | string | Step ID | +| ↳ `createdAt` | string | When the activity occurred | +| `count` | number | Number of activities returned | ### `lemlist_get_lead` @@ -49,8 +57,7 @@ Retrieves lead information by email address or lead ID. | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | | `apiKey` | string | Yes | Lemlist API key | -| `email` | string | No | Lead email address \(use either email or id\) | -| `id` | string | No | Lead ID \(use either email or id\) | +| `leadIdentifier` | string | Yes | Lead email address or lead ID | #### Output diff --git a/apps/docs/content/docs/en/tools/linear.mdx b/apps/docs/content/docs/en/tools/linear.mdx index 78c95912d9..70299a131c 100644 --- a/apps/docs/content/docs/en/tools/linear.mdx +++ b/apps/docs/content/docs/en/tools/linear.mdx @@ -60,6 +60,27 @@ Fetch and filter issues from Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `issues` | array | Array of filtered issues from Linear | +| ↳ `id` | string | Issue ID | +| ↳ `title` | string | Issue title | +| ↳ `description` | string | Issue description | +| ↳ `priority` | number | Issue priority | +| ↳ `estimate` | number | Issue estimate | +| ↳ `url` | string | Issue URL | +| ↳ `dueDate` | string | Due date \(YYYY-MM-DD\) | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `updatedAt` | string | Last update timestamp | +| ↳ `state` | object | Issue state | +| ↳ `assignee` | object | Assigned user | +| ↳ `teamId` | string | Team ID | +| ↳ `teamName` | string | Team name | +| ↳ `projectId` | string | Project ID | +| ↳ `projectName` | string | Project name | +| ↳ `cycleId` | string | Cycle ID | +| ↳ `cycleNumber` | number | Cycle number | +| ↳ `cycleName` | string | Cycle name | +| ↳ `labels` | array | Issue labels | +| `hasNextPage` | boolean | Whether there are more results available | +| `endCursor` | string | Cursor for fetching the next page \(use as | ### `linear_get_issue` @@ -76,6 +97,17 @@ Get a single issue by ID from Linear with full details | Parameter | Type | Description | | --------- | ---- | ----------- | | `issue` | object | The issue with full details | +| ↳ `id` | string | Issue ID | +| ↳ `title` | string | Issue title | +| ↳ `description` | string | Issue description | +| ↳ `priority` | number | Issue priority \(0-4\) | +| ↳ `estimate` | number | Issue estimate in points | +| ↳ `url` | string | Issue URL | +| ↳ `state` | object | Issue state/status | +| ↳ `assignee` | object | Assigned user | +| ↳ `labels` | array | Issue labels | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `updatedAt` | string | Last update timestamp | ### `linear_create_issue` @@ -105,6 +137,25 @@ Create a new issue in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `issue` | object | The created issue with all its properties | +| ↳ `id` | string | Issue ID | +| ↳ `title` | string | Issue title | +| ↳ `description` | string | Issue description | +| ↳ `priority` | number | Issue priority | +| ↳ `estimate` | number | Issue estimate | +| ↳ `url` | string | Issue URL | +| ↳ `dueDate` | string | Due date \(YYYY-MM-DD\) | +| ↳ `state` | object | Issue state | +| ↳ `assignee` | object | Assigned user | +| ↳ `teamId` | string | Team ID | +| ↳ `projectId` | string | Project ID | +| ↳ `cycleId` | string | Cycle ID | +| ↳ `cycleNumber` | number | Cycle number | +| ↳ `cycleName` | string | Cycle name | +| ↳ `parentId` | string | Parent issue ID | +| ↳ `parentTitle` | string | Parent issue title | +| ↳ `projectMilestoneId` | string | Project milestone ID | +| ↳ `projectMilestoneName` | string | Project milestone name | +| ↳ `labels` | array | Issue labels | ### `linear_update_issue` @@ -134,6 +185,22 @@ Update an existing issue in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `issue` | object | The updated issue | +| ↳ `id` | string | Issue ID | +| ↳ `title` | string | Issue title | +| ↳ `description` | string | Issue description | +| ↳ `priority` | number | Issue priority | +| ↳ `estimate` | number | Issue estimate | +| ↳ `state` | object | Issue state | +| ↳ `assignee` | object | Assigned user | +| ↳ `labels` | array | Issue labels | +| ↳ `updatedAt` | string | Last update timestamp | +| ↳ `dueDate` | string | Due date \(YYYY-MM-DD\) | +| ↳ `projectId` | string | Project ID | +| ↳ `cycleId` | string | Cycle ID | +| ↳ `cycleNumber` | number | Cycle number | +| ↳ `cycleName` | string | Cycle name | +| ↳ `parentId` | string | Parent issue ID | +| ↳ `parentTitle` | string | Parent issue title | ### `linear_archive_issue` @@ -203,6 +270,16 @@ Search for issues in Linear using full-text search | Parameter | Type | Description | | --------- | ---- | ----------- | | `issues` | array | Array of matching issues | +| ↳ `id` | string | Issue ID | +| ↳ `title` | string | Issue title | +| ↳ `description` | string | Issue description | +| ↳ `priority` | number | Issue priority | +| ↳ `state` | object | Issue state | +| ↳ `assignee` | object | Assigned user | +| ↳ `labels` | array | Issue labels | +| `pageInfo` | object | Pagination information | +| ↳ `hasNextPage` | boolean | Whether there are more results | +| ↳ `endCursor` | string | Cursor for next page | ### `linear_add_label_to_issue` @@ -256,6 +333,11 @@ Add a comment to an issue in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `comment` | object | The created comment | +| ↳ `id` | string | Comment ID | +| ↳ `body` | string | Comment text | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `user` | object | User who created the comment | +| ↳ `issue` | object | Associated issue | ### `linear_update_comment` @@ -273,6 +355,10 @@ Edit a comment in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `comment` | object | The updated comment | +| ↳ `id` | string | Comment ID | +| ↳ `body` | string | Comment text | +| ↳ `updatedAt` | string | Last update timestamp | +| ↳ `user` | object | User who created the comment | ### `linear_delete_comment` @@ -307,6 +393,14 @@ List all comments on an issue in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `comments` | array | Array of comments on the issue | +| ↳ `id` | string | Comment ID | +| ↳ `body` | string | Comment text | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `updatedAt` | string | Last update timestamp | +| ↳ `user` | object | User who created the comment | +| `pageInfo` | object | Pagination information | +| ↳ `hasNextPage` | boolean | Whether there are more results | +| ↳ `endCursor` | string | Cursor for next page | ### `linear_list_projects` @@ -326,6 +420,14 @@ List projects in Linear with optional filtering | Parameter | Type | Description | | --------- | ---- | ----------- | | `projects` | array | Array of projects | +| ↳ `id` | string | Project ID | +| ↳ `name` | string | Project name | +| ↳ `description` | string | Project description | +| ↳ `state` | string | Project state | +| ↳ `priority` | number | Project priority | +| ↳ `lead` | object | Project lead | +| ↳ `teams` | array | Teams associated with project | +| `pageInfo` | object | Pagination information | ### `linear_get_project` @@ -342,6 +444,15 @@ Get a single project by ID from Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `project` | object | The project with full details | +| ↳ `id` | string | Project ID | +| ↳ `name` | string | Project name | +| ↳ `description` | string | Project description | +| ↳ `state` | string | Project state | +| ↳ `priority` | number | Project priority | +| ↳ `startDate` | string | Start date | +| ↳ `targetDate` | string | Target completion date | +| ↳ `lead` | object | Project lead | +| ↳ `teams` | array | Associated teams | ### `linear_create_project` @@ -364,6 +475,13 @@ Create a new project in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `project` | object | The created project | +| ↳ `id` | string | Project ID | +| ↳ `name` | string | Project name | +| ↳ `description` | string | Project description | +| ↳ `state` | string | Project state | +| ↳ `priority` | number | Project priority | +| ↳ `lead` | object | Project lead | +| ↳ `teams` | array | Associated teams | ### `linear_update_project` @@ -387,6 +505,15 @@ Update an existing project in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `project` | object | The updated project | +| ↳ `id` | string | Project ID | +| ↳ `name` | string | Project name | +| ↳ `description` | string | Project description | +| ↳ `state` | string | Project state | +| ↳ `priority` | number | Project priority | +| ↳ `startDate` | string | Project start date | +| ↳ `targetDate` | string | Project target date | +| ↳ `lead` | object | Project lead | +| ↳ `teams` | array | Associated teams | ### `linear_archive_project` @@ -422,6 +549,14 @@ List all users in the Linear workspace | Parameter | Type | Description | | --------- | ---- | ----------- | | `users` | array | Array of workspace users | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `displayName` | string | Display name | +| ↳ `active` | boolean | Whether user is active | +| ↳ `admin` | boolean | Whether user is admin | +| ↳ `avatarUrl` | string | Avatar URL | +| `pageInfo` | object | Pagination information | ### `linear_list_teams` @@ -439,6 +574,11 @@ List all teams in the Linear workspace | Parameter | Type | Description | | --------- | ---- | ----------- | | `teams` | array | Array of teams | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | +| ↳ `key` | string | Team key \(used in issue identifiers\) | +| ↳ `description` | string | Team description | +| `pageInfo` | object | Pagination information | ### `linear_get_viewer` @@ -454,6 +594,13 @@ Get the currently authenticated user (viewer) information | Parameter | Type | Description | | --------- | ---- | ----------- | | `user` | object | The currently authenticated user | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `displayName` | string | Display name | +| ↳ `active` | boolean | Whether user is active | +| ↳ `admin` | boolean | Whether user is admin | +| ↳ `avatarUrl` | string | Avatar URL | ### `linear_list_labels` @@ -472,6 +619,12 @@ List all labels in Linear workspace or team | Parameter | Type | Description | | --------- | ---- | ----------- | | `labels` | array | Array of labels | +| ↳ `id` | string | Label ID | +| ↳ `name` | string | Label name | +| ↳ `color` | string | Label color \(hex\) | +| ↳ `description` | string | Label description | +| ↳ `team` | object | Team this label belongs to | +| `pageInfo` | object | Pagination information | ### `linear_create_label` @@ -491,6 +644,11 @@ Create a new label in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `label` | object | The created label | +| ↳ `id` | string | Label ID | +| ↳ `name` | string | Label name | +| ↳ `color` | string | Label color | +| ↳ `description` | string | Label description | +| ↳ `team` | object | Team this label belongs to | ### `linear_update_label` @@ -510,6 +668,10 @@ Update an existing label in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `label` | object | The updated label | +| ↳ `id` | string | Label ID | +| ↳ `name` | string | Label name | +| ↳ `color` | string | Label color | +| ↳ `description` | string | Label description | ### `linear_archive_label` @@ -545,6 +707,13 @@ List all workflow states (statuses) in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `states` | array | Array of workflow states | +| ↳ `id` | string | State ID | +| ↳ `name` | string | State name \(e.g., | +| ↳ `type` | string | State type \(e.g., | +| ↳ `color` | string | State color | +| ↳ `position` | number | State position in workflow | +| ↳ `team` | object | Team this state belongs to | +| `pageInfo` | object | Pagination information | ### `linear_create_workflow_state` @@ -566,6 +735,12 @@ Create a new workflow state (status) in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `state` | object | The created workflow state | +| ↳ `id` | string | State ID | +| ↳ `name` | string | State name | +| ↳ `type` | string | State type | +| ↳ `color` | string | State color | +| ↳ `position` | number | State position | +| ↳ `team` | object | Team this state belongs to | ### `linear_update_workflow_state` @@ -586,6 +761,11 @@ Update an existing workflow state in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `state` | object | The updated workflow state | +| ↳ `id` | string | State ID | +| ↳ `name` | string | State name | +| ↳ `type` | string | State type | +| ↳ `color` | string | State color | +| ↳ `position` | number | State position | ### `linear_list_cycles` @@ -604,6 +784,15 @@ List cycles (sprints/iterations) in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `cycles` | array | Array of cycles | +| ↳ `id` | string | Cycle ID | +| ↳ `number` | number | Cycle number | +| ↳ `name` | string | Cycle name | +| ↳ `startsAt` | string | Start date | +| ↳ `endsAt` | string | End date | +| ↳ `completedAt` | string | Completion date | +| ↳ `progress` | number | Progress percentage \(0-1\) | +| ↳ `team` | object | Team this cycle belongs to | +| `pageInfo` | object | Pagination information | ### `linear_get_cycle` @@ -620,6 +809,13 @@ Get a single cycle by ID from Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `cycle` | object | The cycle with full details | +| ↳ `id` | string | Cycle ID | +| ↳ `number` | number | Cycle number | +| ↳ `name` | string | Cycle name | +| ↳ `startsAt` | string | Start date | +| ↳ `endsAt` | string | End date | +| ↳ `progress` | number | Progress percentage | +| ↳ `team` | object | Team this cycle belongs to | ### `linear_create_cycle` @@ -639,6 +835,12 @@ Create a new cycle (sprint/iteration) in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `cycle` | object | The created cycle | +| ↳ `id` | string | Cycle ID | +| ↳ `number` | number | Cycle number | +| ↳ `name` | string | Cycle name | +| ↳ `startsAt` | string | Start date | +| ↳ `endsAt` | string | End date | +| ↳ `team` | object | Team this cycle belongs to | ### `linear_get_active_cycle` @@ -655,6 +857,13 @@ Get the currently active cycle for a team | Parameter | Type | Description | | --------- | ---- | ----------- | | `cycle` | object | The active cycle \(null if no active cycle\) | +| ↳ `id` | string | Cycle ID | +| ↳ `number` | number | Cycle number | +| ↳ `name` | string | Cycle name | +| ↳ `startsAt` | string | Start date | +| ↳ `endsAt` | string | End date | +| ↳ `progress` | number | Progress percentage | +| ↳ `team` | object | Team this cycle belongs to | ### `linear_create_attachment` @@ -674,6 +883,11 @@ Add an attachment to an issue in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `attachment` | object | The created attachment | +| ↳ `id` | string | Attachment ID | +| ↳ `title` | string | Attachment title | +| ↳ `subtitle` | string | Attachment subtitle | +| ↳ `url` | string | Attachment URL | +| ↳ `createdAt` | string | Creation timestamp | ### `linear_list_attachments` @@ -692,6 +906,12 @@ List all attachments on an issue in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `attachments` | array | Array of attachments | +| ↳ `id` | string | Attachment ID | +| ↳ `title` | string | Attachment title | +| ↳ `subtitle` | string | Attachment subtitle | +| ↳ `url` | string | Attachment URL | +| ↳ `createdAt` | string | Creation timestamp | +| `pageInfo` | object | Pagination information | ### `linear_update_attachment` @@ -710,6 +930,11 @@ Update an attachment metadata in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `attachment` | object | The updated attachment | +| ↳ `id` | string | Attachment ID | +| ↳ `title` | string | Attachment title | +| ↳ `subtitle` | string | Attachment subtitle | +| ↳ `url` | string | Attachment URL | +| ↳ `updatedAt` | string | Last update timestamp | ### `linear_delete_attachment` @@ -744,6 +969,10 @@ Link two issues together in Linear (blocks, relates to, duplicates) | Parameter | Type | Description | | --------- | ---- | ----------- | | `relation` | object | The created issue relation | +| ↳ `id` | string | Relation ID | +| ↳ `type` | string | Relation type | +| ↳ `issue` | object | Source issue | +| ↳ `relatedIssue` | object | Target issue | ### `linear_list_issue_relations` @@ -762,6 +991,11 @@ List all relations (dependencies) for an issue in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `relations` | array | Array of issue relations | +| ↳ `id` | string | Relation ID | +| ↳ `type` | string | Relation type | +| ↳ `issue` | object | Source issue | +| ↳ `relatedIssue` | object | Target issue | +| `pageInfo` | object | Pagination information | ### `linear_delete_issue_relation` @@ -797,6 +1031,11 @@ Bookmark an issue, project, cycle, or label in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `favorite` | object | The created favorite | +| ↳ `id` | string | Favorite ID | +| ↳ `type` | string | Favorite type | +| ↳ `issue` | object | Favorited issue \(if applicable\) | +| ↳ `project` | object | Favorited project \(if applicable\) | +| ↳ `cycle` | object | Favorited cycle \(if applicable\) | ### `linear_list_favorites` @@ -814,6 +1053,12 @@ List all bookmarked items for the current user in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `favorites` | array | Array of favorited items | +| ↳ `id` | string | Favorite ID | +| ↳ `type` | string | Favorite type | +| ↳ `issue` | object | Favorited issue | +| ↳ `project` | object | Favorited project | +| ↳ `cycle` | object | Favorited cycle | +| `pageInfo` | object | Pagination information | ### `linear_create_project_update` @@ -832,6 +1077,11 @@ Post a status update for a project in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `update` | object | The created project update | +| ↳ `id` | string | Update ID | +| ↳ `body` | string | Update message | +| ↳ `health` | string | Project health status | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `user` | object | User who created the update | ### `linear_list_project_updates` @@ -850,6 +1100,12 @@ List all status updates for a project in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `updates` | array | Array of project updates | +| ↳ `id` | string | Update ID | +| ↳ `body` | string | Update message | +| ↳ `health` | string | Project health | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `user` | object | User who created the update | +| `pageInfo` | object | Pagination information | ### `linear_list_notifications` @@ -867,6 +1123,12 @@ List notifications for the current user in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `notifications` | array | Array of notifications | +| ↳ `id` | string | Notification ID | +| ↳ `type` | string | Notification type | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `readAt` | string | Read timestamp \(null if unread\) | +| ↳ `issue` | object | Related issue | +| `pageInfo` | object | Pagination information | ### `linear_update_notification` @@ -884,6 +1146,11 @@ Mark a notification as read or unread in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `notification` | object | The updated notification | +| ↳ `id` | string | Notification ID | +| ↳ `type` | string | Notification type | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `readAt` | string | Read timestamp | +| ↳ `issue` | object | Related issue | ### `linear_create_customer` @@ -908,6 +1175,14 @@ Create a new customer in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `customer` | object | The created customer | +| ↳ `id` | string | Customer ID | +| ↳ `name` | string | Customer name | +| ↳ `domains` | array | Associated domains | +| ↳ `externalIds` | array | External IDs | +| ↳ `logoUrl` | string | Logo URL | +| ↳ `approximateNeedCount` | number | Number of customer needs | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) | ### `linear_list_customers` @@ -926,6 +1201,15 @@ List all customers in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `customers` | array | Array of customers | +| ↳ `id` | string | Customer ID | +| ↳ `name` | string | Customer name | +| ↳ `domains` | array | Associated domains | +| ↳ `externalIds` | array | External IDs | +| ↳ `logoUrl` | string | Logo URL | +| ↳ `approximateNeedCount` | number | Number of customer needs | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) | +| `pageInfo` | object | Pagination information | ### `linear_create_customer_request` @@ -946,6 +1230,17 @@ Create a customer request (need) in Linear. Assign to customer, set urgency (pri | Parameter | Type | Description | | --------- | ---- | ----------- | | `customerNeed` | object | The created customer request | +| ↳ `id` | string | Customer request ID | +| ↳ `body` | string | Request description | +| ↳ `priority` | number | Urgency level \(0 = Not important, 1 = Important\) | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `updatedAt` | string | Last update timestamp | +| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) | +| ↳ `customer` | object | Assigned customer | +| ↳ `issue` | object | Linked issue \(null if not linked\) | +| ↳ `project` | object | Linked project \(null if not linked\) | +| ↳ `creator` | object | User who created the request | +| ↳ `url` | string | URL to the customer request | ### `linear_update_customer_request` @@ -967,6 +1262,17 @@ Update a customer request (need) in Linear. Can change urgency, description, cus | Parameter | Type | Description | | --------- | ---- | ----------- | | `customerNeed` | object | The updated customer request | +| ↳ `id` | string | Customer request ID | +| ↳ `body` | string | Request description | +| ↳ `priority` | number | Urgency level \(0 = Not important, 1 = Important\) | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `updatedAt` | string | Last update timestamp | +| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) | +| ↳ `customer` | object | Assigned customer | +| ↳ `issue` | object | Linked issue \(null if not linked\) | +| ↳ `project` | object | Linked project \(null if not linked\) | +| ↳ `creator` | object | User who created the request | +| ↳ `url` | string | URL to the customer request | ### `linear_list_customer_requests` @@ -985,6 +1291,18 @@ List all customer requests (needs) in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `customerNeeds` | array | Array of customer requests | +| ↳ `id` | string | Customer request ID | +| ↳ `body` | string | Request description | +| ↳ `priority` | number | Urgency level \(0 = Not important, 1 = Important\) | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `updatedAt` | string | Last update timestamp | +| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) | +| ↳ `customer` | object | Assigned customer | +| ↳ `issue` | object | Linked issue \(null if not linked\) | +| ↳ `project` | object | Linked project \(null if not linked\) | +| ↳ `creator` | object | User who created the request | +| ↳ `url` | string | URL to the customer request | +| `pageInfo` | object | Pagination information | ### `linear_get_customer` @@ -1001,6 +1319,14 @@ Get a single customer by ID in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `customer` | object | The customer data | +| ↳ `id` | string | Customer ID | +| ↳ `name` | string | Customer name | +| ↳ `domains` | array | Associated domains | +| ↳ `externalIds` | array | External IDs | +| ↳ `logoUrl` | string | Logo URL | +| ↳ `approximateNeedCount` | number | Number of customer needs | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `archivedAt` | string | Archive timestamp \(null if not archived\) | ### `linear_update_customer` diff --git a/apps/docs/content/docs/en/tools/mailchimp.mdx b/apps/docs/content/docs/en/tools/mailchimp.mdx index 7ce7ef5bfb..ded3b76ae3 100644 --- a/apps/docs/content/docs/en/tools/mailchimp.mdx +++ b/apps/docs/content/docs/en/tools/mailchimp.mdx @@ -72,6 +72,9 @@ Retrieve a list of audiences (lists) from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the audiences were successfully retrieved | | `output` | object | Audiences data | +| ↳ `lists` | json | Array of audience/list objects | +| ↳ `total_items` | number | Total number of lists | +| ↳ `total_returned` | number | Number of lists returned in this response | ### `mailchimp_get_audience` @@ -90,6 +93,8 @@ Retrieve details of a specific audience (list) from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the audience was successfully retrieved | | `output` | object | Audience data | +| ↳ `list` | json | Audience/list object | +| ↳ `list_id` | string | The unique ID of the audience | ### `mailchimp_create_audience` @@ -112,6 +117,9 @@ Create a new audience (list) in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created audience data | +| ↳ `list` | json | Created audience/list object | +| ↳ `list_id` | string | Created audience/list ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_update_audience` @@ -134,6 +142,9 @@ Update an existing audience (list) in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated audience data | +| ↳ `list` | object | Updated audience/list object | +| ↳ `list_id` | string | List ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_audience` @@ -172,6 +183,9 @@ Retrieve a list of members from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the members were successfully retrieved | | `output` | object | Members data | +| ↳ `members` | json | Array of member objects | +| ↳ `total_items` | number | Total number of members | +| ↳ `total_returned` | number | Number of members returned in this response | ### `mailchimp_get_member` @@ -191,6 +205,8 @@ Retrieve details of a specific member from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the member was successfully retrieved | | `output` | object | Member data | +| ↳ `member` | json | Member object | +| ↳ `subscriber_hash` | string | The MD5 hash of the member email address | ### `mailchimp_add_member` @@ -213,6 +229,9 @@ Add a new member to a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Added member data | +| ↳ `member` | json | Added member object | +| ↳ `subscriber_hash` | string | Subscriber hash ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_add_or_update_member` @@ -236,6 +255,9 @@ Add a new member or update an existing member in a Mailchimp audience (upsert) | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Member data | +| ↳ `member` | json | Member object | +| ↳ `subscriber_hash` | string | Subscriber hash ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_update_member` @@ -259,6 +281,9 @@ Update an existing member in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated member data | +| ↳ `member` | object | Updated member object | +| ↳ `subscriber_hash` | string | Subscriber hash | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_member` @@ -296,6 +321,7 @@ Permanently archive (delete) a member from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Archive confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_unarchive_member` @@ -317,6 +343,9 @@ Restore an archived member to a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Unarchived member data | +| ↳ `member` | object | Unarchived member object | +| ↳ `subscriber_hash` | string | Subscriber hash | +| ↳ `success` | boolean | Operation success | ### `mailchimp_get_campaigns` @@ -338,6 +367,9 @@ Retrieve a list of campaigns from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the campaigns were successfully retrieved | | `output` | object | Campaigns data | +| ↳ `campaigns` | json | Array of campaign objects | +| ↳ `total_items` | number | Total number of campaigns | +| ↳ `total_returned` | number | Number of campaigns returned in this response | ### `mailchimp_get_campaign` @@ -356,6 +388,8 @@ Retrieve details of a specific campaign from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the campaign was successfully retrieved | | `output` | object | Campaign data | +| ↳ `campaign` | json | Campaign object | +| ↳ `campaign_id` | string | The unique ID of the campaign | ### `mailchimp_create_campaign` @@ -376,6 +410,9 @@ Create a new campaign in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created campaign data | +| ↳ `campaign` | json | Created campaign object | +| ↳ `campaign_id` | string | Created campaign ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_update_campaign` @@ -396,6 +433,9 @@ Update an existing campaign in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated campaign data | +| ↳ `campaign` | object | Updated campaign object | +| ↳ `campaign_id` | string | Campaign ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_campaign` @@ -431,6 +471,7 @@ Send a Mailchimp campaign | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Send confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_schedule_campaign` @@ -467,6 +508,7 @@ Unschedule a previously scheduled Mailchimp campaign | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Unschedule confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_replicate_campaign` @@ -485,6 +527,9 @@ Create a copy of an existing Mailchimp campaign | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Replicated campaign data | +| ↳ `campaign` | object | Replicated campaign object | +| ↳ `campaign_id` | string | Campaign ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_get_campaign_content` @@ -503,6 +548,7 @@ Retrieve the HTML and plain-text content for a Mailchimp campaign | --------- | ---- | ----------- | | `success` | boolean | Whether the campaign content was successfully retrieved | | `output` | object | Campaign content data | +| ↳ `content` | json | Campaign content object | ### `mailchimp_set_campaign_content` @@ -524,6 +570,8 @@ Set the content for a Mailchimp campaign | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Campaign content data | +| ↳ `content` | object | Campaign content object | +| ↳ `success` | boolean | Operation success | ### `mailchimp_get_automations` @@ -543,6 +591,9 @@ Retrieve a list of automations from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the automations were successfully retrieved | | `output` | object | Automations data | +| ↳ `automations` | json | Array of automation objects | +| ↳ `total_items` | number | Total number of automations | +| ↳ `total_returned` | number | Number of automations returned in this response | ### `mailchimp_get_automation` @@ -561,6 +612,8 @@ Retrieve details of a specific automation from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the automation was successfully retrieved | | `output` | object | Automation data | +| ↳ `automation` | json | Automation object | +| ↳ `workflow_id` | string | The unique ID of the automation workflow | ### `mailchimp_start_automation` @@ -579,6 +632,7 @@ Start all emails in a Mailchimp automation workflow | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Start confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_pause_automation` @@ -597,6 +651,7 @@ Pause all emails in a Mailchimp automation workflow | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Pause confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_add_subscriber_to_automation` @@ -617,6 +672,8 @@ Manually add a subscriber to a workflow email queue | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Subscriber queue data | +| ↳ `subscriber` | json | Subscriber object | +| ↳ `success` | boolean | Operation success | ### `mailchimp_get_templates` @@ -636,6 +693,9 @@ Retrieve a list of templates from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the templates were successfully retrieved | | `output` | object | Templates data | +| ↳ `templates` | json | Array of template objects | +| ↳ `total_items` | number | Total number of templates | +| ↳ `total_returned` | number | Number of templates returned in this response | ### `mailchimp_get_template` @@ -654,6 +714,8 @@ Retrieve details of a specific template from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the template was successfully retrieved | | `output` | object | Template data | +| ↳ `template` | json | Template object | +| ↳ `template_id` | string | The unique ID of the template | ### `mailchimp_create_template` @@ -673,6 +735,9 @@ Create a new template in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created template data | +| ↳ `template` | json | Created template object | +| ↳ `template_id` | string | Created template ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_update_template` @@ -693,6 +758,9 @@ Update an existing template in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated template data | +| ↳ `template` | object | Updated template object | +| ↳ `template_id` | string | Template ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_template` @@ -729,6 +797,9 @@ Retrieve a list of campaign reports from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the campaign reports were successfully retrieved | | `output` | object | Campaign reports data | +| ↳ `reports` | json | Array of campaign report objects | +| ↳ `total_items` | number | Total number of reports | +| ↳ `total_returned` | number | Number of reports returned in this response | ### `mailchimp_get_campaign_report` @@ -747,6 +818,8 @@ Retrieve the report for a specific campaign from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the campaign report was successfully retrieved | | `output` | object | Campaign report data | +| ↳ `report` | json | Campaign report object | +| ↳ `campaign_id` | string | The unique ID of the campaign | ### `mailchimp_get_segments` @@ -767,6 +840,9 @@ Retrieve a list of segments from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the segments were successfully retrieved | | `output` | object | Segments data | +| ↳ `segments` | json | Array of segment objects | +| ↳ `total_items` | number | Total number of segments | +| ↳ `total_returned` | number | Number of segments returned in this response | ### `mailchimp_get_segment` @@ -786,6 +862,8 @@ Retrieve details of a specific segment from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the segment was successfully retrieved | | `output` | object | Segment data | +| ↳ `segment` | json | Segment object | +| ↳ `segment_id` | string | The unique ID of the segment | ### `mailchimp_create_segment` @@ -806,6 +884,9 @@ Create a new segment in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created segment data | +| ↳ `segment` | json | Created segment object | +| ↳ `segment_id` | string | Created segment ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_update_segment` @@ -827,6 +908,9 @@ Update an existing segment in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated segment data | +| ↳ `segment` | object | Updated segment object | +| ↳ `segment_id` | string | Segment ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_segment` @@ -866,6 +950,9 @@ Retrieve members of a specific segment from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the segment members were successfully retrieved | | `output` | object | Segment members data | +| ↳ `members` | json | Array of member objects | +| ↳ `total_items` | number | Total number of members | +| ↳ `total_returned` | number | Number of members returned in this response | ### `mailchimp_add_segment_member` @@ -886,6 +973,8 @@ Add a member to a specific segment in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Added member data | +| ↳ `member` | json | Added member object | +| ↳ `success` | boolean | Operation success | ### `mailchimp_remove_segment_member` @@ -906,6 +995,7 @@ Remove a member from a specific segment in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Removal confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_get_member_tags` @@ -925,6 +1015,9 @@ Retrieve tags associated with a member in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the member tags were successfully retrieved | | `output` | object | Member tags data | +| ↳ `tags` | json | Array of tag objects | +| ↳ `total_items` | number | Total number of tags | +| ↳ `total_returned` | number | Number of tags returned in this response | ### `mailchimp_add_member_tags` @@ -945,6 +1038,7 @@ Add tags to a member in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Tag addition confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_remove_member_tags` @@ -965,6 +1059,7 @@ Remove tags from a member in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Tag removal confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_get_merge_fields` @@ -985,6 +1080,9 @@ Retrieve a list of merge fields from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the merge fields were successfully retrieved | | `output` | object | Merge fields data | +| ↳ `mergeFields` | json | Array of merge field objects | +| ↳ `total_items` | number | Total number of merge fields | +| ↳ `total_returned` | number | Number of merge fields returned in this response | ### `mailchimp_get_merge_field` @@ -1004,6 +1102,8 @@ Retrieve details of a specific merge field from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the merge field was successfully retrieved | | `output` | object | Merge field data | +| ↳ `mergeField` | json | Merge field object | +| ↳ `merge_id` | string | The unique ID of the merge field | ### `mailchimp_create_merge_field` @@ -1024,6 +1124,9 @@ Create a new merge field in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created merge field data | +| ↳ `mergeField` | json | Created merge field object | +| ↳ `merge_id` | string | Created merge field ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_update_merge_field` @@ -1044,6 +1147,9 @@ Update an existing merge field in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated merge field data | +| ↳ `mergeField` | object | Updated merge field object | +| ↳ `merge_id` | string | Merge field ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_merge_field` @@ -1082,6 +1188,9 @@ Retrieve a list of interest categories from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the interest categories were successfully retrieved | | `output` | object | Interest categories data | +| ↳ `categories` | json | Array of interest category objects | +| ↳ `total_items` | number | Total number of categories | +| ↳ `total_returned` | number | Number of categories returned in this response | ### `mailchimp_get_interest_category` @@ -1101,6 +1210,8 @@ Retrieve details of a specific interest category from a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the interest category was successfully retrieved | | `output` | object | Interest category data | +| ↳ `category` | json | Interest category object | +| ↳ `interest_category_id` | string | The unique ID of the interest category | ### `mailchimp_create_interest_category` @@ -1121,6 +1232,9 @@ Create a new interest category in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created interest category data | +| ↳ `category` | json | Created interest category object | +| ↳ `interest_category_id` | string | Created interest category ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_update_interest_category` @@ -1141,6 +1255,9 @@ Update an existing interest category in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated interest category data | +| ↳ `category` | object | Updated interest category object | +| ↳ `interest_category_id` | string | Interest category ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_interest_category` @@ -1180,6 +1297,9 @@ Retrieve a list of interests from an interest category in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Whether the interests were successfully retrieved | | `output` | object | Interests data | +| ↳ `interests` | json | Array of interest objects | +| ↳ `total_items` | number | Total number of interests | +| ↳ `total_returned` | number | Number of interests returned in this response | ### `mailchimp_get_interest` @@ -1200,6 +1320,8 @@ Retrieve details of a specific interest from an interest category in a Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the interest was successfully retrieved | | `output` | object | Interest data | +| ↳ `interest` | json | Interest object | +| ↳ `interest_id` | string | The unique ID of the interest | ### `mailchimp_create_interest` @@ -1220,6 +1342,9 @@ Create a new interest in an interest category in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created interest data | +| ↳ `interest` | json | Created interest object | +| ↳ `interest_id` | string | Created interest ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_update_interest` @@ -1241,6 +1366,9 @@ Update an existing interest in an interest category in a Mailchimp audience | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated interest data | +| ↳ `interest` | object | Updated interest object | +| ↳ `interest_id` | string | Interest ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_interest` @@ -1279,6 +1407,9 @@ Retrieve a list of landing pages from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the landing pages were successfully retrieved | | `output` | object | Landing pages data | +| ↳ `landingPages` | json | Array of landing page objects | +| ↳ `total_items` | number | Total number of landing pages | +| ↳ `total_returned` | number | Number of landing pages returned in this response | ### `mailchimp_get_landing_page` @@ -1297,6 +1428,8 @@ Retrieve details of a specific landing page from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the landing page was successfully retrieved | | `output` | object | Landing page data | +| ↳ `landingPage` | json | Landing page object | +| ↳ `page_id` | string | The unique ID of the landing page | ### `mailchimp_create_landing_page` @@ -1316,6 +1449,9 @@ Create a new landing page in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created landing page data | +| ↳ `landingPage` | json | Created landing page object | +| ↳ `page_id` | string | Created landing page ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_update_landing_page` @@ -1335,6 +1471,9 @@ Update an existing landing page in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated landing page data | +| ↳ `landingPage` | object | Updated landing page object | +| ↳ `page_id` | string | Landing page ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_landing_page` @@ -1370,6 +1509,7 @@ Publish a landing page in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Publish confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_unpublish_landing_page` @@ -1388,6 +1528,7 @@ Unpublish a landing page in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Unpublish confirmation | +| ↳ `success` | boolean | Operation success | ### `mailchimp_get_batch_operations` @@ -1407,6 +1548,9 @@ Retrieve a list of batch operations from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the batch operations were successfully retrieved | | `output` | object | Batch operations data | +| ↳ `batches` | json | Array of batch operation objects | +| ↳ `total_items` | number | Total number of batch operations | +| ↳ `total_returned` | number | Number of batch operations returned in this response | ### `mailchimp_get_batch_operation` @@ -1425,6 +1569,8 @@ Retrieve details of a specific batch operation from Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Whether the batch operation was successfully retrieved | | `output` | object | Batch operation data | +| ↳ `batch` | json | Batch operation object | +| ↳ `batch_id` | string | The unique ID of the batch operation | ### `mailchimp_create_batch_operation` @@ -1443,6 +1589,9 @@ Create a new batch operation in Mailchimp | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created batch operation data | +| ↳ `batch` | json | Created batch operation object | +| ↳ `batch_id` | string | Created batch operation ID | +| ↳ `success` | boolean | Operation success | ### `mailchimp_delete_batch_operation` diff --git a/apps/docs/content/docs/en/tools/meta.json b/apps/docs/content/docs/en/tools/meta.json index ea445d4488..d1d88a5116 100644 --- a/apps/docs/content/docs/en/tools/meta.json +++ b/apps/docs/content/docs/en/tools/meta.json @@ -52,6 +52,7 @@ "jira_service_management", "kalshi", "knowledge", + "langsmith", "lemlist", "linear", "linkedin", @@ -103,6 +104,7 @@ "supabase", "tavily", "telegram", + "tinybird", "translate", "trello", "tts", diff --git a/apps/docs/content/docs/en/tools/microsoft_excel.mdx b/apps/docs/content/docs/en/tools/microsoft_excel.mdx index b7a2a3fb0d..83dab7c562 100644 --- a/apps/docs/content/docs/en/tools/microsoft_excel.mdx +++ b/apps/docs/content/docs/en/tools/microsoft_excel.mdx @@ -49,6 +49,11 @@ Read data from a Microsoft Excel spreadsheet | Parameter | Type | Description | | --------- | ---- | ----------- | | `data` | object | Range data from the spreadsheet | +| ↳ `range` | string | The range that was read | +| ↳ `values` | array | Array of rows containing cell values | +| `metadata` | object | Spreadsheet metadata | +| ↳ `spreadsheetId` | string | The ID of the spreadsheet | +| ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | ### `microsoft_excel_write` @@ -73,6 +78,8 @@ Write data to a Microsoft Excel spreadsheet | `updatedColumns` | number | Number of columns that were updated | | `updatedCells` | number | Number of cells that were updated | | `metadata` | object | Spreadsheet metadata | +| ↳ `spreadsheetId` | string | The ID of the spreadsheet | +| ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | ### `microsoft_excel_table_add` @@ -93,6 +100,8 @@ Add new rows to a Microsoft Excel table | `index` | number | Index of the first row that was added | | `values` | array | Array of rows that were added to the table | | `metadata` | object | Spreadsheet metadata | +| ↳ `spreadsheetId` | string | The ID of the spreadsheet | +| ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | ### `microsoft_excel_worksheet_add` @@ -110,5 +119,12 @@ Create a new worksheet (sheet) in a Microsoft Excel workbook | Parameter | Type | Description | | --------- | ---- | ----------- | | `worksheet` | object | Details of the newly created worksheet | +| ↳ `id` | string | The unique ID of the worksheet | +| ↳ `name` | string | The name of the worksheet | +| ↳ `position` | number | The zero-based position of the worksheet | +| ↳ `visibility` | string | The visibility state of the worksheet \(Visible/Hidden/VeryHidden\) | +| `metadata` | object | Spreadsheet metadata | +| ↳ `spreadsheetId` | string | The ID of the spreadsheet | +| ↳ `spreadsheetUrl` | string | URL to access the spreadsheet | diff --git a/apps/docs/content/docs/en/tools/microsoft_planner.mdx b/apps/docs/content/docs/en/tools/microsoft_planner.mdx index ef8e7b94dc..1041e9fd51 100644 --- a/apps/docs/content/docs/en/tools/microsoft_planner.mdx +++ b/apps/docs/content/docs/en/tools/microsoft_planner.mdx @@ -50,6 +50,9 @@ Read tasks from Microsoft Planner - get all user tasks or all tasks from a speci | `success` | boolean | Whether tasks were retrieved successfully | | `tasks` | array | Array of task objects with filtered properties | | `metadata` | object | Metadata including planId, userId, and planUrl | +| ↳ `planId` | string | Plan ID | +| ↳ `userId` | string | User ID | +| ↳ `planUrl` | string | Microsoft Graph API URL for the plan | ### `microsoft_planner_create_task` @@ -73,6 +76,9 @@ Create a new task in Microsoft Planner | `success` | boolean | Whether the task was created successfully | | `task` | object | The created task object with all properties | | `metadata` | object | Metadata including planId, taskId, and taskUrl | +| ↳ `planId` | string | Parent plan ID | +| ↳ `taskId` | string | Created task ID | +| ↳ `taskUrl` | string | Microsoft Graph API URL for the task | ### `microsoft_planner_update_task` @@ -102,6 +108,9 @@ Update a task in Microsoft Planner | `taskId` | string | ID of the updated task | | `etag` | string | New ETag after update - use this for subsequent operations | | `metadata` | object | Metadata including taskId, planId, and taskUrl | +| ↳ `taskId` | string | Updated task ID | +| ↳ `planId` | string | Parent plan ID | +| ↳ `taskUrl` | string | Microsoft Graph API URL for the task | ### `microsoft_planner_delete_task` @@ -138,6 +147,8 @@ List all plans shared with the current user | `success` | boolean | Whether plans were retrieved successfully | | `plans` | array | Array of plan objects shared with the current user | | `metadata` | object | Metadata including userId and count | +| ↳ `count` | number | Number of plans returned | +| ↳ `userId` | string | User ID | ### `microsoft_planner_read_plan` @@ -156,6 +167,8 @@ Get details of a specific Microsoft Planner plan | `success` | boolean | Whether the plan was retrieved successfully | | `plan` | object | The plan object with all properties | | `metadata` | object | Metadata including planId and planUrl | +| ↳ `planId` | string | Plan ID | +| ↳ `planUrl` | string | Microsoft Graph API URL for the plan | ### `microsoft_planner_list_buckets` @@ -174,6 +187,8 @@ List all buckets in a Microsoft Planner plan | `success` | boolean | Whether buckets were retrieved successfully | | `buckets` | array | Array of bucket objects | | `metadata` | object | Metadata including planId and count | +| ↳ `planId` | string | Plan ID | +| ↳ `count` | number | Number of buckets returned | ### `microsoft_planner_read_bucket` @@ -192,6 +207,8 @@ Get details of a specific bucket | `success` | boolean | Whether the bucket was retrieved successfully | | `bucket` | object | The bucket object with all properties | | `metadata` | object | Metadata including bucketId and planId | +| ↳ `bucketId` | string | Bucket ID | +| ↳ `planId` | string | Parent plan ID | ### `microsoft_planner_create_bucket` @@ -211,6 +228,8 @@ Create a new bucket in a Microsoft Planner plan | `success` | boolean | Whether the bucket was created successfully | | `bucket` | object | The created bucket object with all properties | | `metadata` | object | Metadata including bucketId and planId | +| ↳ `bucketId` | string | Created bucket ID | +| ↳ `planId` | string | Parent plan ID | ### `microsoft_planner_update_bucket` @@ -231,6 +250,8 @@ Update a bucket in Microsoft Planner | `success` | boolean | Whether the bucket was updated successfully | | `bucket` | object | The updated bucket object with all properties | | `metadata` | object | Metadata including bucketId and planId | +| ↳ `bucketId` | string | Updated bucket ID | +| ↳ `planId` | string | Parent plan ID | ### `microsoft_planner_delete_bucket` @@ -269,6 +290,7 @@ Get detailed information about a task including checklist and references | `taskDetails` | object | The task details including description, checklist, and references | | `etag` | string | The ETag value for this task details - use this for update operations | | `metadata` | object | Metadata including taskId | +| ↳ `taskId` | string | Task ID | ### `microsoft_planner_update_task_details` @@ -292,5 +314,6 @@ Update task details including description, checklist items, and references in Mi | `success` | boolean | Whether the task details were updated successfully | | `taskDetails` | object | The updated task details object with all properties | | `metadata` | object | Metadata including taskId | +| ↳ `taskId` | string | Task ID | diff --git a/apps/docs/content/docs/en/tools/microsoft_teams.mdx b/apps/docs/content/docs/en/tools/microsoft_teams.mdx index fdeb0de40c..44fd26e2ec 100644 --- a/apps/docs/content/docs/en/tools/microsoft_teams.mdx +++ b/apps/docs/content/docs/en/tools/microsoft_teams.mdx @@ -254,6 +254,15 @@ Get a specific message from a Microsoft Teams chat or channel | `success` | boolean | Whether the retrieval was successful | | `content` | string | The message content | | `metadata` | object | Message metadata including sender, timestamp, etc. | +| ↳ `messageId` | string | Message ID | +| ↳ `content` | string | Message content | +| ↳ `createdTime` | string | Message creation timestamp | +| ↳ `url` | string | Web URL to the message | +| ↳ `teamId` | string | Team ID | +| ↳ `channelId` | string | Channel ID | +| ↳ `chatId` | string | Chat ID | +| ↳ `messages` | array | Array of message details | +| ↳ `messageCount` | number | Number of messages | ### `microsoft_teams_set_reaction` diff --git a/apps/docs/content/docs/en/tools/mistral_parse.mdx b/apps/docs/content/docs/en/tools/mistral_parse.mdx index e25f83099f..b919be56ad 100644 --- a/apps/docs/content/docs/en/tools/mistral_parse.mdx +++ b/apps/docs/content/docs/en/tools/mistral_parse.mdx @@ -57,5 +57,15 @@ Parse PDF documents using Mistral OCR API | `success` | boolean | Whether the PDF was parsed successfully | | `content` | string | Extracted content in the requested format \(markdown, text, or JSON\) | | `metadata` | object | Processing metadata including jobId, fileType, pageCount, and usage info | +| ↳ `jobId` | string | Unique job identifier | +| ↳ `fileType` | string | File type \(e.g., pdf\) | +| ↳ `fileName` | string | Original file name | +| ↳ `source` | string | Source type \(url\) | +| ↳ `pageCount` | number | Number of pages processed | +| ↳ `model` | string | Mistral model used | +| ↳ `resultType` | string | Output format \(markdown, text, json\) | +| ↳ `processedAt` | string | Processing timestamp | +| ↳ `sourceUrl` | string | Source URL if applicable | +| ↳ `usageInfo` | object | Usage statistics from OCR processing | diff --git a/apps/docs/content/docs/en/tools/notion.mdx b/apps/docs/content/docs/en/tools/notion.mdx index 418df58559..31eeac027f 100644 --- a/apps/docs/content/docs/en/tools/notion.mdx +++ b/apps/docs/content/docs/en/tools/notion.mdx @@ -116,6 +116,13 @@ Query and filter Notion database entries with advanced filtering | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Array of Notion page objects from the database | +| ↳ `id` | string | Page ID | +| ↳ `created_time` | string | Creation timestamp | +| ↳ `last_edited_time` | string | Last edit timestamp | +| ↳ `url` | string | Page URL | +| `has_more` | boolean | Whether more results are available | +| `next_cursor` | string | Cursor for pagination | +| `total_results` | number | Number of results returned | ### `notion_search` @@ -134,6 +141,14 @@ Search across all pages and databases in Notion workspace | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Array of search results \(pages and databases\) | +| ↳ `id` | string | Object ID | +| ↳ `object` | string | Object type \(page or database\) | +| ↳ `url` | string | Object URL | +| ↳ `created_time` | string | Creation timestamp | +| ↳ `last_edited_time` | string | Last edit timestamp | +| `has_more` | boolean | Whether more results are available | +| `next_cursor` | string | Cursor for pagination | +| `total_results` | number | Number of results returned | ### `notion_create_database` diff --git a/apps/docs/content/docs/en/tools/openai.mdx b/apps/docs/content/docs/en/tools/openai.mdx index b7db750a0f..91527e5d9d 100644 --- a/apps/docs/content/docs/en/tools/openai.mdx +++ b/apps/docs/content/docs/en/tools/openai.mdx @@ -54,5 +54,12 @@ Generate embeddings from text using OpenAI | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Embeddings generation results | +| ↳ `embeddings` | array | Array of embedding vectors | +| ↳ `model` | string | Model used for generating embeddings | +| ↳ `usage` | object | Token usage information | +| ↳ `prompt_tokens` | number | Number of tokens in the prompt | +| ↳ `total_tokens` | number | Total number of tokens used | +| ↳ `prompt_tokens` | number | Number of tokens in the prompt | +| ↳ `total_tokens` | number | Total number of tokens used | diff --git a/apps/docs/content/docs/en/tools/outlook.mdx b/apps/docs/content/docs/en/tools/outlook.mdx index 82af2bcff1..c37de80332 100644 --- a/apps/docs/content/docs/en/tools/outlook.mdx +++ b/apps/docs/content/docs/en/tools/outlook.mdx @@ -135,6 +135,12 @@ Forward an existing Outlook message to specified recipients | --------- | ---- | ----------- | | `message` | string | Success or error message | | `results` | object | Delivery result details | +| ↳ `status` | string | Delivery status of the email | +| ↳ `timestamp` | string | Timestamp when email was forwarded | +| ↳ `httpStatus` | number | HTTP status code returned by the API | +| ↳ `requestId` | string | Microsoft Graph request-id header for tracing | +| ↳ `messageId` | string | Forwarded message ID if provided by API | +| ↳ `internetMessageId` | string | RFC 822 Message-ID if provided | ### `outlook_move` diff --git a/apps/docs/content/docs/en/tools/parallel_ai.mdx b/apps/docs/content/docs/en/tools/parallel_ai.mdx index deaf9378e6..e4bf2f6418 100644 --- a/apps/docs/content/docs/en/tools/parallel_ai.mdx +++ b/apps/docs/content/docs/en/tools/parallel_ai.mdx @@ -55,6 +55,9 @@ Search the web using Parallel AI. Provides comprehensive search results with int | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Search results with excerpts from relevant pages | +| ↳ `url` | string | The URL of the search result | +| ↳ `title` | string | The title of the search result | +| ↳ `excerpts` | array | Text excerpts from the page | ### `parallel_extract` @@ -75,6 +78,10 @@ Extract targeted information from specific URLs using Parallel AI. Processes pro | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Extracted information from the provided URLs | +| ↳ `url` | string | The source URL | +| ↳ `title` | string | The title of the page | +| ↳ `content` | string | Extracted content | +| ↳ `excerpts` | array | Relevant text excerpts | ### `parallel_deep_research` @@ -99,5 +106,15 @@ Conduct comprehensive deep research across the web using Parallel AI. Synthesize | `message` | string | Status message | | `content` | object | Research results \(structured based on output_schema\) | | `basis` | array | Citations and sources with reasoning and confidence levels | +| ↳ `field` | string | Output field name | +| ↳ `reasoning` | string | Explanation for the result | +| ↳ `citations` | array | Array of sources | +| ↳ `url` | string | Source URL | +| ↳ `title` | string | Source title | +| ↳ `excerpts` | array | Relevant excerpts from the source | +| ↳ `url` | string | Source URL | +| ↳ `title` | string | Source title | +| ↳ `excerpts` | array | Relevant excerpts from the source | +| ↳ `confidence` | string | Confidence level indicator | diff --git a/apps/docs/content/docs/en/tools/perplexity.mdx b/apps/docs/content/docs/en/tools/perplexity.mdx index 63a97c40dc..5f3177c006 100644 --- a/apps/docs/content/docs/en/tools/perplexity.mdx +++ b/apps/docs/content/docs/en/tools/perplexity.mdx @@ -57,6 +57,9 @@ Generate completions using Perplexity AI chat models | `content` | string | Generated text content | | `model` | string | Model used for generation | | `usage` | object | Token usage information | +| ↳ `prompt_tokens` | number | Number of tokens in the prompt | +| ↳ `completion_tokens` | number | Number of tokens in the completion | +| ↳ `total_tokens` | number | Total number of tokens used | ### `perplexity_search` @@ -81,5 +84,10 @@ Get ranked search results from Perplexity | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Array of search results | +| ↳ `title` | string | Title of the search result | +| ↳ `url` | string | URL of the search result | +| ↳ `snippet` | string | Brief excerpt or summary of the content | +| ↳ `date` | string | Date the page was crawled and added to Perplexity | +| ↳ `last_updated` | string | Date the page was last updated in Perplexity | diff --git a/apps/docs/content/docs/en/tools/pinecone.mdx b/apps/docs/content/docs/en/tools/pinecone.mdx index cc052ef5db..25c5751c4d 100644 --- a/apps/docs/content/docs/en/tools/pinecone.mdx +++ b/apps/docs/content/docs/en/tools/pinecone.mdx @@ -97,6 +97,13 @@ Search for similar text in a Pinecone index | Parameter | Type | Description | | --------- | ---- | ----------- | | `matches` | array | Search results with ID, score, and metadata | +| ↳ `id` | string | Vector ID | +| ↳ `score` | number | Similarity score | +| ↳ `metadata` | object | Associated metadata | +| `usage` | object | Usage statistics including tokens, read units, and rerank units | +| ↳ `total_tokens` | number | Total tokens used for embedding | +| ↳ `read_units` | number | Read units consumed | +| ↳ `rerank_units` | number | Rerank units used | ### `pinecone_search_vector` @@ -140,5 +147,14 @@ Fetch vectors by ID from a Pinecone index | Parameter | Type | Description | | --------- | ---- | ----------- | | `matches` | array | Fetched vectors with ID, values, metadata, and score | +| ↳ `id` | string | Vector ID | +| ↳ `values` | array | Vector values | +| ↳ `metadata` | object | Associated metadata | +| ↳ `score` | number | Match score \(1.0 for exact matches\) | +| `data` | array | Vector data with values and vector type | +| ↳ `values` | array | Vector values | +| ↳ `vector_type` | string | Vector type \(dense/sparse\) | +| `usage` | object | Usage statistics including total read units | +| ↳ `total_tokens` | number | Read units consumed | diff --git a/apps/docs/content/docs/en/tools/posthog.mdx b/apps/docs/content/docs/en/tools/posthog.mdx index 062a9c026e..6a4e6387e7 100644 --- a/apps/docs/content/docs/en/tools/posthog.mdx +++ b/apps/docs/content/docs/en/tools/posthog.mdx @@ -100,6 +100,12 @@ List persons (users) in PostHog. Returns user profiles with their properties and | Parameter | Type | Description | | --------- | ---- | ----------- | | `persons` | array | List of persons with their properties and identifiers | +| ↳ `id` | string | Person ID | +| ↳ `name` | string | Person name | +| ↳ `distinct_ids` | array | All distinct IDs associated with this person | +| ↳ `created_at` | string | When the person was first seen | +| ↳ `uuid` | string | Person UUID | +| `next` | string | URL for the next page of results \(if available\) | ### `posthog_get_person` @@ -119,6 +125,11 @@ Get detailed information about a specific person in PostHog by their ID or UUID. | Parameter | Type | Description | | --------- | ---- | ----------- | | `person` | object | Person details including properties and identifiers | +| ↳ `id` | string | Person ID | +| ↳ `name` | string | Person name | +| ↳ `distinct_ids` | array | All distinct IDs associated with this person | +| ↳ `created_at` | string | When the person was first seen | +| ↳ `uuid` | string | Person UUID | ### `posthog_delete_person` @@ -160,6 +171,10 @@ Execute a HogQL query in PostHog. HogQL is PostHog | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Query results as an array of rows | +| `columns` | array | Column names in the result set | +| `types` | array | Data types of columns in the result set | +| `hogql` | string | The actual HogQL query that was executed | +| `has_more` | boolean | Whether there are more results available | ### `posthog_list_insights` @@ -183,6 +198,17 @@ List all insights in a PostHog project. Returns insight configurations, filters, | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of insights with their configurations and metadata | +| ↳ `id` | number | Unique identifier for the insight | +| ↳ `name` | string | Name of the insight | +| ↳ `description` | string | Description of the insight | +| ↳ `filters` | object | Filter configuration for the insight | +| ↳ `query` | object | Query configuration for the insight | +| ↳ `created_at` | string | ISO timestamp when insight was created | +| ↳ `created_by` | object | User who created the insight | +| ↳ `last_modified_at` | string | ISO timestamp when insight was last modified | +| ↳ `last_modified_by` | object | User who last modified the insight | +| ↳ `saved` | boolean | Whether the insight is saved | +| ↳ `dashboards` | array | IDs of dashboards this insight appears on | ### `posthog_get_insight` @@ -271,6 +297,17 @@ List all dashboards in a PostHog project. Returns dashboard configurations, tile | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of dashboards with their configurations and metadata | +| ↳ `id` | number | Unique identifier for the dashboard | +| ↳ `name` | string | Name of the dashboard | +| ↳ `description` | string | Description of the dashboard | +| ↳ `pinned` | boolean | Whether the dashboard is pinned | +| ↳ `created_at` | string | ISO timestamp when dashboard was created | +| ↳ `created_by` | object | User who created the dashboard | +| ↳ `last_modified_at` | string | ISO timestamp when dashboard was last modified | +| ↳ `last_modified_by` | object | User who last modified the dashboard | +| ↳ `tiles` | array | Tiles/widgets on the dashboard | +| ↳ `filters` | object | Global filters for the dashboard | +| ↳ `tags` | array | Tags associated with the dashboard | ### `posthog_get_dashboard` @@ -324,6 +361,18 @@ List all actions in a PostHog project. Returns action definitions, steps, and me | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of actions with their definitions and metadata | +| ↳ `id` | number | Unique identifier for the action | +| ↳ `name` | string | Name of the action | +| ↳ `description` | string | Description of the action | +| ↳ `tags` | array | Tags associated with the action | +| ↳ `post_to_slack` | boolean | Whether to post this action to Slack | +| ↳ `slack_message_format` | string | Format string for Slack messages | +| ↳ `steps` | array | Steps that define the action | +| ↳ `created_at` | string | ISO timestamp when action was created | +| ↳ `created_by` | object | User who created the action | +| ↳ `deleted` | boolean | Whether the action is deleted | +| ↳ `is_calculating` | boolean | Whether the action is being calculated | +| ↳ `last_calculated_at` | string | ISO timestamp of last calculation | ### `posthog_list_cohorts` @@ -347,6 +396,20 @@ List all cohorts in a PostHog project. Returns cohort definitions, filters, and | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of cohorts with their definitions and metadata | +| ↳ `id` | number | Unique identifier for the cohort | +| ↳ `name` | string | Name of the cohort | +| ↳ `description` | string | Description of the cohort | +| ↳ `groups` | array | Groups that define the cohort | +| ↳ `deleted` | boolean | Whether the cohort is deleted | +| ↳ `filters` | object | Filter configuration for the cohort | +| ↳ `query` | object | Query configuration for the cohort | +| ↳ `created_at` | string | ISO timestamp when cohort was created | +| ↳ `created_by` | object | User who created the cohort | +| ↳ `is_calculating` | boolean | Whether the cohort is being calculated | +| ↳ `last_calculation` | string | ISO timestamp of last calculation | +| ↳ `errors_calculating` | number | Number of errors during calculation | +| ↳ `count` | number | Number of users in the cohort | +| ↳ `is_static` | boolean | Whether the cohort is static | ### `posthog_get_cohort` @@ -439,6 +502,17 @@ List all annotations in a PostHog project. Returns annotation content, timestamp | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of annotations with their content and metadata | +| ↳ `id` | number | Unique identifier for the annotation | +| ↳ `content` | string | Content/text of the annotation | +| ↳ `date_marker` | string | ISO timestamp marking when the annotation applies | +| ↳ `created_at` | string | ISO timestamp when annotation was created | +| ↳ `updated_at` | string | ISO timestamp when annotation was last updated | +| ↳ `created_by` | object | User who created the annotation | +| ↳ `dashboard_item` | number | ID of dashboard item this annotation is attached to | +| ↳ `insight_short_id` | string | Short ID of the insight this annotation is attached to | +| ↳ `insight_name` | string | Name of the insight this annotation is attached to | +| ↳ `scope` | string | Scope of the annotation \(project or dashboard\) | +| ↳ `deleted` | boolean | Whether the annotation is deleted | ### `posthog_create_annotation` @@ -492,6 +566,20 @@ List all feature flags in a PostHog project | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | List of feature flags | +| ↳ `id` | number | Feature flag ID | +| ↳ `name` | string | Feature flag name | +| ↳ `key` | string | Feature flag key | +| ↳ `filters` | object | Feature flag filters | +| ↳ `deleted` | boolean | Whether the flag is deleted | +| ↳ `active` | boolean | Whether the flag is active | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `created_by` | object | Creator information | +| ↳ `is_simple_flag` | boolean | Whether this is a simple flag | +| ↳ `rollout_percentage` | number | Rollout percentage \(if applicable\) | +| ↳ `ensure_experience_continuity` | boolean | Whether to ensure experience continuity | +| `count` | number | Total number of feature flags | +| `next` | string | URL to next page of results | +| `previous` | string | URL to previous page of results | ### `posthog_get_feature_flag` @@ -511,6 +599,19 @@ Get details of a specific feature flag | Parameter | Type | Description | | --------- | ---- | ----------- | | `flag` | object | Feature flag details | +| ↳ `id` | number | Feature flag ID | +| ↳ `name` | string | Feature flag name | +| ↳ `key` | string | Feature flag key | +| ↳ `filters` | object | Feature flag filters | +| ↳ `deleted` | boolean | Whether the flag is deleted | +| ↳ `active` | boolean | Whether the flag is active | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `created_by` | object | Creator information | +| ↳ `is_simple_flag` | boolean | Whether this is a simple flag | +| ↳ `rollout_percentage` | number | Rollout percentage \(if applicable\) | +| ↳ `ensure_experience_continuity` | boolean | Whether to ensure experience continuity | +| ↳ `usage_dashboard` | number | Usage dashboard ID | +| ↳ `has_enriched_analytics` | boolean | Whether enriched analytics are enabled | ### `posthog_create_feature_flag` @@ -535,6 +636,17 @@ Create a new feature flag in PostHog | Parameter | Type | Description | | --------- | ---- | ----------- | | `flag` | object | Created feature flag | +| ↳ `id` | number | Feature flag ID | +| ↳ `name` | string | Feature flag name | +| ↳ `key` | string | Feature flag key | +| ↳ `filters` | object | Feature flag filters | +| ↳ `deleted` | boolean | Whether the flag is deleted | +| ↳ `active` | boolean | Whether the flag is active | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `created_by` | object | Creator information | +| ↳ `is_simple_flag` | boolean | Whether this is a simple flag | +| ↳ `rollout_percentage` | number | Rollout percentage \(if applicable\) | +| ↳ `ensure_experience_continuity` | boolean | Whether to ensure experience continuity | ### `posthog_update_feature_flag` @@ -560,6 +672,17 @@ Update an existing feature flag in PostHog | Parameter | Type | Description | | --------- | ---- | ----------- | | `flag` | object | Updated feature flag | +| ↳ `id` | number | Feature flag ID | +| ↳ `name` | string | Feature flag name | +| ↳ `key` | string | Feature flag key | +| ↳ `filters` | object | Feature flag filters | +| ↳ `deleted` | boolean | Whether the flag is deleted | +| ↳ `active` | boolean | Whether the flag is active | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `created_by` | object | Creator information | +| ↳ `is_simple_flag` | boolean | Whether this is a simple flag | +| ↳ `rollout_percentage` | number | Rollout percentage \(if applicable\) | +| ↳ `ensure_experience_continuity` | boolean | Whether to ensure experience continuity | ### `posthog_delete_feature_flag` @@ -623,6 +746,22 @@ List all experiments in a PostHog project | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | List of experiments | +| ↳ `id` | number | Experiment ID | +| ↳ `name` | string | Experiment name | +| ↳ `description` | string | Experiment description | +| ↳ `feature_flag_key` | string | Associated feature flag key | +| ↳ `feature_flag` | object | Feature flag details | +| ↳ `parameters` | object | Experiment parameters | +| ↳ `filters` | object | Experiment filters | +| ↳ `variants` | object | Experiment variants | +| ↳ `start_date` | string | Start date | +| ↳ `end_date` | string | End date | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `created_by` | object | Creator information | +| ↳ `archived` | boolean | Whether the experiment is archived | +| `count` | number | Total number of experiments | +| `next` | string | URL to next page of results | +| `previous` | string | URL to previous page of results | ### `posthog_get_experiment` @@ -642,6 +781,21 @@ Get details of a specific experiment | Parameter | Type | Description | | --------- | ---- | ----------- | | `experiment` | object | Experiment details | +| ↳ `id` | number | Experiment ID | +| ↳ `name` | string | Experiment name | +| ↳ `description` | string | Experiment description | +| ↳ `feature_flag_key` | string | Associated feature flag key | +| ↳ `feature_flag` | object | Feature flag details | +| ↳ `parameters` | object | Experiment parameters | +| ↳ `filters` | object | Experiment filters | +| ↳ `variants` | object | Experiment variants | +| ↳ `start_date` | string | Start date | +| ↳ `end_date` | string | End date | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `created_by` | object | Creator information | +| ↳ `archived` | boolean | Whether the experiment is archived | +| ↳ `metrics` | array | Primary metrics | +| ↳ `metrics_secondary` | array | Secondary metrics | ### `posthog_create_experiment` @@ -668,6 +822,19 @@ Create a new experiment in PostHog | Parameter | Type | Description | | --------- | ---- | ----------- | | `experiment` | object | Created experiment | +| ↳ `id` | number | Experiment ID | +| ↳ `name` | string | Experiment name | +| ↳ `description` | string | Experiment description | +| ↳ `feature_flag_key` | string | Associated feature flag key | +| ↳ `feature_flag` | object | Feature flag details | +| ↳ `parameters` | object | Experiment parameters | +| ↳ `filters` | object | Experiment filters | +| ↳ `variants` | object | Experiment variants | +| ↳ `start_date` | string | Start date | +| ↳ `end_date` | string | End date | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `created_by` | object | Creator information | +| ↳ `archived` | boolean | Whether the experiment is archived | ### `posthog_list_surveys` @@ -688,6 +855,18 @@ List all surveys in a PostHog project. Surveys allow you to collect feedback fro | Parameter | Type | Description | | --------- | ---- | ----------- | | `surveys` | array | List of surveys in the project | +| ↳ `id` | string | Survey ID | +| ↳ `name` | string | Survey name | +| ↳ `description` | string | Survey description | +| ↳ `type` | string | Survey type \(popover or api\) | +| ↳ `questions` | array | Survey questions | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `start_date` | string | Survey start date | +| ↳ `end_date` | string | Survey end date | +| ↳ `archived` | boolean | Whether survey is archived | +| `count` | number | Total number of surveys | +| `next` | string | URL for next page of results | +| `previous` | string | URL for previous page of results | ### `posthog_get_survey` @@ -707,6 +886,19 @@ Get details of a specific survey in PostHog by ID. | Parameter | Type | Description | | --------- | ---- | ----------- | | `survey` | object | Survey details | +| ↳ `id` | string | Survey ID | +| ↳ `name` | string | Survey name | +| ↳ `description` | string | Survey description | +| ↳ `type` | string | Survey type \(popover or api\) | +| ↳ `questions` | array | Survey questions | +| ↳ `appearance` | object | Survey appearance configuration | +| ↳ `conditions` | object | Survey display conditions | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `created_by` | object | Creator information | +| ↳ `start_date` | string | Survey start date | +| ↳ `end_date` | string | Survey end date | +| ↳ `archived` | boolean | Whether survey is archived | +| ↳ `responses_limit` | number | Maximum number of responses | ### `posthog_create_survey` @@ -736,6 +928,14 @@ Create a new survey in PostHog. Supports question types: Basic (open), Link, Rat | Parameter | Type | Description | | --------- | ---- | ----------- | | `survey` | object | Created survey details | +| ↳ `id` | string | Survey ID | +| ↳ `name` | string | Survey name | +| ↳ `description` | string | Survey description | +| ↳ `type` | string | Survey type \(popover or api\) | +| ↳ `questions` | array | Survey questions | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `start_date` | string | Survey start date | +| ↳ `end_date` | string | Survey end date | ### `posthog_update_survey` @@ -767,6 +967,15 @@ Update an existing survey in PostHog. Can modify questions, appearance, conditio | Parameter | Type | Description | | --------- | ---- | ----------- | | `survey` | object | Updated survey details | +| ↳ `id` | string | Survey ID | +| ↳ `name` | string | Survey name | +| ↳ `description` | string | Survey description | +| ↳ `type` | string | Survey type \(popover or api\) | +| ↳ `questions` | array | Survey questions | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `start_date` | string | Survey start date | +| ↳ `end_date` | string | Survey end date | +| ↳ `archived` | boolean | Whether survey is archived | ### `posthog_list_session_recordings` @@ -787,6 +996,23 @@ List session recordings in a PostHog project. Session recordings capture user in | Parameter | Type | Description | | --------- | ---- | ----------- | | `recordings` | array | List of session recordings | +| ↳ `id` | string | Recording ID | +| ↳ `distinct_id` | string | User distinct ID | +| ↳ `viewed` | boolean | Whether recording has been viewed | +| ↳ `recording_duration` | number | Recording duration in seconds | +| ↳ `active_seconds` | number | Active time in seconds | +| ↳ `inactive_seconds` | number | Inactive time in seconds | +| ↳ `start_time` | string | Recording start timestamp | +| ↳ `end_time` | string | Recording end timestamp | +| ↳ `click_count` | number | Number of clicks | +| ↳ `keypress_count` | number | Number of keypresses | +| ↳ `console_log_count` | number | Number of console logs | +| ↳ `console_warn_count` | number | Number of console warnings | +| ↳ `console_error_count` | number | Number of console errors | +| ↳ `person` | object | Person information | +| `count` | number | Total number of recordings | +| `next` | string | URL for next page of results | +| `previous` | string | URL for previous page of results | ### `posthog_get_session_recording` @@ -806,6 +1032,22 @@ Get details of a specific session recording in PostHog by ID. | Parameter | Type | Description | | --------- | ---- | ----------- | | `recording` | object | Session recording details | +| ↳ `id` | string | Recording ID | +| ↳ `distinct_id` | string | User distinct ID | +| ↳ `viewed` | boolean | Whether recording has been viewed | +| ↳ `recording_duration` | number | Recording duration in seconds | +| ↳ `active_seconds` | number | Active time in seconds | +| ↳ `inactive_seconds` | number | Inactive time in seconds | +| ↳ `start_time` | string | Recording start timestamp | +| ↳ `end_time` | string | Recording end timestamp | +| ↳ `click_count` | number | Number of clicks | +| ↳ `keypress_count` | number | Number of keypresses | +| ↳ `console_log_count` | number | Number of console logs | +| ↳ `console_warn_count` | number | Number of console warnings | +| ↳ `console_error_count` | number | Number of console errors | +| ↳ `start_url` | string | Starting URL of the recording | +| ↳ `person` | object | Person information | +| ↳ `matching_events` | array | Events that occurred during recording | ### `posthog_list_recording_playlists` @@ -826,6 +1068,20 @@ List session recording playlists in a PostHog project. Playlists allow you to or | Parameter | Type | Description | | --------- | ---- | ----------- | | `playlists` | array | List of session recording playlists | +| ↳ `id` | string | Playlist ID | +| ↳ `short_id` | string | Playlist short ID | +| ↳ `name` | string | Playlist name | +| ↳ `description` | string | Playlist description | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `created_by` | object | Creator information | +| ↳ `deleted` | boolean | Whether playlist is deleted | +| ↳ `filters` | object | Playlist filters | +| ↳ `last_modified_at` | string | Last modification timestamp | +| ↳ `last_modified_by` | object | Last modifier information | +| ↳ `derived_name` | string | Auto-generated name from filters | +| `count` | number | Total number of playlists | +| `next` | string | URL for next page of results | +| `previous` | string | URL for previous page of results | ### `posthog_list_event_definitions` @@ -850,6 +1106,16 @@ List all event definitions in a PostHog project. Event definitions represent tra | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of event definitions | +| ↳ `id` | string | Unique identifier for the event definition | +| ↳ `name` | string | Event name | +| ↳ `description` | string | Event description | +| ↳ `tags` | array | Tags associated with the event | +| ↳ `volume_30_day` | number | Number of events received in the last 30 days | +| ↳ `query_usage_30_day` | number | Number of times this event was queried in the last 30 days | +| ↳ `created_at` | string | ISO timestamp when the event was created | +| ↳ `last_seen_at` | string | ISO timestamp when the event was last seen | +| ↳ `updated_at` | string | ISO timestamp when the event was updated | +| ↳ `updated_by` | object | User who last updated the event | ### `posthog_get_event_definition` @@ -940,6 +1206,19 @@ List all property definitions in a PostHog project. Property definitions represe | `next` | string | URL for the next page of results | | `previous` | string | URL for the previous page of results | | `results` | array | List of property definitions | +| ↳ `id` | string | Unique identifier for the property definition | +| ↳ `name` | string | Property name | +| ↳ `description` | string | Property description | +| ↳ `tags` | array | Tags associated with the property | +| ↳ `is_numerical` | boolean | Whether the property is numerical | +| ↳ `is_seen_on_filtered_events` | boolean | Whether the property is seen on filtered events | +| ↳ `property_type` | string | The data type of the property | +| ↳ `type` | string | Property type: event, person, or group | +| ↳ `volume_30_day` | number | Number of times property was seen in the last 30 days | +| ↳ `query_usage_30_day` | number | Number of times this property was queried in the last 30 days | +| ↳ `created_at` | string | ISO timestamp when the property was created | +| ↳ `updated_at` | string | ISO timestamp when the property was updated | +| ↳ `updated_by` | object | User who last updated the property | ### `posthog_get_property_definition` @@ -1031,6 +1310,22 @@ List all projects in the organization. Returns project details including IDs, na | Parameter | Type | Description | | --------- | ---- | ----------- | | `projects` | array | List of projects with their configuration and settings | +| ↳ `id` | number | Project ID | +| ↳ `uuid` | string | Project UUID | +| ↳ `organization` | string | Organization UUID | +| ↳ `api_token` | string | Project API token for ingestion | +| ↳ `app_urls` | array | Allowed app URLs | +| ↳ `name` | string | Project name | +| ↳ `slack_incoming_webhook` | string | Slack webhook URL for notifications | +| ↳ `created_at` | string | Project creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `anonymize_ips` | boolean | Whether IP anonymization is enabled | +| ↳ `completed_snippet_onboarding` | boolean | Whether snippet onboarding is completed | +| ↳ `ingested_event` | boolean | Whether any event has been ingested | +| ↳ `test_account_filters` | array | Filters for test accounts | +| ↳ `is_demo` | boolean | Whether this is a demo project | +| ↳ `timezone` | string | Project timezone | +| ↳ `data_attributes` | array | Custom data attributes | ### `posthog_get_project` @@ -1049,6 +1344,29 @@ Get detailed information about a specific project by ID. Returns comprehensive p | Parameter | Type | Description | | --------- | ---- | ----------- | | `project` | object | Detailed project information with all configuration settings | +| ↳ `id` | number | Project ID | +| ↳ `uuid` | string | Project UUID | +| ↳ `organization` | string | Organization UUID | +| ↳ `api_token` | string | Project API token for ingestion | +| ↳ `app_urls` | array | Allowed app URLs | +| ↳ `name` | string | Project name | +| ↳ `slack_incoming_webhook` | string | Slack webhook URL for notifications | +| ↳ `created_at` | string | Project creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `anonymize_ips` | boolean | Whether IP anonymization is enabled | +| ↳ `completed_snippet_onboarding` | boolean | Whether snippet onboarding is completed | +| ↳ `ingested_event` | boolean | Whether any event has been ingested | +| ↳ `test_account_filters` | array | Filters for test accounts | +| ↳ `is_demo` | boolean | Whether this is a demo project | +| ↳ `timezone` | string | Project timezone | +| ↳ `data_attributes` | array | Custom data attributes | +| ↳ `person_display_name_properties` | array | Properties used for person display names | +| ↳ `correlation_config` | object | Configuration for correlation analysis | +| ↳ `autocapture_opt_out` | boolean | Whether autocapture is disabled | +| ↳ `autocapture_exceptions_opt_in` | boolean | Whether exception autocapture is enabled | +| ↳ `session_recording_opt_in` | boolean | Whether session recording is enabled | +| ↳ `capture_console_log_opt_in` | boolean | Whether console log capture is enabled | +| ↳ `capture_performance_opt_in` | boolean | Whether performance capture is enabled | ### `posthog_list_organizations` @@ -1066,6 +1384,15 @@ List all organizations the user has access to. Returns organization details incl | Parameter | Type | Description | | --------- | ---- | ----------- | | `organizations` | array | List of organizations with their settings and features | +| ↳ `id` | string | Organization ID \(UUID\) | +| ↳ `name` | string | Organization name | +| ↳ `slug` | string | Organization slug | +| ↳ `created_at` | string | Organization creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `membership_level` | number | User membership level in organization | +| ↳ `plugins_access_level` | number | Access level for plugins/apps | +| ↳ `teams` | array | List of team IDs in this organization | +| ↳ `available_product_features` | array | Available product features and their limits | ### `posthog_get_organization` @@ -1084,5 +1411,20 @@ Get detailed information about a specific organization by ID. Returns comprehens | Parameter | Type | Description | | --------- | ---- | ----------- | | `organization` | object | Detailed organization information with settings and features | +| ↳ `id` | string | Organization ID \(UUID\) | +| ↳ `name` | string | Organization name | +| ↳ `slug` | string | Organization slug | +| ↳ `created_at` | string | Organization creation timestamp | +| ↳ `updated_at` | string | Last update timestamp | +| ↳ `membership_level` | number | User membership level in organization | +| ↳ `plugins_access_level` | number | Access level for plugins/apps | +| ↳ `teams` | array | List of team IDs in this organization | +| ↳ `available_product_features` | array | Available product features with their limits and descriptions | +| ↳ `domain_whitelist` | array | Whitelisted domains for organization | +| ↳ `is_member_join_email_enabled` | boolean | Whether member join emails are enabled | +| ↳ `metadata` | object | Organization metadata | +| ↳ `customer_id` | string | Customer ID for billing | +| ↳ `available_features` | array | List of available feature flags for organization | +| ↳ `usage` | object | Organization usage statistics | diff --git a/apps/docs/content/docs/en/tools/reddit.mdx b/apps/docs/content/docs/en/tools/reddit.mdx index 537c2a0bd3..65cb1aed43 100644 --- a/apps/docs/content/docs/en/tools/reddit.mdx +++ b/apps/docs/content/docs/en/tools/reddit.mdx @@ -54,6 +54,18 @@ Fetch posts from a subreddit with different sorting options | --------- | ---- | ----------- | | `subreddit` | string | Name of the subreddit where posts were fetched from | | `posts` | array | Array of posts with title, author, URL, score, comments count, and metadata | +| ↳ `id` | string | Post ID | +| ↳ `title` | string | Post title | +| ↳ `author` | string | Author username | +| ↳ `url` | string | Post URL | +| ↳ `permalink` | string | Reddit permalink | +| ↳ `score` | number | Post score \(upvotes - downvotes\) | +| ↳ `num_comments` | number | Number of comments | +| ↳ `created_utc` | number | Creation timestamp \(UTC\) | +| ↳ `is_self` | boolean | Whether this is a text post | +| ↳ `selftext` | string | Text content for self posts | +| ↳ `thumbnail` | string | Thumbnail URL | +| ↳ `subreddit` | string | Subreddit name | ### `reddit_get_comments` @@ -83,6 +95,21 @@ Fetch comments from a specific Reddit post | Parameter | Type | Description | | --------- | ---- | ----------- | | `post` | object | Post information including ID, title, author, content, and metadata | +| ↳ `id` | string | Post ID | +| ↳ `title` | string | Post title | +| ↳ `author` | string | Post author | +| ↳ `selftext` | string | Post text content | +| ↳ `score` | number | Post score | +| ↳ `created_utc` | number | Creation timestamp | +| ↳ `permalink` | string | Reddit permalink | +| `comments` | array | Nested comments with author, body, score, timestamps, and replies | +| ↳ `id` | string | Comment ID | +| ↳ `author` | string | Comment author | +| ↳ `body` | string | Comment text | +| ↳ `score` | number | Comment score | +| ↳ `created_utc` | number | Creation timestamp | +| ↳ `permalink` | string | Comment permalink | +| ↳ `replies` | array | Nested reply comments | ### `reddit_get_controversial` @@ -107,6 +134,18 @@ Fetch controversial posts from a subreddit | --------- | ---- | ----------- | | `subreddit` | string | Name of the subreddit where posts were fetched from | | `posts` | array | Array of controversial posts with title, author, URL, score, comments count, and metadata | +| ↳ `id` | string | Post ID | +| ↳ `title` | string | Post title | +| ↳ `author` | string | Author username | +| ↳ `url` | string | Post URL | +| ↳ `permalink` | string | Reddit permalink | +| ↳ `score` | number | Post score \(upvotes - downvotes\) | +| ↳ `num_comments` | number | Number of comments | +| ↳ `created_utc` | number | Creation timestamp \(UTC\) | +| ↳ `is_self` | boolean | Whether this is a text post | +| ↳ `selftext` | string | Text content for self posts | +| ↳ `thumbnail` | string | Thumbnail URL | +| ↳ `subreddit` | string | Subreddit name | ### `reddit_search` @@ -133,6 +172,18 @@ Search for posts within a subreddit | --------- | ---- | ----------- | | `subreddit` | string | Name of the subreddit where search was performed | | `posts` | array | Array of search result posts with title, author, URL, score, comments count, and metadata | +| ↳ `id` | string | Post ID | +| ↳ `title` | string | Post title | +| ↳ `author` | string | Author username | +| ↳ `url` | string | Post URL | +| ↳ `permalink` | string | Reddit permalink | +| ↳ `score` | number | Post score \(upvotes - downvotes\) | +| ↳ `num_comments` | number | Number of comments | +| ↳ `created_utc` | number | Creation timestamp \(UTC\) | +| ↳ `is_self` | boolean | Whether this is a text post | +| ↳ `selftext` | string | Text content for self posts | +| ↳ `thumbnail` | string | Thumbnail URL | +| ↳ `subreddit` | string | Subreddit name | ### `reddit_submit_post` diff --git a/apps/docs/content/docs/en/tools/s3.mdx b/apps/docs/content/docs/en/tools/s3.mdx index 302e5dd756..615ba08c1b 100644 --- a/apps/docs/content/docs/en/tools/s3.mdx +++ b/apps/docs/content/docs/en/tools/s3.mdx @@ -100,6 +100,11 @@ List objects in an AWS S3 bucket | Parameter | Type | Description | | --------- | ---- | ----------- | | `objects` | array | List of S3 objects | +| ↳ `key` | string | Object key | +| ↳ `size` | number | Object size in bytes | +| ↳ `lastModified` | string | Last modified timestamp | +| ↳ `etag` | string | Entity tag | +| `metadata` | object | Listing metadata including pagination info | ### `s3_delete_object` diff --git a/apps/docs/content/docs/en/tools/salesforce.mdx b/apps/docs/content/docs/en/tools/salesforce.mdx index 02fe188f7d..2c5ef68f8e 100644 --- a/apps/docs/content/docs/en/tools/salesforce.mdx +++ b/apps/docs/content/docs/en/tools/salesforce.mdx @@ -53,6 +53,20 @@ Retrieve accounts from Salesforce CRM | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Accounts data | +| ↳ `accounts` | array | Array of account objects | +| ↳ `paging` | object | Pagination information | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `metadata` | object | Response metadata | +| ↳ `totalReturned` | number | Number of accounts returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `totalReturned` | number | Number of accounts returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_create_account` @@ -84,6 +98,9 @@ Create a new account in Salesforce CRM | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created account data | +| ↳ `id` | string | Created account ID | +| ↳ `success` | boolean | Salesforce operation success | +| ↳ `created` | boolean | Whether account was created | ### `salesforce_update_account` @@ -116,6 +133,8 @@ Update an existing account in Salesforce CRM | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated account data | +| ↳ `id` | string | Updated account ID | +| ↳ `updated` | boolean | Whether account was updated | ### `salesforce_delete_account` @@ -135,6 +154,8 @@ Delete an account from Salesforce CRM | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Deleted account data | +| ↳ `id` | string | Deleted account ID | +| ↳ `deleted` | boolean | Whether account was deleted | ### `salesforce_get_contacts` @@ -157,6 +178,22 @@ Get contact(s) from Salesforce - single contact if ID provided, or list if not | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Contact\(s\) data | +| ↳ `contacts` | array | Array of contacts \(list query\) | +| ↳ `contact` | object | Single contact \(by ID\) | +| ↳ `paging` | object | Pagination information | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `metadata` | object | Response metadata | +| ↳ `totalReturned` | number | Number of contacts returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `totalReturned` | number | Number of contacts returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `singleContact` | boolean | Whether single contact was returned | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_create_contact` @@ -188,6 +225,9 @@ Create a new contact in Salesforce CRM | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created contact data | +| ↳ `id` | string | Created contact ID | +| ↳ `success` | boolean | Salesforce operation success | +| ↳ `created` | boolean | Whether contact was created | ### `salesforce_update_contact` @@ -220,6 +260,8 @@ Update an existing contact in Salesforce CRM | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated contact data | +| ↳ `id` | string | Updated contact ID | +| ↳ `updated` | boolean | Whether contact was updated | ### `salesforce_delete_contact` @@ -239,6 +281,8 @@ Delete a contact from Salesforce CRM | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Deleted contact data | +| ↳ `id` | string | Deleted contact ID | +| ↳ `deleted` | boolean | Whether contact was deleted | ### `salesforce_get_leads` @@ -261,6 +305,22 @@ Get lead(s) from Salesforce | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Lead data | +| ↳ `lead` | object | Single lead object \(when leadId provided\) | +| ↳ `leads` | array | Array of lead objects \(when listing\) | +| ↳ `paging` | object | Pagination information | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `metadata` | object | Response metadata | +| ↳ `totalReturned` | number | Number of leads returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `totalReturned` | number | Number of leads returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `singleLead` | boolean | Whether single lead was returned | +| ↳ `success` | boolean | Operation success status | ### `salesforce_create_lead` @@ -288,6 +348,9 @@ Create a new lead | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created lead data | +| ↳ `id` | string | Created lead ID | +| ↳ `success` | boolean | Salesforce operation success | +| ↳ `created` | boolean | Whether lead was created | ### `salesforce_update_lead` @@ -316,6 +379,8 @@ Update an existing lead | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated lead data | +| ↳ `id` | string | Updated lead ID | +| ↳ `updated` | boolean | Whether lead was updated | ### `salesforce_delete_lead` @@ -335,6 +400,8 @@ Delete a lead | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Deleted lead data | +| ↳ `id` | string | Deleted lead ID | +| ↳ `deleted` | boolean | Whether lead was deleted | ### `salesforce_get_opportunities` @@ -357,6 +424,21 @@ Get opportunity(ies) from Salesforce | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Opportunity data | +| ↳ `opportunity` | object | Single opportunity object \(when opportunityId provided\) | +| ↳ `opportunities` | array | Array of opportunity objects \(when listing\) | +| ↳ `paging` | object | Pagination information | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `metadata` | object | Response metadata | +| ↳ `totalReturned` | number | Number of opportunities returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `totalReturned` | number | Number of opportunities returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `success` | boolean | Operation success status | ### `salesforce_create_opportunity` @@ -382,6 +464,9 @@ Create a new opportunity | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created opportunity data | +| ↳ `id` | string | Created opportunity ID | +| ↳ `success` | boolean | Salesforce operation success | +| ↳ `created` | boolean | Whether opportunity was created | ### `salesforce_update_opportunity` @@ -408,6 +493,8 @@ Update an existing opportunity | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated opportunity data | +| ↳ `id` | string | Updated opportunity ID | +| ↳ `updated` | boolean | Whether opportunity was updated | ### `salesforce_delete_opportunity` @@ -427,6 +514,8 @@ Delete an opportunity | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Deleted opportunity data | +| ↳ `id` | string | Deleted opportunity ID | +| ↳ `deleted` | boolean | Whether opportunity was deleted | ### `salesforce_get_cases` @@ -449,6 +538,21 @@ Get case(s) from Salesforce | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Case data | +| ↳ `case` | object | Single case object \(when caseId provided\) | +| ↳ `cases` | array | Array of case objects \(when listing\) | +| ↳ `paging` | object | Pagination information | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `metadata` | object | Response metadata | +| ↳ `totalReturned` | number | Number of cases returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `totalReturned` | number | Number of cases returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `success` | boolean | Operation success status | ### `salesforce_create_case` @@ -474,6 +578,9 @@ Create a new case | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created case data | +| ↳ `id` | string | Created case ID | +| ↳ `success` | boolean | Salesforce operation success | +| ↳ `created` | boolean | Whether case was created | ### `salesforce_update_case` @@ -497,6 +604,8 @@ Update an existing case | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated case data | +| ↳ `id` | string | Updated case ID | +| ↳ `updated` | boolean | Whether case was updated | ### `salesforce_delete_case` @@ -516,6 +625,8 @@ Delete a case | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Deleted case data | +| ↳ `id` | string | Deleted case ID | +| ↳ `deleted` | boolean | Whether case was deleted | ### `salesforce_get_tasks` @@ -538,6 +649,21 @@ Get task(s) from Salesforce | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Task data | +| ↳ `task` | object | Single task object \(when taskId provided\) | +| ↳ `tasks` | array | Array of task objects \(when listing\) | +| ↳ `paging` | object | Pagination information | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `nextRecordsUrl` | string | URL for next page of results | +| ↳ `totalSize` | number | Total number of records | +| ↳ `done` | boolean | Whether all records returned | +| ↳ `metadata` | object | Response metadata | +| ↳ `totalReturned` | number | Number of tasks returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `totalReturned` | number | Number of tasks returned | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `success` | boolean | Operation success status | ### `salesforce_create_task` @@ -563,6 +689,9 @@ Create a new task | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created task data | +| ↳ `id` | string | Created task ID | +| ↳ `success` | boolean | Salesforce operation success | +| ↳ `created` | boolean | Whether task was created | ### `salesforce_update_task` @@ -587,6 +716,8 @@ Update an existing task | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Updated task data | +| ↳ `id` | string | Updated task ID | +| ↳ `updated` | boolean | Whether task was updated | ### `salesforce_delete_task` @@ -606,6 +737,8 @@ Delete a task | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Deleted task data | +| ↳ `id` | string | Deleted task ID | +| ↳ `deleted` | boolean | Whether task was deleted | ### `salesforce_list_reports` @@ -626,6 +759,9 @@ Get a list of reports accessible by the current user | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Reports data | +| ↳ `reports` | array | Array of report objects | +| ↳ `totalReturned` | number | Number of reports returned | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_get_report` @@ -645,6 +781,9 @@ Get metadata and describe information for a specific report | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Report metadata | +| ↳ `report` | object | Report metadata object | +| ↳ `reportId` | string | Report ID | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_run_report` @@ -666,6 +805,17 @@ Execute a report and retrieve the results | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Report results | +| ↳ `reportId` | string | Report ID | +| ↳ `reportMetadata` | object | Report metadata | +| ↳ `reportExtendedMetadata` | object | Extended metadata | +| ↳ `factMap` | object | Report data organized by groupings | +| ↳ `groupingsDown` | object | Row groupings | +| ↳ `groupingsAcross` | object | Column groupings | +| ↳ `hasDetailRows` | boolean | Whether report has detail rows | +| ↳ `allData` | boolean | Whether all data is returned | +| ↳ `reportName` | string | Report name | +| ↳ `reportFormat` | string | Report format type | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_list_report_types` @@ -684,6 +834,9 @@ Get a list of available report types | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Report types data | +| ↳ `reportTypes` | array | Array of report type objects | +| ↳ `totalReturned` | number | Number of report types returned | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_list_dashboards` @@ -703,6 +856,9 @@ Get a list of dashboards accessible by the current user | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Dashboards data | +| ↳ `dashboards` | array | Array of dashboard objects | +| ↳ `totalReturned` | number | Number of dashboards returned | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_get_dashboard` @@ -722,6 +878,13 @@ Get details and results for a specific dashboard | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Dashboard data | +| ↳ `dashboard` | object | Dashboard details | +| ↳ `dashboardId` | string | Dashboard ID | +| ↳ `components` | array | Dashboard component data | +| ↳ `dashboardName` | string | Dashboard name | +| ↳ `folderId` | string | Folder ID containing the dashboard | +| ↳ `runningUser` | object | Running user information | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_refresh_dashboard` @@ -741,6 +904,13 @@ Refresh a dashboard to get the latest data | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Refreshed dashboard data | +| ↳ `dashboard` | object | Dashboard details | +| ↳ `dashboardId` | string | Dashboard ID | +| ↳ `components` | array | Dashboard component data | +| ↳ `status` | object | Dashboard status | +| ↳ `dashboardName` | string | Dashboard name | +| ↳ `refreshDate` | string | Date when dashboard was refreshed | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_query` @@ -760,6 +930,17 @@ Execute a custom SOQL query to retrieve data from Salesforce | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Query results | +| ↳ `records` | array | Array of record objects | +| ↳ `totalSize` | number | Total number of records matching query | +| ↳ `done` | boolean | Whether all records have been returned | +| ↳ `nextRecordsUrl` | string | URL to fetch next batch of records | +| ↳ `query` | string | The executed SOQL query | +| ↳ `metadata` | object | Response metadata | +| ↳ `totalReturned` | number | Number of records returned in this response | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `totalReturned` | number | Number of records returned in this response | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_query_more` @@ -779,6 +960,16 @@ Retrieve additional query results using the nextRecordsUrl from a previous query | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Query results | +| ↳ `records` | array | Array of record objects | +| ↳ `totalSize` | number | Total number of records matching query | +| ↳ `done` | boolean | Whether all records have been returned | +| ↳ `nextRecordsUrl` | string | URL to fetch next batch of records | +| ↳ `metadata` | object | Response metadata | +| ↳ `totalReturned` | number | Number of records returned in this response | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `totalReturned` | number | Number of records returned in this response | +| ↳ `hasMore` | boolean | Whether more records exist | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_describe_object` @@ -798,6 +989,19 @@ Get metadata and field information for a Salesforce object | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Object metadata | +| ↳ `objectName` | string | API name of the object | +| ↳ `label` | string | Display label | +| ↳ `labelPlural` | string | Plural display label | +| ↳ `fields` | array | Array of field definitions | +| ↳ `keyPrefix` | string | ID prefix for this object type | +| ↳ `queryable` | boolean | Whether object can be queried | +| ↳ `createable` | boolean | Whether records can be created | +| ↳ `updateable` | boolean | Whether records can be updated | +| ↳ `deletable` | boolean | Whether records can be deleted | +| ↳ `childRelationships` | array | Child relationship definitions | +| ↳ `recordTypeInfos` | array | Record type information | +| ↳ `fieldCount` | number | Number of fields in the object | +| ↳ `success` | boolean | Salesforce operation success | ### `salesforce_list_objects` @@ -816,5 +1020,10 @@ Get a list of all available Salesforce objects | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Objects list | +| ↳ `objects` | array | Array of available Salesforce objects | +| ↳ `encoding` | string | Encoding used | +| ↳ `maxBatchSize` | number | Maximum batch size | +| ↳ `totalReturned` | number | Number of objects returned | +| ↳ `success` | boolean | Salesforce operation success | diff --git a/apps/docs/content/docs/en/tools/sentry.mdx b/apps/docs/content/docs/en/tools/sentry.mdx index 408a61a515..c1b6752305 100644 --- a/apps/docs/content/docs/en/tools/sentry.mdx +++ b/apps/docs/content/docs/en/tools/sentry.mdx @@ -68,6 +68,50 @@ List issues from Sentry for a specific organization and optionally a specific pr | Parameter | Type | Description | | --------- | ---- | ----------- | | `issues` | array | List of Sentry issues | +| ↳ `id` | string | User ID | +| ↳ `shortId` | string | Short issue identifier | +| ↳ `title` | string | Issue title | +| ↳ `culprit` | string | Function or location that caused the issue | +| ↳ `permalink` | string | Direct link to the issue in Sentry | +| ↳ `logger` | string | Logger name that reported the issue | +| ↳ `level` | string | Severity level \(error, warning, info, etc.\) | +| ↳ `status` | string | Current issue status | +| ↳ `statusDetails` | object | Additional details about the status | +| ↳ `isPublic` | boolean | Whether the issue is publicly visible | +| ↳ `platform` | string | Project platform | +| ↳ `project` | object | Project information | +| ↳ `id` | string | Project ID | +| ↳ `name` | string | Project name | +| ↳ `slug` | string | Project slug | +| ↳ `platform` | string | Project platform | +| ↳ `name` | string | User name | +| ↳ `slug` | string | Project slug | +| ↳ `type` | string | Type of error \(e.g., TypeError\) | +| ↳ `metadata` | object | Error metadata | +| ↳ `type` | string | Type of error \(e.g., TypeError\) | +| ↳ `value` | string | Error message or value | +| ↳ `function` | string | Function where the error occurred | +| ↳ `value` | string | Error message or value | +| ↳ `function` | string | Function where the error occurred | +| ↳ `numComments` | number | Number of comments on the issue | +| ↳ `assignedTo` | object | User assigned to the issue | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `email` | string | User email | +| ↳ `isBookmarked` | boolean | Whether the issue is bookmarked | +| ↳ `isSubscribed` | boolean | Whether subscribed to updates | +| ↳ `hasSeen` | boolean | Whether the user has seen this issue | +| ↳ `annotations` | array | Issue annotations | +| ↳ `isUnhandled` | boolean | Whether the issue is unhandled | +| ↳ `count` | string | Total number of occurrences | +| ↳ `userCount` | number | Number of unique users affected | +| ↳ `firstSeen` | string | When the issue was first seen \(ISO timestamp\) | +| ↳ `lastSeen` | string | When the issue was last seen \(ISO timestamp\) | +| ↳ `stats` | object | Statistical information about the issue | +| `metadata` | object | Pagination metadata | +| ↳ `nextCursor` | string | Cursor for the next page of results \(if available\) | +| ↳ `hasMore` | boolean | Whether there are more results available | ### `sentry_issues_get` @@ -86,6 +130,47 @@ Retrieve detailed information about a specific Sentry issue by its ID. Returns c | Parameter | Type | Description | | --------- | ---- | ----------- | | `issue` | object | Detailed information about the Sentry issue | +| ↳ `id` | string | User ID | +| ↳ `shortId` | string | Short issue identifier | +| ↳ `title` | string | Issue title | +| ↳ `culprit` | string | Function or location that caused the issue | +| ↳ `permalink` | string | Direct link to the issue in Sentry | +| ↳ `logger` | string | Logger name that reported the issue | +| ↳ `level` | string | Severity level \(error, warning, info, etc.\) | +| ↳ `status` | string | Current issue status | +| ↳ `statusDetails` | object | Additional details about the status | +| ↳ `isPublic` | boolean | Whether the issue is publicly visible | +| ↳ `platform` | string | Project platform | +| ↳ `project` | object | Project information | +| ↳ `id` | string | Project ID | +| ↳ `name` | string | Project name | +| ↳ `slug` | string | Project slug | +| ↳ `platform` | string | Project platform | +| ↳ `name` | string | User name | +| ↳ `slug` | string | Project slug | +| ↳ `type` | string | Type of error \(e.g., TypeError, ValueError\) | +| ↳ `metadata` | object | Error metadata | +| ↳ `type` | string | Type of error \(e.g., TypeError, ValueError\) | +| ↳ `value` | string | Error message or value | +| ↳ `function` | string | Function where the error occurred | +| ↳ `value` | string | Error message or value | +| ↳ `function` | string | Function where the error occurred | +| ↳ `numComments` | number | Number of comments on the issue | +| ↳ `assignedTo` | object | User assigned to the issue \(if any\) | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `email` | string | User email | +| ↳ `isBookmarked` | boolean | Whether the issue is bookmarked | +| ↳ `isSubscribed` | boolean | Whether the user is subscribed to updates | +| ↳ `hasSeen` | boolean | Whether the user has seen this issue | +| ↳ `annotations` | array | Issue annotations | +| ↳ `isUnhandled` | boolean | Whether the issue is unhandled | +| ↳ `count` | string | Total number of occurrences | +| ↳ `userCount` | number | Number of unique users affected | +| ↳ `firstSeen` | string | When the issue was first seen \(ISO timestamp\) | +| ↳ `lastSeen` | string | When the issue was last seen \(ISO timestamp\) | +| ↳ `stats` | object | Statistical information about the issue | ### `sentry_issues_update` @@ -109,6 +194,20 @@ Update a Sentry issue by changing its status, assignment, bookmark state, or oth | Parameter | Type | Description | | --------- | ---- | ----------- | | `issue` | object | The updated Sentry issue | +| ↳ `id` | string | User ID | +| ↳ `shortId` | string | Short issue identifier | +| ↳ `title` | string | Issue title | +| ↳ `status` | string | Updated issue status | +| ↳ `assignedTo` | object | User assigned to the issue \(if any\) | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `isBookmarked` | boolean | Whether the issue is bookmarked | +| ↳ `isSubscribed` | boolean | Whether the user is subscribed to updates | +| ↳ `isPublic` | boolean | Whether the issue is publicly visible | +| ↳ `permalink` | string | Direct link to the issue in Sentry | ### `sentry_projects_list` @@ -128,6 +227,27 @@ List all projects in a Sentry organization. Returns project details including na | Parameter | Type | Description | | --------- | ---- | ----------- | | `projects` | array | List of Sentry projects | +| ↳ `id` | string | Team ID | +| ↳ `slug` | string | Team slug | +| ↳ `name` | string | Team name | +| ↳ `platform` | string | Platform/language \(e.g., javascript, python\) | +| ↳ `dateCreated` | string | When the project was created \(ISO timestamp\) | +| ↳ `isBookmarked` | boolean | Whether the project is bookmarked | +| ↳ `isMember` | boolean | Whether the user is a member of the project | +| ↳ `features` | array | Enabled features for the project | +| ↳ `organization` | object | Organization information | +| ↳ `id` | string | Organization ID | +| ↳ `slug` | string | Organization slug | +| ↳ `name` | string | Organization name | +| ↳ `teams` | array | Teams associated with the project | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | +| ↳ `slug` | string | Team slug | +| ↳ `status` | string | Project status | +| ↳ `isPublic` | boolean | Whether the project is publicly visible | +| `metadata` | object | Pagination metadata | +| ↳ `nextCursor` | string | Cursor for the next page of results \(if available\) | +| ↳ `hasMore` | boolean | Whether there are more results available | ### `sentry_projects_get` @@ -146,6 +266,39 @@ Retrieve detailed information about a specific Sentry project by its slug. Retur | Parameter | Type | Description | | --------- | ---- | ----------- | | `project` | object | Detailed information about the Sentry project | +| ↳ `id` | string | Team ID | +| ↳ `slug` | string | Team slug | +| ↳ `name` | string | Team name | +| ↳ `platform` | string | Platform/language \(e.g., javascript, python\) | +| ↳ `dateCreated` | string | When the project was created \(ISO timestamp\) | +| ↳ `isBookmarked` | boolean | Whether the project is bookmarked | +| ↳ `isMember` | boolean | Whether the user is a member of the project | +| ↳ `features` | array | Enabled features for the project | +| ↳ `firstEvent` | string | When the first event was received \(ISO timestamp\) | +| ↳ `firstTransactionEvent` | string | When the first transaction event was received | +| ↳ `access` | array | Access permissions | +| ↳ `organization` | object | Organization information | +| ↳ `id` | string | Organization ID | +| ↳ `slug` | string | Organization slug | +| ↳ `name` | string | Organization name | +| ↳ `team` | object | Primary team for the project | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | +| ↳ `slug` | string | Team slug | +| ↳ `teams` | array | Teams associated with the project | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | +| ↳ `slug` | string | Team slug | +| ↳ `status` | string | Project status | +| ↳ `color` | string | Project color code | +| ↳ `isPublic` | boolean | Whether the project is publicly visible | +| ↳ `isInternal` | boolean | Whether the project is internal | +| ↳ `hasAccess` | boolean | Whether the user has access to this project | +| ↳ `hasMinifiedStackTrace` | boolean | Whether minified stack traces are available | +| ↳ `hasMonitors` | boolean | Whether the project has monitors configured | +| ↳ `hasProfiles` | boolean | Whether the project has profiling enabled | +| ↳ `hasReplays` | boolean | Whether the project has session replays enabled | +| ↳ `hasSessions` | boolean | Whether the project has sessions enabled | ### `sentry_projects_create` @@ -168,6 +321,31 @@ Create a new Sentry project in an organization. Requires a team to associate the | Parameter | Type | Description | | --------- | ---- | ----------- | | `project` | object | The newly created Sentry project | +| ↳ `id` | string | Team ID | +| ↳ `slug` | string | Team slug | +| ↳ `name` | string | Team name | +| ↳ `platform` | string | Platform/language | +| ↳ `dateCreated` | string | When the project was created \(ISO timestamp\) | +| ↳ `isBookmarked` | boolean | Whether the project is bookmarked | +| ↳ `isMember` | boolean | Whether the user is a member | +| ↳ `hasAccess` | boolean | Whether the user has access | +| ↳ `features` | array | Enabled features | +| ↳ `firstEvent` | string | First event timestamp | +| ↳ `organization` | object | Organization information | +| ↳ `id` | string | Organization ID | +| ↳ `slug` | string | Organization slug | +| ↳ `name` | string | Organization name | +| ↳ `team` | object | Primary team for the project | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | +| ↳ `slug` | string | Team slug | +| ↳ `teams` | array | Teams associated with the project | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | +| ↳ `slug` | string | Team slug | +| ↳ `status` | string | Project status | +| ↳ `color` | string | Project color code | +| ↳ `isPublic` | boolean | Whether the project is public | ### `sentry_projects_update` @@ -192,6 +370,19 @@ Update a Sentry project by changing its name, slug, platform, or other settings. | Parameter | Type | Description | | --------- | ---- | ----------- | | `project` | object | The updated Sentry project | +| ↳ `id` | string | Team ID | +| ↳ `slug` | string | Team slug | +| ↳ `name` | string | Team name | +| ↳ `platform` | string | Platform/language | +| ↳ `isBookmarked` | boolean | Whether the project is bookmarked | +| ↳ `organization` | object | Organization information | +| ↳ `id` | string | Organization ID | +| ↳ `slug` | string | Organization slug | +| ↳ `name` | string | Organization name | +| ↳ `teams` | array | Teams associated with the project | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | +| ↳ `slug` | string | Team slug | ### `sentry_events_list` @@ -215,6 +406,50 @@ List events from a Sentry project. Can be filtered by issue ID, query, or time p | Parameter | Type | Description | | --------- | ---- | ----------- | | `events` | array | List of Sentry events | +| ↳ `id` | string | User ID | +| ↳ `eventID` | string | Event identifier | +| ↳ `projectID` | string | Project ID | +| ↳ `groupID` | string | Issue group ID | +| ↳ `message` | string | Event message | +| ↳ `title` | string | Event title | +| ↳ `location` | string | Location information | +| ↳ `culprit` | string | Function or location that caused the event | +| ↳ `dateCreated` | string | When the event was created \(ISO timestamp\) | +| ↳ `dateReceived` | string | When Sentry received the event \(ISO timestamp\) | +| ↳ `user` | object | User information associated with the event | +| ↳ `id` | string | User ID | +| ↳ `email` | string | User email | +| ↳ `username` | string | Username | +| ↳ `ipAddress` | string | IP address | +| ↳ `name` | string | User display name | +| ↳ `email` | string | User email | +| ↳ `username` | string | Username | +| ↳ `ipAddress` | string | IP address | +| ↳ `name` | string | SDK name | +| ↳ `tags` | array | Tags associated with the event | +| ↳ `key` | string | Tag key | +| ↳ `value` | string | Tag value | +| ↳ `key` | string | Tag key | +| ↳ `value` | string | Error message or value | +| ↳ `contexts` | object | Additional context data \(device, OS, etc.\) | +| ↳ `platform` | string | Platform where the event occurred | +| ↳ `type` | string | Type of error \(e.g., TypeError\) | +| ↳ `metadata` | object | Error metadata | +| ↳ `type` | string | Type of error \(e.g., TypeError\) | +| ↳ `value` | string | Error message or value | +| ↳ `function` | string | Function where the error occurred | +| ↳ `function` | string | Function where the error occurred | +| ↳ `entries` | array | Event entries \(exception, breadcrumbs, etc.\) | +| ↳ `errors` | array | Processing errors | +| ↳ `dist` | string | Distribution identifier | +| ↳ `fingerprints` | array | Fingerprints for grouping | +| ↳ `sdk` | object | SDK information | +| ↳ `name` | string | SDK name | +| ↳ `version` | string | SDK version | +| ↳ `version` | string | SDK version | +| `metadata` | object | Pagination metadata | +| ↳ `nextCursor` | string | Cursor for the next page of results \(if available\) | +| ↳ `hasMore` | boolean | Whether there are more results available | ### `sentry_events_get` @@ -234,6 +469,47 @@ Retrieve detailed information about a specific Sentry event by its ID. Returns c | Parameter | Type | Description | | --------- | ---- | ----------- | | `event` | object | Detailed information about the Sentry event | +| ↳ `id` | string | User ID | +| ↳ `eventID` | string | Event identifier | +| ↳ `projectID` | string | Project ID | +| ↳ `groupID` | string | Issue group ID this event belongs to | +| ↳ `message` | string | Event message | +| ↳ `title` | string | Event title | +| ↳ `location` | string | Location information | +| ↳ `culprit` | string | Function or location that caused the event | +| ↳ `dateCreated` | string | When the event was created \(ISO timestamp\) | +| ↳ `dateReceived` | string | When Sentry received the event \(ISO timestamp\) | +| ↳ `user` | object | User information associated with the event | +| ↳ `id` | string | User ID | +| ↳ `email` | string | User email | +| ↳ `username` | string | Username | +| ↳ `ipAddress` | string | IP address | +| ↳ `name` | string | User display name | +| ↳ `email` | string | User email | +| ↳ `username` | string | Username | +| ↳ `ipAddress` | string | IP address | +| ↳ `name` | string | SDK name | +| ↳ `tags` | array | Tags associated with the event | +| ↳ `key` | string | Tag key | +| ↳ `value` | string | Tag value | +| ↳ `key` | string | Tag key | +| ↳ `value` | string | Error message or value | +| ↳ `contexts` | object | Additional context data \(device, OS, browser, etc.\) | +| ↳ `platform` | string | Platform where the event occurred | +| ↳ `type` | string | Type of error \(e.g., TypeError, ValueError\) | +| ↳ `metadata` | object | Error metadata | +| ↳ `type` | string | Type of error \(e.g., TypeError, ValueError\) | +| ↳ `value` | string | Error message or value | +| ↳ `function` | string | Function where the error occurred | +| ↳ `function` | string | Function where the error occurred | +| ↳ `entries` | array | Event entries including exception, breadcrumbs, and request data | +| ↳ `errors` | array | Processing errors that occurred | +| ↳ `dist` | string | Distribution identifier | +| ↳ `fingerprints` | array | Fingerprints used for grouping events | +| ↳ `sdk` | object | SDK information | +| ↳ `name` | string | SDK name | +| ↳ `version` | string | SDK version | +| ↳ `version` | string | SDK version | ### `sentry_releases_list` @@ -255,6 +531,61 @@ List releases for a Sentry organization or project. Returns release details incl | Parameter | Type | Description | | --------- | ---- | ----------- | | `releases` | array | List of Sentry releases | +| ↳ `id` | string | Project ID | +| ↳ `version` | object | Version details | +| ↳ `raw` | string | Raw version string | +| ↳ `shortVersion` | string | Shortened version identifier | +| ↳ `ref` | string | Git reference \(commit SHA, tag, or branch\) | +| ↳ `url` | string | URL to the release \(e.g., GitHub release page\) | +| ↳ `dateReleased` | string | When the release was deployed \(ISO timestamp\) | +| ↳ `dateCreated` | string | Commit timestamp | +| ↳ `dateStarted` | string | Deploy start timestamp | +| ↳ `newGroups` | number | Number of new issues introduced in this release | +| ↳ `owner` | object | Owner of the release | +| ↳ `id` | string | User ID | +| ↳ `name` | string | User name | +| ↳ `email` | string | User email | +| ↳ `name` | string | Project name | +| ↳ `email` | string | Author email | +| ↳ `commitCount` | number | Number of commits in this release | +| ↳ `deployCount` | number | Number of deploys for this release | +| ↳ `lastCommit` | object | Last commit in the release | +| ↳ `id` | string | Commit SHA | +| ↳ `message` | string | Commit message | +| ↳ `dateCreated` | string | Commit timestamp | +| ↳ `message` | string | Commit message | +| ↳ `lastDeploy` | object | Last deploy of the release | +| ↳ `id` | string | Deploy ID | +| ↳ `environment` | string | Deploy environment | +| ↳ `dateStarted` | string | Deploy start timestamp | +| ↳ `dateFinished` | string | Deploy finish timestamp | +| ↳ `environment` | string | Deploy environment | +| ↳ `dateFinished` | string | Deploy finish timestamp | +| ↳ `authors` | array | Authors of commits in the release | +| ↳ `id` | string | Author ID | +| ↳ `name` | string | Author name | +| ↳ `email` | string | Author email | +| ↳ `projects` | array | Projects associated with this release | +| ↳ `id` | string | Project ID | +| ↳ `name` | string | Project name | +| ↳ `slug` | string | Project slug | +| ↳ `platform` | string | Project platform | +| ↳ `slug` | string | Project slug | +| ↳ `platform` | string | Project platform | +| ↳ `firstEvent` | string | First event timestamp | +| ↳ `lastEvent` | string | Last event timestamp | +| ↳ `versionInfo` | object | Version metadata | +| ↳ `buildHash` | string | Build hash | +| ↳ `version` | object | Version details | +| ↳ `raw` | string | Raw version string | +| ↳ `raw` | string | Raw version string | +| ↳ `package` | string | Package name | +| ↳ `buildHash` | string | Build hash | +| ↳ `raw` | string | Raw version string | +| ↳ `package` | string | Package name | +| `metadata` | object | Pagination metadata | +| ↳ `nextCursor` | string | Cursor for the next page of results \(if available\) | +| ↳ `hasMore` | boolean | Whether there are more results available | ### `sentry_releases_create` @@ -278,6 +609,58 @@ Create a new release in Sentry. A release is a version of your code deployed to | Parameter | Type | Description | | --------- | ---- | ----------- | | `release` | object | The newly created Sentry release | +| ↳ `id` | string | Project ID | +| ↳ `version` | object | Version details | +| ↳ `raw` | string | Raw version string | +| ↳ `shortVersion` | string | Shortened version identifier | +| ↳ `ref` | string | Git reference \(commit SHA, tag, or branch\) | +| ↳ `url` | string | URL to the release | +| ↳ `dateReleased` | string | When the release was deployed \(ISO timestamp\) | +| ↳ `dateCreated` | string | Commit timestamp | +| ↳ `dateStarted` | string | Deploy start timestamp | +| ↳ `newGroups` | number | Number of new issues introduced | +| ↳ `commitCount` | number | Number of commits in this release | +| ↳ `deployCount` | number | Number of deploys for this release | +| ↳ `owner` | object | Release owner | +| ↳ `id` | string | Owner ID | +| ↳ `name` | string | Owner name | +| ↳ `email` | string | Owner email | +| ↳ `name` | string | Project name | +| ↳ `email` | string | Author email | +| ↳ `lastCommit` | object | Last commit in the release | +| ↳ `id` | string | Commit SHA | +| ↳ `message` | string | Commit message | +| ↳ `dateCreated` | string | Commit timestamp | +| ↳ `message` | string | Commit message | +| ↳ `lastDeploy` | object | Last deploy of the release | +| ↳ `id` | string | Deploy ID | +| ↳ `environment` | string | Deploy environment | +| ↳ `dateStarted` | string | Deploy start timestamp | +| ↳ `dateFinished` | string | Deploy finish timestamp | +| ↳ `environment` | string | Deploy environment | +| ↳ `dateFinished` | string | Deploy finish timestamp | +| ↳ `authors` | array | Authors of commits in the release | +| ↳ `id` | string | Author ID | +| ↳ `name` | string | Author name | +| ↳ `email` | string | Author email | +| ↳ `projects` | array | Projects associated with this release | +| ↳ `id` | string | Project ID | +| ↳ `name` | string | Project name | +| ↳ `slug` | string | Project slug | +| ↳ `platform` | string | Project platform | +| ↳ `slug` | string | Project slug | +| ↳ `platform` | string | Project platform | +| ↳ `firstEvent` | string | First event timestamp | +| ↳ `lastEvent` | string | Last event timestamp | +| ↳ `versionInfo` | object | Version metadata | +| ↳ `buildHash` | string | Build hash | +| ↳ `version` | object | Version details | +| ↳ `raw` | string | Raw version string | +| ↳ `raw` | string | Raw version string | +| ↳ `package` | string | Package name | +| ↳ `buildHash` | string | Build hash | +| ↳ `raw` | string | Raw version string | +| ↳ `package` | string | Package name | ### `sentry_releases_deploy` @@ -301,5 +684,11 @@ Create a deploy record for a Sentry release in a specific environment. Deploys t | Parameter | Type | Description | | --------- | ---- | ----------- | | `deploy` | object | The newly created deploy record | +| ↳ `id` | string | Unique deploy ID | +| ↳ `environment` | string | Environment name where the release was deployed | +| ↳ `name` | string | Name of the deploy | +| ↳ `url` | string | URL pointing to the deploy | +| ↳ `dateStarted` | string | When the deploy started \(ISO timestamp\) | +| ↳ `dateFinished` | string | When the deploy finished \(ISO timestamp\) | diff --git a/apps/docs/content/docs/en/tools/sharepoint.mdx b/apps/docs/content/docs/en/tools/sharepoint.mdx index 9b2aac048c..b39b581dad 100644 --- a/apps/docs/content/docs/en/tools/sharepoint.mdx +++ b/apps/docs/content/docs/en/tools/sharepoint.mdx @@ -52,6 +52,13 @@ Create a new page in a SharePoint site | Parameter | Type | Description | | --------- | ---- | ----------- | | `page` | object | Created SharePoint page information | +| ↳ `id` | string | The unique ID of the created page | +| ↳ `name` | string | The name of the created page | +| ↳ `title` | string | The title of the created page | +| ↳ `webUrl` | string | The URL to access the page | +| ↳ `pageLayout` | string | The layout type of the page | +| ↳ `createdDateTime` | string | When the page was created | +| ↳ `lastModifiedDateTime` | string | When the page was last modified | ### `sharepoint_read_page` @@ -72,6 +79,35 @@ Read a specific page from a SharePoint site | Parameter | Type | Description | | --------- | ---- | ----------- | | `page` | object | Information about the SharePoint page | +| ↳ `id` | string | The unique ID of the page | +| ↳ `name` | string | The name of the page | +| ↳ `title` | string | The title of the page | +| ↳ `webUrl` | string | The URL to access the page | +| ↳ `pageLayout` | string | The layout type of the page | +| ↳ `createdDateTime` | string | When the page was created | +| ↳ `lastModifiedDateTime` | string | When the page was last modified | +| `pages` | array | List of SharePoint pages | +| ↳ `page` | object | The unique ID of the page | +| ↳ `id` | string | The unique ID of the page | +| ↳ `name` | string | The name of the page | +| ↳ `title` | string | The title of the page | +| ↳ `webUrl` | string | The URL to access the page | +| ↳ `pageLayout` | string | The layout type of the page | +| ↳ `createdDateTime` | string | When the page was created | +| ↳ `lastModifiedDateTime` | string | When the page was last modified | +| ↳ `id` | string | The unique ID of the page | +| ↳ `name` | string | The name of the page | +| ↳ `title` | string | The title of the page | +| ↳ `webUrl` | string | The URL to access the page | +| ↳ `pageLayout` | string | The layout type of the page | +| ↳ `createdDateTime` | string | When the page was created | +| ↳ `lastModifiedDateTime` | string | When the page was last modified | +| ↳ `content` | string | Extracted text content from the page | +| ↳ `canvasLayout` | object | Raw SharePoint canvas layout structure | +| `content` | object | Content of the SharePoint page | +| ↳ `content` | string | Extracted text content from the page | +| ↳ `canvasLayout` | object | Raw SharePoint canvas layout structure | +| `totalPages` | number | Total number of pages found | ### `sharepoint_list_sites` @@ -89,6 +125,28 @@ List details of all SharePoint sites | Parameter | Type | Description | | --------- | ---- | ----------- | | `site` | object | Information about the current SharePoint site | +| ↳ `id` | string | The unique ID of the site | +| ↳ `name` | string | The name of the site | +| ↳ `displayName` | string | The display name of the site | +| ↳ `webUrl` | string | The URL to access the site | +| ↳ `description` | string | The description of the site | +| ↳ `createdDateTime` | string | When the site was created | +| ↳ `lastModifiedDateTime` | string | When the site was last modified | +| ↳ `isPersonalSite` | boolean | Whether this is a personal site | +| ↳ `root` | object | Server relative URL | +| ↳ `serverRelativeUrl` | string | Server relative URL | +| ↳ `serverRelativeUrl` | string | Server relative URL | +| ↳ `siteCollection` | object | Site collection hostname | +| ↳ `hostname` | string | Site collection hostname | +| ↳ `hostname` | string | Site collection hostname | +| `sites` | array | List of all accessible SharePoint sites | +| ↳ `id` | string | The unique ID of the site | +| ↳ `name` | string | The name of the site | +| ↳ `displayName` | string | The display name of the site | +| ↳ `webUrl` | string | The URL to access the site | +| ↳ `description` | string | The description of the site | +| ↳ `createdDateTime` | string | When the site was created | +| ↳ `lastModifiedDateTime` | string | When the site was last modified | ### `sharepoint_create_list` @@ -110,6 +168,13 @@ Create a new list in a SharePoint site | Parameter | Type | Description | | --------- | ---- | ----------- | | `list` | object | Created SharePoint list information | +| ↳ `id` | string | The unique ID of the list | +| ↳ `displayName` | string | The display name of the list | +| ↳ `name` | string | The internal name of the list | +| ↳ `webUrl` | string | The web URL of the list | +| ↳ `createdDateTime` | string | When the list was created | +| ↳ `lastModifiedDateTime` | string | When the list was last modified | +| ↳ `list` | object | List properties \(e.g., template\) | ### `sharepoint_get_list` @@ -128,6 +193,16 @@ Get metadata (and optionally columns/items) for a SharePoint list | Parameter | Type | Description | | --------- | ---- | ----------- | | `list` | object | Information about the SharePoint list | +| ↳ `id` | string | Item ID | +| ↳ `displayName` | string | The display name of the list | +| ↳ `name` | string | The internal name of the list | +| ↳ `webUrl` | string | The web URL of the list | +| ↳ `createdDateTime` | string | When the list was created | +| ↳ `lastModifiedDateTime` | string | When the list was last modified | +| ↳ `list` | object | List properties \(e.g., template\) | +| ↳ `columns` | array | List column definitions | +| ↳ `fields` | object | Field values for the item | +| `lists` | array | All lists in the site when no listId/title provided | ### `sharepoint_update_list` @@ -148,6 +223,8 @@ Update the properties (fields) on a SharePoint list item | Parameter | Type | Description | | --------- | ---- | ----------- | | `item` | object | Updated SharePoint list item | +| ↳ `id` | string | Item ID | +| ↳ `fields` | object | Updated field values | ### `sharepoint_add_list_items` @@ -167,6 +244,8 @@ Add a new item to a SharePoint list | Parameter | Type | Description | | --------- | ---- | ----------- | | `item` | object | Created SharePoint list item | +| ↳ `id` | string | Item ID | +| ↳ `fields` | object | Field values for the new item | ### `sharepoint_upload_file` @@ -187,5 +266,12 @@ Upload files to a SharePoint document library | Parameter | Type | Description | | --------- | ---- | ----------- | | `uploadedFiles` | array | Array of uploaded file objects | +| ↳ `id` | string | The unique ID of the uploaded file | +| ↳ `name` | string | The name of the uploaded file | +| ↳ `webUrl` | string | The URL to access the file | +| ↳ `size` | number | The size of the file in bytes | +| ↳ `createdDateTime` | string | When the file was created | +| ↳ `lastModifiedDateTime` | string | When the file was last modified | +| `fileCount` | number | Number of files uploaded | diff --git a/apps/docs/content/docs/en/tools/slack.mdx b/apps/docs/content/docs/en/tools/slack.mdx index 8c806d4de8..a1e847cd63 100644 --- a/apps/docs/content/docs/en/tools/slack.mdx +++ b/apps/docs/content/docs/en/tools/slack.mdx @@ -123,6 +123,163 @@ Read the latest messages from Slack channels. Retrieve conversation history with | Parameter | Type | Description | | --------- | ---- | ----------- | | `messages` | array | Array of message objects from the channel | +| ↳ `type` | string | Message type | +| ↳ `ts` | string | Edit timestamp | +| ↳ `text` | string | Message text content | +| ↳ `user` | string | User ID who edited | +| ↳ `bot_id` | string | Bot ID if sent by a bot | +| ↳ `username` | string | Display username | +| ↳ `channel` | string | Channel ID | +| ↳ `team` | string | Team ID | +| ↳ `thread_ts` | string | Thread parent message timestamp | +| ↳ `parent_user_id` | string | User ID of thread parent | +| ↳ `reply_count` | number | Number of thread replies | +| ↳ `reply_users_count` | number | Number of users who replied | +| ↳ `latest_reply` | string | Timestamp of latest reply | +| ↳ `subscribed` | boolean | Whether user is subscribed to thread | +| ↳ `last_read` | string | Last read timestamp | +| ↳ `unread_count` | number | Number of unread messages | +| ↳ `subtype` | string | Message subtype | +| ↳ `reactions` | array | Array of reactions on this message | +| ↳ `name` | string | Emoji name | +| ↳ `count` | number | Number of reactions | +| ↳ `users` | array | Array of user IDs who reacted | +| ↳ `name` | string | File name | +| ↳ `count` | number | Number of reactions | +| ↳ `users` | array | Array of user IDs who reacted | +| ↳ `is_starred` | boolean | Whether message is starred | +| ↳ `pinned_to` | array | Array of channel IDs where message is pinned | +| ↳ `files` | array | Array of files attached to message | +| ↳ `id` | string | File ID | +| ↳ `name` | string | File name | +| ↳ `mimetype` | string | MIME type | +| ↳ `size` | number | File size in bytes | +| ↳ `url_private` | string | Private download URL | +| ↳ `permalink` | string | Permanent link to file | +| ↳ `mode` | string | File mode | +| ↳ `id` | string | File ID | +| ↳ `mimetype` | string | MIME type | +| ↳ `size` | number | File size in bytes | +| ↳ `url_private` | string | Private download URL | +| ↳ `permalink` | string | Permanent link to message | +| ↳ `mode` | string | File mode | +| ↳ `attachments` | array | Array of legacy attachments | +| ↳ `blocks` | array | Array of Block Kit blocks | +| ↳ `edited` | object | Edit information if message was edited | +| ↳ `user` | string | User ID who edited | +| ↳ `ts` | string | Edit timestamp | + +### `slack_get_message` + +Retrieve a specific message by its timestamp. Useful for getting a thread parent message. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `authMethod` | string | No | Authentication method: oauth or bot_token | +| `botToken` | string | No | Bot token for Custom Bot | +| `channel` | string | Yes | Slack channel ID \(e.g., C1234567890\) | +| `timestamp` | string | Yes | Message timestamp to retrieve \(e.g., 1405894322.002768\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `message` | object | The retrieved message object | +| ↳ `type` | string | Message type | +| ↳ `ts` | string | Edit timestamp | +| ↳ `text` | string | Message text content | +| ↳ `user` | string | User ID who edited | +| ↳ `bot_id` | string | Bot ID if sent by a bot | +| ↳ `username` | string | Display username | +| ↳ `channel` | string | Channel ID | +| ↳ `team` | string | Team ID | +| ↳ `thread_ts` | string | Thread parent timestamp | +| ↳ `parent_user_id` | string | User ID of thread parent | +| ↳ `reply_count` | number | Number of thread replies | +| ↳ `reply_users_count` | number | Number of users who replied | +| ↳ `latest_reply` | string | Timestamp of latest reply | +| ↳ `subtype` | string | Message subtype | +| ↳ `reactions` | array | Array of reactions on this message | +| ↳ `name` | string | Emoji name | +| ↳ `count` | number | Number of reactions | +| ↳ `users` | array | User IDs who reacted | +| ↳ `name` | string | File name | +| ↳ `count` | number | Number of reactions | +| ↳ `users` | array | User IDs who reacted | +| ↳ `is_starred` | boolean | Whether message is starred | +| ↳ `pinned_to` | array | Channel IDs where message is pinned | +| ↳ `files` | array | Files attached to message | +| ↳ `id` | string | File ID | +| ↳ `name` | string | File name | +| ↳ `mimetype` | string | MIME type | +| ↳ `size` | number | File size in bytes | +| ↳ `url_private` | string | Private download URL | +| ↳ `permalink` | string | Permanent link to file | +| ↳ `id` | string | File ID | +| ↳ `mimetype` | string | MIME type | +| ↳ `size` | number | File size in bytes | +| ↳ `url_private` | string | Private download URL | +| ↳ `permalink` | string | Permanent link to message | +| ↳ `attachments` | array | Legacy attachments | +| ↳ `blocks` | array | Block Kit blocks | +| ↳ `edited` | object | Edit information if message was edited | +| ↳ `user` | string | User ID who edited | +| ↳ `ts` | string | Edit timestamp | + +### `slack_get_thread` + +Retrieve an entire thread including the parent message and all replies. Useful for getting full conversation context. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `authMethod` | string | No | Authentication method: oauth or bot_token | +| `botToken` | string | No | Bot token for Custom Bot | +| `channel` | string | Yes | Slack channel ID \(e.g., C1234567890\) | +| `threadTs` | string | Yes | Thread timestamp \(thread_ts\) to retrieve \(e.g., 1405894322.002768\) | +| `limit` | number | No | Maximum number of messages to return \(default: 100, max: 200\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `parentMessage` | object | The thread parent message | +| ↳ `type` | string | Message type | +| ↳ `ts` | string | Message timestamp | +| ↳ `text` | string | Message text content | +| ↳ `user` | string | User ID who sent the message | +| ↳ `bot_id` | string | Bot ID if sent by a bot | +| ↳ `username` | string | Display username | +| ↳ `reply_count` | number | Total number of thread replies | +| ↳ `reply_users_count` | number | Number of users who replied | +| ↳ `latest_reply` | string | Timestamp of latest reply | +| ↳ `reactions` | array | Array of reactions on the parent message | +| ↳ `name` | string | Emoji name | +| ↳ `count` | number | Number of reactions | +| ↳ `users` | array | User IDs who reacted | +| ↳ `name` | string | File name | +| ↳ `count` | number | Number of reactions | +| ↳ `users` | array | User IDs who reacted | +| ↳ `files` | array | Files attached to the parent message | +| ↳ `id` | string | File ID | +| ↳ `name` | string | File name | +| ↳ `mimetype` | string | MIME type | +| ↳ `size` | number | File size in bytes | +| ↳ `id` | string | File ID | +| ↳ `mimetype` | string | MIME type | +| ↳ `size` | number | File size in bytes | +| `replies` | array | Array of reply messages in the thread \(excluding the parent\) | +| ↳ `ts` | string | Message timestamp | +| ↳ `text` | string | Message text content | +| ↳ `user` | string | User ID who sent the reply | +| ↳ `reactions` | array | Reactions on the reply | +| ↳ `files` | array | Files attached to the reply | +| `messages` | array | All messages in the thread \(parent + replies\) in chronological order | +| `replyCount` | number | Number of replies returned in this response | +| `hasMore` | boolean | Whether there are more messages in the thread \(pagination needed\) | ### `slack_list_channels` @@ -143,6 +300,19 @@ List all channels in a Slack workspace. Returns public and private channels the | Parameter | Type | Description | | --------- | ---- | ----------- | | `channels` | array | Array of channel objects from the workspace | +| ↳ `id` | string | Channel ID \(e.g., C1234567890\) | +| ↳ `name` | string | Channel name without # prefix | +| ↳ `is_private` | boolean | Whether the channel is private | +| ↳ `is_archived` | boolean | Whether the channel is archived | +| ↳ `is_member` | boolean | Whether the bot is a member of the channel | +| ↳ `num_members` | number | Number of members in the channel | +| ↳ `topic` | string | Channel topic | +| ↳ `purpose` | string | Channel purpose/description | +| ↳ `created` | number | Unix timestamp when channel was created | +| ↳ `creator` | string | User ID of channel creator | +| `ids` | array | Array of channel IDs for easy access | +| `names` | array | Array of channel names for easy access | +| `count` | number | Total number of channels returned | ### `slack_list_members` @@ -162,6 +332,7 @@ List all members (user IDs) in a Slack channel. Use with Get User Info to resolv | Parameter | Type | Description | | --------- | ---- | ----------- | | `members` | array | Array of user IDs who are members of the channel \(e.g., U1234567890\) | +| `count` | number | Total number of members returned | ### `slack_list_users` @@ -181,6 +352,21 @@ List all users in a Slack workspace. Returns user profiles with names and avatar | Parameter | Type | Description | | --------- | ---- | ----------- | | `users` | array | Array of user objects from the workspace | +| ↳ `id` | string | User ID \(e.g., U1234567890\) | +| ↳ `name` | string | Username \(handle\) | +| ↳ `real_name` | string | Full real name | +| ↳ `display_name` | string | Display name shown in Slack | +| ↳ `is_bot` | boolean | Whether the user is a bot | +| ↳ `is_admin` | boolean | Whether the user is a workspace admin | +| ↳ `is_owner` | boolean | Whether the user is the workspace owner | +| ↳ `deleted` | boolean | Whether the user is deactivated | +| ↳ `timezone` | string | User timezone identifier | +| ↳ `avatar` | string | URL to user avatar image | +| ↳ `status_text` | string | Custom status text | +| ↳ `status_emoji` | string | Custom status emoji | +| `ids` | array | Array of user IDs for easy access | +| `names` | array | Array of usernames for easy access | +| `count` | number | Total number of users returned | ### `slack_get_user` @@ -199,6 +385,34 @@ Get detailed information about a specific Slack user by their user ID. | Parameter | Type | Description | | --------- | ---- | ----------- | | `user` | object | Detailed user information | +| ↳ `id` | string | User ID | +| ↳ `name` | string | Username \(handle\) | +| ↳ `real_name` | string | Full real name | +| ↳ `display_name` | string | Display name shown in Slack | +| ↳ `first_name` | string | First name | +| ↳ `last_name` | string | Last name | +| ↳ `title` | string | Job title | +| ↳ `phone` | string | Phone number | +| ↳ `skype` | string | Skype handle | +| ↳ `is_bot` | boolean | Whether the user is a bot | +| ↳ `is_admin` | boolean | Whether the user is a workspace admin | +| ↳ `is_owner` | boolean | Whether the user is the workspace owner | +| ↳ `is_primary_owner` | boolean | Whether the user is the primary owner | +| ↳ `is_restricted` | boolean | Whether the user is a guest \(restricted\) | +| ↳ `is_ultra_restricted` | boolean | Whether the user is a single-channel guest | +| ↳ `deleted` | boolean | Whether the user is deactivated | +| ↳ `timezone` | string | Timezone identifier \(e.g., America/Los_Angeles\) | +| ↳ `timezone_label` | string | Human-readable timezone label | +| ↳ `timezone_offset` | number | Timezone offset in seconds from UTC | +| ↳ `avatar_24` | string | URL to 24px avatar | +| ↳ `avatar_48` | string | URL to 48px avatar | +| ↳ `avatar_72` | string | URL to 72px avatar | +| ↳ `avatar_192` | string | URL to 192px avatar | +| ↳ `avatar_512` | string | URL to 512px avatar | +| ↳ `status_text` | string | Custom status text | +| ↳ `status_emoji` | string | Custom status emoji | +| ↳ `status_expiration` | number | Unix timestamp when status expires | +| ↳ `updated` | number | Unix timestamp of last profile update | ### `slack_download` @@ -240,6 +454,9 @@ Update a message previously sent by the bot in Slack | `message` | object | Complete updated message object with all properties returned by Slack | | `content` | string | Success message | | `metadata` | object | Updated message metadata | +| ↳ `channel` | string | Channel ID | +| ↳ `timestamp` | string | Message timestamp | +| ↳ `text` | string | Updated message text | ### `slack_delete_message` @@ -260,6 +477,8 @@ Delete a message previously sent by the bot in Slack | --------- | ---- | ----------- | | `content` | string | Success message | | `metadata` | object | Deleted message metadata | +| ↳ `channel` | string | Channel ID | +| ↳ `timestamp` | string | Message timestamp | ### `slack_add_reaction` @@ -281,5 +500,8 @@ Add an emoji reaction to a Slack message | --------- | ---- | ----------- | | `content` | string | Success message | | `metadata` | object | Reaction metadata | +| ↳ `channel` | string | Channel ID | +| ↳ `timestamp` | string | Message timestamp | +| ↳ `reaction` | string | Emoji reaction name | diff --git a/apps/docs/content/docs/en/tools/spotify.mdx b/apps/docs/content/docs/en/tools/spotify.mdx index 04f823d812..6603ed741b 100644 --- a/apps/docs/content/docs/en/tools/spotify.mdx +++ b/apps/docs/content/docs/en/tools/spotify.mdx @@ -37,6 +37,17 @@ Search for tracks, albums, artists, or playlists on Spotify. Returns matching re | Parameter | Type | Description | | --------- | ---- | ----------- | | `tracks` | array | List of matching tracks | +| ↳ `id` | string | Spotify track ID | +| ↳ `name` | string | Track name | +| ↳ `artists` | array | List of artist names | +| ↳ `album` | string | Album name | +| ↳ `duration_ms` | number | Track duration in milliseconds | +| ↳ `popularity` | number | Popularity score \(0-100\) | +| ↳ `preview_url` | string | URL to 30-second preview | +| ↳ `external_url` | string | Spotify URL | +| `artists` | array | List of matching artists | +| `albums` | array | List of matching albums | +| `playlists` | array | List of matching playlists | ### `spotify_get_track` @@ -80,6 +91,15 @@ Get detailed information about multiple tracks on Spotify by their IDs (up to 50 | Parameter | Type | Description | | --------- | ---- | ----------- | | `tracks` | array | List of tracks | +| ↳ `id` | string | Spotify track ID | +| ↳ `name` | string | Track name | +| ↳ `artists` | array | List of artists | +| ↳ `album` | object | Album information | +| ↳ `duration_ms` | number | Track duration in milliseconds | +| ↳ `explicit` | boolean | Whether the track has explicit content | +| ↳ `popularity` | number | Popularity score \(0-100\) | +| ↳ `preview_url` | string | URL to 30-second preview | +| ↳ `external_url` | string | Spotify URL | ### `spotify_get_album` @@ -271,6 +291,15 @@ Get albums by an artist on Spotify. Can filter by album type. | Parameter | Type | Description | | --------- | ---- | ----------- | | `albums` | array | Artist | +| ↳ `id` | string | Spotify album ID | +| ↳ `name` | string | Album name | +| ↳ `album_type` | string | Type \(album, single, compilation\) | +| ↳ `total_tracks` | number | Number of tracks | +| ↳ `release_date` | string | Release date | +| ↳ `image_url` | string | Album cover URL | +| ↳ `external_url` | string | Spotify URL | +| `total` | number | Total number of albums available | +| `next` | string | URL for next page of results | ### `spotify_get_artist_top_tracks` @@ -288,6 +317,13 @@ Get the top 10 most popular tracks by an artist on Spotify. | Parameter | Type | Description | | --------- | ---- | ----------- | | `tracks` | array | Artist | +| ↳ `id` | string | Spotify track ID | +| ↳ `name` | string | Track name | +| ↳ `album` | object | Album information | +| ↳ `duration_ms` | number | Track duration in milliseconds | +| ↳ `popularity` | number | Popularity score \(0-100\) | +| ↳ `preview_url` | string | URL to 30-second preview | +| ↳ `external_url` | string | Spotify URL | ### `spotify_follow_artists` @@ -772,6 +808,11 @@ Get the tracks in a Spotify playlist. | Parameter | Type | Description | | --------- | ---- | ----------- | | `tracks` | array | List of tracks in the playlist | +| ↳ `added_at` | string | When the track was added | +| ↳ `added_by` | string | User ID who added the track | +| ↳ `track` | object | Track information | +| `total` | number | Total number of tracks in playlist | +| `next` | string | URL for next page of results | ### `spotify_get_playlist_cover` @@ -805,6 +846,17 @@ Get the current user | Parameter | Type | Description | | --------- | ---- | ----------- | | `playlists` | array | User | +| ↳ `id` | string | Spotify playlist ID | +| ↳ `name` | string | Playlist name | +| ↳ `description` | string | Playlist description | +| ↳ `public` | boolean | Whether public | +| ↳ `collaborative` | boolean | Whether collaborative | +| ↳ `owner` | string | Owner display name | +| ↳ `total_tracks` | number | Number of tracks | +| ↳ `image_url` | string | Cover image URL | +| ↳ `external_url` | string | Spotify URL | +| `total` | number | Total number of playlists | +| `next` | string | URL for next page | ### `spotify_create_playlist` @@ -1048,6 +1100,15 @@ Get the current user | Parameter | Type | Description | | --------- | ---- | ----------- | | `tracks` | array | User | +| ↳ `id` | string | Spotify track ID | +| ↳ `name` | string | Track name | +| ↳ `artists` | array | List of artists | +| ↳ `album` | object | Album information | +| ↳ `duration_ms` | number | Duration in milliseconds | +| ↳ `popularity` | number | Popularity score | +| ↳ `external_url` | string | Spotify URL | +| `total` | number | Total number of top tracks | +| `next` | string | URL for next page | ### `spotify_get_top_artists` @@ -1066,6 +1127,15 @@ Get the current user | Parameter | Type | Description | | --------- | ---- | ----------- | | `artists` | array | User | +| ↳ `id` | string | Spotify artist ID | +| ↳ `name` | string | Artist name | +| ↳ `genres` | array | List of genres | +| ↳ `popularity` | number | Popularity score | +| ↳ `followers` | number | Number of followers | +| ↳ `image_url` | string | Artist image URL | +| ↳ `external_url` | string | Spotify URL | +| `total` | number | Total number of top artists | +| `next` | string | URL for next page | ### `spotify_get_saved_tracks` @@ -1084,6 +1154,10 @@ Get the current user | Parameter | Type | Description | | --------- | ---- | ----------- | | `tracks` | array | User | +| ↳ `added_at` | string | When the track was saved | +| ↳ `track` | object | Track information | +| `total` | number | Total number of saved tracks | +| `next` | string | URL for next page | ### `spotify_save_tracks` @@ -1152,6 +1226,9 @@ Get the user | Parameter | Type | Description | | --------- | ---- | ----------- | | `items` | array | Recently played tracks | +| ↳ `played_at` | string | When the track was played | +| ↳ `track` | object | Track information | +| `next` | string | URL for next page | ### `spotify_get_new_releases` @@ -1261,6 +1338,13 @@ Get the user | Parameter | Type | Description | | --------- | ---- | ----------- | | `devices` | array | Available playback devices | +| ↳ `id` | string | Device ID | +| ↳ `is_active` | boolean | Whether device is active | +| ↳ `is_private_session` | boolean | Whether in private session | +| ↳ `is_restricted` | boolean | Whether device is restricted | +| ↳ `name` | string | Device name | +| ↳ `type` | string | Device type \(Computer, Smartphone, etc.\) | +| ↳ `volume_percent` | number | Current volume \(0-100\) | ### `spotify_get_queue` diff --git a/apps/docs/content/docs/en/tools/ssh.mdx b/apps/docs/content/docs/en/tools/ssh.mdx index 1f083937d2..2b0efdd23a 100644 --- a/apps/docs/content/docs/en/tools/ssh.mdx +++ b/apps/docs/content/docs/en/tools/ssh.mdx @@ -199,6 +199,14 @@ List files and directories in a remote directory | Parameter | Type | Description | | --------- | ---- | ----------- | | `entries` | array | Array of file and directory entries | +| ↳ `name` | string | File or directory name | +| ↳ `type` | string | Entry type \(file, directory, symlink\) | +| ↳ `size` | number | File size in bytes | +| ↳ `permissions` | string | File permissions | +| ↳ `modified` | string | Last modified timestamp | +| `totalFiles` | number | Total number of files | +| `totalDirectories` | number | Total number of directories | +| `message` | string | Operation status message | ### `ssh_check_file_exists` diff --git a/apps/docs/content/docs/en/tools/stagehand.mdx b/apps/docs/content/docs/en/tools/stagehand.mdx index 09585de157..889d06cf6b 100644 --- a/apps/docs/content/docs/en/tools/stagehand.mdx +++ b/apps/docs/content/docs/en/tools/stagehand.mdx @@ -79,5 +79,16 @@ Run an autonomous web agent to complete tasks and extract structured data | Parameter | Type | Description | | --------- | ---- | ----------- | | `agentResult` | object | Result from the Stagehand agent execution | +| ↳ `success` | boolean | Whether the agent task completed successfully | +| ↳ `completed` | boolean | Whether the task was fully completed | +| ↳ `message` | string | Status message or final result | +| ↳ `actions` | array | Type of action performed | +| ↳ `type` | string | Type of action performed | +| ↳ `params` | object | Parameters used for the action | +| ↳ `result` | object | Result of the action | +| ↳ `type` | string | Type of action performed | +| ↳ `params` | object | Parameters used for the action | +| ↳ `result` | object | Result of the action | +| `structuredOutput` | object | Extracted data matching the provided output schema | diff --git a/apps/docs/content/docs/en/tools/stripe.mdx b/apps/docs/content/docs/en/tools/stripe.mdx index dad24ade66..9211c281f2 100644 --- a/apps/docs/content/docs/en/tools/stripe.mdx +++ b/apps/docs/content/docs/en/tools/stripe.mdx @@ -61,6 +61,10 @@ Create a new Payment Intent to process a payment | --------- | ---- | ----------- | | `payment_intent` | json | The created Payment Intent object | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_retrieve_payment_intent` @@ -79,6 +83,10 @@ Retrieve an existing Payment Intent by ID | --------- | ---- | ----------- | | `payment_intent` | json | The retrieved Payment Intent object | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_update_payment_intent` @@ -102,6 +110,10 @@ Update an existing Payment Intent | --------- | ---- | ----------- | | `payment_intent` | json | The updated Payment Intent object | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_confirm_payment_intent` @@ -121,6 +133,10 @@ Confirm a Payment Intent to complete the payment | --------- | ---- | ----------- | | `payment_intent` | json | The confirmed Payment Intent object | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_capture_payment_intent` @@ -140,6 +156,10 @@ Capture an authorized Payment Intent | --------- | ---- | ----------- | | `payment_intent` | json | The captured Payment Intent object | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_cancel_payment_intent` @@ -159,6 +179,10 @@ Cancel a Payment Intent | --------- | ---- | ----------- | | `payment_intent` | json | The canceled Payment Intent object | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_list_payment_intents` @@ -179,6 +203,8 @@ List all Payment Intents | --------- | ---- | ----------- | | `payment_intents` | json | Array of Payment Intent objects | | `metadata` | json | List metadata including count and has_more | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_search_payment_intents` @@ -198,6 +224,8 @@ Search for Payment Intents using query syntax | --------- | ---- | ----------- | | `payment_intents` | json | Array of matching Payment Intent objects | | `metadata` | json | Search metadata including count and has_more | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_create_customer` @@ -222,6 +250,9 @@ Create a new customer object | --------- | ---- | ----------- | | `customer` | json | The created customer object | | `metadata` | json | Customer metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `email` | string | Customer email address | +| ↳ `name` | string | Display name | ### `stripe_retrieve_customer` @@ -240,6 +271,9 @@ Retrieve an existing customer by ID | --------- | ---- | ----------- | | `customer` | json | The retrieved customer object | | `metadata` | json | Customer metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `email` | string | Customer email address | +| ↳ `name` | string | Display name | ### `stripe_update_customer` @@ -264,6 +298,9 @@ Update an existing customer | --------- | ---- | ----------- | | `customer` | json | The updated customer object | | `metadata` | json | Customer metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `email` | string | Customer email address | +| ↳ `name` | string | Display name | ### `stripe_delete_customer` @@ -302,6 +339,8 @@ List all customers | --------- | ---- | ----------- | | `customers` | json | Array of customer objects | | `metadata` | json | List metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_search_customers` @@ -321,6 +360,8 @@ Search for customers using query syntax | --------- | ---- | ----------- | | `customers` | json | Array of matching customer objects | | `metadata` | json | Search metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_create_subscription` @@ -344,6 +385,9 @@ Create a new subscription for a customer | --------- | ---- | ----------- | | `subscription` | json | The created subscription object | | `metadata` | json | Subscription metadata including ID, status, and customer | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `customer` | string | Associated customer ID | ### `stripe_retrieve_subscription` @@ -362,6 +406,9 @@ Retrieve an existing subscription by ID | --------- | ---- | ----------- | | `subscription` | json | The retrieved subscription object | | `metadata` | json | Subscription metadata including ID, status, and customer | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `customer` | string | Associated customer ID | ### `stripe_update_subscription` @@ -383,6 +430,9 @@ Update an existing subscription | --------- | ---- | ----------- | | `subscription` | json | The updated subscription object | | `metadata` | json | Subscription metadata including ID, status, and customer | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `customer` | string | Associated customer ID | ### `stripe_cancel_subscription` @@ -403,6 +453,9 @@ Cancel a subscription | --------- | ---- | ----------- | | `subscription` | json | The canceled subscription object | | `metadata` | json | Subscription metadata including ID, status, and customer | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `customer` | string | Associated customer ID | ### `stripe_resume_subscription` @@ -421,6 +474,9 @@ Resume a subscription that was scheduled for cancellation | --------- | ---- | ----------- | | `subscription` | json | The resumed subscription object | | `metadata` | json | Subscription metadata including ID, status, and customer | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `customer` | string | Associated customer ID | ### `stripe_list_subscriptions` @@ -442,6 +498,8 @@ List all subscriptions | --------- | ---- | ----------- | | `subscriptions` | json | Array of subscription objects | | `metadata` | json | List metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_search_subscriptions` @@ -461,6 +519,8 @@ Search for subscriptions using query syntax | --------- | ---- | ----------- | | `subscriptions` | json | Array of matching subscription objects | | `metadata` | json | Search metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_create_invoice` @@ -483,6 +543,10 @@ Create a new invoice | --------- | ---- | ----------- | | `invoice` | json | The created invoice object | | `metadata` | json | Invoice metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_retrieve_invoice` @@ -501,6 +565,10 @@ Retrieve an existing invoice by ID | --------- | ---- | ----------- | | `invoice` | json | The retrieved invoice object | | `metadata` | json | Invoice metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_update_invoice` @@ -522,6 +590,10 @@ Update an existing invoice | --------- | ---- | ----------- | | `invoice` | json | The updated invoice object | | `metadata` | json | Invoice metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_delete_invoice` @@ -559,6 +631,10 @@ Finalize a draft invoice | --------- | ---- | ----------- | | `invoice` | json | The finalized invoice object | | `metadata` | json | Invoice metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_pay_invoice` @@ -578,6 +654,10 @@ Pay an invoice | --------- | ---- | ----------- | | `invoice` | json | The paid invoice object | | `metadata` | json | Invoice metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_void_invoice` @@ -596,6 +676,10 @@ Void an invoice | --------- | ---- | ----------- | | `invoice` | json | The voided invoice object | | `metadata` | json | Invoice metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_send_invoice` @@ -614,6 +698,10 @@ Send an invoice to the customer | --------- | ---- | ----------- | | `invoice` | json | The sent invoice object | | `metadata` | json | Invoice metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_list_invoices` @@ -634,6 +722,8 @@ List all invoices | --------- | ---- | ----------- | | `invoices` | json | Array of invoice objects | | `metadata` | json | List metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_search_invoices` @@ -653,6 +743,8 @@ Search for invoices using query syntax | --------- | ---- | ----------- | | `invoices` | json | Array of matching invoice objects | | `metadata` | json | Search metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_create_charge` @@ -677,6 +769,11 @@ Create a new charge to process a payment | --------- | ---- | ----------- | | `charge` | json | The created Charge object | | `metadata` | json | Charge metadata including ID, status, amount, currency, and paid status | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | +| ↳ `paid` | boolean | Whether payment has been received | ### `stripe_retrieve_charge` @@ -695,6 +792,11 @@ Retrieve an existing charge by ID | --------- | ---- | ----------- | | `charge` | json | The retrieved Charge object | | `metadata` | json | Charge metadata including ID, status, amount, currency, and paid status | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | +| ↳ `paid` | boolean | Whether payment has been received | ### `stripe_update_charge` @@ -715,6 +817,11 @@ Update an existing charge | --------- | ---- | ----------- | | `charge` | json | The updated Charge object | | `metadata` | json | Charge metadata including ID, status, amount, currency, and paid status | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | +| ↳ `paid` | boolean | Whether payment has been received | ### `stripe_capture_charge` @@ -734,6 +841,11 @@ Capture an uncaptured charge | --------- | ---- | ----------- | | `charge` | json | The captured Charge object | | `metadata` | json | Charge metadata including ID, status, amount, currency, and paid status | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `status` | string | Current state of the resource | +| ↳ `amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | +| ↳ `paid` | boolean | Whether payment has been received | ### `stripe_list_charges` @@ -754,6 +866,8 @@ List all charges | --------- | ---- | ----------- | | `charges` | json | Array of Charge objects | | `metadata` | json | List metadata including count and has_more | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_search_charges` @@ -773,6 +887,8 @@ Search for charges using query syntax | --------- | ---- | ----------- | | `charges` | json | Array of matching Charge objects | | `metadata` | json | Search metadata including count and has_more | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_create_product` @@ -795,6 +911,9 @@ Create a new product object | --------- | ---- | ----------- | | `product` | json | The created product object | | `metadata` | json | Product metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `name` | string | Display name | +| ↳ `active` | boolean | Whether the resource is currently active | ### `stripe_retrieve_product` @@ -813,6 +932,9 @@ Retrieve an existing product by ID | --------- | ---- | ----------- | | `product` | json | The retrieved product object | | `metadata` | json | Product metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `name` | string | Display name | +| ↳ `active` | boolean | Whether the resource is currently active | ### `stripe_update_product` @@ -836,6 +958,9 @@ Update an existing product | --------- | ---- | ----------- | | `product` | json | The updated product object | | `metadata` | json | Product metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `name` | string | Display name | +| ↳ `active` | boolean | Whether the resource is currently active | ### `stripe_delete_product` @@ -873,6 +998,8 @@ List all products | --------- | ---- | ----------- | | `products` | json | Array of product objects | | `metadata` | json | List metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_search_products` @@ -892,6 +1019,8 @@ Search for products using query syntax | --------- | ---- | ----------- | | `products` | json | Array of matching product objects | | `metadata` | json | Search metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_create_price` @@ -915,6 +1044,10 @@ Create a new price for a product | --------- | ---- | ----------- | | `price` | json | The created price object | | `metadata` | json | Price metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `product` | string | Associated product ID | +| ↳ `unit_amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_retrieve_price` @@ -933,6 +1066,10 @@ Retrieve an existing price by ID | --------- | ---- | ----------- | | `price` | json | The retrieved price object | | `metadata` | json | Price metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `product` | string | Associated product ID | +| ↳ `unit_amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_update_price` @@ -953,6 +1090,10 @@ Update an existing price | --------- | ---- | ----------- | | `price` | json | The updated price object | | `metadata` | json | Price metadata | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `product` | string | Associated product ID | +| ↳ `unit_amount` | number | Amount in smallest currency unit \(e.g., cents\) | +| ↳ `currency` | string | Three-letter ISO currency code \(lowercase\) | ### `stripe_list_prices` @@ -973,6 +1114,8 @@ List all prices | --------- | ---- | ----------- | | `prices` | json | Array of price objects | | `metadata` | json | List metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_search_prices` @@ -992,6 +1135,8 @@ Search for prices using query syntax | --------- | ---- | ----------- | | `prices` | json | Array of matching price objects | | `metadata` | json | Search metadata | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | ### `stripe_retrieve_event` @@ -1010,6 +1155,9 @@ Retrieve an existing Event by ID | --------- | ---- | ----------- | | `event` | json | The retrieved Event object | | `metadata` | json | Event metadata including ID, type, and created timestamp | +| ↳ `id` | string | Stripe unique identifier | +| ↳ `type` | string | Event type identifier | +| ↳ `created` | number | Unix timestamp of creation | ### `stripe_list_events` @@ -1030,5 +1178,7 @@ List all Events | --------- | ---- | ----------- | | `events` | json | Array of Event objects | | `metadata` | json | List metadata including count and has_more | +| ↳ `count` | number | Number of items returned | +| ↳ `has_more` | boolean | Whether more items exist beyond this page | diff --git a/apps/docs/content/docs/en/tools/supabase.mdx b/apps/docs/content/docs/en/tools/supabase.mdx index 5249cdbdbf..a97307d950 100644 --- a/apps/docs/content/docs/en/tools/supabase.mdx +++ b/apps/docs/content/docs/en/tools/supabase.mdx @@ -279,6 +279,13 @@ Introspect Supabase database schema to get table structures, columns, and relati | --------- | ---- | ----------- | | `message` | string | Operation status message | | `tables` | array | Array of table schemas with columns, keys, and indexes | +| ↳ `name` | string | Table name | +| ↳ `schema` | string | Database schema name | +| ↳ `columns` | array | Array of column definitions | +| ↳ `primaryKey` | array | Array of primary key column names | +| ↳ `foreignKeys` | array | Array of foreign key relationships | +| ↳ `indexes` | array | Array of index definitions | +| `schemas` | array | List of schemas found in the database | ### `supabase_storage_upload` diff --git a/apps/docs/content/docs/en/tools/tavily.mdx b/apps/docs/content/docs/en/tools/tavily.mdx index dbf8bb1b77..46af213ab0 100644 --- a/apps/docs/content/docs/en/tools/tavily.mdx +++ b/apps/docs/content/docs/en/tools/tavily.mdx @@ -65,7 +65,11 @@ Perform AI-powered web searches using Tavily | Parameter | Type | Description | | --------- | ---- | ----------- | | `query` | string | The search query that was executed | -| `results` | array | results output from the tool | +| `results` | array | Search results with titles, URLs, content snippets, and optional metadata | +| `answer` | string | LLM-generated answer to the query \(if requested\) | +| `images` | array | Query-related images \(if requested\) | +| `auto_parameters` | object | Automatically selected parameters based on query intent \(if enabled\) | +| `response_time` | number | Time taken for the search request in seconds | ### `tavily_extract` @@ -87,6 +91,13 @@ Extract raw content from multiple web pages simultaneously using Tavily | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | The URL that was extracted | +| ↳ `url` | string | The URL that was extracted | +| ↳ `raw_content` | string | The raw text content from the webpage | +| ↳ `favicon` | string | Favicon URL \(if requested\) | +| `failed_results` | array | The URL that failed extraction | +| ↳ `url` | string | The URL that failed extraction | +| ↳ `error` | string | Error message for the failed extraction | +| `response_time` | number | Time taken for the extraction request in seconds | ### `tavily_crawl` @@ -118,6 +129,11 @@ Systematically crawl and extract content from websites using Tavily | --------- | ---- | ----------- | | `base_url` | string | The base URL that was crawled | | `results` | array | The crawled page URL | +| ↳ `url` | string | The crawled page URL | +| ↳ `raw_content` | string | Extracted content from the page | +| ↳ `favicon` | string | Favicon URL \(if requested\) | +| `response_time` | number | Time taken for the crawl request in seconds | +| `request_id` | string | Unique identifier for support reference | ### `tavily_map` @@ -145,5 +161,8 @@ Discover and visualize website structure using Tavily | --------- | ---- | ----------- | | `base_url` | string | The base URL that was mapped | | `results` | array | Discovered URL | +| ↳ `url` | string | Discovered URL | +| `response_time` | number | Time taken for the map request in seconds | +| `request_id` | string | Unique identifier for support reference | diff --git a/apps/docs/content/docs/en/tools/telegram.mdx b/apps/docs/content/docs/en/tools/telegram.mdx index 9955078ce6..769a6993f8 100644 --- a/apps/docs/content/docs/en/tools/telegram.mdx +++ b/apps/docs/content/docs/en/tools/telegram.mdx @@ -76,6 +76,24 @@ Send messages to Telegram channels or users through the Telegram Bot API. Enable | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Telegram message data | +| ↳ `message_id` | number | Unique Telegram message identifier | +| ↳ `from` | object | Chat information | +| ↳ `id` | number | Chat ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Chat username \(if available\) | +| ↳ `username` | string | Chat title \(for groups and channels\) | +| ↳ `id` | number | Bot user ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Bot first name | +| ↳ `username` | string | Bot username | +| ↳ `chat` | object | Information about the bot that sent the message | +| ↳ `id` | number | Bot user ID | +| ↳ `first_name` | string | Bot first name | +| ↳ `username` | string | Bot username | +| ↳ `type` | string | chat type private or channel | +| ↳ `type` | string | chat type private or channel | +| ↳ `date` | number | Unix timestamp when message was sent | +| ↳ `text` | string | Text content of the sent message | ### `telegram_delete_message` @@ -95,6 +113,8 @@ Delete messages in Telegram channels or chats through the Telegram Bot API. Requ | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Delete operation result | +| ↳ `ok` | boolean | API response success status | +| ↳ `deleted` | boolean | Whether the message was successfully deleted | ### `telegram_send_photo` @@ -115,6 +135,35 @@ Send photos to Telegram channels or users through the Telegram Bot API. | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Telegram message data including optional photo\(s\) | +| ↳ `message_id` | number | Unique Telegram message identifier | +| ↳ `from` | object | Chat information | +| ↳ `id` | number | Chat ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Chat username \(if available\) | +| ↳ `username` | string | Chat title \(for groups and channels\) | +| ↳ `id` | number | Bot user ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Bot first name | +| ↳ `username` | string | Bot username | +| ↳ `chat` | object | Information about the bot that sent the message | +| ↳ `id` | number | Bot user ID | +| ↳ `first_name` | string | Bot first name | +| ↳ `username` | string | Bot username | +| ↳ `type` | string | Chat type \(private, group, supergroup, channel\) | +| ↳ `type` | string | Chat type \(private, group, supergroup, channel\) | +| ↳ `date` | number | Unix timestamp when message was sent | +| ↳ `text` | string | Text content of the sent message \(if applicable\) | +| ↳ `photo` | array | List of photos included in the message | +| ↳ `file_id` | string | Unique file ID of the photo | +| ↳ `file_unique_id` | string | Unique identifier for this file across different bots | +| ↳ `file_size` | number | Size of the photo file in bytes | +| ↳ `width` | number | Photo width in pixels | +| ↳ `height` | number | Photo height in pixels | +| ↳ `file_id` | string | Unique file ID of the photo | +| ↳ `file_unique_id` | string | Unique identifier for this file across different bots | +| ↳ `file_size` | number | Size of the photo file in bytes | +| ↳ `width` | number | Photo width in pixels | +| ↳ `height` | number | Photo height in pixels | ### `telegram_send_video` @@ -135,6 +184,85 @@ Send videos to Telegram channels or users through the Telegram Bot API. | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Telegram message data including optional media | +| ↳ `message_id` | number | Unique Telegram message identifier | +| ↳ `from` | object | Information about the sender | +| ↳ `id` | number | Sender ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Sender | +| ↳ `username` | string | Sender | +| ↳ `id` | number | Chat ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Chat first name \(if private chat\) | +| ↳ `username` | string | Chat username \(for private or channels\) | +| ↳ `chat` | object | Information about the chat where message was sent | +| ↳ `id` | number | Chat ID | +| ↳ `first_name` | string | Chat first name \(if private chat\) | +| ↳ `username` | string | Chat username \(for private or channels\) | +| ↳ `type` | string | Type of chat \(private, group, supergroup, or channel\) | +| ↳ `type` | string | Type of chat \(private, group, supergroup, or channel\) | +| ↳ `date` | number | Unix timestamp when the message was sent | +| ↳ `text` | string | Text content of the sent message \(if applicable\) | +| ↳ `format` | object | Media format information \(for videos, GIFs, etc.\) | +| ↳ `file_name` | string | Media file name | +| ↳ `mime_type` | string | Media MIME type | +| ↳ `duration` | number | Duration of media in seconds | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `thumbnail` | object | Thumbnail image details | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `file_id` | string | Media file ID | +| ↳ `file_unique_id` | string | Unique media file identifier | +| ↳ `file_size` | number | Size of media file in bytes | +| ↳ `thumb` | object | Secondary thumbnail details \(duplicate of thumbnail\) | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `file_name` | string | Document file name | +| ↳ `mime_type` | string | Document MIME type | +| ↳ `duration` | number | Duration of media in seconds | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `thumbnail` | object | Document thumbnail information | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `file_id` | string | Document file ID | +| ↳ `file_unique_id` | string | Unique document file identifier | +| ↳ `file_size` | number | Size of document file in bytes | +| ↳ `thumb` | object | Duplicate thumbnail info \(used for compatibility\) | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `document` | object | Document file details if the message contains a document | +| ↳ `file_name` | string | Document file name | +| ↳ `mime_type` | string | Document MIME type | +| ↳ `thumbnail` | object | Document thumbnail information | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `file_id` | string | Document file ID | +| ↳ `file_unique_id` | string | Unique document file identifier | +| ↳ `file_size` | number | Size of document file in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `thumb` | object | Duplicate thumbnail info \(used for compatibility\) | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | ### `telegram_send_audio` @@ -155,6 +283,41 @@ Send audio files to Telegram channels or users through the Telegram Bot API. | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Telegram message data including voice/audio information | +| ↳ `message_id` | number | Unique Telegram message identifier | +| ↳ `from` | object | Information about the sender | +| ↳ `id` | number | Sender ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Sender | +| ↳ `username` | string | Sender | +| ↳ `id` | number | Chat ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Chat first name \(if private chat\) | +| ↳ `username` | string | Chat username \(for private or channels\) | +| ↳ `chat` | object | Information about the chat where the message was sent | +| ↳ `id` | number | Chat ID | +| ↳ `first_name` | string | Chat first name \(if private chat\) | +| ↳ `username` | string | Chat username \(for private or channels\) | +| ↳ `type` | string | Type of chat \(private, group, supergroup, or channel\) | +| ↳ `type` | string | Type of chat \(private, group, supergroup, or channel\) | +| ↳ `date` | number | Unix timestamp when the message was sent | +| ↳ `text` | string | Text content of the sent message \(if applicable\) | +| ↳ `audio` | object | Audio file details | +| ↳ `duration` | number | Duration of the audio in seconds | +| ↳ `performer` | string | Performer of the audio | +| ↳ `title` | string | Title of the audio | +| ↳ `file_name` | string | Original filename of the audio | +| ↳ `mime_type` | string | MIME type of the audio file | +| ↳ `file_id` | string | Unique file identifier for this audio | +| ↳ `file_unique_id` | string | Unique identifier across different bots for this file | +| ↳ `file_size` | number | Size of the audio file in bytes | +| ↳ `duration` | number | Duration of the audio in seconds | +| ↳ `performer` | string | Performer of the audio | +| ↳ `title` | string | Title of the audio | +| ↳ `file_name` | string | Original filename of the audio | +| ↳ `mime_type` | string | MIME type of the audio file | +| ↳ `file_id` | string | Unique file identifier for this audio | +| ↳ `file_unique_id` | string | Unique identifier across different bots for this file | +| ↳ `file_size` | number | Size of the audio file in bytes | ### `telegram_send_animation` @@ -175,6 +338,85 @@ Send animations (GIFs) to Telegram channels or users through the Telegram Bot AP | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Telegram message data including optional media | +| ↳ `message_id` | number | Unique Telegram message identifier | +| ↳ `from` | object | Information about the sender | +| ↳ `id` | number | Sender ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Sender | +| ↳ `username` | string | Sender | +| ↳ `id` | number | Chat ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Chat first name \(if private chat\) | +| ↳ `username` | string | Chat username \(for private or channels\) | +| ↳ `chat` | object | Information about the chat where message was sent | +| ↳ `id` | number | Chat ID | +| ↳ `first_name` | string | Chat first name \(if private chat\) | +| ↳ `username` | string | Chat username \(for private or channels\) | +| ↳ `type` | string | Type of chat \(private, group, supergroup, or channel\) | +| ↳ `type` | string | Type of chat \(private, group, supergroup, or channel\) | +| ↳ `date` | number | Unix timestamp when the message was sent | +| ↳ `text` | string | Text content of the sent message \(if applicable\) | +| ↳ `format` | object | Media format information \(for videos, GIFs, etc.\) | +| ↳ `file_name` | string | Media file name | +| ↳ `mime_type` | string | Media MIME type | +| ↳ `duration` | number | Duration of media in seconds | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `thumbnail` | object | Thumbnail image details | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `file_id` | string | Media file ID | +| ↳ `file_unique_id` | string | Unique media file identifier | +| ↳ `file_size` | number | Size of media file in bytes | +| ↳ `thumb` | object | Secondary thumbnail details \(duplicate of thumbnail\) | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `file_name` | string | Document file name | +| ↳ `mime_type` | string | Document MIME type | +| ↳ `duration` | number | Duration of media in seconds | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `thumbnail` | object | Document thumbnail information | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `file_id` | string | Document file ID | +| ↳ `file_unique_id` | string | Unique document file identifier | +| ↳ `file_size` | number | Size of document file in bytes | +| ↳ `thumb` | object | Duplicate thumbnail info \(used for compatibility\) | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `document` | object | Document file details if the message contains a document | +| ↳ `file_name` | string | Document file name | +| ↳ `mime_type` | string | Document MIME type | +| ↳ `thumbnail` | object | Document thumbnail information | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `file_id` | string | Document file ID | +| ↳ `file_unique_id` | string | Unique document file identifier | +| ↳ `file_size` | number | Size of document file in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | +| ↳ `thumb` | object | Duplicate thumbnail info \(used for compatibility\) | +| ↳ `file_id` | string | Thumbnail file ID | +| ↳ `file_unique_id` | string | Unique thumbnail file identifier | +| ↳ `file_size` | number | Thumbnail file size in bytes | +| ↳ `width` | number | Thumbnail width in pixels | +| ↳ `height` | number | Thumbnail height in pixels | ### `telegram_send_document` @@ -195,5 +437,33 @@ Send documents (PDF, ZIP, DOC, etc.) to Telegram channels or users through the T | --------- | ---- | ----------- | | `message` | string | Success or error message | | `data` | object | Telegram message data including document | +| ↳ `message_id` | number | Unique Telegram message identifier | +| ↳ `from` | object | Information about the sender | +| ↳ `id` | number | Sender ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Sender | +| ↳ `username` | string | Sender | +| ↳ `id` | number | Chat ID | +| ↳ `is_bot` | boolean | Whether the chat is a bot or not | +| ↳ `first_name` | string | Chat first name \(if private chat\) | +| ↳ `username` | string | Chat username \(for private or channels\) | +| ↳ `chat` | object | Information about the chat where message was sent | +| ↳ `id` | number | Chat ID | +| ↳ `first_name` | string | Chat first name \(if private chat\) | +| ↳ `username` | string | Chat username \(for private or channels\) | +| ↳ `type` | string | Type of chat \(private, group, supergroup, or channel\) | +| ↳ `type` | string | Type of chat \(private, group, supergroup, or channel\) | +| ↳ `date` | number | Unix timestamp when the message was sent | +| ↳ `document` | object | Document file details | +| ↳ `file_name` | string | Document file name | +| ↳ `mime_type` | string | Document MIME type | +| ↳ `file_id` | string | Document file ID | +| ↳ `file_unique_id` | string | Unique document file identifier | +| ↳ `file_size` | number | Size of document file in bytes | +| ↳ `file_name` | string | Document file name | +| ↳ `mime_type` | string | Document MIME type | +| ↳ `file_id` | string | Document file ID | +| ↳ `file_unique_id` | string | Unique document file identifier | +| ↳ `file_size` | number | Size of document file in bytes | diff --git a/apps/docs/content/docs/en/tools/tinybird.mdx b/apps/docs/content/docs/en/tools/tinybird.mdx new file mode 100644 index 0000000000..e35bddbed3 --- /dev/null +++ b/apps/docs/content/docs/en/tools/tinybird.mdx @@ -0,0 +1,65 @@ +--- +title: Tinybird +description: Send events and query data with Tinybird +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +## Usage Instructions + +Interact with Tinybird using the Events API to stream JSON or NDJSON events, or use the Query API to execute SQL queries against Pipes and Data Sources. + + + +## Tools + +### `tinybird_events` + +Send events to a Tinybird Data Source using the Events API. Supports JSON and NDJSON formats with optional gzip compression. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `base_url` | string | Yes | Tinybird API base URL \(e.g., https://api.tinybird.co or https://api.us-east.tinybird.co\) | +| `datasource` | string | Yes | Name of the Tinybird Data Source to send events to | +| `data` | string | Yes | Data to send as NDJSON \(newline-delimited JSON\) or JSON string. Each event should be a valid JSON object. | +| `wait` | boolean | No | Wait for database acknowledgment before responding. Enables safer retries but introduces latency. Defaults to false. | +| `format` | string | No | Format of the events data: "ndjson" \(default\) or "json" | +| `compression` | string | No | Compression format: "none" \(default\) or "gzip" | +| `token` | string | Yes | Tinybird API Token with DATASOURCE:APPEND or DATASOURCE:CREATE scope | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `successful_rows` | number | Number of rows successfully ingested | +| `quarantined_rows` | number | Number of rows quarantined \(failed validation\) | + +### `tinybird_query` + +Execute SQL queries against Tinybird Pipes and Data Sources using the Query API. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `base_url` | string | Yes | Tinybird API base URL \(e.g., https://api.tinybird.co\) | +| `query` | string | Yes | SQL query to execute. Specify your desired output format \(e.g., FORMAT JSON, FORMAT CSV, FORMAT TSV\). JSON format provides structured data, while other formats return raw text. | +| `pipeline` | string | No | Optional pipe name. When provided, enables SELECT * FROM _ syntax | +| `token` | string | Yes | Tinybird API Token with PIPE:READ scope | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `data` | json | Query result data. For FORMAT JSON: array of objects. For other formats \(CSV, TSV, etc.\): raw text string. | +| `rows` | number | Number of rows returned \(only available with FORMAT JSON\) | +| `statistics` | json | Query execution statistics - elapsed time, rows read, bytes read \(only available with FORMAT JSON\) | + + diff --git a/apps/docs/content/docs/en/tools/typeform.mdx b/apps/docs/content/docs/en/tools/typeform.mdx index 7a2d918e23..fb96d861a6 100644 --- a/apps/docs/content/docs/en/tools/typeform.mdx +++ b/apps/docs/content/docs/en/tools/typeform.mdx @@ -94,6 +94,33 @@ Retrieve insights and analytics for Typeform forms | Parameter | Type | Description | | --------- | ---- | ----------- | | `fields` | array | Number of users who dropped off at this field | +| ↳ `dropoffs` | number | Number of users who dropped off at this field | +| ↳ `id` | string | Unique field ID | +| ↳ `label` | string | Field label | +| ↳ `ref` | string | Field reference name | +| ↳ `title` | string | Field title/question | +| ↳ `type` | string | Field type \(e.g., short_text, multiple_choice\) | +| ↳ `views` | number | Number of times this field was viewed | +| `form` | object | Average completion time for this platform | +| ↳ `platforms` | array | Average completion time for this platform | +| ↳ `average_time` | number | Average completion time for this platform | +| ↳ `completion_rate` | number | Completion rate for this platform | +| ↳ `platform` | string | Platform name \(e.g., desktop, mobile\) | +| ↳ `responses_count` | number | Number of responses from this platform | +| ↳ `total_visits` | number | Total visits from this platform | +| ↳ `unique_visits` | number | Unique visits from this platform | +| ↳ `average_time` | number | Overall average completion time | +| ↳ `completion_rate` | number | Overall completion rate | +| ↳ `platform` | string | Platform name \(e.g., desktop, mobile\) | +| ↳ `responses_count` | number | Total number of responses | +| ↳ `total_visits` | number | Total number of visits | +| ↳ `unique_visits` | number | Total number of unique visits | +| ↳ `summary` | object | Overall average completion time | +| ↳ `average_time` | number | Overall average completion time | +| ↳ `completion_rate` | number | Overall completion rate | +| ↳ `responses_count` | number | Total number of responses | +| ↳ `total_visits` | number | Total number of visits | +| ↳ `unique_visits` | number | Total number of unique visits | ### `typeform_list_forms` diff --git a/apps/docs/content/docs/en/tools/vision.mdx b/apps/docs/content/docs/en/tools/vision.mdx index ade454f419..0fb8de44e7 100644 --- a/apps/docs/content/docs/en/tools/vision.mdx +++ b/apps/docs/content/docs/en/tools/vision.mdx @@ -55,5 +55,8 @@ Process and analyze images using advanced vision models. Capable of understandin | `model` | string | The vision model that was used for analysis | | `tokens` | number | Total tokens used for the analysis | | `usage` | object | Detailed token usage breakdown | +| ↳ `input_tokens` | number | Tokens used for input processing | +| ↳ `output_tokens` | number | Tokens used for response generation | +| ↳ `total_tokens` | number | Total tokens consumed | diff --git a/apps/docs/content/docs/en/tools/wealthbox.mdx b/apps/docs/content/docs/en/tools/wealthbox.mdx index b1e5514985..84c43a5a7a 100644 --- a/apps/docs/content/docs/en/tools/wealthbox.mdx +++ b/apps/docs/content/docs/en/tools/wealthbox.mdx @@ -50,6 +50,15 @@ Read content from a Wealthbox note | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Note data and metadata | +| ↳ `content` | string | Formatted note information | +| ↳ `note` | object | Raw note data from Wealthbox | +| ↳ `metadata` | object | Operation metadata | +| ↳ `itemId` | string | ID of the note | +| ↳ `noteId` | string | ID of the note | +| ↳ `itemType` | string | Type of item \(note\) | +| ↳ `itemId` | string | ID of the note | +| ↳ `noteId` | string | ID of the note | +| ↳ `itemType` | string | Type of item \(note\) | ### `wealthbox_write_note` @@ -68,6 +77,15 @@ Create or update a Wealthbox note | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created or updated note data and metadata | +| ↳ `note` | object | Raw note data from Wealthbox | +| ↳ `success` | boolean | Operation success indicator | +| ↳ `metadata` | object | Operation metadata | +| ↳ `itemId` | string | ID of the created/updated note | +| ↳ `noteId` | string | ID of the created/updated note | +| ↳ `itemType` | string | Type of item \(note\) | +| ↳ `itemId` | string | ID of the created/updated note | +| ↳ `noteId` | string | ID of the created/updated note | +| ↳ `itemType` | string | Type of item \(note\) | ### `wealthbox_read_contact` @@ -85,6 +103,15 @@ Read content from a Wealthbox contact | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Contact data and metadata | +| ↳ `content` | string | Formatted contact information | +| ↳ `contact` | object | Raw contact data from Wealthbox | +| ↳ `metadata` | object | Operation metadata | +| ↳ `itemId` | string | ID of the contact | +| ↳ `contactId` | string | ID of the contact | +| ↳ `itemType` | string | Type of item \(contact\) | +| ↳ `itemId` | string | ID of the contact | +| ↳ `contactId` | string | ID of the contact | +| ↳ `itemType` | string | Type of item \(contact\) | ### `wealthbox_write_contact` @@ -105,6 +132,15 @@ Create a new Wealthbox contact | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created or updated contact data and metadata | +| ↳ `contact` | object | Raw contact data from Wealthbox | +| ↳ `success` | boolean | Operation success indicator | +| ↳ `metadata` | object | Operation metadata | +| ↳ `itemId` | string | ID of the created/updated contact | +| ↳ `contactId` | string | ID of the created/updated contact | +| ↳ `itemType` | string | Type of item \(contact\) | +| ↳ `itemId` | string | ID of the created/updated contact | +| ↳ `contactId` | string | ID of the created/updated contact | +| ↳ `itemType` | string | Type of item \(contact\) | ### `wealthbox_read_task` @@ -122,6 +158,15 @@ Read content from a Wealthbox task | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Task data and metadata | +| ↳ `content` | string | Formatted task information | +| ↳ `task` | object | Raw task data from Wealthbox | +| ↳ `metadata` | object | Operation metadata | +| ↳ `itemId` | string | ID of the task | +| ↳ `taskId` | string | ID of the task | +| ↳ `itemType` | string | Type of item \(task\) | +| ↳ `itemId` | string | ID of the task | +| ↳ `taskId` | string | ID of the task | +| ↳ `itemType` | string | Type of item \(task\) | ### `wealthbox_write_task` @@ -142,5 +187,14 @@ Create or update a Wealthbox task | --------- | ---- | ----------- | | `success` | boolean | Operation success status | | `output` | object | Created or updated task data and metadata | +| ↳ `task` | object | Raw task data from Wealthbox | +| ↳ `success` | boolean | Operation success indicator | +| ↳ `metadata` | object | Operation metadata | +| ↳ `itemId` | string | ID of the created/updated task | +| ↳ `taskId` | string | ID of the created/updated task | +| ↳ `itemType` | string | Type of item \(task\) | +| ↳ `itemId` | string | ID of the created/updated task | +| ↳ `taskId` | string | ID of the created/updated task | +| ↳ `itemType` | string | Type of item \(task\) | diff --git a/apps/docs/content/docs/en/tools/wikipedia.mdx b/apps/docs/content/docs/en/tools/wikipedia.mdx index 8a02918d9e..b632fc786f 100644 --- a/apps/docs/content/docs/en/tools/wikipedia.mdx +++ b/apps/docs/content/docs/en/tools/wikipedia.mdx @@ -47,6 +47,12 @@ Get a summary and metadata for a specific Wikipedia page. | Parameter | Type | Description | | --------- | ---- | ----------- | | `summary` | object | Wikipedia page summary and metadata | +| ↳ `title` | string | Page title | +| ↳ `extract` | string | Page extract/summary text | +| ↳ `description` | string | Short page description | +| ↳ `thumbnail` | object | Thumbnail image data | +| ↳ `content_urls` | object | URLs to access the page | +| ↳ `pageid` | number | Wikipedia page ID | ### `wikipedia_search` @@ -64,6 +70,8 @@ Search for Wikipedia pages by title or content. | Parameter | Type | Description | | --------- | ---- | ----------- | | `searchResults` | array | Array of matching Wikipedia pages | +| `totalHits` | number | Total number of search results found | +| `query` | string | The search query that was executed | ### `wikipedia_content` @@ -80,6 +88,11 @@ Get the full HTML content of a Wikipedia page. | Parameter | Type | Description | | --------- | ---- | ----------- | | `content` | object | Full HTML content and metadata of the Wikipedia page | +| ↳ `title` | string | Page title | +| ↳ `pageid` | number | Wikipedia page ID | +| ↳ `html` | string | Full HTML content of the page | +| ↳ `revision` | number | Page revision number | +| ↳ `timestamp` | string | Last modified timestamp | ### `wikipedia_random` @@ -95,5 +108,10 @@ Get a random Wikipedia page. | Parameter | Type | Description | | --------- | ---- | ----------- | | `randomPage` | object | Random Wikipedia page data | +| ↳ `title` | string | Page title | +| ↳ `extract` | string | Page extract/summary | +| ↳ `description` | string | Page description | +| ↳ `thumbnail` | object | Thumbnail image data | +| ↳ `content_urls` | object | URLs to access the page | diff --git a/apps/docs/content/docs/en/tools/wordpress.mdx b/apps/docs/content/docs/en/tools/wordpress.mdx index 31592b8100..31d57721cd 100644 --- a/apps/docs/content/docs/en/tools/wordpress.mdx +++ b/apps/docs/content/docs/en/tools/wordpress.mdx @@ -50,6 +50,20 @@ Create a new blog post in WordPress.com | Parameter | Type | Description | | --------- | ---- | ----------- | | `post` | object | The created post | +| ↳ `id` | number | Post ID | +| ↳ `date` | string | Post creation date | +| ↳ `modified` | string | Post modification date | +| ↳ `slug` | string | Post slug | +| ↳ `status` | string | Post status | +| ↳ `type` | string | Post type | +| ↳ `link` | string | Post URL | +| ↳ `title` | object | Post title object | +| ↳ `content` | object | Post content object | +| ↳ `excerpt` | object | Post excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `categories` | array | Category IDs | +| ↳ `tags` | array | Tag IDs | ### `wordpress_update_post` @@ -75,6 +89,20 @@ Update an existing blog post in WordPress.com | Parameter | Type | Description | | --------- | ---- | ----------- | | `post` | object | The updated post | +| ↳ `id` | number | Post ID | +| ↳ `date` | string | Post creation date | +| ↳ `modified` | string | Post modification date | +| ↳ `slug` | string | Post slug | +| ↳ `status` | string | Post status | +| ↳ `type` | string | Post type | +| ↳ `link` | string | Post URL | +| ↳ `title` | object | Post title object | +| ↳ `content` | object | Post content object | +| ↳ `excerpt` | object | Post excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `categories` | array | Category IDs | +| ↳ `tags` | array | Tag IDs | ### `wordpress_delete_post` @@ -94,6 +122,20 @@ Delete a blog post from WordPress.com | --------- | ---- | ----------- | | `deleted` | boolean | Whether the post was deleted | | `post` | object | The deleted post | +| ↳ `id` | number | Post ID | +| ↳ `date` | string | Post creation date | +| ↳ `modified` | string | Post modification date | +| ↳ `slug` | string | Post slug | +| ↳ `status` | string | Post status | +| ↳ `type` | string | Post type | +| ↳ `link` | string | Post URL | +| ↳ `title` | object | Post title object | +| ↳ `content` | object | Post content object | +| ↳ `excerpt` | object | Post excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `categories` | array | Category IDs | +| ↳ `tags` | array | Tag IDs | ### `wordpress_get_post` @@ -111,6 +153,20 @@ Get a single blog post from WordPress.com by ID | Parameter | Type | Description | | --------- | ---- | ----------- | | `post` | object | The retrieved post | +| ↳ `id` | number | Post ID | +| ↳ `date` | string | Post creation date | +| ↳ `modified` | string | Post modification date | +| ↳ `slug` | string | Post slug | +| ↳ `status` | string | Post status | +| ↳ `type` | string | Post type | +| ↳ `link` | string | Post URL | +| ↳ `title` | object | Post title object | +| ↳ `content` | object | Post content object | +| ↳ `excerpt` | object | Post excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `categories` | array | Category IDs | +| ↳ `tags` | array | Tag IDs | ### `wordpress_list_posts` @@ -136,6 +192,22 @@ List blog posts from WordPress.com with optional filters | Parameter | Type | Description | | --------- | ---- | ----------- | | `posts` | array | List of posts | +| ↳ `id` | number | Post ID | +| ↳ `date` | string | Post creation date | +| ↳ `modified` | string | Post modification date | +| ↳ `slug` | string | Post slug | +| ↳ `status` | string | Post status | +| ↳ `type` | string | Post type | +| ↳ `link` | string | Post URL | +| ↳ `title` | object | Post title object | +| ↳ `content` | object | Post content object | +| ↳ `excerpt` | object | Post excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `categories` | array | Category IDs | +| ↳ `tags` | array | Tag IDs | +| `total` | number | Total number of posts | +| `totalPages` | number | Total number of pages | ### `wordpress_create_page` @@ -160,6 +232,20 @@ Create a new page in WordPress.com | Parameter | Type | Description | | --------- | ---- | ----------- | | `page` | object | The created page | +| ↳ `id` | number | Page ID | +| ↳ `date` | string | Page creation date | +| ↳ `modified` | string | Page modification date | +| ↳ `slug` | string | Page slug | +| ↳ `status` | string | Page status | +| ↳ `type` | string | Content type | +| ↳ `link` | string | Page URL | +| ↳ `title` | object | Page title object | +| ↳ `content` | object | Page content object | +| ↳ `excerpt` | object | Page excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `parent` | number | Parent page ID | +| ↳ `menu_order` | number | Menu order | ### `wordpress_update_page` @@ -185,6 +271,20 @@ Update an existing page in WordPress.com | Parameter | Type | Description | | --------- | ---- | ----------- | | `page` | object | The updated page | +| ↳ `id` | number | Page ID | +| ↳ `date` | string | Page creation date | +| ↳ `modified` | string | Page modification date | +| ↳ `slug` | string | Page slug | +| ↳ `status` | string | Page status | +| ↳ `type` | string | Content type | +| ↳ `link` | string | Page URL | +| ↳ `title` | object | Page title object | +| ↳ `content` | object | Page content object | +| ↳ `excerpt` | object | Page excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `parent` | number | Parent page ID | +| ↳ `menu_order` | number | Menu order | ### `wordpress_delete_page` @@ -204,6 +304,20 @@ Delete a page from WordPress.com | --------- | ---- | ----------- | | `deleted` | boolean | Whether the page was deleted | | `page` | object | The deleted page | +| ↳ `id` | number | Page ID | +| ↳ `date` | string | Page creation date | +| ↳ `modified` | string | Page modification date | +| ↳ `slug` | string | Page slug | +| ↳ `status` | string | Page status | +| ↳ `type` | string | Content type | +| ↳ `link` | string | Page URL | +| ↳ `title` | object | Page title object | +| ↳ `content` | object | Page content object | +| ↳ `excerpt` | object | Page excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `parent` | number | Parent page ID | +| ↳ `menu_order` | number | Menu order | ### `wordpress_get_page` @@ -221,6 +335,20 @@ Get a single page from WordPress.com by ID | Parameter | Type | Description | | --------- | ---- | ----------- | | `page` | object | The retrieved page | +| ↳ `id` | number | Page ID | +| ↳ `date` | string | Page creation date | +| ↳ `modified` | string | Page modification date | +| ↳ `slug` | string | Page slug | +| ↳ `status` | string | Page status | +| ↳ `type` | string | Content type | +| ↳ `link` | string | Page URL | +| ↳ `title` | object | Page title object | +| ↳ `content` | object | Page content object | +| ↳ `excerpt` | object | Page excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `parent` | number | Parent page ID | +| ↳ `menu_order` | number | Menu order | ### `wordpress_list_pages` @@ -244,6 +372,22 @@ List pages from WordPress.com with optional filters | Parameter | Type | Description | | --------- | ---- | ----------- | | `pages` | array | List of pages | +| ↳ `id` | number | Page ID | +| ↳ `date` | string | Page creation date | +| ↳ `modified` | string | Page modification date | +| ↳ `slug` | string | Page slug | +| ↳ `status` | string | Page status | +| ↳ `type` | string | Content type | +| ↳ `link` | string | Page URL | +| ↳ `title` | object | Page title object | +| ↳ `content` | object | Page content object | +| ↳ `excerpt` | object | Page excerpt object | +| ↳ `author` | number | Author ID | +| ↳ `featured_media` | number | Featured media ID | +| ↳ `parent` | number | Parent page ID | +| ↳ `menu_order` | number | Menu order | +| `total` | number | Total number of pages | +| `totalPages` | number | Total number of result pages | ### `wordpress_upload_media` @@ -266,6 +410,18 @@ Upload a media file (image, video, document) to WordPress.com | Parameter | Type | Description | | --------- | ---- | ----------- | | `media` | object | The uploaded media item | +| ↳ `id` | number | Media ID | +| ↳ `date` | string | Upload date | +| ↳ `slug` | string | Media slug | +| ↳ `type` | string | Content type | +| ↳ `link` | string | Media page URL | +| ↳ `title` | object | Media title object | +| ↳ `caption` | object | Media caption object | +| ↳ `alt_text` | string | Alt text | +| ↳ `media_type` | string | Media type \(image, video, etc.\) | +| ↳ `mime_type` | string | MIME type | +| ↳ `source_url` | string | Direct URL to the media file | +| ↳ `media_details` | object | Media details \(dimensions, etc.\) | ### `wordpress_get_media` @@ -283,6 +439,18 @@ Get a single media item from WordPress.com by ID | Parameter | Type | Description | | --------- | ---- | ----------- | | `media` | object | The retrieved media item | +| ↳ `id` | number | Media ID | +| ↳ `date` | string | Upload date | +| ↳ `slug` | string | Media slug | +| ↳ `type` | string | Content type | +| ↳ `link` | string | Media page URL | +| ↳ `title` | object | Media title object | +| ↳ `caption` | object | Media caption object | +| ↳ `alt_text` | string | Alt text | +| ↳ `media_type` | string | Media type \(image, video, etc.\) | +| ↳ `mime_type` | string | MIME type | +| ↳ `source_url` | string | Direct URL to the media file | +| ↳ `media_details` | object | Media details \(dimensions, etc.\) | ### `wordpress_list_media` @@ -306,6 +474,20 @@ List media items from the WordPress.com media library | Parameter | Type | Description | | --------- | ---- | ----------- | | `media` | array | List of media items | +| ↳ `id` | number | Media ID | +| ↳ `date` | string | Upload date | +| ↳ `slug` | string | Media slug | +| ↳ `type` | string | Content type | +| ↳ `link` | string | Media page URL | +| ↳ `title` | object | Media title object | +| ↳ `caption` | object | Media caption object | +| ↳ `alt_text` | string | Alt text | +| ↳ `media_type` | string | Media type \(image, video, etc.\) | +| ↳ `mime_type` | string | MIME type | +| ↳ `source_url` | string | Direct URL to the media file | +| ↳ `media_details` | object | Media details \(dimensions, etc.\) | +| `total` | number | Total number of media items | +| `totalPages` | number | Total number of result pages | ### `wordpress_delete_media` @@ -325,6 +507,18 @@ Delete a media item from WordPress.com | --------- | ---- | ----------- | | `deleted` | boolean | Whether the media was deleted | | `media` | object | The deleted media item | +| ↳ `id` | number | Media ID | +| ↳ `date` | string | Upload date | +| ↳ `slug` | string | Media slug | +| ↳ `type` | string | Content type | +| ↳ `link` | string | Media page URL | +| ↳ `title` | object | Media title object | +| ↳ `caption` | object | Media caption object | +| ↳ `alt_text` | string | Alt text | +| ↳ `media_type` | string | Media type \(image, video, etc.\) | +| ↳ `mime_type` | string | MIME type | +| ↳ `source_url` | string | Direct URL to the media file | +| ↳ `media_details` | object | Media details \(dimensions, etc.\) | ### `wordpress_create_comment` @@ -347,6 +541,17 @@ Create a new comment on a WordPress.com post | Parameter | Type | Description | | --------- | ---- | ----------- | | `comment` | object | The created comment | +| ↳ `id` | number | Comment ID | +| ↳ `post` | number | Post ID | +| ↳ `parent` | number | Parent comment ID | +| ↳ `author` | number | Author user ID | +| ↳ `author_name` | string | Author display name | +| ↳ `author_email` | string | Author email | +| ↳ `author_url` | string | Author URL | +| ↳ `date` | string | Comment date | +| ↳ `content` | object | Comment content object | +| ↳ `link` | string | Comment permalink | +| ↳ `status` | string | Comment status | ### `wordpress_list_comments` @@ -370,6 +575,19 @@ List comments from WordPress.com with optional filters | Parameter | Type | Description | | --------- | ---- | ----------- | | `comments` | array | List of comments | +| ↳ `id` | number | Comment ID | +| ↳ `post` | number | Post ID | +| ↳ `parent` | number | Parent comment ID | +| ↳ `author` | number | Author user ID | +| ↳ `author_name` | string | Author display name | +| ↳ `author_email` | string | Author email | +| ↳ `author_url` | string | Author URL | +| ↳ `date` | string | Comment date | +| ↳ `content` | object | Comment content object | +| ↳ `link` | string | Comment permalink | +| ↳ `status` | string | Comment status | +| `total` | number | Total number of comments | +| `totalPages` | number | Total number of result pages | ### `wordpress_update_comment` @@ -389,6 +607,17 @@ Update a comment in WordPress.com (content or status) | Parameter | Type | Description | | --------- | ---- | ----------- | | `comment` | object | The updated comment | +| ↳ `id` | number | Comment ID | +| ↳ `post` | number | Post ID | +| ↳ `parent` | number | Parent comment ID | +| ↳ `author` | number | Author user ID | +| ↳ `author_name` | string | Author display name | +| ↳ `author_email` | string | Author email | +| ↳ `author_url` | string | Author URL | +| ↳ `date` | string | Comment date | +| ↳ `content` | object | Comment content object | +| ↳ `link` | string | Comment permalink | +| ↳ `status` | string | Comment status | ### `wordpress_delete_comment` @@ -408,6 +637,17 @@ Delete a comment from WordPress.com | --------- | ---- | ----------- | | `deleted` | boolean | Whether the comment was deleted | | `comment` | object | The deleted comment | +| ↳ `id` | number | Comment ID | +| ↳ `post` | number | Post ID | +| ↳ `parent` | number | Parent comment ID | +| ↳ `author` | number | Author user ID | +| ↳ `author_name` | string | Author display name | +| ↳ `author_email` | string | Author email | +| ↳ `author_url` | string | Author URL | +| ↳ `date` | string | Comment date | +| ↳ `content` | object | Comment content object | +| ↳ `link` | string | Comment permalink | +| ↳ `status` | string | Comment status | ### `wordpress_create_category` @@ -428,6 +668,14 @@ Create a new category in WordPress.com | Parameter | Type | Description | | --------- | ---- | ----------- | | `category` | object | The created category | +| ↳ `id` | number | Category ID | +| ↳ `count` | number | Number of posts in this category | +| ↳ `description` | string | Category description | +| ↳ `link` | string | Category archive URL | +| ↳ `name` | string | Category name | +| ↳ `slug` | string | Category slug | +| ↳ `taxonomy` | string | Taxonomy name | +| ↳ `parent` | number | Parent category ID | ### `wordpress_list_categories` @@ -448,6 +696,16 @@ List categories from WordPress.com | Parameter | Type | Description | | --------- | ---- | ----------- | | `categories` | array | List of categories | +| ↳ `id` | number | Category ID | +| ↳ `count` | number | Number of posts in this category | +| ↳ `description` | string | Category description | +| ↳ `link` | string | Category archive URL | +| ↳ `name` | string | Category name | +| ↳ `slug` | string | Category slug | +| ↳ `taxonomy` | string | Taxonomy name | +| ↳ `parent` | number | Parent category ID | +| `total` | number | Total number of categories | +| `totalPages` | number | Total number of result pages | ### `wordpress_create_tag` @@ -467,6 +725,13 @@ Create a new tag in WordPress.com | Parameter | Type | Description | | --------- | ---- | ----------- | | `tag` | object | The created tag | +| ↳ `id` | number | Tag ID | +| ↳ `count` | number | Number of posts with this tag | +| ↳ `description` | string | Tag description | +| ↳ `link` | string | Tag archive URL | +| ↳ `name` | string | Tag name | +| ↳ `slug` | string | Tag slug | +| ↳ `taxonomy` | string | Taxonomy name | ### `wordpress_list_tags` @@ -487,6 +752,15 @@ List tags from WordPress.com | Parameter | Type | Description | | --------- | ---- | ----------- | | `tags` | array | List of tags | +| ↳ `id` | number | Tag ID | +| ↳ `count` | number | Number of posts with this tag | +| ↳ `description` | string | Tag description | +| ↳ `link` | string | Tag archive URL | +| ↳ `name` | string | Tag name | +| ↳ `slug` | string | Tag slug | +| ↳ `taxonomy` | string | Taxonomy name | +| `total` | number | Total number of tags | +| `totalPages` | number | Total number of result pages | ### `wordpress_get_current_user` @@ -503,6 +777,18 @@ Get information about the currently authenticated WordPress.com user | Parameter | Type | Description | | --------- | ---- | ----------- | | `user` | object | The current user | +| ↳ `id` | number | User ID | +| ↳ `username` | string | Username | +| ↳ `name` | string | Display name | +| ↳ `first_name` | string | First name | +| ↳ `last_name` | string | Last name | +| ↳ `email` | string | Email address | +| ↳ `url` | string | User website URL | +| ↳ `description` | string | User bio | +| ↳ `link` | string | Author archive URL | +| ↳ `slug` | string | User slug | +| ↳ `roles` | array | User roles | +| ↳ `avatar_urls` | object | Avatar URLs at different sizes | ### `wordpress_list_users` @@ -524,6 +810,20 @@ List users from WordPress.com (requires admin privileges) | Parameter | Type | Description | | --------- | ---- | ----------- | | `users` | array | List of users | +| ↳ `id` | number | User ID | +| ↳ `username` | string | Username | +| ↳ `name` | string | Display name | +| ↳ `first_name` | string | First name | +| ↳ `last_name` | string | Last name | +| ↳ `email` | string | Email address | +| ↳ `url` | string | User website URL | +| ↳ `description` | string | User bio | +| ↳ `link` | string | Author archive URL | +| ↳ `slug` | string | User slug | +| ↳ `roles` | array | User roles | +| ↳ `avatar_urls` | object | Avatar URLs at different sizes | +| `total` | number | Total number of users | +| `totalPages` | number | Total number of result pages | ### `wordpress_get_user` @@ -541,6 +841,18 @@ Get a specific user from WordPress.com by ID | Parameter | Type | Description | | --------- | ---- | ----------- | | `user` | object | The retrieved user | +| ↳ `id` | number | User ID | +| ↳ `username` | string | Username | +| ↳ `name` | string | Display name | +| ↳ `first_name` | string | First name | +| ↳ `last_name` | string | Last name | +| ↳ `email` | string | Email address | +| ↳ `url` | string | User website URL | +| ↳ `description` | string | User bio | +| ↳ `link` | string | Author archive URL | +| ↳ `slug` | string | User slug | +| ↳ `roles` | array | User roles | +| ↳ `avatar_urls` | object | Avatar URLs at different sizes | ### `wordpress_search_content` @@ -562,5 +874,12 @@ Search across all content types in WordPress.com (posts, pages, media) | Parameter | Type | Description | | --------- | ---- | ----------- | | `results` | array | Search results | +| ↳ `id` | number | Content ID | +| ↳ `title` | string | Content title | +| ↳ `url` | string | Content URL | +| ↳ `type` | string | Content type \(post, page, attachment\) | +| ↳ `subtype` | string | Post type slug | +| `total` | number | Total number of results | +| `totalPages` | number | Total number of result pages | diff --git a/apps/docs/content/docs/en/tools/x.mdx b/apps/docs/content/docs/en/tools/x.mdx index bc5a98affd..07e3045c28 100644 --- a/apps/docs/content/docs/en/tools/x.mdx +++ b/apps/docs/content/docs/en/tools/x.mdx @@ -53,6 +53,16 @@ Post new tweets, reply to tweets, or create polls on X (Twitter) | Parameter | Type | Description | | --------- | ---- | ----------- | | `tweet` | object | The newly created tweet data | +| ↳ `id` | string | Tweet ID | +| ↳ `text` | string | Tweet content text | +| ↳ `createdAt` | string | Tweet creation timestamp | +| ↳ `authorId` | string | ID of the tweet author | +| ↳ `conversationId` | string | Conversation thread ID | +| ↳ `attachments` | object | Media or poll attachments | +| ↳ `mediaKeys` | array | Media attachment keys | +| ↳ `pollId` | string | Poll ID if poll attached | +| ↳ `mediaKeys` | array | Media attachment keys | +| ↳ `pollId` | string | Poll ID if poll attached | ### `x_read` @@ -70,6 +80,11 @@ Read tweet details, including replies and conversation context | Parameter | Type | Description | | --------- | ---- | ----------- | | `tweet` | object | The main tweet data | +| ↳ `id` | string | Tweet ID | +| ↳ `text` | string | Tweet content text | +| ↳ `createdAt` | string | Tweet creation timestamp | +| ↳ `authorId` | string | ID of the tweet author | +| `context` | object | Conversation context including parent and root tweets | ### `x_search` @@ -90,6 +105,15 @@ Search for tweets using keywords, hashtags, or advanced queries | Parameter | Type | Description | | --------- | ---- | ----------- | | `tweets` | array | Array of tweets matching the search query | +| ↳ `id` | string | Tweet ID | +| ↳ `text` | string | Tweet content | +| ↳ `createdAt` | string | Creation timestamp | +| ↳ `authorId` | string | Author user ID | +| `includes` | object | Additional data including user profiles and media | +| `meta` | object | Search metadata including result count and pagination tokens | +| ↳ `resultCount` | number | Number of results returned | +| ↳ `newestId` | string | ID of the newest tweet | +| ↳ `oldestId` | string | ID of the oldest tweet | ### `x_user` @@ -106,5 +130,17 @@ Get user profile information | Parameter | Type | Description | | --------- | ---- | ----------- | | `user` | object | X user profile information | +| ↳ `id` | string | User ID | +| ↳ `username` | string | Username without @ symbol | +| ↳ `name` | string | Display name | +| ↳ `description` | string | User bio/description | +| ↳ `verified` | boolean | Whether the user is verified | +| ↳ `metrics` | object | User statistics | +| ↳ `followersCount` | number | Number of followers | +| ↳ `followingCount` | number | Number of users following | +| ↳ `tweetCount` | number | Total number of tweets | +| ↳ `followersCount` | number | Number of followers | +| ↳ `followingCount` | number | Number of users following | +| ↳ `tweetCount` | number | Total number of tweets | diff --git a/apps/docs/content/docs/en/tools/youtube.mdx b/apps/docs/content/docs/en/tools/youtube.mdx index dcc057caa7..ff580ca433 100644 --- a/apps/docs/content/docs/en/tools/youtube.mdx +++ b/apps/docs/content/docs/en/tools/youtube.mdx @@ -60,6 +60,12 @@ Search for videos on YouTube using the YouTube Data API. Supports advanced filte | Parameter | Type | Description | | --------- | ---- | ----------- | | `items` | array | Array of YouTube videos matching the search query | +| ↳ `videoId` | string | YouTube video ID | +| ↳ `title` | string | Video title | +| ↳ `description` | string | Video description | +| ↳ `thumbnail` | string | Video thumbnail URL | +| `totalResults` | number | Total number of search results available | +| `nextPageToken` | string | Token for accessing the next page of results | ### `youtube_video_details` @@ -134,6 +140,13 @@ Get all videos from a specific YouTube channel, with sorting options. | Parameter | Type | Description | | --------- | ---- | ----------- | | `items` | array | Array of videos from the channel | +| ↳ `videoId` | string | YouTube video ID | +| ↳ `title` | string | Video title | +| ↳ `description` | string | Video description | +| ↳ `thumbnail` | string | Video thumbnail URL | +| ↳ `publishedAt` | string | Video publish date | +| `totalResults` | number | Total number of videos in the channel | +| `nextPageToken` | string | Token for accessing the next page of results | ### `youtube_channel_playlists` @@ -153,6 +166,14 @@ Get all playlists from a specific YouTube channel. | Parameter | Type | Description | | --------- | ---- | ----------- | | `items` | array | Array of playlists from the channel | +| ↳ `playlistId` | string | YouTube playlist ID | +| ↳ `title` | string | Playlist title | +| ↳ `description` | string | Playlist description | +| ↳ `thumbnail` | string | Playlist thumbnail URL | +| ↳ `itemCount` | number | Number of videos in playlist | +| ↳ `publishedAt` | string | Playlist creation date | +| `totalResults` | number | Total number of playlists in the channel | +| `nextPageToken` | string | Token for accessing the next page of results | ### `youtube_playlist_items` @@ -172,6 +193,15 @@ Get videos from a YouTube playlist. | Parameter | Type | Description | | --------- | ---- | ----------- | | `items` | array | Array of videos in the playlist | +| ↳ `videoId` | string | YouTube video ID | +| ↳ `title` | string | Video title | +| ↳ `description` | string | Video description | +| ↳ `thumbnail` | string | Video thumbnail URL | +| ↳ `publishedAt` | string | Date added to playlist | +| ↳ `channelTitle` | string | Channel name | +| ↳ `position` | number | Position in playlist | +| `totalResults` | number | Total number of items in playlist | +| `nextPageToken` | string | Token for accessing the next page of results | ### `youtube_comments` @@ -192,5 +222,16 @@ Get comments from a YouTube video. | Parameter | Type | Description | | --------- | ---- | ----------- | | `items` | array | Array of comments from the video | +| ↳ `commentId` | string | Comment ID | +| ↳ `authorDisplayName` | string | Comment author name | +| ↳ `authorChannelUrl` | string | Comment author channel URL | +| ↳ `textDisplay` | string | Comment text \(HTML formatted\) | +| ↳ `textOriginal` | string | Comment text \(plain text\) | +| ↳ `likeCount` | number | Number of likes | +| ↳ `publishedAt` | string | Comment publish date | +| ↳ `updatedAt` | string | Comment last updated date | +| ↳ `replyCount` | number | Number of replies | +| `totalResults` | number | Total number of comments | +| `nextPageToken` | string | Token for accessing the next page of results | diff --git a/apps/docs/content/docs/en/tools/zendesk.mdx b/apps/docs/content/docs/en/tools/zendesk.mdx index 54c794d3f0..bf647431a5 100644 --- a/apps/docs/content/docs/en/tools/zendesk.mdx +++ b/apps/docs/content/docs/en/tools/zendesk.mdx @@ -78,6 +78,12 @@ Retrieve a list of tickets from Zendesk with optional filtering | --------- | ---- | ----------- | | `tickets` | array | Array of ticket objects | | `paging` | object | Pagination information | +| ↳ `next_page` | string | URL for next page of results | +| ↳ `previous_page` | string | URL for previous page of results | +| ↳ `count` | number | Total count of tickets | +| `metadata` | object | Response metadata | +| ↳ `total_returned` | number | Number of tickets returned in this response | +| ↳ `has_more` | boolean | Whether more tickets are available | ### `zendesk_get_ticket` @@ -267,6 +273,12 @@ Retrieve a list of users from Zendesk with optional filtering | --------- | ---- | ----------- | | `users` | array | Array of user objects | | `paging` | object | Pagination information | +| ↳ `next_page` | string | URL for next page of results | +| ↳ `previous_page` | string | URL for previous page of results | +| ↳ `count` | number | Total count of users | +| `metadata` | object | Response metadata | +| ↳ `total_returned` | number | Number of users returned in this response | +| ↳ `has_more` | boolean | Whether more users are available | ### `zendesk_get_user` @@ -329,6 +341,12 @@ Search for users in Zendesk using a query string | --------- | ---- | ----------- | | `users` | array | Array of user objects | | `paging` | object | Pagination information | +| ↳ `next_page` | string | URL for next page of results | +| ↳ `previous_page` | string | URL for previous page of results | +| ↳ `count` | number | Total count of users | +| `metadata` | object | Response metadata | +| ↳ `total_returned` | number | Number of users returned in this response | +| ↳ `has_more` | boolean | Whether more users are available | ### `zendesk_create_user` @@ -465,6 +483,12 @@ Retrieve a list of organizations from Zendesk | --------- | ---- | ----------- | | `organizations` | array | Array of organization objects | | `paging` | object | Pagination information | +| ↳ `next_page` | string | URL for next page of results | +| ↳ `previous_page` | string | URL for previous page of results | +| ↳ `count` | number | Total count of organizations | +| `metadata` | object | Response metadata | +| ↳ `total_returned` | number | Number of organizations returned in this response | +| ↳ `has_more` | boolean | Whether more organizations are available | ### `zendesk_get_organization` @@ -507,6 +531,12 @@ Autocomplete organizations in Zendesk by name prefix (for name matching/autocomp | --------- | ---- | ----------- | | `organizations` | array | Array of organization objects | | `paging` | object | Pagination information | +| ↳ `next_page` | string | URL for next page of results | +| ↳ `previous_page` | string | URL for previous page of results | +| ↳ `count` | number | Total count of organizations | +| `metadata` | object | Response metadata | +| ↳ `total_returned` | number | Number of organizations returned in this response | +| ↳ `has_more` | boolean | Whether more organizations are available | ### `zendesk_create_organization` @@ -622,6 +652,12 @@ Unified search across tickets, users, and organizations in Zendesk | --------- | ---- | ----------- | | `results` | array | Array of result objects | | `paging` | object | Pagination information | +| ↳ `next_page` | string | URL for next page of results | +| ↳ `previous_page` | string | URL for previous page of results | +| ↳ `count` | number | Total count of results | +| `metadata` | object | Response metadata | +| ↳ `total_returned` | number | Number of results returned in this response | +| ↳ `has_more` | boolean | Whether more results are available | ### `zendesk_search_count` diff --git a/apps/docs/content/docs/en/tools/zoom.mdx b/apps/docs/content/docs/en/tools/zoom.mdx index 2185abf39a..c26d324d6b 100644 --- a/apps/docs/content/docs/en/tools/zoom.mdx +++ b/apps/docs/content/docs/en/tools/zoom.mdx @@ -69,6 +69,22 @@ Create a new Zoom meeting | Parameter | Type | Description | | --------- | ---- | ----------- | | `meeting` | object | The created meeting with all its properties | +| ↳ `id` | number | Meeting ID | +| ↳ `uuid` | string | Meeting UUID | +| ↳ `host_id` | string | Host user ID | +| ↳ `host_email` | string | Host email | +| ↳ `topic` | string | Meeting topic | +| ↳ `type` | number | Meeting type | +| ↳ `status` | string | Meeting status | +| ↳ `start_time` | string | Start time | +| ↳ `duration` | number | Duration in minutes | +| ↳ `timezone` | string | Timezone | +| ↳ `agenda` | string | Meeting agenda | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `start_url` | string | Host start URL | +| ↳ `join_url` | string | Participant join URL | +| ↳ `password` | string | Meeting password | +| ↳ `settings` | object | Meeting settings | ### `zoom_list_meetings` @@ -89,6 +105,11 @@ List all meetings for a Zoom user | --------- | ---- | ----------- | | `meetings` | array | List of meetings | | `pageInfo` | object | Pagination information | +| ↳ `pageCount` | number | Total number of pages | +| ↳ `pageNumber` | number | Current page number | +| ↳ `pageSize` | number | Number of records per page | +| ↳ `totalRecords` | number | Total number of records | +| ↳ `nextPageToken` | string | Token for next page | ### `zoom_get_meeting` @@ -107,6 +128,24 @@ Get details of a specific Zoom meeting | Parameter | Type | Description | | --------- | ---- | ----------- | | `meeting` | object | The meeting details | +| ↳ `id` | number | Meeting ID | +| ↳ `uuid` | string | Meeting UUID | +| ↳ `host_id` | string | Host user ID | +| ↳ `host_email` | string | Host email | +| ↳ `topic` | string | Meeting topic | +| ↳ `type` | number | Meeting type | +| ↳ `status` | string | Meeting status | +| ↳ `start_time` | string | Start time | +| ↳ `duration` | number | Duration in minutes | +| ↳ `timezone` | string | Timezone | +| ↳ `agenda` | string | Meeting agenda | +| ↳ `created_at` | string | Creation timestamp | +| ↳ `start_url` | string | Host start URL | +| ↳ `join_url` | string | Participant join URL | +| ↳ `password` | string | Meeting password | +| ↳ `settings` | object | Meeting settings | +| ↳ `recurrence` | object | Recurrence settings | +| ↳ `occurrences` | array | Meeting occurrences | ### `zoom_update_meeting` @@ -193,6 +232,11 @@ List all cloud recordings for a Zoom user | --------- | ---- | ----------- | | `recordings` | array | List of recordings | | `pageInfo` | object | Pagination information | +| ↳ `from` | string | Start date of query range | +| ↳ `to` | string | End date of query range | +| ↳ `pageSize` | number | Number of records per page | +| ↳ `totalRecords` | number | Total number of records | +| ↳ `nextPageToken` | string | Token for next page | ### `zoom_get_meeting_recordings` @@ -211,6 +255,14 @@ Get all recordings for a specific Zoom meeting | Parameter | Type | Description | | --------- | ---- | ----------- | | `recording` | object | The meeting recording with all files | +| ↳ `uuid` | string | Meeting UUID | +| ↳ `id` | number | Meeting ID | +| ↳ `topic` | string | Meeting topic | +| ↳ `start_time` | string | Meeting start time | +| ↳ `duration` | number | Meeting duration in minutes | +| ↳ `total_size` | number | Total size of recordings in bytes | +| ↳ `share_url` | string | URL to share recordings | +| ↳ `recording_files` | array | List of recording files | ### `zoom_delete_recording` @@ -248,5 +300,8 @@ List participants from a past Zoom meeting | --------- | ---- | ----------- | | `participants` | array | List of meeting participants | | `pageInfo` | object | Pagination information | +| ↳ `pageSize` | number | Number of records per page | +| ↳ `totalRecords` | number | Total number of records | +| ↳ `nextPageToken` | string | Token for next page | diff --git a/apps/sim/app/api/copilot/chat/route.ts b/apps/sim/app/api/copilot/chat/route.ts index 1c0067e835..2c2fc6c38f 100644 --- a/apps/sim/app/api/copilot/chat/route.ts +++ b/apps/sim/app/api/copilot/chat/route.ts @@ -97,6 +97,7 @@ const ChatMessageSchema = z.object({ }) ) .optional(), + commands: z.array(z.string()).optional(), }) /** @@ -132,6 +133,7 @@ export async function POST(req: NextRequest) { provider, conversationId, contexts, + commands, } = ChatMessageSchema.parse(body) // Ensure we have a consistent user message ID for this request const userMessageIdToUse = userMessageId || crypto.randomUUID() @@ -462,6 +464,7 @@ export async function POST(req: NextRequest) { ...(integrationTools.length > 0 && { tools: integrationTools }), ...(baseTools.length > 0 && { baseTools }), ...(credentials && { credentials }), + ...(commands && commands.length > 0 && { commands }), } try { diff --git a/apps/sim/app/api/emails/preview/route.ts b/apps/sim/app/api/emails/preview/route.ts index 5047a3eaa6..80c298bdad 100644 --- a/apps/sim/app/api/emails/preview/route.ts +++ b/apps/sim/app/api/emails/preview/route.ts @@ -15,6 +15,7 @@ import { renderPlanWelcomeEmail, renderUsageThresholdEmail, renderWelcomeEmail, + renderWorkflowNotificationEmail, renderWorkspaceInvitationEmail, } from '@/components/emails' @@ -108,6 +109,51 @@ const emailTemplates = { message: 'I have 10 years of experience building scalable distributed systems. Most recently, I led a team at a Series B startup where we scaled from 100K to 10M users.', }), + + // Notification emails + 'workflow-notification-success': () => + renderWorkflowNotificationEmail({ + workflowName: 'Customer Onboarding Flow', + status: 'success', + trigger: 'api', + duration: '2.3s', + cost: '$0.0042', + logUrl: 'https://sim.ai/workspace/ws_123/logs?search=exec_abc123', + }), + 'workflow-notification-error': () => + renderWorkflowNotificationEmail({ + workflowName: 'Customer Onboarding Flow', + status: 'error', + trigger: 'webhook', + duration: '1.1s', + cost: '$0.0021', + logUrl: 'https://sim.ai/workspace/ws_123/logs?search=exec_abc123', + }), + 'workflow-notification-alert': () => + renderWorkflowNotificationEmail({ + workflowName: 'Customer Onboarding Flow', + status: 'error', + trigger: 'schedule', + duration: '45.2s', + cost: '$0.0156', + logUrl: 'https://sim.ai/workspace/ws_123/logs?search=exec_abc123', + alertReason: '3 consecutive failures detected', + }), + 'workflow-notification-full': () => + renderWorkflowNotificationEmail({ + workflowName: 'Data Processing Pipeline', + status: 'success', + trigger: 'api', + duration: '12.5s', + cost: '$0.0234', + logUrl: 'https://sim.ai/workspace/ws_123/logs?search=exec_abc123', + finalOutput: { processed: 150, skipped: 3, status: 'completed' }, + rateLimits: { + sync: { requestsPerMinute: 60, remaining: 45 }, + async: { requestsPerMinute: 120, remaining: 98 }, + }, + usageData: { currentPeriodCost: 12.45, limit: 50, percentUsed: 24.9 }, + }), } as const type EmailTemplate = keyof typeof emailTemplates @@ -131,6 +177,12 @@ export async function GET(request: NextRequest) { 'payment-failed', ], Careers: ['careers-confirmation', 'careers-submission'], + Notifications: [ + 'workflow-notification-success', + 'workflow-notification-error', + 'workflow-notification-alert', + 'workflow-notification-full', + ], } const categoryHtml = Object.entries(categories) diff --git a/apps/sim/app/api/folders/[id]/route.ts b/apps/sim/app/api/folders/[id]/route.ts index ebd44f9816..35d41f6939 100644 --- a/apps/sim/app/api/folders/[id]/route.ts +++ b/apps/sim/app/api/folders/[id]/route.ts @@ -14,6 +14,7 @@ const updateFolderSchema = z.object({ color: z.string().optional(), isExpanded: z.boolean().optional(), parentId: z.string().nullable().optional(), + sortOrder: z.number().int().min(0).optional(), }) // PUT - Update a folder @@ -38,7 +39,7 @@ export async function PUT(request: NextRequest, { params }: { params: Promise<{ return NextResponse.json({ error: `Validation failed: ${errorMessages}` }, { status: 400 }) } - const { name, color, isExpanded, parentId } = validationResult.data + const { name, color, isExpanded, parentId, sortOrder } = validationResult.data // Verify the folder exists const existingFolder = await db @@ -81,12 +82,12 @@ export async function PUT(request: NextRequest, { params }: { params: Promise<{ } } - // Update the folder - const updates: any = { updatedAt: new Date() } + const updates: Record = { updatedAt: new Date() } if (name !== undefined) updates.name = name.trim() if (color !== undefined) updates.color = color if (isExpanded !== undefined) updates.isExpanded = isExpanded if (parentId !== undefined) updates.parentId = parentId || null + if (sortOrder !== undefined) updates.sortOrder = sortOrder const [updatedFolder] = await db .update(workflowFolder) diff --git a/apps/sim/app/api/folders/reorder/route.ts b/apps/sim/app/api/folders/reorder/route.ts new file mode 100644 index 0000000000..653d830165 --- /dev/null +++ b/apps/sim/app/api/folders/reorder/route.ts @@ -0,0 +1,91 @@ +import { db } from '@sim/db' +import { workflowFolder } from '@sim/db/schema' +import { createLogger } from '@sim/logger' +import { eq, inArray } from 'drizzle-orm' +import { type NextRequest, NextResponse } from 'next/server' +import { z } from 'zod' +import { getSession } from '@/lib/auth' +import { generateRequestId } from '@/lib/core/utils/request' +import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' + +const logger = createLogger('FolderReorderAPI') + +const ReorderSchema = z.object({ + workspaceId: z.string(), + updates: z.array( + z.object({ + id: z.string(), + sortOrder: z.number().int().min(0), + parentId: z.string().nullable().optional(), + }) + ), +}) + +export async function PUT(req: NextRequest) { + const requestId = generateRequestId() + const session = await getSession() + + if (!session?.user?.id) { + logger.warn(`[${requestId}] Unauthorized folder reorder attempt`) + return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) + } + + try { + const body = await req.json() + const { workspaceId, updates } = ReorderSchema.parse(body) + + const permission = await getUserEntityPermissions(session.user.id, 'workspace', workspaceId) + if (!permission || permission === 'read') { + logger.warn( + `[${requestId}] User ${session.user.id} lacks write permission for workspace ${workspaceId}` + ) + return NextResponse.json({ error: 'Write access required' }, { status: 403 }) + } + + const folderIds = updates.map((u) => u.id) + const existingFolders = await db + .select({ id: workflowFolder.id, workspaceId: workflowFolder.workspaceId }) + .from(workflowFolder) + .where(inArray(workflowFolder.id, folderIds)) + + const validIds = new Set( + existingFolders.filter((f) => f.workspaceId === workspaceId).map((f) => f.id) + ) + + const validUpdates = updates.filter((u) => validIds.has(u.id)) + + if (validUpdates.length === 0) { + return NextResponse.json({ error: 'No valid folders to update' }, { status: 400 }) + } + + await db.transaction(async (tx) => { + for (const update of validUpdates) { + const updateData: Record = { + sortOrder: update.sortOrder, + updatedAt: new Date(), + } + if (update.parentId !== undefined) { + updateData.parentId = update.parentId + } + await tx.update(workflowFolder).set(updateData).where(eq(workflowFolder.id, update.id)) + } + }) + + logger.info( + `[${requestId}] Reordered ${validUpdates.length} folders in workspace ${workspaceId}` + ) + + return NextResponse.json({ success: true, updated: validUpdates.length }) + } catch (error) { + if (error instanceof z.ZodError) { + logger.warn(`[${requestId}] Invalid folder reorder data`, { errors: error.errors }) + return NextResponse.json( + { error: 'Invalid request data', details: error.errors }, + { status: 400 } + ) + } + + logger.error(`[${requestId}] Error reordering folders`, error) + return NextResponse.json({ error: 'Failed to reorder folders' }, { status: 500 }) + } +} diff --git a/apps/sim/app/api/folders/route.ts b/apps/sim/app/api/folders/route.ts index e976f1a945..13f07f520f 100644 --- a/apps/sim/app/api/folders/route.ts +++ b/apps/sim/app/api/folders/route.ts @@ -58,7 +58,7 @@ export async function POST(request: NextRequest) { } const body = await request.json() - const { name, workspaceId, parentId, color } = body + const { name, workspaceId, parentId, color, sortOrder: providedSortOrder } = body if (!name || !workspaceId) { return NextResponse.json({ error: 'Name and workspace ID are required' }, { status: 400 }) @@ -81,25 +81,26 @@ export async function POST(request: NextRequest) { // Generate a new ID const id = crypto.randomUUID() - // Use transaction to ensure sortOrder consistency const newFolder = await db.transaction(async (tx) => { - // Get the next sort order for the parent (or root level) - // Consider all folders in the workspace, not just those created by current user - const existingFolders = await tx - .select({ sortOrder: workflowFolder.sortOrder }) - .from(workflowFolder) - .where( - and( - eq(workflowFolder.workspaceId, workspaceId), - parentId ? eq(workflowFolder.parentId, parentId) : isNull(workflowFolder.parentId) + let sortOrder: number + if (providedSortOrder !== undefined) { + sortOrder = providedSortOrder + } else { + const existingFolders = await tx + .select({ sortOrder: workflowFolder.sortOrder }) + .from(workflowFolder) + .where( + and( + eq(workflowFolder.workspaceId, workspaceId), + parentId ? eq(workflowFolder.parentId, parentId) : isNull(workflowFolder.parentId) + ) ) - ) - .orderBy(desc(workflowFolder.sortOrder)) - .limit(1) + .orderBy(desc(workflowFolder.sortOrder)) + .limit(1) - const nextSortOrder = existingFolders.length > 0 ? existingFolders[0].sortOrder + 1 : 0 + sortOrder = existingFolders.length > 0 ? existingFolders[0].sortOrder + 1 : 0 + } - // Insert the new folder within the same transaction const [folder] = await tx .insert(workflowFolder) .values({ @@ -109,7 +110,7 @@ export async function POST(request: NextRequest) { workspaceId, parentId: parentId || null, color: color || '#6B7280', - sortOrder: nextSortOrder, + sortOrder, }) .returning() diff --git a/apps/sim/app/api/tools/a2a/send-message-stream/route.ts b/apps/sim/app/api/tools/a2a/send-message-stream/route.ts deleted file mode 100644 index e30689a801..0000000000 --- a/apps/sim/app/api/tools/a2a/send-message-stream/route.ts +++ /dev/null @@ -1,150 +0,0 @@ -import type { - Artifact, - Message, - Task, - TaskArtifactUpdateEvent, - TaskState, - TaskStatusUpdateEvent, -} from '@a2a-js/sdk' -import { createLogger } from '@sim/logger' -import { type NextRequest, NextResponse } from 'next/server' -import { z } from 'zod' -import { createA2AClient, extractTextContent, isTerminalState } from '@/lib/a2a/utils' -import { checkHybridAuth } from '@/lib/auth/hybrid' -import { generateRequestId } from '@/lib/core/utils/request' - -export const dynamic = 'force-dynamic' - -const logger = createLogger('A2ASendMessageStreamAPI') - -const A2ASendMessageStreamSchema = z.object({ - agentUrl: z.string().min(1, 'Agent URL is required'), - message: z.string().min(1, 'Message is required'), - taskId: z.string().optional(), - contextId: z.string().optional(), - apiKey: z.string().optional(), -}) - -export async function POST(request: NextRequest) { - const requestId = generateRequestId() - - try { - const authResult = await checkHybridAuth(request, { requireWorkflowId: false }) - - if (!authResult.success) { - logger.warn( - `[${requestId}] Unauthorized A2A send message stream attempt: ${authResult.error}` - ) - return NextResponse.json( - { - success: false, - error: authResult.error || 'Authentication required', - }, - { status: 401 } - ) - } - - logger.info( - `[${requestId}] Authenticated A2A send message stream request via ${authResult.authType}`, - { - userId: authResult.userId, - } - ) - - const body = await request.json() - const validatedData = A2ASendMessageStreamSchema.parse(body) - - logger.info(`[${requestId}] Sending A2A streaming message`, { - agentUrl: validatedData.agentUrl, - hasTaskId: !!validatedData.taskId, - hasContextId: !!validatedData.contextId, - }) - - const client = await createA2AClient(validatedData.agentUrl, validatedData.apiKey) - - const message: Message = { - kind: 'message', - messageId: crypto.randomUUID(), - role: 'user', - parts: [{ kind: 'text', text: validatedData.message }], - ...(validatedData.taskId && { taskId: validatedData.taskId }), - ...(validatedData.contextId && { contextId: validatedData.contextId }), - } - - const stream = client.sendMessageStream({ message }) - - let taskId = '' - let contextId: string | undefined - let state: TaskState = 'working' - let content = '' - let artifacts: Artifact[] = [] - let history: Message[] = [] - - for await (const event of stream) { - if (event.kind === 'message') { - const msg = event as Message - content = extractTextContent(msg) - taskId = msg.taskId || taskId - contextId = msg.contextId || contextId - state = 'completed' - } else if (event.kind === 'task') { - const task = event as Task - taskId = task.id - contextId = task.contextId - state = task.status.state - artifacts = task.artifacts || [] - history = task.history || [] - const lastAgentMessage = history.filter((m) => m.role === 'agent').pop() - if (lastAgentMessage) { - content = extractTextContent(lastAgentMessage) - } - } else if ('status' in event) { - const statusEvent = event as TaskStatusUpdateEvent - state = statusEvent.status.state - } else if ('artifact' in event) { - const artifactEvent = event as TaskArtifactUpdateEvent - artifacts.push(artifactEvent.artifact) - } - } - - logger.info(`[${requestId}] A2A streaming message completed`, { - taskId, - state, - artifactCount: artifacts.length, - }) - - return NextResponse.json({ - success: isTerminalState(state) && state !== 'failed', - output: { - content, - taskId, - contextId, - state, - artifacts, - history, - }, - }) - } catch (error) { - if (error instanceof z.ZodError) { - logger.warn(`[${requestId}] Invalid request data`, { errors: error.errors }) - return NextResponse.json( - { - success: false, - error: 'Invalid request data', - details: error.errors, - }, - { status: 400 } - ) - } - - logger.error(`[${requestId}] Error in A2A streaming:`, error) - - return NextResponse.json( - { - success: false, - error: error instanceof Error ? error.message : 'Streaming failed', - }, - { status: 500 } - ) - } -} diff --git a/apps/sim/app/api/tools/a2a/send-message/route.ts b/apps/sim/app/api/tools/a2a/send-message/route.ts index 4d52fc710c..a66c2b3d37 100644 --- a/apps/sim/app/api/tools/a2a/send-message/route.ts +++ b/apps/sim/app/api/tools/a2a/send-message/route.ts @@ -1,4 +1,4 @@ -import type { Message, Task } from '@a2a-js/sdk' +import type { DataPart, FilePart, Message, Part, Task, TextPart } from '@a2a-js/sdk' import { createLogger } from '@sim/logger' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -10,11 +10,20 @@ export const dynamic = 'force-dynamic' const logger = createLogger('A2ASendMessageAPI') +const FileInputSchema = z.object({ + type: z.enum(['file', 'url']), + data: z.string(), + name: z.string(), + mime: z.string().optional(), +}) + const A2ASendMessageSchema = z.object({ agentUrl: z.string().min(1, 'Agent URL is required'), message: z.string().min(1, 'Message is required'), taskId: z.string().optional(), contextId: z.string().optional(), + data: z.string().optional(), + files: z.array(FileInputSchema).optional(), apiKey: z.string().optional(), }) @@ -51,18 +60,100 @@ export async function POST(request: NextRequest) { hasContextId: !!validatedData.contextId, }) - const client = await createA2AClient(validatedData.agentUrl, validatedData.apiKey) + let client + try { + client = await createA2AClient(validatedData.agentUrl, validatedData.apiKey) + logger.info(`[${requestId}] A2A client created successfully`) + } catch (clientError) { + logger.error(`[${requestId}] Failed to create A2A client:`, clientError) + return NextResponse.json( + { + success: false, + error: `Failed to connect to agent: ${clientError instanceof Error ? clientError.message : 'Unknown error'}`, + }, + { status: 502 } + ) + } + + const parts: Part[] = [] + + const textPart: TextPart = { kind: 'text', text: validatedData.message } + parts.push(textPart) + + if (validatedData.data) { + try { + const parsedData = JSON.parse(validatedData.data) + const dataPart: DataPart = { kind: 'data', data: parsedData } + parts.push(dataPart) + } catch (parseError) { + logger.warn(`[${requestId}] Failed to parse data as JSON, skipping DataPart`, { + error: parseError instanceof Error ? parseError.message : String(parseError), + }) + } + } + + if (validatedData.files && validatedData.files.length > 0) { + for (const file of validatedData.files) { + if (file.type === 'url') { + const filePart: FilePart = { + kind: 'file', + file: { + name: file.name, + mimeType: file.mime, + uri: file.data, + }, + } + parts.push(filePart) + } else if (file.type === 'file') { + let bytes = file.data + let mimeType = file.mime + + if (file.data.startsWith('data:')) { + const match = file.data.match(/^data:([^;]+);base64,(.+)$/) + if (match) { + mimeType = mimeType || match[1] + bytes = match[2] + } else { + bytes = file.data + } + } + + const filePart: FilePart = { + kind: 'file', + file: { + name: file.name, + mimeType: mimeType || 'application/octet-stream', + bytes, + }, + } + parts.push(filePart) + } + } + } const message: Message = { kind: 'message', messageId: crypto.randomUUID(), role: 'user', - parts: [{ kind: 'text', text: validatedData.message }], + parts, ...(validatedData.taskId && { taskId: validatedData.taskId }), ...(validatedData.contextId && { contextId: validatedData.contextId }), } - const result = await client.sendMessage({ message }) + let result + try { + result = await client.sendMessage({ message }) + logger.info(`[${requestId}] A2A sendMessage completed`, { resultKind: result?.kind }) + } catch (sendError) { + logger.error(`[${requestId}] Failed to send A2A message:`, sendError) + return NextResponse.json( + { + success: false, + error: `Failed to send message: ${sendError instanceof Error ? sendError.message : 'Unknown error'}`, + }, + { status: 502 } + ) + } if (result.kind === 'message') { const responseMessage = result as Message diff --git a/apps/sim/app/api/workflows/[id]/route.ts b/apps/sim/app/api/workflows/[id]/route.ts index 968593e94f..0172f6d682 100644 --- a/apps/sim/app/api/workflows/[id]/route.ts +++ b/apps/sim/app/api/workflows/[id]/route.ts @@ -20,6 +20,7 @@ const UpdateWorkflowSchema = z.object({ description: z.string().optional(), color: z.string().optional(), folderId: z.string().nullable().optional(), + sortOrder: z.number().int().min(0).optional(), }) /** @@ -438,12 +439,12 @@ export async function PUT(request: NextRequest, { params }: { params: Promise<{ return NextResponse.json({ error: 'Access denied' }, { status: 403 }) } - // Build update object - const updateData: any = { updatedAt: new Date() } + const updateData: Record = { updatedAt: new Date() } if (updates.name !== undefined) updateData.name = updates.name if (updates.description !== undefined) updateData.description = updates.description if (updates.color !== undefined) updateData.color = updates.color if (updates.folderId !== undefined) updateData.folderId = updates.folderId + if (updates.sortOrder !== undefined) updateData.sortOrder = updates.sortOrder // Update the workflow const [updatedWorkflow] = await db diff --git a/apps/sim/app/api/workflows/reorder/route.ts b/apps/sim/app/api/workflows/reorder/route.ts new file mode 100644 index 0000000000..3989be4e99 --- /dev/null +++ b/apps/sim/app/api/workflows/reorder/route.ts @@ -0,0 +1,91 @@ +import { db } from '@sim/db' +import { workflow } from '@sim/db/schema' +import { createLogger } from '@sim/logger' +import { eq, inArray } from 'drizzle-orm' +import { type NextRequest, NextResponse } from 'next/server' +import { z } from 'zod' +import { getSession } from '@/lib/auth' +import { generateRequestId } from '@/lib/core/utils/request' +import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' + +const logger = createLogger('WorkflowReorderAPI') + +const ReorderSchema = z.object({ + workspaceId: z.string(), + updates: z.array( + z.object({ + id: z.string(), + sortOrder: z.number().int().min(0), + folderId: z.string().nullable().optional(), + }) + ), +}) + +export async function PUT(req: NextRequest) { + const requestId = generateRequestId() + const session = await getSession() + + if (!session?.user?.id) { + logger.warn(`[${requestId}] Unauthorized reorder attempt`) + return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) + } + + try { + const body = await req.json() + const { workspaceId, updates } = ReorderSchema.parse(body) + + const permission = await getUserEntityPermissions(session.user.id, 'workspace', workspaceId) + if (!permission || permission === 'read') { + logger.warn( + `[${requestId}] User ${session.user.id} lacks write permission for workspace ${workspaceId}` + ) + return NextResponse.json({ error: 'Write access required' }, { status: 403 }) + } + + const workflowIds = updates.map((u) => u.id) + const existingWorkflows = await db + .select({ id: workflow.id, workspaceId: workflow.workspaceId }) + .from(workflow) + .where(inArray(workflow.id, workflowIds)) + + const validIds = new Set( + existingWorkflows.filter((w) => w.workspaceId === workspaceId).map((w) => w.id) + ) + + const validUpdates = updates.filter((u) => validIds.has(u.id)) + + if (validUpdates.length === 0) { + return NextResponse.json({ error: 'No valid workflows to update' }, { status: 400 }) + } + + await db.transaction(async (tx) => { + for (const update of validUpdates) { + const updateData: Record = { + sortOrder: update.sortOrder, + updatedAt: new Date(), + } + if (update.folderId !== undefined) { + updateData.folderId = update.folderId + } + await tx.update(workflow).set(updateData).where(eq(workflow.id, update.id)) + } + }) + + logger.info( + `[${requestId}] Reordered ${validUpdates.length} workflows in workspace ${workspaceId}` + ) + + return NextResponse.json({ success: true, updated: validUpdates.length }) + } catch (error) { + if (error instanceof z.ZodError) { + logger.warn(`[${requestId}] Invalid reorder data`, { errors: error.errors }) + return NextResponse.json( + { error: 'Invalid request data', details: error.errors }, + { status: 400 } + ) + } + + logger.error(`[${requestId}] Error reordering workflows`, error) + return NextResponse.json({ error: 'Failed to reorder workflows' }, { status: 500 }) + } +} diff --git a/apps/sim/app/api/workflows/route.ts b/apps/sim/app/api/workflows/route.ts index 81d4c885b9..407e9f0368 100644 --- a/apps/sim/app/api/workflows/route.ts +++ b/apps/sim/app/api/workflows/route.ts @@ -1,7 +1,7 @@ import { db } from '@sim/db' import { workflow } from '@sim/db/schema' import { createLogger } from '@sim/logger' -import { eq } from 'drizzle-orm' +import { and, eq, isNull, max } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' @@ -17,6 +17,7 @@ const CreateWorkflowSchema = z.object({ color: z.string().optional().default('#3972F6'), workspaceId: z.string().optional(), folderId: z.string().nullable().optional(), + sortOrder: z.number().int().optional(), }) // GET /api/workflows - Get workflows for user (optionally filtered by workspaceId) @@ -89,7 +90,14 @@ export async function POST(req: NextRequest) { try { const body = await req.json() - const { name, description, color, workspaceId, folderId } = CreateWorkflowSchema.parse(body) + const { + name, + description, + color, + workspaceId, + folderId, + sortOrder: providedSortOrder, + } = CreateWorkflowSchema.parse(body) if (workspaceId) { const workspacePermission = await getUserEntityPermissions( @@ -127,11 +135,28 @@ export async function POST(req: NextRequest) { // Silently fail }) + let sortOrder: number + if (providedSortOrder !== undefined) { + sortOrder = providedSortOrder + } else { + const folderCondition = folderId ? eq(workflow.folderId, folderId) : isNull(workflow.folderId) + const [maxResult] = await db + .select({ maxOrder: max(workflow.sortOrder) }) + .from(workflow) + .where( + workspaceId + ? and(eq(workflow.workspaceId, workspaceId), folderCondition) + : and(eq(workflow.userId, session.user.id), folderCondition) + ) + sortOrder = (maxResult?.maxOrder ?? -1) + 1 + } + await db.insert(workflow).values({ id: workflowId, userId: session.user.id, workspaceId: workspaceId || null, folderId: folderId || null, + sortOrder, name, description, color, @@ -152,6 +177,7 @@ export async function POST(req: NextRequest) { color, workspaceId, folderId, + sortOrder, createdAt: now, updatedAt: now, }) diff --git a/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/route.ts b/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/route.ts index 0fff019545..5637ad1f4c 100644 --- a/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/route.ts +++ b/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/route.ts @@ -80,7 +80,6 @@ const updateNotificationSchema = z levelFilter: levelFilterSchema.optional(), triggerFilter: triggerFilterSchema.optional(), includeFinalOutput: z.boolean().optional(), - includeTraceSpans: z.boolean().optional(), includeRateLimits: z.boolean().optional(), includeUsageData: z.boolean().optional(), alertConfig: alertConfigSchema.optional(), @@ -147,7 +146,6 @@ export async function GET(request: NextRequest, { params }: RouteParams) { levelFilter: subscription.levelFilter, triggerFilter: subscription.triggerFilter, includeFinalOutput: subscription.includeFinalOutput, - includeTraceSpans: subscription.includeTraceSpans, includeRateLimits: subscription.includeRateLimits, includeUsageData: subscription.includeUsageData, webhookConfig: subscription.webhookConfig, @@ -222,7 +220,6 @@ export async function PUT(request: NextRequest, { params }: RouteParams) { if (data.triggerFilter !== undefined) updateData.triggerFilter = data.triggerFilter if (data.includeFinalOutput !== undefined) updateData.includeFinalOutput = data.includeFinalOutput - if (data.includeTraceSpans !== undefined) updateData.includeTraceSpans = data.includeTraceSpans if (data.includeRateLimits !== undefined) updateData.includeRateLimits = data.includeRateLimits if (data.includeUsageData !== undefined) updateData.includeUsageData = data.includeUsageData if (data.alertConfig !== undefined) updateData.alertConfig = data.alertConfig @@ -260,7 +257,6 @@ export async function PUT(request: NextRequest, { params }: RouteParams) { levelFilter: subscription.levelFilter, triggerFilter: subscription.triggerFilter, includeFinalOutput: subscription.includeFinalOutput, - includeTraceSpans: subscription.includeTraceSpans, includeRateLimits: subscription.includeRateLimits, includeUsageData: subscription.includeUsageData, webhookConfig: subscription.webhookConfig, diff --git a/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/test/route.ts b/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/test/route.ts index 3e95e22205..ade0689ae0 100644 --- a/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/test/route.ts +++ b/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/test/route.ts @@ -5,8 +5,14 @@ import { createLogger } from '@sim/logger' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { v4 as uuidv4 } from 'uuid' +import { + type EmailRateLimitsData, + type EmailUsageData, + renderWorkflowNotificationEmail, +} from '@/components/emails' import { getSession } from '@/lib/auth' import { decryptSecret } from '@/lib/core/security/encryption' +import { getBaseUrl } from '@/lib/core/utils/urls' import { sendEmail } from '@/lib/messaging/email/mailer' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' @@ -67,29 +73,23 @@ function buildTestPayload(subscription: typeof workspaceNotificationSubscription data.finalOutput = { message: 'This is a test notification', test: true } } - if (subscription.includeTraceSpans) { - data.traceSpans = [ - { - id: 'span_test_1', - name: 'Test Block', - type: 'block', - status: 'success', - startTime: new Date(timestamp - 5000).toISOString(), - endTime: new Date(timestamp).toISOString(), - duration: 5000, - }, - ] - } - if (subscription.includeRateLimits) { data.rateLimits = { - sync: { limit: 150, remaining: 45, resetAt: new Date(timestamp + 60000).toISOString() }, - async: { limit: 1000, remaining: 50, resetAt: new Date(timestamp + 60000).toISOString() }, + sync: { + requestsPerMinute: 150, + remaining: 45, + resetAt: new Date(timestamp + 60000).toISOString(), + }, + async: { + requestsPerMinute: 1000, + remaining: 50, + resetAt: new Date(timestamp + 60000).toISOString(), + }, } } if (subscription.includeUsageData) { - data.usage = { currentPeriodCost: 2.45, limit: 20, plan: 'pro', isExceeded: false } + data.usage = { currentPeriodCost: 2.45, limit: 20, percentUsed: 12.25, isExceeded: false } } return { payload, timestamp } @@ -157,23 +157,26 @@ async function testEmail(subscription: typeof workspaceNotificationSubscription. const { payload } = buildTestPayload(subscription) const data = (payload as Record).data as Record + const baseUrl = getBaseUrl() + const logUrl = `${baseUrl}/workspace/${subscription.workspaceId}/logs` + + const html = await renderWorkflowNotificationEmail({ + workflowName: data.workflowName as string, + status: data.status as 'success' | 'error', + trigger: data.trigger as string, + duration: `${data.totalDurationMs}ms`, + cost: `$${(((data.cost as Record)?.total as number) || 0).toFixed(4)}`, + logUrl, + finalOutput: data.finalOutput, + rateLimits: data.rateLimits as EmailRateLimitsData | undefined, + usageData: data.usage as EmailUsageData | undefined, + }) const result = await sendEmail({ to: subscription.emailRecipients, subject: `[Test] Workflow Execution: ${data.workflowName}`, - text: `This is a test notification from Sim Studio.\n\nWorkflow: ${data.workflowName}\nStatus: ${data.status}\nDuration: ${data.totalDurationMs}ms\n\nThis notification is configured for workspace notifications.`, - html: ` -
-

Test Notification

-

This is a test notification from Sim Studio.

- - - - -
Workflow${data.workflowName}
Status${data.status}
Duration${data.totalDurationMs}ms
-

This notification is configured for workspace notifications.

-
- `, + html, + text: `This is a test notification from Sim.\n\nWorkflow: ${data.workflowName}\nStatus: ${data.status}\nDuration: ${data.totalDurationMs}ms\n\nView Log: ${logUrl}\n\nThis notification is configured for workspace notifications.`, emailType: 'notifications', }) @@ -227,7 +230,7 @@ async function testSlack( elements: [ { type: 'mrkdwn', - text: 'This is a test notification from Sim Studio workspace notifications.', + text: 'This is a test notification from Sim workspace notifications.', }, ], }, diff --git a/apps/sim/app/api/workspaces/[id]/notifications/route.ts b/apps/sim/app/api/workspaces/[id]/notifications/route.ts index b5852a0182..ef630045cd 100644 --- a/apps/sim/app/api/workspaces/[id]/notifications/route.ts +++ b/apps/sim/app/api/workspaces/[id]/notifications/route.ts @@ -83,7 +83,6 @@ const createNotificationSchema = z levelFilter: levelFilterSchema.default(['info', 'error']), triggerFilter: triggerFilterSchema.default([...CORE_TRIGGER_TYPES]), includeFinalOutput: z.boolean().default(false), - includeTraceSpans: z.boolean().default(false), includeRateLimits: z.boolean().default(false), includeUsageData: z.boolean().default(false), alertConfig: alertConfigSchema.optional(), @@ -138,7 +137,6 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{ levelFilter: workspaceNotificationSubscription.levelFilter, triggerFilter: workspaceNotificationSubscription.triggerFilter, includeFinalOutput: workspaceNotificationSubscription.includeFinalOutput, - includeTraceSpans: workspaceNotificationSubscription.includeTraceSpans, includeRateLimits: workspaceNotificationSubscription.includeRateLimits, includeUsageData: workspaceNotificationSubscription.includeUsageData, webhookConfig: workspaceNotificationSubscription.webhookConfig, @@ -240,7 +238,6 @@ export async function POST(request: NextRequest, { params }: { params: Promise<{ levelFilter: data.levelFilter, triggerFilter: data.triggerFilter, includeFinalOutput: data.includeFinalOutput, - includeTraceSpans: data.includeTraceSpans, includeRateLimits: data.includeRateLimits, includeUsageData: data.includeUsageData, alertConfig: data.alertConfig || null, @@ -266,7 +263,6 @@ export async function POST(request: NextRequest, { params }: { params: Promise<{ levelFilter: subscription.levelFilter, triggerFilter: subscription.triggerFilter, includeFinalOutput: subscription.includeFinalOutput, - includeTraceSpans: subscription.includeTraceSpans, includeRateLimits: subscription.includeRateLimits, includeUsageData: subscription.includeUsageData, webhookConfig: subscription.webhookConfig, diff --git a/apps/sim/app/api/workspaces/invitations/[invitationId]/route.test.ts b/apps/sim/app/api/workspaces/invitations/[invitationId]/route.test.ts index 12833c9695..389de676cd 100644 --- a/apps/sim/app/api/workspaces/invitations/[invitationId]/route.test.ts +++ b/apps/sim/app/api/workspaces/invitations/[invitationId]/route.test.ts @@ -2,13 +2,6 @@ import { createSession, createWorkspaceRecord, loggerMock } from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' -/** - * Tests for workspace invitation by ID API route - * Tests GET (details + token acceptance), DELETE (cancellation) - * - * @vitest-environment node - */ - const mockGetSession = vi.fn() const mockHasWorkspaceAdminAccess = vi.fn() @@ -227,7 +220,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { expect(response.headers.get('location')).toBe('https://test.sim.ai/workspace/workspace-456/w') }) - it('should redirect to error page when invitation expired', async () => { + it('should redirect to error page with token preserved when invitation expired', async () => { const session = createSession({ userId: mockUser.id, email: 'invited@example.com', @@ -250,12 +243,13 @@ describe('Workspace Invitation [invitationId] API Route', () => { const response = await GET(request, { params }) expect(response.status).toBe(307) - expect(response.headers.get('location')).toBe( - 'https://test.sim.ai/invite/invitation-789?error=expired' + const location = response.headers.get('location') + expect(location).toBe( + 'https://test.sim.ai/invite/invitation-789?error=expired&token=token-abc123' ) }) - it('should redirect to error page when email mismatch', async () => { + it('should redirect to error page with token preserved when email mismatch', async () => { const session = createSession({ userId: mockUser.id, email: 'wrong@example.com', @@ -277,12 +271,13 @@ describe('Workspace Invitation [invitationId] API Route', () => { const response = await GET(request, { params }) expect(response.status).toBe(307) - expect(response.headers.get('location')).toBe( - 'https://test.sim.ai/invite/invitation-789?error=email-mismatch' + const location = response.headers.get('location') + expect(location).toBe( + 'https://test.sim.ai/invite/invitation-789?error=email-mismatch&token=token-abc123' ) }) - it('should return 404 when invitation not found', async () => { + it('should return 404 when invitation not found (without token)', async () => { const session = createSession({ userId: mockUser.id, email: mockUser.email }) mockGetSession.mockResolvedValue(session) dbSelectResults = [[]] @@ -296,6 +291,189 @@ describe('Workspace Invitation [invitationId] API Route', () => { expect(response.status).toBe(404) expect(data).toEqual({ error: 'Invitation not found or has expired' }) }) + + it('should redirect to error page with token preserved when invitation not found (with token)', async () => { + const session = createSession({ userId: mockUser.id, email: mockUser.email }) + mockGetSession.mockResolvedValue(session) + dbSelectResults = [[]] + + const request = new NextRequest( + 'http://localhost/api/workspaces/invitations/non-existent?token=some-invalid-token' + ) + const params = Promise.resolve({ invitationId: 'non-existent' }) + + const response = await GET(request, { params }) + + expect(response.status).toBe(307) + const location = response.headers.get('location') + expect(location).toBe( + 'https://test.sim.ai/invite/non-existent?error=invalid-token&token=some-invalid-token' + ) + }) + + it('should redirect to error page with token preserved when invitation already processed', async () => { + const session = createSession({ + userId: mockUser.id, + email: 'invited@example.com', + name: mockUser.name, + }) + mockGetSession.mockResolvedValue(session) + + const acceptedInvitation = { + ...mockInvitation, + status: 'accepted', + } + + dbSelectResults = [[acceptedInvitation], [mockWorkspace]] + + const request = new NextRequest( + 'http://localhost/api/workspaces/invitations/token-abc123?token=token-abc123' + ) + const params = Promise.resolve({ invitationId: 'token-abc123' }) + + const response = await GET(request, { params }) + + expect(response.status).toBe(307) + const location = response.headers.get('location') + expect(location).toBe( + 'https://test.sim.ai/invite/invitation-789?error=already-processed&token=token-abc123' + ) + }) + + it('should redirect to error page with token preserved when workspace not found', async () => { + const session = createSession({ + userId: mockUser.id, + email: 'invited@example.com', + name: mockUser.name, + }) + mockGetSession.mockResolvedValue(session) + + dbSelectResults = [[mockInvitation], []] + + const request = new NextRequest( + 'http://localhost/api/workspaces/invitations/token-abc123?token=token-abc123' + ) + const params = Promise.resolve({ invitationId: 'token-abc123' }) + + const response = await GET(request, { params }) + + expect(response.status).toBe(307) + const location = response.headers.get('location') + expect(location).toBe( + 'https://test.sim.ai/invite/invitation-789?error=workspace-not-found&token=token-abc123' + ) + }) + + it('should redirect to error page with token preserved when user not found', async () => { + const session = createSession({ + userId: mockUser.id, + email: 'invited@example.com', + name: mockUser.name, + }) + mockGetSession.mockResolvedValue(session) + + dbSelectResults = [[mockInvitation], [mockWorkspace], []] + + const request = new NextRequest( + 'http://localhost/api/workspaces/invitations/token-abc123?token=token-abc123' + ) + const params = Promise.resolve({ invitationId: 'token-abc123' }) + + const response = await GET(request, { params }) + + expect(response.status).toBe(307) + const location = response.headers.get('location') + expect(location).toBe( + 'https://test.sim.ai/invite/invitation-789?error=user-not-found&token=token-abc123' + ) + }) + + it('should URL encode special characters in token when preserving in error redirects', async () => { + const session = createSession({ + userId: mockUser.id, + email: 'wrong@example.com', + name: mockUser.name, + }) + mockGetSession.mockResolvedValue(session) + + dbSelectResults = [ + [mockInvitation], + [mockWorkspace], + [{ ...mockUser, email: 'wrong@example.com' }], + ] + + const specialToken = 'token+with/special=chars&more' + const request = new NextRequest( + `http://localhost/api/workspaces/invitations/token-abc123?token=${encodeURIComponent(specialToken)}` + ) + const params = Promise.resolve({ invitationId: 'token-abc123' }) + + const response = await GET(request, { params }) + + expect(response.status).toBe(307) + const location = response.headers.get('location') + expect(location).toContain('error=email-mismatch') + expect(location).toContain(`token=${encodeURIComponent(specialToken)}`) + }) + }) + + describe('Token Preservation - Full Flow Scenario', () => { + it('should preserve token through email mismatch so user can retry with correct account', async () => { + const wrongSession = createSession({ + userId: 'wrong-user', + email: 'wrong@example.com', + name: 'Wrong User', + }) + mockGetSession.mockResolvedValue(wrongSession) + + dbSelectResults = [ + [mockInvitation], + [mockWorkspace], + [{ id: 'wrong-user', email: 'wrong@example.com' }], + ] + + const request1 = new NextRequest( + 'http://localhost/api/workspaces/invitations/token-abc123?token=token-abc123' + ) + const params1 = Promise.resolve({ invitationId: 'token-abc123' }) + + const response1 = await GET(request1, { params: params1 }) + + expect(response1.status).toBe(307) + const location1 = response1.headers.get('location') + expect(location1).toBe( + 'https://test.sim.ai/invite/invitation-789?error=email-mismatch&token=token-abc123' + ) + + vi.clearAllMocks() + dbSelectCallIndex = 0 + + const correctSession = createSession({ + userId: mockUser.id, + email: 'invited@example.com', + name: mockUser.name, + }) + mockGetSession.mockResolvedValue(correctSession) + + dbSelectResults = [ + [mockInvitation], + [mockWorkspace], + [{ ...mockUser, email: 'invited@example.com' }], + [], + ] + + const request2 = new NextRequest( + 'http://localhost/api/workspaces/invitations/token-abc123?token=token-abc123' + ) + const params2 = Promise.resolve({ invitationId: 'token-abc123' }) + + const response2 = await GET(request2, { params: params2 }) + + expect(response2.status).toBe(307) + expect(response2.headers.get('location')).toBe( + 'https://test.sim.ai/workspace/workspace-456/w' + ) + }) }) describe('DELETE /api/workspaces/invitations/[invitationId]', () => { diff --git a/apps/sim/app/api/workspaces/invitations/[invitationId]/route.ts b/apps/sim/app/api/workspaces/invitations/[invitationId]/route.ts index 4d4ac7928f..c7574a61e2 100644 --- a/apps/sim/app/api/workspaces/invitations/[invitationId]/route.ts +++ b/apps/sim/app/api/workspaces/invitations/[invitationId]/route.ts @@ -31,7 +31,6 @@ export async function GET( const isAcceptFlow = !!token // If token is provided, this is an acceptance flow if (!session?.user?.id) { - // For token-based acceptance flows, redirect to login if (isAcceptFlow) { return NextResponse.redirect(new URL(`/invite/${invitationId}?token=${token}`, getBaseUrl())) } @@ -51,8 +50,9 @@ export async function GET( if (!invitation) { if (isAcceptFlow) { + const tokenParam = token ? `&token=${encodeURIComponent(token)}` : '' return NextResponse.redirect( - new URL(`/invite/${invitationId}?error=invalid-token`, getBaseUrl()) + new URL(`/invite/${invitationId}?error=invalid-token${tokenParam}`, getBaseUrl()) ) } return NextResponse.json({ error: 'Invitation not found or has expired' }, { status: 404 }) @@ -60,8 +60,9 @@ export async function GET( if (new Date() > new Date(invitation.expiresAt)) { if (isAcceptFlow) { + const tokenParam = token ? `&token=${encodeURIComponent(token)}` : '' return NextResponse.redirect( - new URL(`/invite/${invitation.id}?error=expired`, getBaseUrl()) + new URL(`/invite/${invitation.id}?error=expired${tokenParam}`, getBaseUrl()) ) } return NextResponse.json({ error: 'Invitation has expired' }, { status: 400 }) @@ -75,17 +76,20 @@ export async function GET( if (!workspaceDetails) { if (isAcceptFlow) { + const tokenParam = token ? `&token=${encodeURIComponent(token)}` : '' return NextResponse.redirect( - new URL(`/invite/${invitation.id}?error=workspace-not-found`, getBaseUrl()) + new URL(`/invite/${invitation.id}?error=workspace-not-found${tokenParam}`, getBaseUrl()) ) } return NextResponse.json({ error: 'Workspace not found' }, { status: 404 }) } if (isAcceptFlow) { + const tokenParam = token ? `&token=${encodeURIComponent(token)}` : '' + if (invitation.status !== ('pending' as WorkspaceInvitationStatus)) { return NextResponse.redirect( - new URL(`/invite/${invitation.id}?error=already-processed`, getBaseUrl()) + new URL(`/invite/${invitation.id}?error=already-processed${tokenParam}`, getBaseUrl()) ) } @@ -100,7 +104,7 @@ export async function GET( if (!userData) { return NextResponse.redirect( - new URL(`/invite/${invitation.id}?error=user-not-found`, getBaseUrl()) + new URL(`/invite/${invitation.id}?error=user-not-found${tokenParam}`, getBaseUrl()) ) } @@ -108,7 +112,7 @@ export async function GET( if (!isValidMatch) { return NextResponse.redirect( - new URL(`/invite/${invitation.id}?error=email-mismatch`, getBaseUrl()) + new URL(`/invite/${invitation.id}?error=email-mismatch${tokenParam}`, getBaseUrl()) ) } diff --git a/apps/sim/app/api/workspaces/route.ts b/apps/sim/app/api/workspaces/route.ts index f9172d9c30..492922b79b 100644 --- a/apps/sim/app/api/workspaces/route.ts +++ b/apps/sim/app/api/workspaces/route.ts @@ -13,6 +13,7 @@ const logger = createLogger('Workspaces') const createWorkspaceSchema = z.object({ name: z.string().trim().min(1, 'Name is required'), + skipDefaultWorkflow: z.boolean().optional().default(false), }) // Get all workspaces for the current user @@ -63,9 +64,9 @@ export async function POST(req: Request) { } try { - const { name } = createWorkspaceSchema.parse(await req.json()) + const { name, skipDefaultWorkflow } = createWorkspaceSchema.parse(await req.json()) - const newWorkspace = await createWorkspace(session.user.id, name) + const newWorkspace = await createWorkspace(session.user.id, name, skipDefaultWorkflow) return NextResponse.json({ workspace: newWorkspace }) } catch (error) { @@ -80,7 +81,7 @@ async function createDefaultWorkspace(userId: string, userName?: string | null) return createWorkspace(userId, workspaceName) } -async function createWorkspace(userId: string, name: string) { +async function createWorkspace(userId: string, name: string, skipDefaultWorkflow = false) { const workspaceId = crypto.randomUUID() const workflowId = crypto.randomUUID() const now = new Date() @@ -97,7 +98,6 @@ async function createWorkspace(userId: string, name: string) { updatedAt: now, }) - // Create admin permissions for the workspace owner await tx.insert(permissions).values({ id: crypto.randomUUID(), entityType: 'workspace' as const, @@ -108,37 +108,41 @@ async function createWorkspace(userId: string, name: string) { updatedAt: now, }) - // Create initial workflow for the workspace (empty canvas) - // Create the workflow - await tx.insert(workflow).values({ - id: workflowId, - userId, - workspaceId, - folderId: null, - name: 'default-agent', - description: 'Your first workflow - start building here!', - color: '#3972F6', - lastSynced: now, - createdAt: now, - updatedAt: now, - isDeployed: false, - runCount: 0, - variables: {}, - }) + if (!skipDefaultWorkflow) { + await tx.insert(workflow).values({ + id: workflowId, + userId, + workspaceId, + folderId: null, + name: 'default-agent', + description: 'Your first workflow - start building here!', + color: '#3972F6', + lastSynced: now, + createdAt: now, + updatedAt: now, + isDeployed: false, + runCount: 0, + variables: {}, + }) + } logger.info( - `Created workspace ${workspaceId} with initial workflow ${workflowId} for user ${userId}` + skipDefaultWorkflow + ? `Created workspace ${workspaceId} for user ${userId}` + : `Created workspace ${workspaceId} with initial workflow ${workflowId} for user ${userId}` ) }) - const { workflowState } = buildDefaultWorkflowArtifacts() - const seedResult = await saveWorkflowToNormalizedTables(workflowId, workflowState) + if (!skipDefaultWorkflow) { + const { workflowState } = buildDefaultWorkflowArtifacts() + const seedResult = await saveWorkflowToNormalizedTables(workflowId, workflowState) - if (!seedResult.success) { - throw new Error(seedResult.error || 'Failed to seed default workflow state') + if (!seedResult.success) { + throw new Error(seedResult.error || 'Failed to seed default workflow state') + } } } catch (error) { - logger.error(`Failed to create workspace ${workspaceId} with initial workflow:`, error) + logger.error(`Failed to create workspace ${workspaceId}:`, error) throw error } diff --git a/apps/sim/app/invite/[id]/invite.tsx b/apps/sim/app/invite/[id]/invite.tsx index 41a6c20588..caa2659d47 100644 --- a/apps/sim/app/invite/[id]/invite.tsx +++ b/apps/sim/app/invite/[id]/invite.tsx @@ -178,22 +178,24 @@ export default function Invite() { useEffect(() => { const errorReason = searchParams.get('error') - - if (errorReason) { - setError(getInviteError(errorReason)) - setIsLoading(false) - return - } - const isNew = searchParams.get('new') === 'true' setIsNewUser(isNew) const tokenFromQuery = searchParams.get('token') - const effectiveToken = tokenFromQuery || inviteId + if (tokenFromQuery) { + setToken(tokenFromQuery) + sessionStorage.setItem('inviteToken', tokenFromQuery) + } else { + const storedToken = sessionStorage.getItem('inviteToken') + if (storedToken && storedToken !== inviteId) { + setToken(storedToken) + } + } - if (effectiveToken) { - setToken(effectiveToken) - sessionStorage.setItem('inviteToken', effectiveToken) + if (errorReason) { + setError(getInviteError(errorReason)) + setIsLoading(false) + return } }, [searchParams, inviteId]) @@ -203,7 +205,6 @@ export default function Invite() { async function fetchInvitationDetails() { setIsLoading(true) try { - // Fetch invitation details using the invitation ID from the URL path const workspaceInviteResponse = await fetch(`/api/workspaces/invitations/${inviteId}`, { method: 'GET', }) @@ -220,7 +221,6 @@ export default function Invite() { return } - // Handle workspace invitation errors with specific status codes if (!workspaceInviteResponse.ok && workspaceInviteResponse.status !== 404) { const errorCode = parseApiError(null, workspaceInviteResponse.status) const errorData = await workspaceInviteResponse.json().catch(() => ({})) @@ -229,7 +229,6 @@ export default function Invite() { error: errorData, }) - // Refine error code based on response body if available if (errorData.error) { const refinedCode = parseApiError(errorData.error, workspaceInviteResponse.status) setError(getInviteError(refinedCode)) @@ -254,13 +253,11 @@ export default function Invite() { if (data) { setInvitationType('organization') - // Check if user is already in an organization BEFORE showing the invitation const activeOrgResponse = await client.organization .getFullOrganization() .catch(() => ({ data: null })) if (activeOrgResponse?.data) { - // User is already in an organization setCurrentOrgName(activeOrgResponse.data.name) setError(getInviteError('already-in-organization')) setIsLoading(false) @@ -289,7 +286,6 @@ export default function Invite() { throw { code: 'invalid-invitation' } } } catch (orgErr: any) { - // If this is our structured error, use it directly if (orgErr.code) { throw orgErr } @@ -316,7 +312,6 @@ export default function Invite() { window.location.href = `/api/workspaces/invitations/${encodeURIComponent(inviteId)}?token=${encodeURIComponent(token || '')}` } else { try { - // Get the organizationId from invitation details const orgId = invitationDetails?.data?.organizationId if (!orgId) { @@ -325,7 +320,6 @@ export default function Invite() { return } - // Use our custom API endpoint that handles Pro usage snapshot const response = await fetch(`/api/organizations/${orgId}/invitations/${inviteId}`, { method: 'PUT', headers: { @@ -347,7 +341,6 @@ export default function Invite() { return } - // Set the organization as active await client.organization.setActive({ organizationId: orgId, }) @@ -360,7 +353,6 @@ export default function Invite() { } catch (err: any) { logger.error('Error accepting invitation:', err) - // Reset accepted state on error setAccepted(false) const errorCode = parseApiError(err) @@ -371,7 +363,9 @@ export default function Invite() { } const getCallbackUrl = () => { - return `/invite/${inviteId}${token && token !== inviteId ? `?token=${token}` : ''}` + const effectiveToken = + token || sessionStorage.getItem('inviteToken') || searchParams.get('token') + return `/invite/${inviteId}${effectiveToken && effectiveToken !== inviteId ? `?token=${effectiveToken}` : ''}` } if (!session?.user && !isPending) { @@ -435,7 +429,6 @@ export default function Invite() { if (error) { const callbackUrl = encodeURIComponent(getCallbackUrl()) - // Special handling for already in organization if (error.code === 'already-in-organization') { return ( @@ -463,7 +456,6 @@ export default function Invite() { ) } - // Handle email mismatch - user needs to sign in with a different account if (error.code === 'email-mismatch') { return ( @@ -490,7 +482,6 @@ export default function Invite() { ) } - // Handle auth-related errors - prompt user to sign in if (error.requiresAuth) { return ( @@ -518,7 +509,6 @@ export default function Invite() { ) } - // Handle retryable errors const actions: Array<{ label: string onClick: () => void @@ -550,7 +540,6 @@ export default function Invite() { ) } - // Show success only if accepted AND no error if (accepted && !error) { return ( diff --git a/apps/sim/app/layout.tsx b/apps/sim/app/layout.tsx index 6be1e579c5..327a519291 100644 --- a/apps/sim/app/layout.tsx +++ b/apps/sim/app/layout.tsx @@ -1,12 +1,13 @@ import type { Metadata, Viewport } from 'next' +import Script from 'next/script' import { PublicEnvScript } from 'next-runtime-env' import { BrandedLayout } from '@/components/branded-layout' import { generateThemeCSS } from '@/lib/branding/inject-theme' import { generateBrandedMetadata, generateStructuredData } from '@/lib/branding/metadata' import { PostHogProvider } from '@/app/_shell/providers/posthog-provider' import '@/app/_styles/globals.css' - import { OneDollarStats } from '@/components/analytics/onedollarstats' +import { isReactGrabEnabled } from '@/lib/core/config/feature-flags' import { HydrationErrorHandler } from '@/app/_shell/hydration-error-handler' import { QueryProvider } from '@/app/_shell/providers/query-provider' import { SessionProvider } from '@/app/_shell/providers/session-provider' @@ -33,6 +34,19 @@ export default function RootLayout({ children }: { children: React.ReactNode }) return ( + {isReactGrabEnabled && ( +