mirror of
https://github.com/simstudioai/sim.git
synced 2026-01-15 01:47:59 -05:00
Compare commits
84 Commits
v0.5.54
...
improvemen
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
66483c2fd5 | ||
|
|
3db9ad2d95 | ||
|
|
4195cfe1ff | ||
|
|
212933746e | ||
|
|
5af72ea22f | ||
|
|
4899c28421 | ||
|
|
2cee30ff15 | ||
|
|
41f9374b5c | ||
|
|
6c8c3d6368 | ||
|
|
3f1dccd6aa | ||
|
|
468ec2ea81 | ||
|
|
d7e0d9ba43 | ||
|
|
51477c12cc | ||
|
|
a3535639f1 | ||
|
|
d5bd97de32 | ||
|
|
bd7009e316 | ||
|
|
4f04b1efea | ||
|
|
258e96d6b5 | ||
|
|
4b026ad54d | ||
|
|
f6b7c15dc4 | ||
|
|
70ed19fcdb | ||
|
|
d6e4c91e81 | ||
|
|
e3fa40af11 | ||
|
|
6e0055f847 | ||
|
|
ebbe67aae3 | ||
|
|
2b49d15ec8 | ||
|
|
3d037c9b74 | ||
|
|
eb52f69efd | ||
|
|
64b3f98488 | ||
|
|
4be420311c | ||
|
|
b49ed2fcd9 | ||
|
|
837405e1ec | ||
|
|
2bc403972c | ||
|
|
40a066f39c | ||
|
|
c9068d043e | ||
|
|
048eddd468 | ||
|
|
6717ce89f4 | ||
|
|
a05003a2d3 | ||
|
|
46417ddb8c | ||
|
|
b6cbee2464 | ||
|
|
91ed5338cb | ||
|
|
d55072a45f | ||
|
|
684ad5aeec | ||
|
|
a3dff1027f | ||
|
|
0aec9ef571 | ||
|
|
cb4db20a5f | ||
|
|
4941b5224b | ||
|
|
7f18d96d32 | ||
|
|
e347486f50 | ||
|
|
e21cc1132b | ||
|
|
ab32a19cf4 | ||
|
|
ead2413b95 | ||
|
|
9a16e7c20f | ||
|
|
283a521614 | ||
|
|
92fabe785d | ||
|
|
3ed177520a | ||
|
|
baa54b4c97 | ||
|
|
a11d452d7b | ||
|
|
6262503b89 | ||
|
|
67440432bf | ||
|
|
47eb060311 | ||
|
|
fd76e98f0e | ||
|
|
1dbd16115f | ||
|
|
38e827b61a | ||
|
|
1f5e8a41f8 | ||
|
|
796f73ee01 | ||
|
|
d3d6012d5c | ||
|
|
860610b4c2 | ||
|
|
05bbf34265 | ||
|
|
753600ed60 | ||
|
|
4da43d937c | ||
|
|
9502227fd4 | ||
|
|
13981549d1 | ||
|
|
554dcdf062 | ||
|
|
6b28742b68 | ||
|
|
e5c95093f6 | ||
|
|
b87af80bff | ||
|
|
c2180bf8a0 | ||
|
|
fdac4314d2 | ||
|
|
a54fcbc094 | ||
|
|
05904a73b2 | ||
|
|
1b22d2ce81 | ||
|
|
26dff7cffe | ||
|
|
020037728d |
605
.claude/commands/add-block.md
Normal file
605
.claude/commands/add-block.md
Normal file
@@ -0,0 +1,605 @@
|
||||
---
|
||||
description: Create a block configuration for a Sim integration with proper subBlocks, conditions, and tool wiring
|
||||
argument-hint: <service-name>
|
||||
---
|
||||
|
||||
# Add Block Skill
|
||||
|
||||
You are an expert at creating block configurations for Sim. You understand the serializer, subBlock types, conditions, dependsOn, modes, and all UI patterns.
|
||||
|
||||
## Your Task
|
||||
|
||||
When the user asks you to create a block:
|
||||
1. Create the block file in `apps/sim/blocks/blocks/{service}.ts`
|
||||
2. Configure all subBlocks with proper types, conditions, and dependencies
|
||||
3. Wire up tools correctly
|
||||
|
||||
## Block Configuration Structure
|
||||
|
||||
```typescript
|
||||
import { {ServiceName}Icon } from '@/components/icons'
|
||||
import type { BlockConfig } from '@/blocks/types'
|
||||
import { AuthMode } from '@/blocks/types'
|
||||
|
||||
export const {ServiceName}Block: BlockConfig = {
|
||||
type: '{service}', // snake_case identifier
|
||||
name: '{Service Name}', // Human readable
|
||||
description: 'Brief description', // One sentence
|
||||
longDescription: 'Detailed description for docs',
|
||||
docsLink: 'https://docs.sim.ai/tools/{service}',
|
||||
category: 'tools', // 'tools' | 'blocks' | 'triggers'
|
||||
bgColor: '#HEXCOLOR', // Brand color
|
||||
icon: {ServiceName}Icon,
|
||||
|
||||
// Auth mode
|
||||
authMode: AuthMode.OAuth, // or AuthMode.ApiKey
|
||||
|
||||
subBlocks: [
|
||||
// Define all UI fields here
|
||||
],
|
||||
|
||||
tools: {
|
||||
access: ['tool_id_1', 'tool_id_2'], // Array of tool IDs this block can use
|
||||
config: {
|
||||
tool: (params) => `{service}_${params.operation}`, // Tool selector function
|
||||
params: (params) => ({
|
||||
// Transform subBlock values to tool params
|
||||
}),
|
||||
},
|
||||
},
|
||||
|
||||
inputs: {
|
||||
// Optional: define expected inputs from other blocks
|
||||
},
|
||||
|
||||
outputs: {
|
||||
// Define outputs available to downstream blocks
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## SubBlock Types Reference
|
||||
|
||||
**Critical:** Every subblock `id` must be unique within the block. Duplicate IDs cause conflicts even with different conditions.
|
||||
|
||||
### Text Inputs
|
||||
```typescript
|
||||
// Single-line input
|
||||
{ id: 'field', title: 'Label', type: 'short-input', placeholder: '...' }
|
||||
|
||||
// Multi-line input
|
||||
{ id: 'field', title: 'Label', type: 'long-input', placeholder: '...', rows: 6 }
|
||||
|
||||
// Password input
|
||||
{ id: 'apiKey', title: 'API Key', type: 'short-input', password: true }
|
||||
```
|
||||
|
||||
### Selection Inputs
|
||||
```typescript
|
||||
// Dropdown (static options)
|
||||
{
|
||||
id: 'operation',
|
||||
title: 'Operation',
|
||||
type: 'dropdown',
|
||||
options: [
|
||||
{ label: 'Create', id: 'create' },
|
||||
{ label: 'Update', id: 'update' },
|
||||
],
|
||||
value: () => 'create', // Default value function
|
||||
}
|
||||
|
||||
// Combobox (searchable dropdown)
|
||||
{
|
||||
id: 'field',
|
||||
title: 'Label',
|
||||
type: 'combobox',
|
||||
options: [...],
|
||||
searchable: true,
|
||||
}
|
||||
```
|
||||
|
||||
### Code/JSON Inputs
|
||||
```typescript
|
||||
{
|
||||
id: 'code',
|
||||
title: 'Code',
|
||||
type: 'code',
|
||||
language: 'javascript', // 'javascript' | 'json' | 'python'
|
||||
placeholder: '// Enter code...',
|
||||
}
|
||||
```
|
||||
|
||||
### OAuth/Credentials
|
||||
```typescript
|
||||
{
|
||||
id: 'credential',
|
||||
title: 'Account',
|
||||
type: 'oauth-input',
|
||||
serviceId: '{service}', // Must match OAuth provider
|
||||
placeholder: 'Select account',
|
||||
required: true,
|
||||
}
|
||||
```
|
||||
|
||||
### Selectors (with dynamic options)
|
||||
```typescript
|
||||
// Channel selector (Slack, Discord, etc.)
|
||||
{
|
||||
id: 'channel',
|
||||
title: 'Channel',
|
||||
type: 'channel-selector',
|
||||
serviceId: '{service}',
|
||||
placeholder: 'Select channel',
|
||||
dependsOn: ['credential'],
|
||||
}
|
||||
|
||||
// Project selector (Jira, etc.)
|
||||
{
|
||||
id: 'project',
|
||||
title: 'Project',
|
||||
type: 'project-selector',
|
||||
serviceId: '{service}',
|
||||
dependsOn: ['credential'],
|
||||
}
|
||||
|
||||
// File selector (Google Drive, etc.)
|
||||
{
|
||||
id: 'file',
|
||||
title: 'File',
|
||||
type: 'file-selector',
|
||||
serviceId: '{service}',
|
||||
mimeType: 'application/pdf',
|
||||
dependsOn: ['credential'],
|
||||
}
|
||||
|
||||
// User selector
|
||||
{
|
||||
id: 'user',
|
||||
title: 'User',
|
||||
type: 'user-selector',
|
||||
serviceId: '{service}',
|
||||
dependsOn: ['credential'],
|
||||
}
|
||||
```
|
||||
|
||||
### Other Types
|
||||
```typescript
|
||||
// Switch/toggle
|
||||
{ id: 'enabled', type: 'switch' }
|
||||
|
||||
// Slider
|
||||
{ id: 'temperature', title: 'Temperature', type: 'slider', min: 0, max: 2, step: 0.1 }
|
||||
|
||||
// Table (key-value pairs)
|
||||
{ id: 'headers', title: 'Headers', type: 'table', columns: ['Key', 'Value'] }
|
||||
|
||||
// File upload
|
||||
{
|
||||
id: 'files',
|
||||
title: 'Attachments',
|
||||
type: 'file-upload',
|
||||
multiple: true,
|
||||
acceptedTypes: 'image/*,application/pdf',
|
||||
}
|
||||
```
|
||||
|
||||
## Condition Syntax
|
||||
|
||||
Controls when a field is shown based on other field values.
|
||||
|
||||
### Simple Condition
|
||||
```typescript
|
||||
condition: { field: 'operation', value: 'create' }
|
||||
// Shows when operation === 'create'
|
||||
```
|
||||
|
||||
### Multiple Values (OR)
|
||||
```typescript
|
||||
condition: { field: 'operation', value: ['create', 'update'] }
|
||||
// Shows when operation is 'create' OR 'update'
|
||||
```
|
||||
|
||||
### Negation
|
||||
```typescript
|
||||
condition: { field: 'operation', value: 'delete', not: true }
|
||||
// Shows when operation !== 'delete'
|
||||
```
|
||||
|
||||
### Compound (AND)
|
||||
```typescript
|
||||
condition: {
|
||||
field: 'operation',
|
||||
value: 'send',
|
||||
and: {
|
||||
field: 'type',
|
||||
value: 'dm',
|
||||
not: true,
|
||||
}
|
||||
}
|
||||
// Shows when operation === 'send' AND type !== 'dm'
|
||||
```
|
||||
|
||||
### Complex Example
|
||||
```typescript
|
||||
condition: {
|
||||
field: 'operation',
|
||||
value: ['list', 'search'],
|
||||
not: true,
|
||||
and: {
|
||||
field: 'authMethod',
|
||||
value: 'oauth',
|
||||
}
|
||||
}
|
||||
// Shows when operation NOT in ['list', 'search'] AND authMethod === 'oauth'
|
||||
```
|
||||
|
||||
## DependsOn Pattern
|
||||
|
||||
Controls when a field is enabled and when its options are refetched.
|
||||
|
||||
### Simple Array (all must be set)
|
||||
```typescript
|
||||
dependsOn: ['credential']
|
||||
// Enabled only when credential has a value
|
||||
// Options refetch when credential changes
|
||||
|
||||
dependsOn: ['credential', 'projectId']
|
||||
// Enabled only when BOTH have values
|
||||
```
|
||||
|
||||
### Complex (all + any)
|
||||
```typescript
|
||||
dependsOn: {
|
||||
all: ['authMethod'], // All must be set
|
||||
any: ['credential', 'apiKey'] // At least one must be set
|
||||
}
|
||||
// Enabled when authMethod is set AND (credential OR apiKey is set)
|
||||
```
|
||||
|
||||
## Required Pattern
|
||||
|
||||
Can be boolean or condition-based.
|
||||
|
||||
### Simple Boolean
|
||||
```typescript
|
||||
required: true
|
||||
required: false
|
||||
```
|
||||
|
||||
### Conditional Required
|
||||
```typescript
|
||||
required: { field: 'operation', value: 'create' }
|
||||
// Required only when operation === 'create'
|
||||
|
||||
required: { field: 'operation', value: ['create', 'update'] }
|
||||
// Required when operation is 'create' OR 'update'
|
||||
```
|
||||
|
||||
## Mode Pattern (Basic vs Advanced)
|
||||
|
||||
Controls which UI view shows the field.
|
||||
|
||||
### Mode Options
|
||||
- `'basic'` - Only in basic view (default UI)
|
||||
- `'advanced'` - Only in advanced view
|
||||
- `'both'` - Both views (default if not specified)
|
||||
- `'trigger'` - Only in trigger configuration
|
||||
|
||||
### canonicalParamId Pattern
|
||||
|
||||
Maps multiple UI fields to a single serialized parameter:
|
||||
|
||||
```typescript
|
||||
// Basic mode: Visual selector
|
||||
{
|
||||
id: 'channel',
|
||||
title: 'Channel',
|
||||
type: 'channel-selector',
|
||||
mode: 'basic',
|
||||
canonicalParamId: 'channel', // Both map to 'channel' param
|
||||
dependsOn: ['credential'],
|
||||
}
|
||||
|
||||
// Advanced mode: Manual input
|
||||
{
|
||||
id: 'channelId',
|
||||
title: 'Channel ID',
|
||||
type: 'short-input',
|
||||
mode: 'advanced',
|
||||
canonicalParamId: 'channel', // Both map to 'channel' param
|
||||
placeholder: 'Enter channel ID manually',
|
||||
}
|
||||
```
|
||||
|
||||
**How it works:**
|
||||
- In basic mode: `channel` selector value → `params.channel`
|
||||
- In advanced mode: `channelId` input value → `params.channel`
|
||||
- The serializer consolidates based on current mode
|
||||
|
||||
**Critical constraints:**
|
||||
- `canonicalParamId` must NOT match any other subblock's `id` in the same block (causes conflicts)
|
||||
- `canonicalParamId` must be unique per block (only one basic/advanced pair per canonicalParamId)
|
||||
- ONLY use `canonicalParamId` to link basic/advanced mode alternatives for the same logical parameter
|
||||
- Do NOT use it for any other purpose
|
||||
|
||||
## WandConfig Pattern
|
||||
|
||||
Enables AI-assisted field generation.
|
||||
|
||||
```typescript
|
||||
{
|
||||
id: 'query',
|
||||
title: 'Query',
|
||||
type: 'code',
|
||||
language: 'json',
|
||||
wandConfig: {
|
||||
enabled: true,
|
||||
prompt: 'Generate a query based on the user request. Return ONLY the JSON.',
|
||||
placeholder: 'Describe what you want to query...',
|
||||
generationType: 'json-object', // Optional: affects AI behavior
|
||||
maintainHistory: true, // Optional: keeps conversation context
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Generation Types
|
||||
- `'javascript-function-body'` - JS code generation
|
||||
- `'json-object'` - Raw JSON (adds "no markdown" instruction)
|
||||
- `'json-schema'` - JSON Schema definitions
|
||||
- `'sql-query'` - SQL statements
|
||||
- `'timestamp'` - Adds current date/time context
|
||||
|
||||
## Tools Configuration
|
||||
|
||||
**Preferred:** Use tool names directly as dropdown option IDs to avoid switch cases:
|
||||
```typescript
|
||||
// Dropdown options use tool IDs directly
|
||||
options: [
|
||||
{ label: 'Create', id: 'service_create' },
|
||||
{ label: 'Read', id: 'service_read' },
|
||||
]
|
||||
|
||||
// Tool selector just returns the operation value
|
||||
tool: (params) => params.operation,
|
||||
```
|
||||
|
||||
### With Parameter Transformation
|
||||
```typescript
|
||||
tools: {
|
||||
access: ['service_action'],
|
||||
config: {
|
||||
tool: (params) => 'service_action',
|
||||
params: (params) => ({
|
||||
id: params.resourceId,
|
||||
data: typeof params.data === 'string' ? JSON.parse(params.data) : params.data,
|
||||
}),
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### V2 Versioned Tool Selector
|
||||
```typescript
|
||||
import { createVersionedToolSelector } from '@/blocks/utils'
|
||||
|
||||
tools: {
|
||||
access: [
|
||||
'service_create_v2',
|
||||
'service_read_v2',
|
||||
'service_update_v2',
|
||||
],
|
||||
config: {
|
||||
tool: createVersionedToolSelector({
|
||||
baseToolSelector: (params) => `service_${params.operation}`,
|
||||
suffix: '_v2',
|
||||
fallbackToolId: 'service_create_v2',
|
||||
}),
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs Definition
|
||||
|
||||
**IMPORTANT:** Block outputs have a simpler schema than tool outputs. Block outputs do NOT support:
|
||||
- `optional: true` - This is only for tool outputs
|
||||
- `items` property - This is only for tool outputs with array types
|
||||
|
||||
Block outputs only support:
|
||||
- `type` - The data type ('string', 'number', 'boolean', 'json', 'array')
|
||||
- `description` - Human readable description
|
||||
- Nested object structure (for complex types)
|
||||
|
||||
```typescript
|
||||
outputs: {
|
||||
// Simple outputs
|
||||
id: { type: 'string', description: 'Resource ID' },
|
||||
success: { type: 'boolean', description: 'Whether operation succeeded' },
|
||||
|
||||
// Use type: 'json' for complex objects or arrays (NOT type: 'array' with items)
|
||||
items: { type: 'json', description: 'List of items' },
|
||||
metadata: { type: 'json', description: 'Response metadata' },
|
||||
|
||||
// Nested outputs (for structured data)
|
||||
user: {
|
||||
id: { type: 'string', description: 'User ID' },
|
||||
name: { type: 'string', description: 'User name' },
|
||||
email: { type: 'string', description: 'User email' },
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## V2 Block Pattern
|
||||
|
||||
When creating V2 blocks (alongside legacy V1):
|
||||
|
||||
```typescript
|
||||
// V1 Block - mark as legacy
|
||||
export const ServiceBlock: BlockConfig = {
|
||||
type: 'service',
|
||||
name: 'Service (Legacy)',
|
||||
hideFromToolbar: true, // Hide from toolbar
|
||||
// ... rest of config
|
||||
}
|
||||
|
||||
// V2 Block - visible, uses V2 tools
|
||||
export const ServiceV2Block: BlockConfig = {
|
||||
type: 'service_v2',
|
||||
name: 'Service', // Clean name
|
||||
hideFromToolbar: false, // Visible
|
||||
subBlocks: ServiceBlock.subBlocks, // Reuse UI
|
||||
tools: {
|
||||
access: ServiceBlock.tools?.access?.map(id => `${id}_v2`) || [],
|
||||
config: {
|
||||
tool: createVersionedToolSelector({
|
||||
baseToolSelector: (params) => (ServiceBlock.tools?.config as any)?.tool(params),
|
||||
suffix: '_v2',
|
||||
fallbackToolId: 'service_default_v2',
|
||||
}),
|
||||
params: ServiceBlock.tools?.config?.params,
|
||||
},
|
||||
},
|
||||
outputs: {
|
||||
// Flat, API-aligned outputs (not wrapped in content/metadata)
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## Registering Blocks
|
||||
|
||||
After creating the block, remind the user to:
|
||||
1. Import in `apps/sim/blocks/registry.ts`
|
||||
2. Add to the `registry` object (alphabetically):
|
||||
|
||||
```typescript
|
||||
import { ServiceBlock } from '@/blocks/blocks/service'
|
||||
|
||||
export const registry: Record<string, BlockConfig> = {
|
||||
// ... existing blocks ...
|
||||
service: ServiceBlock,
|
||||
}
|
||||
```
|
||||
|
||||
## Complete Example
|
||||
|
||||
```typescript
|
||||
import { ServiceIcon } from '@/components/icons'
|
||||
import type { BlockConfig } from '@/blocks/types'
|
||||
import { AuthMode } from '@/blocks/types'
|
||||
|
||||
export const ServiceBlock: BlockConfig = {
|
||||
type: 'service',
|
||||
name: 'Service',
|
||||
description: 'Integrate with Service API',
|
||||
longDescription: 'Full description for documentation...',
|
||||
docsLink: 'https://docs.sim.ai/tools/service',
|
||||
category: 'tools',
|
||||
bgColor: '#FF6B6B',
|
||||
icon: ServiceIcon,
|
||||
authMode: AuthMode.OAuth,
|
||||
|
||||
subBlocks: [
|
||||
{
|
||||
id: 'operation',
|
||||
title: 'Operation',
|
||||
type: 'dropdown',
|
||||
options: [
|
||||
{ label: 'Create', id: 'create' },
|
||||
{ label: 'Read', id: 'read' },
|
||||
{ label: 'Update', id: 'update' },
|
||||
{ label: 'Delete', id: 'delete' },
|
||||
],
|
||||
value: () => 'create',
|
||||
},
|
||||
{
|
||||
id: 'credential',
|
||||
title: 'Service Account',
|
||||
type: 'oauth-input',
|
||||
serviceId: 'service',
|
||||
placeholder: 'Select account',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
id: 'resourceId',
|
||||
title: 'Resource ID',
|
||||
type: 'short-input',
|
||||
placeholder: 'Enter resource ID',
|
||||
condition: { field: 'operation', value: ['read', 'update', 'delete'] },
|
||||
required: { field: 'operation', value: ['read', 'update', 'delete'] },
|
||||
},
|
||||
{
|
||||
id: 'name',
|
||||
title: 'Name',
|
||||
type: 'short-input',
|
||||
placeholder: 'Resource name',
|
||||
condition: { field: 'operation', value: ['create', 'update'] },
|
||||
required: { field: 'operation', value: 'create' },
|
||||
},
|
||||
],
|
||||
|
||||
tools: {
|
||||
access: ['service_create', 'service_read', 'service_update', 'service_delete'],
|
||||
config: {
|
||||
tool: (params) => `service_${params.operation}`,
|
||||
},
|
||||
},
|
||||
|
||||
outputs: {
|
||||
id: { type: 'string', description: 'Resource ID' },
|
||||
name: { type: 'string', description: 'Resource name' },
|
||||
createdAt: { type: 'string', description: 'Creation timestamp' },
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## Connecting Blocks with Triggers
|
||||
|
||||
If the service supports webhooks, connect the block to its triggers.
|
||||
|
||||
```typescript
|
||||
import { getTrigger } from '@/triggers'
|
||||
|
||||
export const ServiceBlock: BlockConfig = {
|
||||
// ... basic config ...
|
||||
|
||||
triggers: {
|
||||
enabled: true,
|
||||
available: ['service_event_a', 'service_event_b', 'service_webhook'],
|
||||
},
|
||||
|
||||
subBlocks: [
|
||||
// Tool subBlocks first...
|
||||
{ id: 'operation', /* ... */ },
|
||||
|
||||
// Then spread trigger subBlocks
|
||||
...getTrigger('service_event_a').subBlocks,
|
||||
...getTrigger('service_event_b').subBlocks,
|
||||
...getTrigger('service_webhook').subBlocks,
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
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`
|
||||
- [ ] Conditions use correct syntax (field, value, not, and)
|
||||
- [ ] DependsOn set for fields that need other values
|
||||
- [ ] Required fields marked correctly (boolean or condition)
|
||||
- [ ] OAuth inputs have correct `serviceId`
|
||||
- [ ] Tools.access lists all tool IDs
|
||||
- [ ] 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
|
||||
467
.claude/commands/add-integration.md
Normal file
467
.claude/commands/add-integration.md
Normal file
@@ -0,0 +1,467 @@
|
||||
---
|
||||
description: Add a complete integration to Sim (tools, block, icon, registration)
|
||||
argument-hint: <service-name> [api-docs-url]
|
||||
---
|
||||
|
||||
# Add Integration Skill
|
||||
|
||||
You are an expert at adding complete integrations to Sim. This skill orchestrates the full process of adding a new service integration.
|
||||
|
||||
## Overview
|
||||
|
||||
Adding an integration involves these steps in order:
|
||||
1. **Research** - Read the service's API documentation
|
||||
2. **Create Tools** - Build tool configurations for each API operation
|
||||
3. **Create Block** - Build the block UI configuration
|
||||
4. **Add Icon** - Add the service's brand icon
|
||||
5. **Create Triggers** (optional) - If the service supports webhooks
|
||||
6. **Register** - Register tools, block, and triggers in their registries
|
||||
7. **Generate Docs** - Run the docs generation script
|
||||
|
||||
## Step 1: Research the API
|
||||
|
||||
Before writing any code:
|
||||
1. Use Context7 to find official documentation: `mcp__plugin_context7_context7__resolve-library-id`
|
||||
2. Or use WebFetch to read API docs directly
|
||||
3. Identify:
|
||||
- Authentication method (OAuth, API Key, both)
|
||||
- Available operations (CRUD, search, etc.)
|
||||
- Required vs optional parameters
|
||||
- Response structures
|
||||
|
||||
## Step 2: Create Tools
|
||||
|
||||
### Directory Structure
|
||||
```
|
||||
apps/sim/tools/{service}/
|
||||
├── index.ts # Barrel exports
|
||||
├── types.ts # TypeScript interfaces
|
||||
├── {action1}.ts # Tool for action 1
|
||||
├── {action2}.ts # Tool for action 2
|
||||
└── ...
|
||||
```
|
||||
|
||||
### Key Patterns
|
||||
|
||||
**types.ts:**
|
||||
```typescript
|
||||
import type { ToolResponse } from '@/tools/types'
|
||||
|
||||
export interface {Service}{Action}Params {
|
||||
accessToken: string // For OAuth services
|
||||
// OR
|
||||
apiKey: string // For API key services
|
||||
|
||||
requiredParam: string
|
||||
optionalParam?: string
|
||||
}
|
||||
|
||||
export interface {Service}Response extends ToolResponse {
|
||||
output: {
|
||||
// Define output structure
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Tool file pattern:**
|
||||
```typescript
|
||||
export const {service}{Action}Tool: ToolConfig<Params, Response> = {
|
||||
id: '{service}_{action}',
|
||||
name: '{Service} {Action}',
|
||||
description: '...',
|
||||
version: '1.0.0',
|
||||
|
||||
oauth: { required: true, provider: '{service}' }, // If OAuth
|
||||
|
||||
params: {
|
||||
accessToken: { type: 'string', required: true, visibility: 'hidden', description: '...' },
|
||||
// ... other params
|
||||
},
|
||||
|
||||
request: { url, method, headers, body },
|
||||
|
||||
transformResponse: async (response) => {
|
||||
const data = await response.json()
|
||||
return {
|
||||
success: true,
|
||||
output: {
|
||||
field: data.field ?? null, // Always handle nullables
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
outputs: { /* ... */ },
|
||||
}
|
||||
```
|
||||
|
||||
### Critical Rules
|
||||
- `visibility: 'hidden'` for OAuth tokens
|
||||
- `visibility: 'user-only'` for API keys and user credentials
|
||||
- `visibility: 'user-or-llm'` for operation parameters
|
||||
- Always use `?? null` for nullable API response fields
|
||||
- Always use `?? []` for optional array fields
|
||||
- Set `optional: true` for outputs that may not exist
|
||||
- Never output raw JSON dumps - extract meaningful fields
|
||||
|
||||
## Step 3: Create Block
|
||||
|
||||
### File Location
|
||||
`apps/sim/blocks/blocks/{service}.ts`
|
||||
|
||||
### Block Structure
|
||||
```typescript
|
||||
import { {Service}Icon } from '@/components/icons'
|
||||
import type { BlockConfig } from '@/blocks/types'
|
||||
import { AuthMode } from '@/blocks/types'
|
||||
|
||||
export const {Service}Block: BlockConfig = {
|
||||
type: '{service}',
|
||||
name: '{Service}',
|
||||
description: '...',
|
||||
longDescription: '...',
|
||||
docsLink: 'https://docs.sim.ai/tools/{service}',
|
||||
category: 'tools',
|
||||
bgColor: '#HEXCOLOR',
|
||||
icon: {Service}Icon,
|
||||
authMode: AuthMode.OAuth, // or AuthMode.ApiKey
|
||||
|
||||
subBlocks: [
|
||||
// Operation dropdown
|
||||
{
|
||||
id: 'operation',
|
||||
title: 'Operation',
|
||||
type: 'dropdown',
|
||||
options: [
|
||||
{ label: 'Operation 1', id: 'action1' },
|
||||
{ label: 'Operation 2', id: 'action2' },
|
||||
],
|
||||
value: () => 'action1',
|
||||
},
|
||||
// Credential field
|
||||
{
|
||||
id: 'credential',
|
||||
title: '{Service} Account',
|
||||
type: 'oauth-input',
|
||||
serviceId: '{service}',
|
||||
required: true,
|
||||
},
|
||||
// Conditional fields per operation
|
||||
// ...
|
||||
],
|
||||
|
||||
tools: {
|
||||
access: ['{service}_action1', '{service}_action2'],
|
||||
config: {
|
||||
tool: (params) => `{service}_${params.operation}`,
|
||||
},
|
||||
},
|
||||
|
||||
outputs: { /* ... */ },
|
||||
}
|
||||
```
|
||||
|
||||
### Key SubBlock Patterns
|
||||
|
||||
**Condition-based visibility:**
|
||||
```typescript
|
||||
{
|
||||
id: 'resourceId',
|
||||
title: 'Resource ID',
|
||||
type: 'short-input',
|
||||
condition: { field: 'operation', value: ['read', 'update', 'delete'] },
|
||||
required: { field: 'operation', value: ['read', 'update', 'delete'] },
|
||||
}
|
||||
```
|
||||
|
||||
**DependsOn for cascading selectors:**
|
||||
```typescript
|
||||
{
|
||||
id: 'project',
|
||||
type: 'project-selector',
|
||||
dependsOn: ['credential'],
|
||||
},
|
||||
{
|
||||
id: 'issue',
|
||||
type: 'file-selector',
|
||||
dependsOn: ['credential', 'project'],
|
||||
}
|
||||
```
|
||||
|
||||
**Basic/Advanced mode for dual UX:**
|
||||
```typescript
|
||||
// Basic: Visual selector
|
||||
{
|
||||
id: 'channel',
|
||||
type: 'channel-selector',
|
||||
mode: 'basic',
|
||||
canonicalParamId: 'channel',
|
||||
dependsOn: ['credential'],
|
||||
},
|
||||
// Advanced: Manual input
|
||||
{
|
||||
id: 'channelId',
|
||||
type: 'short-input',
|
||||
mode: 'advanced',
|
||||
canonicalParamId: 'channel',
|
||||
}
|
||||
```
|
||||
|
||||
**Critical:**
|
||||
- `canonicalParamId` must NOT match any other subblock's `id`, must be unique per block, and should only be used to link basic/advanced alternatives for the same parameter.
|
||||
- `mode` only controls UI visibility, NOT serialization. Without `canonicalParamId`, both basic and advanced field values would be sent.
|
||||
- Every subblock `id` must be unique within the block. Duplicate IDs cause conflicts even with different conditions.
|
||||
|
||||
## Step 4: Add Icon
|
||||
|
||||
### File Location
|
||||
`apps/sim/components/icons.tsx`
|
||||
|
||||
### Pattern
|
||||
```typescript
|
||||
export function {Service}Icon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
{/* SVG paths from user-provided SVG */}
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
### 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)
|
||||
|
||||
If the service supports webhooks, create triggers using the generic `buildTriggerSubBlocks` helper.
|
||||
|
||||
### Directory Structure
|
||||
```
|
||||
apps/sim/triggers/{service}/
|
||||
├── index.ts # Barrel exports
|
||||
├── utils.ts # Trigger options, setup instructions, extra fields
|
||||
├── {event_a}.ts # Primary trigger (includes dropdown)
|
||||
├── {event_b}.ts # Secondary triggers (no dropdown)
|
||||
└── webhook.ts # Generic webhook (optional)
|
||||
```
|
||||
|
||||
### Key Pattern
|
||||
|
||||
```typescript
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import { {service}TriggerOptions, {service}SetupInstructions, build{Service}ExtraFields } from './utils'
|
||||
|
||||
// Primary trigger - includeDropdown: true
|
||||
export const {service}EventATrigger: TriggerConfig = {
|
||||
id: '{service}_event_a',
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: '{service}_event_a',
|
||||
triggerOptions: {service}TriggerOptions,
|
||||
includeDropdown: true, // Only for primary trigger!
|
||||
setupInstructions: {service}SetupInstructions('Event A'),
|
||||
extraFields: build{Service}ExtraFields('{service}_event_a'),
|
||||
}),
|
||||
// ...
|
||||
}
|
||||
|
||||
// Secondary triggers - no dropdown
|
||||
export const {service}EventBTrigger: TriggerConfig = {
|
||||
id: '{service}_event_b',
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: '{service}_event_b',
|
||||
triggerOptions: {service}TriggerOptions,
|
||||
// No includeDropdown!
|
||||
setupInstructions: {service}SetupInstructions('Event B'),
|
||||
extraFields: build{Service}ExtraFields('{service}_event_b'),
|
||||
}),
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### Connect to Block
|
||||
```typescript
|
||||
import { getTrigger } from '@/triggers'
|
||||
|
||||
export const {Service}Block: BlockConfig = {
|
||||
triggers: {
|
||||
enabled: true,
|
||||
available: ['{service}_event_a', '{service}_event_b'],
|
||||
},
|
||||
subBlocks: [
|
||||
// Tool fields...
|
||||
...getTrigger('{service}_event_a').subBlocks,
|
||||
...getTrigger('{service}_event_b').subBlocks,
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
See `/add-trigger` skill for complete documentation.
|
||||
|
||||
## Step 6: Register Everything
|
||||
|
||||
### Tools Registry (`apps/sim/tools/registry.ts`)
|
||||
|
||||
```typescript
|
||||
// Add import (alphabetically)
|
||||
import {
|
||||
{service}Action1Tool,
|
||||
{service}Action2Tool,
|
||||
} from '@/tools/{service}'
|
||||
|
||||
// Add to tools object (alphabetically)
|
||||
export const tools: Record<string, ToolConfig> = {
|
||||
// ... existing tools ...
|
||||
{service}_action1: {service}Action1Tool,
|
||||
{service}_action2: {service}Action2Tool,
|
||||
}
|
||||
```
|
||||
|
||||
### Block Registry (`apps/sim/blocks/registry.ts`)
|
||||
|
||||
```typescript
|
||||
// Add import (alphabetically)
|
||||
import { {Service}Block } from '@/blocks/blocks/{service}'
|
||||
|
||||
// Add to registry (alphabetically)
|
||||
export const registry: Record<string, BlockConfig> = {
|
||||
// ... existing blocks ...
|
||||
{service}: {Service}Block,
|
||||
}
|
||||
```
|
||||
|
||||
### Trigger Registry (`apps/sim/triggers/registry.ts`) - If triggers exist
|
||||
|
||||
```typescript
|
||||
// Add import (alphabetically)
|
||||
import {
|
||||
{service}EventATrigger,
|
||||
{service}EventBTrigger,
|
||||
{service}WebhookTrigger,
|
||||
} from '@/triggers/{service}'
|
||||
|
||||
// Add to TRIGGER_REGISTRY (alphabetically)
|
||||
export const TRIGGER_REGISTRY: TriggerRegistry = {
|
||||
// ... existing triggers ...
|
||||
{service}_event_a: {service}EventATrigger,
|
||||
{service}_event_b: {service}EventBTrigger,
|
||||
{service}_webhook: {service}WebhookTrigger,
|
||||
}
|
||||
```
|
||||
|
||||
## Step 7: Generate Docs
|
||||
|
||||
Run the documentation generator:
|
||||
```bash
|
||||
bun run scripts/generate-docs.ts
|
||||
```
|
||||
|
||||
This creates `apps/docs/content/docs/en/tools/{service}.mdx`
|
||||
|
||||
## V2 Integration Pattern
|
||||
|
||||
If creating V2 versions (API-aligned outputs):
|
||||
|
||||
1. **V2 Tools** - Add `_v2` suffix, version `2.0.0`, flat outputs
|
||||
2. **V2 Block** - Add `_v2` type, use `createVersionedToolSelector`
|
||||
3. **V1 Block** - Add `(Legacy)` to name, set `hideFromToolbar: true`
|
||||
4. **Registry** - Register both versions
|
||||
|
||||
```typescript
|
||||
// In registry
|
||||
{service}: {Service}Block, // V1 (legacy, hidden)
|
||||
{service}_v2: {Service}V2Block, // V2 (visible)
|
||||
```
|
||||
|
||||
## Complete Checklist
|
||||
|
||||
### Tools
|
||||
- [ ] Created `tools/{service}/` directory
|
||||
- [ ] Created `types.ts` with all interfaces
|
||||
- [ ] Created tool file for each operation
|
||||
- [ ] All params have correct visibility
|
||||
- [ ] All nullable fields use `?? null`
|
||||
- [ ] All optional outputs have `optional: true`
|
||||
- [ ] Created `index.ts` barrel export
|
||||
- [ ] Registered all tools in `tools/registry.ts`
|
||||
|
||||
### Block
|
||||
- [ ] Created `blocks/blocks/{service}.ts`
|
||||
- [ ] Defined operation dropdown with all operations
|
||||
- [ ] Added credential field (oauth-input or short-input)
|
||||
- [ ] Added conditional fields per operation
|
||||
- [ ] Set up dependsOn for cascading selectors
|
||||
- [ ] Configured tools.access with all tool IDs
|
||||
- [ ] Configured tools.config.tool selector
|
||||
- [ ] Defined outputs matching tool outputs
|
||||
- [ ] Registered block in `blocks/registry.ts`
|
||||
- [ ] If triggers: set `triggers.enabled` and `triggers.available`
|
||||
- [ ] If triggers: spread trigger subBlocks with `getTrigger()`
|
||||
|
||||
### Icon
|
||||
- [ ] Asked user to provide SVG
|
||||
- [ ] Added icon to `components/icons.tsx`
|
||||
- [ ] Icon spreads props correctly
|
||||
|
||||
### Triggers (if service supports webhooks)
|
||||
- [ ] Created `triggers/{service}/` directory
|
||||
- [ ] Created `utils.ts` with options, instructions, and extra fields helpers
|
||||
- [ ] Primary trigger uses `includeDropdown: true`
|
||||
- [ ] Secondary triggers do NOT have `includeDropdown`
|
||||
- [ ] All triggers use `buildTriggerSubBlocks` helper
|
||||
- [ ] Created `index.ts` barrel export
|
||||
- [ ] Registered all triggers in `triggers/registry.ts`
|
||||
|
||||
### Docs
|
||||
- [ ] Ran `bun run scripts/generate-docs.ts`
|
||||
- [ ] Verified docs file created
|
||||
|
||||
## Example Command
|
||||
|
||||
When the user asks to add an integration:
|
||||
|
||||
```
|
||||
User: Add a Stripe integration
|
||||
|
||||
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. 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
|
||||
|
||||
1. **OAuth serviceId must match** - The `serviceId` in oauth-input must match the OAuth provider configuration
|
||||
2. **Tool IDs are snake_case** - `stripe_create_payment`, not `stripeCreatePayment`
|
||||
3. **Block type is snake_case** - `type: 'stripe'`, not `type: 'Stripe'`
|
||||
4. **Alphabetical ordering** - Keep imports and registry entries alphabetically sorted
|
||||
5. **Required can be conditional** - Use `required: { field: 'op', value: 'create' }` instead of always true
|
||||
6. **DependsOn clears options** - When a dependency changes, selector options are refetched
|
||||
284
.claude/commands/add-tools.md
Normal file
284
.claude/commands/add-tools.md
Normal file
@@ -0,0 +1,284 @@
|
||||
---
|
||||
description: Create tool configurations for a Sim integration by reading API docs
|
||||
argument-hint: <service-name> [api-docs-url]
|
||||
---
|
||||
|
||||
# Add Tools Skill
|
||||
|
||||
You are an expert at creating tool configurations for Sim integrations. Your job is to read API documentation and create properly structured tool files.
|
||||
|
||||
## Your Task
|
||||
|
||||
When the user asks you to create tools for a service:
|
||||
1. Use Context7 or WebFetch to read the service's API documentation
|
||||
2. Create the tools directory structure
|
||||
3. Generate properly typed tool configurations
|
||||
|
||||
## Directory Structure
|
||||
|
||||
Create files in `apps/sim/tools/{service}/`:
|
||||
```
|
||||
tools/{service}/
|
||||
├── index.ts # Barrel export
|
||||
├── types.ts # Parameter & response types
|
||||
└── {action}.ts # Individual tool files (one per operation)
|
||||
```
|
||||
|
||||
## Tool Configuration Structure
|
||||
|
||||
Every tool MUST follow this exact structure:
|
||||
|
||||
```typescript
|
||||
import type { {ServiceName}{Action}Params } from '@/tools/{service}/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
interface {ServiceName}{Action}Response {
|
||||
success: boolean
|
||||
output: {
|
||||
// Define output structure here
|
||||
}
|
||||
}
|
||||
|
||||
export const {serviceName}{Action}Tool: ToolConfig<
|
||||
{ServiceName}{Action}Params,
|
||||
{ServiceName}{Action}Response
|
||||
> = {
|
||||
id: '{service}_{action}', // snake_case, matches tool name
|
||||
name: '{Service} {Action}', // Human readable
|
||||
description: 'Brief description', // One sentence
|
||||
version: '1.0.0',
|
||||
|
||||
// OAuth config (if service uses OAuth)
|
||||
oauth: {
|
||||
required: true,
|
||||
provider: '{service}', // Must match OAuth provider ID
|
||||
},
|
||||
|
||||
params: {
|
||||
// Hidden params (system-injected)
|
||||
accessToken: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
visibility: 'hidden',
|
||||
description: 'OAuth access token',
|
||||
},
|
||||
// User-only params (credentials, IDs user must provide)
|
||||
someId: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
visibility: 'user-only',
|
||||
description: 'The ID of the resource',
|
||||
},
|
||||
// User-or-LLM params (can be provided by user OR computed by LLM)
|
||||
query: {
|
||||
type: 'string',
|
||||
required: false, // Use false for optional
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Search query',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params) => `https://api.service.com/v1/resource/${params.id}`,
|
||||
method: 'POST',
|
||||
headers: (params) => ({
|
||||
Authorization: `Bearer ${params.accessToken}`,
|
||||
'Content-Type': 'application/json',
|
||||
}),
|
||||
body: (params) => ({
|
||||
// Request body - only for POST/PUT/PATCH
|
||||
// Trim ID fields to prevent copy-paste whitespace errors:
|
||||
// userId: params.userId?.trim(),
|
||||
}),
|
||||
},
|
||||
|
||||
transformResponse: async (response: Response) => {
|
||||
const data = await response.json()
|
||||
return {
|
||||
success: true,
|
||||
output: {
|
||||
// Map API response to output
|
||||
// Use ?? null for nullable fields
|
||||
// Use ?? [] for optional arrays
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
outputs: {
|
||||
// Define each output field
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## Critical Rules for Parameters
|
||||
|
||||
### Visibility Options
|
||||
- `'hidden'` - System-injected (OAuth tokens, internal params). User never sees.
|
||||
- `'user-only'` - User must provide (credentials, account-specific IDs)
|
||||
- `'user-or-llm'` - User provides OR LLM can compute (search queries, content, filters)
|
||||
|
||||
### Parameter Types
|
||||
- `'string'` - Text values
|
||||
- `'number'` - Numeric values
|
||||
- `'boolean'` - True/false
|
||||
- `'json'` - Complex objects (NOT 'object', use 'json')
|
||||
- `'file'` - Single file
|
||||
- `'file[]'` - Multiple files
|
||||
|
||||
### Required vs Optional
|
||||
- Always explicitly set `required: true` or `required: false`
|
||||
- Optional params should have `required: false`
|
||||
|
||||
## Critical Rules for Outputs
|
||||
|
||||
### Output Types
|
||||
- `'string'`, `'number'`, `'boolean'` - Primitives
|
||||
- `'json'` - Complex objects (use this, NOT 'object')
|
||||
- `'array'` - Arrays with `items` property
|
||||
- `'object'` - Objects with `properties` property
|
||||
|
||||
### Optional Outputs
|
||||
Add `optional: true` for fields that may not exist in the response:
|
||||
```typescript
|
||||
closedAt: {
|
||||
type: 'string',
|
||||
description: 'When the issue was closed',
|
||||
optional: true,
|
||||
},
|
||||
```
|
||||
|
||||
### Nested Properties
|
||||
For complex outputs, define nested structure:
|
||||
```typescript
|
||||
metadata: {
|
||||
type: 'json',
|
||||
description: 'Response metadata',
|
||||
properties: {
|
||||
id: { type: 'string', description: 'Unique ID' },
|
||||
status: { type: 'string', description: 'Current status' },
|
||||
count: { type: 'number', description: 'Total count' },
|
||||
},
|
||||
},
|
||||
|
||||
items: {
|
||||
type: 'array',
|
||||
description: 'List of items',
|
||||
items: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'string', description: 'Item ID' },
|
||||
name: { type: 'string', description: 'Item name' },
|
||||
},
|
||||
},
|
||||
},
|
||||
```
|
||||
|
||||
## Critical Rules for transformResponse
|
||||
|
||||
### Handle Nullable Fields
|
||||
ALWAYS use `?? null` for fields that may be undefined:
|
||||
```typescript
|
||||
transformResponse: async (response: Response) => {
|
||||
const data = await response.json()
|
||||
return {
|
||||
success: true,
|
||||
output: {
|
||||
id: data.id,
|
||||
title: data.title,
|
||||
body: data.body ?? null, // May be undefined
|
||||
assignee: data.assignee ?? null, // May be undefined
|
||||
labels: data.labels ?? [], // Default to empty array
|
||||
closedAt: data.closed_at ?? null, // May be undefined
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Never Output Raw JSON Dumps
|
||||
DON'T do this:
|
||||
```typescript
|
||||
output: {
|
||||
data: data, // BAD - raw JSON dump
|
||||
}
|
||||
```
|
||||
|
||||
DO this instead - extract meaningful fields:
|
||||
```typescript
|
||||
output: {
|
||||
id: data.id,
|
||||
name: data.name,
|
||||
status: data.status,
|
||||
metadata: {
|
||||
createdAt: data.created_at,
|
||||
updatedAt: data.updated_at,
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## Types File Pattern
|
||||
|
||||
Create `types.ts` with interfaces for all params and responses:
|
||||
|
||||
```typescript
|
||||
import type { ToolResponse } from '@/tools/types'
|
||||
|
||||
// Parameter interfaces
|
||||
export interface {Service}{Action}Params {
|
||||
accessToken: string
|
||||
requiredField: string
|
||||
optionalField?: string
|
||||
}
|
||||
|
||||
// Response interfaces (extend ToolResponse)
|
||||
export interface {Service}{Action}Response extends ToolResponse {
|
||||
output: {
|
||||
field1: string
|
||||
field2: number
|
||||
optionalField?: string | null
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Index.ts Barrel Export Pattern
|
||||
|
||||
```typescript
|
||||
// Export all tools
|
||||
export { serviceTool1 } from './{action1}'
|
||||
export { serviceTool2 } from './{action2}'
|
||||
|
||||
// Export types
|
||||
export * from './types'
|
||||
```
|
||||
|
||||
## Registering Tools
|
||||
|
||||
After creating tools, remind the user to:
|
||||
1. Import tools in `apps/sim/tools/registry.ts`
|
||||
2. Add to the `tools` object with snake_case keys:
|
||||
```typescript
|
||||
import { serviceActionTool } from '@/tools/{service}'
|
||||
|
||||
export const tools = {
|
||||
// ... existing tools ...
|
||||
{service}_{action}: serviceActionTool,
|
||||
}
|
||||
```
|
||||
|
||||
## V2 Tool Pattern
|
||||
|
||||
If creating V2 tools (API-aligned outputs), use `_v2` suffix:
|
||||
- Tool ID: `{service}_{action}_v2`
|
||||
- Variable name: `{action}V2Tool`
|
||||
- Version: `'2.0.0'`
|
||||
- Outputs: Flat, API-aligned (no content/metadata wrapper)
|
||||
|
||||
## Checklist Before Finishing
|
||||
|
||||
- [ ] All params have explicit `required: true` or `required: false`
|
||||
- [ ] All params have appropriate `visibility`
|
||||
- [ ] All nullable response fields use `?? null`
|
||||
- [ ] All optional outputs have `optional: true`
|
||||
- [ ] No raw JSON dumps in outputs
|
||||
- [ ] Types file has all interfaces
|
||||
- [ ] Index.ts exports all tools
|
||||
- [ ] Tool IDs use snake_case
|
||||
708
.claude/commands/add-trigger.md
Normal file
708
.claude/commands/add-trigger.md
Normal file
@@ -0,0 +1,708 @@
|
||||
---
|
||||
description: Create webhook triggers for a Sim integration using the generic trigger builder
|
||||
argument-hint: <service-name>
|
||||
---
|
||||
|
||||
# Add Trigger Skill
|
||||
|
||||
You are an expert at creating webhook triggers for Sim. You understand the trigger system, the generic `buildTriggerSubBlocks` helper, and how triggers connect to blocks.
|
||||
|
||||
## Your Task
|
||||
|
||||
When the user asks you to create triggers for a service:
|
||||
1. Research what webhook events the service supports
|
||||
2. Create the trigger files using the generic builder
|
||||
3. Register triggers and connect them to the block
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
apps/sim/triggers/{service}/
|
||||
├── index.ts # Barrel exports
|
||||
├── utils.ts # Service-specific helpers (trigger options, setup instructions, extra fields)
|
||||
├── {event_a}.ts # Primary trigger (includes dropdown)
|
||||
├── {event_b}.ts # Secondary trigger (no dropdown)
|
||||
├── {event_c}.ts # Secondary trigger (no dropdown)
|
||||
└── webhook.ts # Generic webhook trigger (optional, for "all events")
|
||||
```
|
||||
|
||||
## Step 1: Create utils.ts
|
||||
|
||||
This file contains service-specific helpers used by all triggers.
|
||||
|
||||
```typescript
|
||||
import type { SubBlockConfig } from '@/blocks/types'
|
||||
import type { TriggerOutput } from '@/triggers/types'
|
||||
|
||||
/**
|
||||
* Dropdown options for the trigger type selector.
|
||||
* These appear in the primary trigger's dropdown.
|
||||
*/
|
||||
export const {service}TriggerOptions = [
|
||||
{ label: 'Event A', id: '{service}_event_a' },
|
||||
{ label: 'Event B', id: '{service}_event_b' },
|
||||
{ label: 'Event C', id: '{service}_event_c' },
|
||||
{ label: 'Generic Webhook (All Events)', id: '{service}_webhook' },
|
||||
]
|
||||
|
||||
/**
|
||||
* Generates HTML setup instructions for the trigger.
|
||||
* Displayed to users to help them configure webhooks in the external service.
|
||||
*/
|
||||
export function {service}SetupInstructions(eventType: string): string {
|
||||
const instructions = [
|
||||
'Copy the <strong>Webhook URL</strong> above',
|
||||
'Go to <strong>{Service} Settings > Webhooks</strong>',
|
||||
'Click <strong>Add Webhook</strong>',
|
||||
'Paste the webhook URL',
|
||||
`Select the <strong>${eventType}</strong> event type`,
|
||||
'Save the webhook configuration',
|
||||
'Click "Save" above to activate your trigger',
|
||||
]
|
||||
|
||||
return instructions
|
||||
.map((instruction, index) =>
|
||||
`<div class="mb-3"><strong>${index + 1}.</strong> ${instruction}</div>`
|
||||
)
|
||||
.join('')
|
||||
}
|
||||
|
||||
/**
|
||||
* Service-specific extra fields to add to triggers.
|
||||
* These are inserted between webhookUrl and triggerSave.
|
||||
*/
|
||||
export function build{Service}ExtraFields(triggerId: string): SubBlockConfig[] {
|
||||
return [
|
||||
{
|
||||
id: 'projectId',
|
||||
title: 'Project ID (Optional)',
|
||||
type: 'short-input',
|
||||
placeholder: 'Leave empty for all projects',
|
||||
description: 'Optionally filter to a specific project',
|
||||
mode: 'trigger',
|
||||
condition: { field: 'selectedTriggerId', value: triggerId },
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
/**
|
||||
* Build outputs for this trigger type.
|
||||
* Outputs define what data is available to downstream blocks.
|
||||
*/
|
||||
export function build{Service}Outputs(): Record<string, TriggerOutput> {
|
||||
return {
|
||||
eventType: { type: 'string', description: 'The type of event that triggered this workflow' },
|
||||
resourceId: { type: 'string', description: 'ID of the affected resource' },
|
||||
timestamp: { type: 'string', description: 'When the event occurred (ISO 8601)' },
|
||||
// Nested outputs for complex data
|
||||
resource: {
|
||||
id: { type: 'string', description: 'Resource ID' },
|
||||
name: { type: 'string', description: 'Resource name' },
|
||||
status: { type: 'string', description: 'Current status' },
|
||||
},
|
||||
webhook: { type: 'json', description: 'Full webhook payload' },
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Step 2: Create the Primary Trigger
|
||||
|
||||
The **primary trigger** is the first one listed. It MUST include `includeDropdown: true` so users can switch between trigger types.
|
||||
|
||||
```typescript
|
||||
import { {Service}Icon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
build{Service}ExtraFields,
|
||||
build{Service}Outputs,
|
||||
{service}SetupInstructions,
|
||||
{service}TriggerOptions,
|
||||
} from '@/triggers/{service}/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
/**
|
||||
* {Service} Event A Trigger
|
||||
*
|
||||
* This is the PRIMARY trigger - it includes the dropdown for selecting trigger type.
|
||||
*/
|
||||
export const {service}EventATrigger: TriggerConfig = {
|
||||
id: '{service}_event_a',
|
||||
name: '{Service} Event A',
|
||||
provider: '{service}',
|
||||
description: 'Trigger workflow when Event A occurs',
|
||||
version: '1.0.0',
|
||||
icon: {Service}Icon,
|
||||
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: '{service}_event_a',
|
||||
triggerOptions: {service}TriggerOptions,
|
||||
includeDropdown: true, // PRIMARY TRIGGER - includes dropdown
|
||||
setupInstructions: {service}SetupInstructions('Event A'),
|
||||
extraFields: build{Service}ExtraFields('{service}_event_a'),
|
||||
}),
|
||||
|
||||
outputs: build{Service}Outputs(),
|
||||
|
||||
webhook: {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## Step 3: Create Secondary Triggers
|
||||
|
||||
Secondary triggers do NOT include the dropdown (it's already in the primary trigger).
|
||||
|
||||
```typescript
|
||||
import { {Service}Icon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
build{Service}ExtraFields,
|
||||
build{Service}Outputs,
|
||||
{service}SetupInstructions,
|
||||
{service}TriggerOptions,
|
||||
} from '@/triggers/{service}/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
/**
|
||||
* {Service} Event B Trigger
|
||||
*/
|
||||
export const {service}EventBTrigger: TriggerConfig = {
|
||||
id: '{service}_event_b',
|
||||
name: '{Service} Event B',
|
||||
provider: '{service}',
|
||||
description: 'Trigger workflow when Event B occurs',
|
||||
version: '1.0.0',
|
||||
icon: {Service}Icon,
|
||||
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: '{service}_event_b',
|
||||
triggerOptions: {service}TriggerOptions,
|
||||
// NO includeDropdown - secondary trigger
|
||||
setupInstructions: {service}SetupInstructions('Event B'),
|
||||
extraFields: build{Service}ExtraFields('{service}_event_b'),
|
||||
}),
|
||||
|
||||
outputs: build{Service}Outputs(),
|
||||
|
||||
webhook: {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## Step 4: Create index.ts Barrel Export
|
||||
|
||||
```typescript
|
||||
export { {service}EventATrigger } from './event_a'
|
||||
export { {service}EventBTrigger } from './event_b'
|
||||
export { {service}EventCTrigger } from './event_c'
|
||||
export { {service}WebhookTrigger } from './webhook'
|
||||
```
|
||||
|
||||
## Step 5: Register Triggers
|
||||
|
||||
### Trigger Registry (`apps/sim/triggers/registry.ts`)
|
||||
|
||||
```typescript
|
||||
// Add import
|
||||
import {
|
||||
{service}EventATrigger,
|
||||
{service}EventBTrigger,
|
||||
{service}EventCTrigger,
|
||||
{service}WebhookTrigger,
|
||||
} from '@/triggers/{service}'
|
||||
|
||||
// Add to TRIGGER_REGISTRY
|
||||
export const TRIGGER_REGISTRY: TriggerRegistry = {
|
||||
// ... existing triggers ...
|
||||
{service}_event_a: {service}EventATrigger,
|
||||
{service}_event_b: {service}EventBTrigger,
|
||||
{service}_event_c: {service}EventCTrigger,
|
||||
{service}_webhook: {service}WebhookTrigger,
|
||||
}
|
||||
```
|
||||
|
||||
## Step 6: Connect Triggers to Block
|
||||
|
||||
In the block file (`apps/sim/blocks/blocks/{service}.ts`):
|
||||
|
||||
```typescript
|
||||
import { {Service}Icon } from '@/components/icons'
|
||||
import { getTrigger } from '@/triggers'
|
||||
import type { BlockConfig } from '@/blocks/types'
|
||||
|
||||
export const {Service}Block: BlockConfig = {
|
||||
type: '{service}',
|
||||
name: '{Service}',
|
||||
// ... other config ...
|
||||
|
||||
// Enable triggers and list available trigger IDs
|
||||
triggers: {
|
||||
enabled: true,
|
||||
available: [
|
||||
'{service}_event_a',
|
||||
'{service}_event_b',
|
||||
'{service}_event_c',
|
||||
'{service}_webhook',
|
||||
],
|
||||
},
|
||||
|
||||
subBlocks: [
|
||||
// Regular tool subBlocks first
|
||||
{ id: 'operation', /* ... */ },
|
||||
{ id: 'credential', /* ... */ },
|
||||
// ... other tool fields ...
|
||||
|
||||
// Then spread ALL trigger subBlocks
|
||||
...getTrigger('{service}_event_a').subBlocks,
|
||||
...getTrigger('{service}_event_b').subBlocks,
|
||||
...getTrigger('{service}_event_c').subBlocks,
|
||||
...getTrigger('{service}_webhook').subBlocks,
|
||||
],
|
||||
|
||||
// ... tools config ...
|
||||
}
|
||||
```
|
||||
|
||||
## Automatic Webhook Registration (Preferred)
|
||||
|
||||
If the service's API supports programmatic webhook creation, implement automatic webhook registration instead of requiring users to manually configure webhooks. This provides a much better user experience.
|
||||
|
||||
### When to Use Automatic Registration
|
||||
|
||||
Check the service's API documentation for endpoints like:
|
||||
- `POST /webhooks` or `POST /hooks` - Create webhook
|
||||
- `DELETE /webhooks/{id}` - Delete webhook
|
||||
|
||||
Services that support this pattern include: Grain, Lemlist, Calendly, Airtable, Webflow, Typeform, etc.
|
||||
|
||||
### Implementation Steps
|
||||
|
||||
#### 1. Add API Key to Extra Fields
|
||||
|
||||
Update your `build{Service}ExtraFields` function to include an API key field:
|
||||
|
||||
```typescript
|
||||
export function build{Service}ExtraFields(triggerId: string): SubBlockConfig[] {
|
||||
return [
|
||||
{
|
||||
id: 'apiKey',
|
||||
title: 'API Key',
|
||||
type: 'short-input',
|
||||
placeholder: 'Enter your {Service} API key',
|
||||
description: 'Required to create the webhook in {Service}.',
|
||||
password: true,
|
||||
required: true,
|
||||
mode: 'trigger',
|
||||
condition: { field: 'selectedTriggerId', value: triggerId },
|
||||
},
|
||||
// Other optional fields (e.g., campaign filter, project filter)
|
||||
{
|
||||
id: 'projectId',
|
||||
title: 'Project ID (Optional)',
|
||||
type: 'short-input',
|
||||
placeholder: 'Leave empty for all projects',
|
||||
mode: 'trigger',
|
||||
condition: { field: 'selectedTriggerId', value: triggerId },
|
||||
},
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### 2. Update Setup Instructions for Automatic Creation
|
||||
|
||||
Change instructions to indicate automatic webhook creation:
|
||||
|
||||
```typescript
|
||||
export function {service}SetupInstructions(eventType: string): string {
|
||||
const instructions = [
|
||||
'Enter your {Service} API Key above.',
|
||||
'You can find your API key in {Service} at <strong>Settings > API</strong>.',
|
||||
`Click <strong>"Save Configuration"</strong> to automatically create the webhook in {Service} for <strong>${eventType}</strong> events.`,
|
||||
'The webhook will be automatically deleted when you remove this trigger.',
|
||||
]
|
||||
|
||||
return instructions
|
||||
.map((instruction, index) =>
|
||||
`<div class="mb-3"><strong>${index + 1}.</strong> ${instruction}</div>`
|
||||
)
|
||||
.join('')
|
||||
}
|
||||
```
|
||||
|
||||
#### 3. Add Webhook Creation to API Route
|
||||
|
||||
In `apps/sim/app/api/webhooks/route.ts`, add provider-specific logic after the database save:
|
||||
|
||||
```typescript
|
||||
// --- {Service} specific logic ---
|
||||
if (savedWebhook && provider === '{service}') {
|
||||
logger.info(`[${requestId}] {Service} provider detected. Creating webhook subscription.`)
|
||||
try {
|
||||
const result = await create{Service}WebhookSubscription(
|
||||
{
|
||||
id: savedWebhook.id,
|
||||
path: savedWebhook.path,
|
||||
providerConfig: savedWebhook.providerConfig,
|
||||
},
|
||||
requestId
|
||||
)
|
||||
|
||||
if (result) {
|
||||
// Update the webhook record with the external webhook ID
|
||||
const updatedConfig = {
|
||||
...(savedWebhook.providerConfig as Record<string, any>),
|
||||
externalId: result.id,
|
||||
}
|
||||
await db
|
||||
.update(webhook)
|
||||
.set({
|
||||
providerConfig: updatedConfig,
|
||||
updatedAt: new Date(),
|
||||
})
|
||||
.where(eq(webhook.id, savedWebhook.id))
|
||||
|
||||
savedWebhook.providerConfig = updatedConfig
|
||||
logger.info(`[${requestId}] Successfully created {Service} webhook`, {
|
||||
externalHookId: result.id,
|
||||
webhookId: savedWebhook.id,
|
||||
})
|
||||
}
|
||||
} catch (err) {
|
||||
logger.error(
|
||||
`[${requestId}] Error creating {Service} webhook subscription, rolling back webhook`,
|
||||
err
|
||||
)
|
||||
await db.delete(webhook).where(eq(webhook.id, savedWebhook.id))
|
||||
return NextResponse.json(
|
||||
{
|
||||
error: 'Failed to create webhook in {Service}',
|
||||
details: err instanceof Error ? err.message : 'Unknown error',
|
||||
},
|
||||
{ status: 500 }
|
||||
)
|
||||
}
|
||||
}
|
||||
// --- End {Service} specific logic ---
|
||||
```
|
||||
|
||||
Then add the helper function at the end of the file:
|
||||
|
||||
```typescript
|
||||
async function create{Service}WebhookSubscription(
|
||||
webhookData: any,
|
||||
requestId: string
|
||||
): Promise<{ id: string } | undefined> {
|
||||
try {
|
||||
const { path, providerConfig } = webhookData
|
||||
const { apiKey, triggerId, projectId } = providerConfig || {}
|
||||
|
||||
if (!apiKey) {
|
||||
throw new Error('{Service} API Key is required.')
|
||||
}
|
||||
|
||||
// Map trigger IDs to service event types
|
||||
const eventTypeMap: Record<string, string | undefined> = {
|
||||
{service}_event_a: 'eventA',
|
||||
{service}_event_b: 'eventB',
|
||||
{service}_webhook: undefined, // Generic - no filter
|
||||
}
|
||||
|
||||
const eventType = eventTypeMap[triggerId]
|
||||
const notificationUrl = `${getBaseUrl()}/api/webhooks/trigger/${path}`
|
||||
|
||||
const requestBody: Record<string, any> = {
|
||||
url: notificationUrl,
|
||||
}
|
||||
|
||||
if (eventType) {
|
||||
requestBody.eventType = eventType
|
||||
}
|
||||
|
||||
if (projectId) {
|
||||
requestBody.projectId = projectId
|
||||
}
|
||||
|
||||
const response = await fetch('https://api.{service}.com/webhooks', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: `Bearer ${apiKey}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(requestBody),
|
||||
})
|
||||
|
||||
const responseBody = await response.json()
|
||||
|
||||
if (!response.ok) {
|
||||
const errorMessage = responseBody.message || 'Unknown API error'
|
||||
let userFriendlyMessage = 'Failed to create webhook in {Service}'
|
||||
|
||||
if (response.status === 401) {
|
||||
userFriendlyMessage = 'Invalid API Key. Please verify and try again.'
|
||||
} else if (errorMessage) {
|
||||
userFriendlyMessage = `{Service} error: ${errorMessage}`
|
||||
}
|
||||
|
||||
throw new Error(userFriendlyMessage)
|
||||
}
|
||||
|
||||
return { id: responseBody.id }
|
||||
} catch (error: any) {
|
||||
logger.error(`Exception during {Service} webhook creation`, { error: error.message })
|
||||
throw error
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 4. Add Webhook Deletion to Provider Subscriptions
|
||||
|
||||
In `apps/sim/lib/webhooks/provider-subscriptions.ts`:
|
||||
|
||||
1. Add a logger:
|
||||
```typescript
|
||||
const {service}Logger = createLogger('{Service}Webhook')
|
||||
```
|
||||
|
||||
2. Add the delete function:
|
||||
```typescript
|
||||
export async function delete{Service}Webhook(webhook: any, requestId: string): Promise<void> {
|
||||
try {
|
||||
const config = getProviderConfig(webhook)
|
||||
const apiKey = config.apiKey as string | undefined
|
||||
const externalId = config.externalId as string | undefined
|
||||
|
||||
if (!apiKey || !externalId) {
|
||||
{service}Logger.warn(`[${requestId}] Missing apiKey or externalId, skipping cleanup`)
|
||||
return
|
||||
}
|
||||
|
||||
const response = await fetch(`https://api.{service}.com/webhooks/${externalId}`, {
|
||||
method: 'DELETE',
|
||||
headers: {
|
||||
Authorization: `Bearer ${apiKey}`,
|
||||
},
|
||||
})
|
||||
|
||||
if (!response.ok && response.status !== 404) {
|
||||
{service}Logger.warn(`[${requestId}] Failed to delete webhook (non-fatal): ${response.status}`)
|
||||
} else {
|
||||
{service}Logger.info(`[${requestId}] Successfully deleted webhook ${externalId}`)
|
||||
}
|
||||
} catch (error) {
|
||||
{service}Logger.warn(`[${requestId}] Error deleting webhook (non-fatal)`, error)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
3. Add to `cleanupExternalWebhook`:
|
||||
```typescript
|
||||
export async function cleanupExternalWebhook(...): Promise<void> {
|
||||
// ... existing providers ...
|
||||
} else if (webhook.provider === '{service}') {
|
||||
await delete{Service}Webhook(webhook, requestId)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Key Points for Automatic Registration
|
||||
|
||||
- **API Key visibility**: Always use `password: true` for API key fields
|
||||
- **Error handling**: Roll back the database webhook if external creation fails
|
||||
- **External ID storage**: Save the external webhook ID in `providerConfig.externalId`
|
||||
- **Graceful cleanup**: Don't fail webhook deletion if cleanup fails (use non-fatal logging)
|
||||
- **User-friendly errors**: Map HTTP status codes to helpful error messages
|
||||
|
||||
## The buildTriggerSubBlocks Helper
|
||||
|
||||
This is the generic helper from `@/triggers` that creates consistent trigger subBlocks.
|
||||
|
||||
### Function Signature
|
||||
|
||||
```typescript
|
||||
interface BuildTriggerSubBlocksOptions {
|
||||
triggerId: string // e.g., 'service_event_a'
|
||||
triggerOptions: Array<{ label: string; id: string }> // Dropdown options
|
||||
includeDropdown?: boolean // true only for primary trigger
|
||||
setupInstructions: string // HTML instructions
|
||||
extraFields?: SubBlockConfig[] // Service-specific fields
|
||||
webhookPlaceholder?: string // Custom placeholder text
|
||||
}
|
||||
|
||||
function buildTriggerSubBlocks(options: BuildTriggerSubBlocksOptions): SubBlockConfig[]
|
||||
```
|
||||
|
||||
### What It Creates
|
||||
|
||||
The helper creates this structure:
|
||||
1. **Dropdown** (only if `includeDropdown: true`) - Trigger type selector
|
||||
2. **Webhook URL** - Read-only field with copy button
|
||||
3. **Extra Fields** - Your service-specific fields (filters, options, etc.)
|
||||
4. **Save Button** - Activates the trigger
|
||||
5. **Instructions** - Setup guide for users
|
||||
|
||||
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).
|
||||
|
||||
**Supported:**
|
||||
- `type` and `description` for simple fields
|
||||
- Nested object structure for complex data
|
||||
|
||||
**NOT Supported:**
|
||||
- `optional: true` (tool outputs only)
|
||||
- `items` property (tool outputs only)
|
||||
|
||||
```typescript
|
||||
export function buildOutputs(): Record<string, TriggerOutput> {
|
||||
return {
|
||||
// Simple fields
|
||||
eventType: { type: 'string', description: 'Event type' },
|
||||
timestamp: { type: 'string', description: 'When it occurred' },
|
||||
|
||||
// Complex data - use type: 'json'
|
||||
payload: { type: 'json', description: 'Full event payload' },
|
||||
|
||||
// Nested structure
|
||||
resource: {
|
||||
id: { type: 'string', description: 'Resource ID' },
|
||||
name: { type: 'string', description: 'Resource name' },
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Generic Webhook Trigger Pattern
|
||||
|
||||
For services with many event types, create a generic webhook that accepts all events:
|
||||
|
||||
```typescript
|
||||
export const {service}WebhookTrigger: TriggerConfig = {
|
||||
id: '{service}_webhook',
|
||||
name: '{Service} Webhook (All Events)',
|
||||
// ...
|
||||
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: '{service}_webhook',
|
||||
triggerOptions: {service}TriggerOptions,
|
||||
setupInstructions: {service}SetupInstructions('All Events'),
|
||||
extraFields: [
|
||||
// Event type filter (optional)
|
||||
{
|
||||
id: 'eventTypes',
|
||||
title: 'Event Types',
|
||||
type: 'dropdown',
|
||||
multiSelect: true,
|
||||
options: [
|
||||
{ label: 'Event A', id: 'event_a' },
|
||||
{ label: 'Event B', id: 'event_b' },
|
||||
],
|
||||
placeholder: 'Leave empty for all events',
|
||||
mode: 'trigger',
|
||||
condition: { field: 'selectedTriggerId', value: '{service}_webhook' },
|
||||
},
|
||||
// Plus any other service-specific fields
|
||||
...build{Service}ExtraFields('{service}_webhook'),
|
||||
],
|
||||
}),
|
||||
}
|
||||
```
|
||||
|
||||
## Checklist Before Finishing
|
||||
|
||||
### Utils
|
||||
- [ ] Created `{service}TriggerOptions` array with all trigger IDs
|
||||
- [ ] Created `{service}SetupInstructions` function with clear steps
|
||||
- [ ] Created `build{Service}ExtraFields` for service-specific fields
|
||||
- [ ] Created output builders for each trigger type
|
||||
|
||||
### Triggers
|
||||
- [ ] Primary trigger has `includeDropdown: true`
|
||||
- [ ] Secondary triggers do NOT have `includeDropdown`
|
||||
- [ ] All triggers use `buildTriggerSubBlocks` helper
|
||||
- [ ] All triggers have proper outputs defined
|
||||
- [ ] Created `index.ts` barrel export
|
||||
|
||||
### Registration
|
||||
- [ ] All triggers imported in `triggers/registry.ts`
|
||||
- [ ] All triggers added to `TRIGGER_REGISTRY`
|
||||
- [ ] Block has `triggers.enabled: true`
|
||||
- [ ] Block has all trigger IDs in `triggers.available`
|
||||
- [ ] Block spreads all trigger subBlocks: `...getTrigger('id').subBlocks`
|
||||
|
||||
### Automatic Webhook Registration (if supported)
|
||||
- [ ] Added API key field to `build{Service}ExtraFields` with `password: true`
|
||||
- [ ] Updated setup instructions for automatic webhook creation
|
||||
- [ ] Added provider-specific logic to `apps/sim/app/api/webhooks/route.ts`
|
||||
- [ ] Added `create{Service}WebhookSubscription` helper function
|
||||
- [ ] 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
|
||||
- [ ] Test trigger UI shows correctly in the block
|
||||
- [ ] Test automatic webhook creation works (if applicable)
|
||||
@@ -1,60 +1,57 @@
|
||||
---
|
||||
description: Testing patterns with Vitest
|
||||
description: Testing patterns with Vitest and @sim/testing
|
||||
globs: ["apps/sim/**/*.test.ts", "apps/sim/**/*.test.tsx"]
|
||||
---
|
||||
|
||||
# Testing Patterns
|
||||
|
||||
Use Vitest. Test files live next to source: `feature.ts` → `feature.test.ts`
|
||||
Use Vitest. Test files: `feature.ts` → `feature.test.ts`
|
||||
|
||||
## Structure
|
||||
|
||||
```typescript
|
||||
/**
|
||||
* Tests for [feature name]
|
||||
*
|
||||
* @vitest-environment node
|
||||
*/
|
||||
import { databaseMock, loggerMock } from '@sim/testing'
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
|
||||
// 1. Mocks BEFORE imports
|
||||
vi.mock('@sim/db', () => ({ db: { select: vi.fn() } }))
|
||||
vi.mock('@sim/db', () => databaseMock)
|
||||
vi.mock('@sim/logger', () => loggerMock)
|
||||
|
||||
// 2. Imports AFTER mocks
|
||||
import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest'
|
||||
import { createSession, loggerMock } from '@sim/testing'
|
||||
import { myFunction } from '@/lib/feature'
|
||||
|
||||
describe('myFunction', () => {
|
||||
beforeEach(() => vi.clearAllMocks())
|
||||
|
||||
it('should do something', () => {
|
||||
expect(myFunction()).toBe(expected)
|
||||
})
|
||||
|
||||
it.concurrent('runs in parallel', () => { ... })
|
||||
it.concurrent('isolated tests run in parallel', () => { ... })
|
||||
})
|
||||
```
|
||||
|
||||
## @sim/testing Package
|
||||
|
||||
```typescript
|
||||
// Factories - create test data
|
||||
import { createBlock, createWorkflow, createSession } from '@sim/testing'
|
||||
Always prefer over local mocks.
|
||||
|
||||
// Mocks - pre-configured mocks
|
||||
import { loggerMock, databaseMock, fetchMock } from '@sim/testing'
|
||||
|
||||
// Builders - fluent API for complex objects
|
||||
import { ExecutionBuilder, WorkflowBuilder } from '@sim/testing'
|
||||
```
|
||||
| Category | Utilities |
|
||||
|----------|-----------|
|
||||
| **Mocks** | `loggerMock`, `databaseMock`, `setupGlobalFetchMock()` |
|
||||
| **Factories** | `createSession()`, `createWorkflowRecord()`, `createBlock()`, `createExecutorContext()` |
|
||||
| **Builders** | `WorkflowBuilder`, `ExecutionContextBuilder` |
|
||||
| **Assertions** | `expectWorkflowAccessGranted()`, `expectBlockExecuted()` |
|
||||
|
||||
## Rules
|
||||
|
||||
1. `@vitest-environment node` directive at file top
|
||||
2. **Mocks before imports** - `vi.mock()` calls must come first
|
||||
3. Use `@sim/testing` factories over manual test data
|
||||
4. `it.concurrent` for independent tests (faster)
|
||||
2. `vi.mock()` calls before importing mocked modules
|
||||
3. `@sim/testing` utilities over local mocks
|
||||
4. `it.concurrent` for isolated tests (no shared mutable state)
|
||||
5. `beforeEach(() => vi.clearAllMocks())` to reset state
|
||||
6. Group related tests with nested `describe` blocks
|
||||
7. Test file naming: `*.test.ts` (not `*.spec.ts`)
|
||||
|
||||
## Hoisted Mocks
|
||||
|
||||
For mutable mock references:
|
||||
|
||||
```typescript
|
||||
const mockFn = vi.hoisted(() => vi.fn())
|
||||
vi.mock('@/lib/module', () => ({ myFunction: mockFn }))
|
||||
mockFn.mockResolvedValue({ data: 'test' })
|
||||
```
|
||||
|
||||
27
.github/workflows/i18n.yml
vendored
27
.github/workflows/i18n.yml
vendored
@@ -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
|
||||
<!-- Translation changes are text-based - no visual changes expected -->
|
||||
<!-- Reviewers should check the documentation site renders correctly for all languages -->
|
||||
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)
|
||||
|
||||
35
.github/workflows/test-build.yml
vendored
35
.github/workflows/test-build.yml
vendored
@@ -38,6 +38,41 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
- name: Validate feature flags
|
||||
run: |
|
||||
FILE="apps/sim/lib/core/config/feature-flags.ts"
|
||||
ERRORS=""
|
||||
|
||||
echo "Checking for hardcoded boolean feature flags..."
|
||||
|
||||
# Use perl for multiline matching to catch both:
|
||||
# export const isHosted = true
|
||||
# export const isHosted =
|
||||
# true
|
||||
HARDCODED=$(perl -0777 -ne 'while (/export const (is[A-Za-z]+)\s*=\s*\n?\s*(true|false)\b/g) { print " $1 = $2\n" }' "$FILE")
|
||||
|
||||
if [ -n "$HARDCODED" ]; then
|
||||
ERRORS="${ERRORS}\n❌ Feature flags must not be hardcoded to boolean literals!\n\nFound hardcoded flags:\n${HARDCODED}\n\nFeature flags should derive their values from environment variables.\n"
|
||||
fi
|
||||
|
||||
echo "Checking feature flag naming conventions..."
|
||||
|
||||
# Check that all export const (except functions) start with 'is'
|
||||
# This finds exports like "export const someFlag" that don't start with "is" or "get"
|
||||
BAD_NAMES=$(grep -E "^export const [a-z]" "$FILE" | grep -vE "^export const (is|get)" | sed 's/export const \([a-zA-Z]*\).*/ \1/')
|
||||
|
||||
if [ -n "$BAD_NAMES" ]; then
|
||||
ERRORS="${ERRORS}\n❌ Feature flags must use 'is' prefix for boolean flags!\n\nFound incorrectly named flags:\n${BAD_NAMES}\n\nExample: 'hostedMode' should be 'isHostedMode'\n"
|
||||
fi
|
||||
|
||||
if [ -n "$ERRORS" ]; then
|
||||
echo ""
|
||||
echo -e "$ERRORS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ All feature flags are properly configured"
|
||||
|
||||
- name: Lint code
|
||||
run: bun run lint:check
|
||||
|
||||
|
||||
16
CLAUDE.md
16
CLAUDE.md
@@ -1,4 +1,4 @@
|
||||
# Sim Studio Development Guidelines
|
||||
# Sim Development Guidelines
|
||||
|
||||
You are a professional software engineer. All code must follow best practices: accurate, readable, clean, and efficient.
|
||||
|
||||
@@ -173,13 +173,13 @@ Use Vitest. Test files: `feature.ts` → `feature.test.ts`
|
||||
/**
|
||||
* @vitest-environment node
|
||||
*/
|
||||
|
||||
// Mocks BEFORE imports
|
||||
vi.mock('@sim/db', () => ({ db: { select: vi.fn() } }))
|
||||
|
||||
// Imports AFTER mocks
|
||||
import { databaseMock, loggerMock } from '@sim/testing'
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
import { createSession, loggerMock } from '@sim/testing'
|
||||
|
||||
vi.mock('@sim/db', () => databaseMock)
|
||||
vi.mock('@sim/logger', () => loggerMock)
|
||||
|
||||
import { myFunction } from '@/lib/feature'
|
||||
|
||||
describe('feature', () => {
|
||||
beforeEach(() => vi.clearAllMocks())
|
||||
@@ -187,7 +187,7 @@ describe('feature', () => {
|
||||
})
|
||||
```
|
||||
|
||||
Use `@sim/testing` factories over manual test data.
|
||||
Use `@sim/testing` mocks/factories over local test data. See `.cursor/rules/sim-testing.mdc` for details.
|
||||
|
||||
## Utils Rules
|
||||
|
||||
|
||||
117
README.md
117
README.md
@@ -13,6 +13,10 @@
|
||||
<a href="https://docs.sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Docs-6F3DFA.svg" alt="Documentation"></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://cursor.com/link/prompt?text=Help%20me%20set%20up%20Sim%20Studio%20locally.%20Follow%20these%20steps%3A%0A%0A1.%20First%2C%20verify%20Docker%20is%20installed%20and%20running%3A%0A%20%20%20docker%20--version%0A%20%20%20docker%20info%0A%0A2.%20Clone%20the%20repository%3A%0A%20%20%20git%20clone%20https%3A%2F%2Fgithub.com%2Fsimstudioai%2Fsim.git%0A%20%20%20cd%20sim%0A%0A3.%20Start%20the%20services%20with%20Docker%20Compose%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20up%20-d%0A%0A4.%20Wait%20for%20all%20containers%20to%20be%20healthy%20(this%20may%20take%201-2%20minutes)%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20ps%0A%0A5.%20Verify%20the%20app%20is%20accessible%20at%20http%3A%2F%2Flocalhost%3A3000%0A%0AIf%20there%20are%20any%20errors%2C%20help%20me%20troubleshoot%20them.%20Common%20issues%3A%0A-%20Port%203000%2C%203002%2C%20or%205432%20already%20in%20use%0A-%20Docker%20not%20running%0A-%20Insufficient%20memory%20(needs%2012GB%2B%20RAM)%0A%0AFor%20local%20AI%20models%20with%20Ollama%2C%20use%20this%20instead%20of%20step%203%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.ollama.yml%20--profile%20setup%20up%20-d"><img src="https://img.shields.io/badge/Set%20Up%20with-Cursor-000000?logo=cursor&logoColor=white" alt="Set Up with Cursor"></a>
|
||||
</p>
|
||||
|
||||
### Build Workflows with Ease
|
||||
Design agent workflows visually on a canvas—connect agents, tools, and blocks, then run them instantly.
|
||||
|
||||
@@ -60,17 +64,11 @@ Docker must be installed and running on your machine.
|
||||
### Self-hosted: Docker Compose
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/simstudioai/sim.git
|
||||
|
||||
# Navigate to the project directory
|
||||
cd sim
|
||||
|
||||
# Start Sim
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Access the application at [http://localhost:3000/](http://localhost:3000/)
|
||||
Open [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
#### Using Local Models with Ollama
|
||||
|
||||
@@ -91,33 +89,17 @@ docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.1:8b
|
||||
|
||||
#### Using an External Ollama Instance
|
||||
|
||||
If you already have Ollama running on your host machine (outside Docker), you need to configure the `OLLAMA_URL` to use `host.docker.internal` instead of `localhost`:
|
||||
If Ollama is running on your host machine, use `host.docker.internal` instead of `localhost`:
|
||||
|
||||
```bash
|
||||
# Docker Desktop (macOS/Windows)
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux (add extra_hosts or use host IP)
|
||||
docker compose -f docker-compose.prod.yml up -d # Then set OLLAMA_URL to your host's IP
|
||||
```
|
||||
|
||||
**Why?** When running inside Docker, `localhost` refers to the container itself, not your host machine. `host.docker.internal` is a special DNS name that resolves to the host.
|
||||
|
||||
For Linux users, you can either:
|
||||
- Use your host machine's actual IP address (e.g., `http://192.168.1.100:11434`)
|
||||
- Add `extra_hosts: ["host.docker.internal:host-gateway"]` to the simstudio service in your compose file
|
||||
On Linux, use your host's IP address or add `extra_hosts: ["host.docker.internal:host-gateway"]` to the compose file.
|
||||
|
||||
#### Using vLLM
|
||||
|
||||
Sim also supports [vLLM](https://docs.vllm.ai/) for self-hosted models with OpenAI-compatible API:
|
||||
|
||||
```bash
|
||||
# Set these environment variables
|
||||
VLLM_BASE_URL=http://your-vllm-server:8000
|
||||
VLLM_API_KEY=your_optional_api_key # Only if your vLLM instance requires auth
|
||||
```
|
||||
|
||||
When running with Docker, use `host.docker.internal` if vLLM is on your host machine (same as Ollama above).
|
||||
Sim supports [vLLM](https://docs.vllm.ai/) for self-hosted models. Set `VLLM_BASE_URL` and optionally `VLLM_API_KEY` in your environment.
|
||||
|
||||
### Self-hosted: Dev Containers
|
||||
|
||||
@@ -128,14 +110,9 @@ When running with Docker, use `host.docker.internal` if vLLM is on your host mac
|
||||
|
||||
### Self-hosted: Manual Setup
|
||||
|
||||
**Requirements:**
|
||||
- [Bun](https://bun.sh/) runtime
|
||||
- [Node.js](https://nodejs.org/) v20+ (required for sandboxed code execution)
|
||||
- PostgreSQL 12+ with [pgvector extension](https://github.com/pgvector/pgvector) (required for AI embeddings)
|
||||
**Requirements:** [Bun](https://bun.sh/), [Node.js](https://nodejs.org/) v20+, PostgreSQL 12+ with [pgvector](https://github.com/pgvector/pgvector)
|
||||
|
||||
**Note:** Sim uses vector embeddings for AI features like knowledge bases and semantic search, which requires the `pgvector` PostgreSQL extension.
|
||||
|
||||
1. Clone and install dependencies:
|
||||
1. Clone and install:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git
|
||||
@@ -145,75 +122,33 @@ bun install
|
||||
|
||||
2. Set up PostgreSQL with pgvector:
|
||||
|
||||
You need PostgreSQL with the `vector` extension for embedding support. Choose one option:
|
||||
|
||||
**Option A: Using Docker (Recommended)**
|
||||
```bash
|
||||
# Start PostgreSQL with pgvector extension
|
||||
docker run --name simstudio-db \
|
||||
-e POSTGRES_PASSWORD=your_password \
|
||||
-e POSTGRES_DB=simstudio \
|
||||
-p 5432:5432 -d \
|
||||
pgvector/pgvector:pg17
|
||||
docker run --name simstudio-db -e POSTGRES_PASSWORD=your_password -e POSTGRES_DB=simstudio -p 5432:5432 -d pgvector/pgvector:pg17
|
||||
```
|
||||
|
||||
**Option B: Manual Installation**
|
||||
- Install PostgreSQL 12+ and the pgvector extension
|
||||
- See [pgvector installation guide](https://github.com/pgvector/pgvector#installation)
|
||||
Or install manually via the [pgvector guide](https://github.com/pgvector/pgvector#installation).
|
||||
|
||||
3. Set up environment:
|
||||
3. Configure environment:
|
||||
|
||||
```bash
|
||||
cd apps/sim
|
||||
cp .env.example .env # Configure with required variables (DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL)
|
||||
cp apps/sim/.env.example apps/sim/.env
|
||||
cp packages/db/.env.example packages/db/.env
|
||||
# Edit both .env files to set DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
|
||||
```
|
||||
|
||||
Update your `.env` file with the database URL:
|
||||
```bash
|
||||
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
|
||||
```
|
||||
|
||||
4. Set up the database:
|
||||
|
||||
First, configure the database package environment:
|
||||
```bash
|
||||
cd packages/db
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Update your `packages/db/.env` file with the database URL:
|
||||
```bash
|
||||
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
|
||||
```
|
||||
|
||||
Then run the migrations:
|
||||
```bash
|
||||
cd packages/db # Required so drizzle picks correct .env file
|
||||
bunx drizzle-kit migrate --config=./drizzle.config.ts
|
||||
```
|
||||
|
||||
5. Start the development servers:
|
||||
|
||||
**Recommended approach - run both servers together (from project root):**
|
||||
4. Run migrations:
|
||||
|
||||
```bash
|
||||
bun run dev:full
|
||||
cd packages/db && bunx drizzle-kit migrate --config=./drizzle.config.ts
|
||||
```
|
||||
|
||||
This starts both the main Next.js application and the realtime socket server required for full functionality.
|
||||
5. Start development servers:
|
||||
|
||||
**Alternative - run servers separately:**
|
||||
|
||||
Next.js app (from project root):
|
||||
```bash
|
||||
bun run dev
|
||||
bun run dev:full # Starts both Next.js app and realtime socket server
|
||||
```
|
||||
|
||||
Realtime socket server (from `apps/sim` directory in a separate terminal):
|
||||
```bash
|
||||
cd apps/sim
|
||||
bun run dev:sockets
|
||||
```
|
||||
Or run separately: `bun run dev` (Next.js) and `cd apps/sim && bun run dev:sockets` (realtime).
|
||||
|
||||
## Copilot API Keys
|
||||
|
||||
@@ -224,7 +159,7 @@ Copilot is a Sim-managed service. To use Copilot on a self-hosted instance:
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Key environment variables for self-hosted deployments (see `apps/sim/.env.example` for full list):
|
||||
Key environment variables for self-hosted deployments. See [`.env.example`](apps/sim/.env.example) for defaults or [`env.ts`](apps/sim/lib/core/config/env.ts) for the full list.
|
||||
|
||||
| Variable | Required | Description |
|
||||
|----------|----------|-------------|
|
||||
@@ -232,9 +167,9 @@ Key environment variables for self-hosted deployments (see `apps/sim/.env.exampl
|
||||
| `BETTER_AUTH_SECRET` | Yes | Auth secret (`openssl rand -hex 32`) |
|
||||
| `BETTER_AUTH_URL` | Yes | Your app URL (e.g., `http://localhost:3000`) |
|
||||
| `NEXT_PUBLIC_APP_URL` | Yes | Public app URL (same as above) |
|
||||
| `ENCRYPTION_KEY` | Yes | Encryption key (`openssl rand -hex 32`) |
|
||||
| `OLLAMA_URL` | No | Ollama server URL (default: `http://localhost:11434`) |
|
||||
| `VLLM_BASE_URL` | No | vLLM server URL for self-hosted models |
|
||||
| `ENCRYPTION_KEY` | Yes | Encrypts environment variables (`openssl rand -hex 32`) |
|
||||
| `INTERNAL_API_SECRET` | Yes | Encrypts internal API routes (`openssl rand -hex 32`) |
|
||||
| `API_ENCRYPTION_KEY` | Yes | Encrypts API keys (`openssl rand -hex 32`) |
|
||||
| `COPILOT_API_KEY` | No | API key from sim.ai for Copilot features |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -4,6 +4,7 @@
|
||||
|
||||
import type { ComponentType, SVGProps } from 'react'
|
||||
import {
|
||||
A2AIcon,
|
||||
AhrefsIcon,
|
||||
AirtableIcon,
|
||||
ApifyIcon,
|
||||
@@ -54,6 +55,8 @@ import {
|
||||
JiraIcon,
|
||||
JiraServiceManagementIcon,
|
||||
KalshiIcon,
|
||||
LangsmithIcon,
|
||||
LemlistIcon,
|
||||
LinearIcon,
|
||||
LinkedInIcon,
|
||||
LinkupIcon,
|
||||
@@ -105,6 +108,7 @@ import {
|
||||
SupabaseIcon,
|
||||
TavilyIcon,
|
||||
TelegramIcon,
|
||||
TinybirdIcon,
|
||||
TranslateIcon,
|
||||
TrelloIcon,
|
||||
TTSIcon,
|
||||
@@ -126,6 +130,7 @@ import {
|
||||
type IconComponent = ComponentType<SVGProps<SVGSVGElement>>
|
||||
|
||||
export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
a2a: A2AIcon,
|
||||
ahrefs: AhrefsIcon,
|
||||
airtable: AirtableIcon,
|
||||
apify: ApifyIcon,
|
||||
@@ -137,7 +142,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
circleback: CirclebackIcon,
|
||||
clay: ClayIcon,
|
||||
confluence: ConfluenceIcon,
|
||||
cursor: CursorIcon,
|
||||
cursor_v2: CursorIcon,
|
||||
datadog: DatadogIcon,
|
||||
discord: DiscordIcon,
|
||||
dropbox: DropboxIcon,
|
||||
@@ -149,10 +154,10 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
file: DocumentIcon,
|
||||
firecrawl: FirecrawlIcon,
|
||||
fireflies: FirefliesIcon,
|
||||
github: GithubIcon,
|
||||
github_v2: GithubIcon,
|
||||
gitlab: GitLabIcon,
|
||||
gmail: GmailIcon,
|
||||
google_calendar: GoogleCalendarIcon,
|
||||
gmail_v2: GmailIcon,
|
||||
google_calendar_v2: GoogleCalendarIcon,
|
||||
google_docs: GoogleDocsIcon,
|
||||
google_drive: GoogleDriveIcon,
|
||||
google_forms: GoogleFormsIcon,
|
||||
@@ -170,12 +175,14 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
image_generator: ImageIcon,
|
||||
imap: MailServerIcon,
|
||||
incidentio: IncidentioIcon,
|
||||
intercom: IntercomIcon,
|
||||
intercom_v2: IntercomIcon,
|
||||
jina: JinaAIIcon,
|
||||
jira: JiraIcon,
|
||||
jira_service_management: JiraServiceManagementIcon,
|
||||
kalshi: KalshiIcon,
|
||||
knowledge: PackageSearchIcon,
|
||||
langsmith: LangsmithIcon,
|
||||
lemlist: LemlistIcon,
|
||||
linear: LinearIcon,
|
||||
linkedin: LinkedInIcon,
|
||||
linkup: LinkupIcon,
|
||||
@@ -190,7 +197,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
mongodb: MongoDBIcon,
|
||||
mysql: MySQLIcon,
|
||||
neo4j: Neo4jIcon,
|
||||
notion: NotionIcon,
|
||||
notion_v2: NotionIcon,
|
||||
onedrive: MicrosoftOneDriveIcon,
|
||||
openai: OpenAIIcon,
|
||||
outlook: OutlookIcon,
|
||||
@@ -226,7 +233,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
supabase: SupabaseIcon,
|
||||
tavily: TavilyIcon,
|
||||
telegram: TelegramIcon,
|
||||
thinking: BrainIcon,
|
||||
tinybird: TinybirdIcon,
|
||||
translate: TranslateIcon,
|
||||
trello: TrelloIcon,
|
||||
tts: TTSIcon,
|
||||
|
||||
77
apps/docs/content/docs/de/enterprise/index.mdx
Normal file
77
apps/docs/content/docs/de/enterprise/index.mdx
Normal file
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: Enterprise
|
||||
description: Enterprise-Funktionen für Organisationen mit erweiterten
|
||||
Sicherheits- und Compliance-Anforderungen
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Sim Enterprise bietet erweiterte Funktionen für Organisationen mit erhöhten Sicherheits-, Compliance- und Verwaltungsanforderungen.
|
||||
|
||||
---
|
||||
|
||||
## Bring Your Own Key (BYOK)
|
||||
|
||||
Verwenden Sie Ihre eigenen API-Schlüssel für KI-Modellanbieter anstelle der gehosteten Schlüssel von Sim.
|
||||
|
||||
### Unterstützte Anbieter
|
||||
|
||||
| Anbieter | Verwendung |
|
||||
|----------|-------|
|
||||
| OpenAI | Knowledge Base-Embeddings, Agent-Block |
|
||||
| Anthropic | Agent-Block |
|
||||
| Google | Agent-Block |
|
||||
| Mistral | Knowledge Base OCR |
|
||||
|
||||
### Einrichtung
|
||||
|
||||
1. Navigieren Sie zu **Einstellungen** → **BYOK** in Ihrem Workspace
|
||||
2. Klicken Sie auf **Schlüssel hinzufügen** für Ihren Anbieter
|
||||
3. Geben Sie Ihren API-Schlüssel ein und speichern Sie
|
||||
|
||||
<Callout type="warn">
|
||||
BYOK-Schlüssel werden verschlüsselt gespeichert. Nur Organisationsadministratoren und -inhaber können Schlüssel verwalten.
|
||||
</Callout>
|
||||
|
||||
Wenn konfiguriert, verwenden Workflows Ihren Schlüssel anstelle der gehosteten Schlüssel von Sim. Bei Entfernung wechseln Workflows automatisch zu den gehosteten Schlüsseln zurück.
|
||||
|
||||
---
|
||||
|
||||
## Single Sign-On (SSO)
|
||||
|
||||
Enterprise-Authentifizierung mit SAML 2.0- und OIDC-Unterstützung für zentralisiertes Identitätsmanagement.
|
||||
|
||||
### Unterstützte Anbieter
|
||||
|
||||
- Okta
|
||||
- Azure AD / Entra ID
|
||||
- Google Workspace
|
||||
- OneLogin
|
||||
- Jeder SAML 2.0- oder OIDC-Anbieter
|
||||
|
||||
### Einrichtung
|
||||
|
||||
1. Navigieren Sie zu **Einstellungen** → **SSO** in Ihrem Workspace
|
||||
2. Wählen Sie Ihren Identitätsanbieter
|
||||
3. Konfigurieren Sie die Verbindung mithilfe der Metadaten Ihres IdP
|
||||
4. Aktivieren Sie SSO für Ihre Organisation
|
||||
|
||||
<Callout type="info">
|
||||
Sobald SSO aktiviert ist, authentifizieren sich Teammitglieder über Ihren Identitätsanbieter anstelle von E-Mail/Passwort.
|
||||
</Callout>
|
||||
|
||||
---
|
||||
|
||||
## Self-Hosted
|
||||
|
||||
Für selbst gehostete Bereitstellungen können Enterprise-Funktionen über Umgebungsvariablen aktiviert werden:
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `SSO_ENABLED`, `NEXT_PUBLIC_SSO_ENABLED` | Single Sign-On mit SAML/OIDC |
|
||||
| `CREDENTIAL_SETS_ENABLED`, `NEXT_PUBLIC_CREDENTIAL_SETS_ENABLED` | Polling-Gruppen für E-Mail-Trigger |
|
||||
| `DISABLE_INVITATIONS`, `NEXT_PUBLIC_DISABLE_INVITATIONS` | Workspace-/Organisations-Einladungen global deaktivieren |
|
||||
|
||||
<Callout type="warn">
|
||||
BYOK ist nur im gehosteten Sim verfügbar. Selbst gehostete Deployments konfigurieren AI-Provider-Schlüssel direkt über Umgebungsvariablen.
|
||||
</Callout>
|
||||
@@ -49,40 +49,40 @@ Die Modellaufschlüsselung zeigt:
|
||||
|
||||
<Tabs items={['Hosted Models', 'Bring Your Own API Key']}>
|
||||
<Tab>
|
||||
**Gehostete Modelle** - Sim stellt API-Schlüssel mit einem 2-fachen Preismultiplikator bereit:
|
||||
**Hosted Models** - Sim bietet API-Schlüssel mit einem 1,4-fachen Preismultiplikator für Agent-Blöcke:
|
||||
|
||||
**OpenAI**
|
||||
| Modell | Basispreis (Eingabe/Ausgabe) | Gehosteter Preis (Eingabe/Ausgabe) |
|
||||
| Modell | Basispreis (Eingabe/Ausgabe) | Hosted-Preis (Eingabe/Ausgabe) |
|
||||
|-------|---------------------------|----------------------------|
|
||||
| GPT-5.1 | 1,25 $ / 10,00 $ | 2,50 $ / 20,00 $ |
|
||||
| GPT-5 | 1,25 $ / 10,00 $ | 2,50 $ / 20,00 $ |
|
||||
| GPT-5 Mini | 0,25 $ / 2,00 $ | 0,50 $ / 4,00 $ |
|
||||
| GPT-5 Nano | 0,05 $ / 0,40 $ | 0,10 $ / 0,80 $ |
|
||||
| GPT-4o | 2,50 $ / 10,00 $ | 5,00 $ / 20,00 $ |
|
||||
| GPT-4.1 | 2,00 $ / 8,00 $ | 4,00 $ / 16,00 $ |
|
||||
| GPT-4.1 Mini | 0,40 $ / 1,60 $ | 0,80 $ / 3,20 $ |
|
||||
| GPT-4.1 Nano | 0,10 $ / 0,40 $ | 0,20 $ / 0,80 $ |
|
||||
| o1 | 15,00 $ / 60,00 $ | 30,00 $ / 120,00 $ |
|
||||
| o3 | 2,00 $ / 8,00 $ | 4,00 $ / 16,00 $ |
|
||||
| o4 Mini | 1,10 $ / 4,40 $ | 2,20 $ / 8,80 $ |
|
||||
| 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 |
|
||||
|
||||
**Anthropic**
|
||||
| Modell | Basispreis (Eingabe/Ausgabe) | Gehosteter Preis (Eingabe/Ausgabe) |
|
||||
| Modell | Basispreis (Eingabe/Ausgabe) | Hosted-Preis (Eingabe/Ausgabe) |
|
||||
|-------|---------------------------|----------------------------|
|
||||
| Claude Opus 4.5 | 5,00 $ / 25,00 $ | 10,00 $ / 50,00 $ |
|
||||
| Claude Opus 4.1 | 15,00 $ / 75,00 $ | 30,00 $ / 150,00 $ |
|
||||
| Claude Sonnet 4.5 | 3,00 $ / 15,00 $ | 6,00 $ / 30,00 $ |
|
||||
| Claude Sonnet 4.0 | 3,00 $ / 15,00 $ | 6,00 $ / 30,00 $ |
|
||||
| Claude Haiku 4.5 | 1,00 $ / 5,00 $ | 2,00 $ / 10,00 $ |
|
||||
| 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 |
|
||||
|
||||
**Google**
|
||||
| Modell | Basispreis (Eingabe/Ausgabe) | Gehosteter Preis (Eingabe/Ausgabe) |
|
||||
| Modell | Basispreis (Eingabe/Ausgabe) | Hosted-Preis (Eingabe/Ausgabe) |
|
||||
|-------|---------------------------|----------------------------|
|
||||
| Gemini 3 Pro Preview | 2,00 $ / 12,00 $ | 4,00 $ / 24,00 $ |
|
||||
| Gemini 2.5 Pro | 1,25 $ / 10,00 $ | 2,50 $ / 20,00 $ |
|
||||
| Gemini 2.5 Flash | 0,30 $ / 2,50 $ | 0,60 $ / 5,00 $ |
|
||||
| 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 |
|
||||
|
||||
*Der 2x-Multiplikator deckt Infrastruktur- und API-Verwaltungskosten ab.*
|
||||
*Der 1,4-fache Multiplikator deckt Infrastruktur- und API-Verwaltungskosten ab.*
|
||||
</Tab>
|
||||
|
||||
<Tab>
|
||||
|
||||
@@ -17,7 +17,7 @@ MCP-Server gruppieren Ihre Workflow-Tools zusammen. Erstellen und verwalten Sie
|
||||
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
1. Navigieren Sie zu **Einstellungen → MCP-Server**
|
||||
1. Navigieren Sie zu **Einstellungen → Bereitgestellte MCPs**
|
||||
2. Klicken Sie auf **Server erstellen**
|
||||
3. Geben Sie einen Namen und eine optionale Beschreibung ein
|
||||
4. Kopieren Sie die Server-URL zur Verwendung in Ihren MCP-Clients
|
||||
@@ -79,7 +79,7 @@ Füge deinen API-Key-Header (`X-API-Key`) für authentifizierten Zugriff hinzu,
|
||||
|
||||
## Server-Verwaltung
|
||||
|
||||
In der Server-Detailansicht unter **Einstellungen → MCP-Server** kannst du:
|
||||
In der Server-Detailansicht unter **Einstellungen → Bereitgestellte MCPs** können Sie:
|
||||
|
||||
- **Tools anzeigen**: Alle Workflows sehen, die einem Server hinzugefügt wurden
|
||||
- **URL kopieren**: Die Server-URL für MCP-Clients abrufen
|
||||
|
||||
@@ -27,7 +27,7 @@ MCP-Server stellen Sammlungen von Tools bereit, die Ihre Agenten nutzen können.
|
||||
</div>
|
||||
|
||||
1. Navigieren Sie zu Ihren Workspace-Einstellungen
|
||||
2. Gehen Sie zum Abschnitt **MCP-Server**
|
||||
2. Gehen Sie zum Abschnitt **Bereitgestellte MCPs**
|
||||
3. Klicken Sie auf **MCP-Server hinzufügen**
|
||||
4. Geben Sie die Server-Konfigurationsdetails ein
|
||||
5. Speichern Sie die Konfiguration
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Docker
|
||||
description: Sim Studio mit Docker Compose bereitstellen
|
||||
description: Sim mit Docker Compose bereitstellen
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Umgebungsvariablen
|
||||
description: Konfigurationsreferenz für Sim Studio
|
||||
description: Konfigurationsreferenz für Sim
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
title: Self-Hosting
|
||||
description: Stellen Sie Sim Studio auf Ihrer eigenen Infrastruktur bereit
|
||||
description: Stellen Sie Sim auf Ihrer eigenen Infrastruktur bereit
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Stellen Sie Sim Studio auf Ihrer eigenen Infrastruktur mit Docker oder Kubernetes bereit.
|
||||
Stellen Sie Sim auf Ihrer eigenen Infrastruktur mit Docker oder Kubernetes bereit.
|
||||
|
||||
## Anforderungen
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: Sim Studio mit Helm bereitstellen
|
||||
description: Sim mit Helm bereitstellen
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Cloud-Plattformen
|
||||
description: Sim Studio auf Cloud-Plattformen bereitstellen
|
||||
description: Sim auf Cloud-Plattformen bereitstellen
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
@@ -64,7 +64,7 @@ sudo usermod -aG docker $USER
|
||||
docker --version
|
||||
```
|
||||
|
||||
### Sim Studio bereitstellen
|
||||
### Sim bereitstellen
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
@@ -22,7 +22,7 @@ Verwende den Start-Block für alles, was aus dem Editor, deploy-to-API oder depl
|
||||
|
||||
<Cards>
|
||||
<Card title="Start" href="/triggers/start">
|
||||
Einheitlicher Einstiegspunkt, der Editor-Ausführungen, API-Bereitstellungen und Chat-Bereitstellungen unterstützt
|
||||
Einheitlicher Einstiegspunkt, der Editor-Ausführungen, API-Deployments und Chat-Deployments unterstützt
|
||||
</Card>
|
||||
<Card title="Webhook" href="/triggers/webhook">
|
||||
Externe Webhook-Payloads empfangen
|
||||
@@ -33,6 +33,9 @@ Verwende den Start-Block für alles, was aus dem Editor, deploy-to-API oder depl
|
||||
<Card title="RSS Feed" href="/triggers/rss">
|
||||
RSS- und Atom-Feeds auf neue Inhalte überwachen
|
||||
</Card>
|
||||
<Card title="Email Polling Groups" href="#email-polling-groups">
|
||||
Team-Gmail- und Outlook-Postfächer überwachen
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Schneller Vergleich
|
||||
@@ -43,6 +46,7 @@ Verwende den Start-Block für alles, was aus dem Editor, deploy-to-API oder depl
|
||||
| **Schedule** | Timer, der im Schedule-Block verwaltet wird |
|
||||
| **Webhook** | Bei eingehender HTTP-Anfrage |
|
||||
| **RSS Feed** | Neues Element im Feed veröffentlicht |
|
||||
| **Email Polling Groups** | Neue E-Mail in Team-Gmail- oder Outlook-Postfächern empfangen |
|
||||
|
||||
> Der Start-Block stellt immer `input`, `conversationId` und `files` Felder bereit. Füge benutzerdefinierte Felder zum Eingabeformat für zusätzliche strukturierte Daten hinzu.
|
||||
|
||||
@@ -65,3 +69,25 @@ Wenn du im Editor auf **Run** klickst, wählt Sim automatisch aus, welcher Trigg
|
||||
Wenn dein Workflow mehrere Trigger hat, wird der Trigger mit der höchsten Priorität ausgeführt. Wenn du beispielsweise sowohl einen Start-Block als auch einen Webhook-Trigger hast, wird beim Klicken auf Run der Start-Block ausgeführt.
|
||||
|
||||
**Externe Auslöser mit Mock-Payloads**: Wenn externe Auslöser (Webhooks und Integrationen) manuell ausgeführt werden, generiert Sim automatisch Mock-Payloads basierend auf der erwarteten Datenstruktur des Auslösers. Dies stellt sicher, dass nachgelagerte Blöcke während des Testens Variablen korrekt auflösen können.
|
||||
|
||||
## E-Mail-Polling-Gruppen
|
||||
|
||||
Polling-Gruppen ermöglichen es Ihnen, die Gmail- oder Outlook-Postfächer mehrerer Teammitglieder mit einem einzigen Trigger zu überwachen. Erfordert einen Team- oder Enterprise-Plan.
|
||||
|
||||
**Erstellen einer Polling-Gruppe** (Admin/Owner)
|
||||
|
||||
1. Gehen Sie zu **Einstellungen → E-Mail-Polling**
|
||||
2. Klicken Sie auf **Erstellen** und wählen Sie Gmail oder Outlook
|
||||
3. Geben Sie einen Namen für die Gruppe ein
|
||||
|
||||
**Mitglieder einladen**
|
||||
|
||||
1. Klicken Sie auf **Mitglieder hinzufügen** bei Ihrer Polling-Gruppe
|
||||
2. Geben Sie E-Mail-Adressen ein (durch Komma oder Zeilenumbruch getrennt oder ziehen Sie eine CSV-Datei per Drag & Drop)
|
||||
3. Klicken Sie auf **Einladungen senden**
|
||||
|
||||
Eingeladene erhalten eine E-Mail mit einem Link, um ihr Konto zu verbinden. Sobald die Verbindung hergestellt ist, wird ihr Postfach automatisch in die Polling-Gruppe aufgenommen. Eingeladene müssen keine Mitglieder Ihrer Sim-Organisation sein.
|
||||
|
||||
**Verwendung in einem Workflow**
|
||||
|
||||
Wählen Sie beim Konfigurieren eines E-Mail-Triggers Ihre Polling-Gruppe aus dem Dropdown-Menü für Anmeldeinformationen anstelle eines einzelnen Kontos aus. Das System erstellt Webhooks für jedes Mitglied und leitet alle E-Mails durch Ihren Workflow.
|
||||
|
||||
@@ -2,16 +2,15 @@
|
||||
title: Router
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
The Router block uses AI to intelligently route workflows based on content analysis. Unlike Condition blocks that use simple rules, Routers understand context and intent.
|
||||
The Router block uses AI to intelligently route workflows based on content analysis. Unlike Condition blocks that use simple rules, Routers understand context and intent. Each route you define creates a separate output port, allowing you to connect different paths to different downstream blocks.
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/router.png"
|
||||
alt="Router Block with Multiple Paths"
|
||||
alt="Router Block with Multiple Route Ports"
|
||||
width={500}
|
||||
height={400}
|
||||
className="my-6"
|
||||
@@ -32,21 +31,23 @@ The Router block uses AI to intelligently route workflows based on content analy
|
||||
|
||||
## Configuration Options
|
||||
|
||||
### Content/Prompt
|
||||
### Context
|
||||
|
||||
The content or prompt that the Router will analyze to make routing decisions. This can be:
|
||||
The context that the Router will analyze to make routing decisions. This is the input data that gets evaluated against your route descriptions. It can be:
|
||||
|
||||
- A direct user query or input
|
||||
- Output from a previous block
|
||||
- A system-generated message
|
||||
- Any text content that needs intelligent routing
|
||||
|
||||
### Target Blocks
|
||||
### Routes
|
||||
|
||||
The possible destination blocks that the Router can select from. The Router will automatically detect connected blocks, but you can also:
|
||||
Define the possible paths that the Router can take. Each route consists of:
|
||||
|
||||
- Customize the descriptions of target blocks to improve routing accuracy
|
||||
- Specify routing criteria for each target block
|
||||
- Exclude certain blocks from being considered as routing targets
|
||||
- **Route Title**: A name for the route (e.g., "Sales", "Support", "Technical")
|
||||
- **Route Description**: A clear description of when this route should be selected (e.g., "Route here when the query is about pricing, purchasing, or sales inquiries")
|
||||
|
||||
Each route you add creates a **separate output port** on the Router block. Connect each port to the appropriate downstream block for that route.
|
||||
|
||||
### Model Selection
|
||||
|
||||
@@ -66,8 +67,9 @@ Your API key for the selected LLM provider. This is securely stored and used for
|
||||
|
||||
## Outputs
|
||||
|
||||
- **`<router.prompt>`**: Summary of the routing prompt
|
||||
- **`<router.selected_path>`**: Chosen destination block
|
||||
- **`<router.context>`**: The context that was analyzed
|
||||
- **`<router.selectedRoute>`**: The ID of the selected route
|
||||
- **`<router.selected_path>`**: Details of the chosen destination block
|
||||
- **`<router.tokens>`**: Token usage statistics
|
||||
- **`<router.cost>`**: Estimated routing cost
|
||||
- **`<router.model>`**: Model used for decision-making
|
||||
@@ -75,26 +77,43 @@ Your API key for the selected LLM provider. This is securely stored and used for
|
||||
## Example Use Cases
|
||||
|
||||
**Customer Support Triage** - Route tickets to specialized departments
|
||||
|
||||
```
|
||||
Input (Ticket) → Router → Agent (Engineering) or Agent (Finance)
|
||||
Input (Ticket) → Router
|
||||
├── [Sales Route] → Agent (Sales Team)
|
||||
├── [Technical Route] → Agent (Engineering)
|
||||
└── [Billing Route] → Agent (Finance)
|
||||
```
|
||||
|
||||
**Content Classification** - Classify and route user-generated content
|
||||
|
||||
```
|
||||
Input (Feedback) → Router → Workflow (Product) or Workflow (Technical)
|
||||
Input (Feedback) → Router
|
||||
├── [Product Feedback] → Workflow (Product Team)
|
||||
└── [Bug Report] → Workflow (Technical Team)
|
||||
```
|
||||
|
||||
**Lead Qualification** - Route leads based on qualification criteria
|
||||
|
||||
```
|
||||
Input (Lead) → Router → Agent (Enterprise Sales) or Workflow (Self-serve)
|
||||
Input (Lead) → Router
|
||||
├── [Enterprise] → Agent (Enterprise Sales)
|
||||
└── [Self-serve] → Workflow (Automated Onboarding)
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
When the Router cannot determine an appropriate route for the given context, it will route to the **error path** instead of arbitrarily selecting a route. This happens when:
|
||||
|
||||
- The context doesn't clearly match any of the defined route descriptions
|
||||
- The AI determines that none of the available routes are appropriate
|
||||
|
||||
## Best Practices
|
||||
|
||||
- **Provide clear target descriptions**: Help the Router understand when to select each destination with specific, detailed descriptions
|
||||
- **Use specific routing criteria**: Define clear conditions and examples for each path to improve accuracy
|
||||
- **Implement fallback paths**: Connect a default destination for when no specific path is appropriate
|
||||
- **Test with diverse inputs**: Ensure the Router handles various input types, edge cases, and unexpected content
|
||||
- **Monitor routing performance**: Review routing decisions regularly and refine criteria based on actual usage patterns
|
||||
- **Choose appropriate models**: Use models with strong reasoning capabilities for complex routing decisions
|
||||
- **Write clear route descriptions**: Each route description should clearly explain when that route should be selected. Be specific about the criteria.
|
||||
- **Make routes mutually exclusive**: When possible, ensure route descriptions don't overlap to prevent ambiguous routing decisions.
|
||||
- **Connect an error path**: Handle cases where no route matches by connecting an error handler for graceful fallback behavior.
|
||||
- **Use descriptive route titles**: Route titles appear in the workflow canvas, so make them meaningful for readability.
|
||||
- **Test with diverse inputs**: Ensure the Router handles various input types, edge cases, and unexpected content.
|
||||
- **Monitor routing performance**: Review routing decisions regularly and refine route descriptions based on actual usage patterns.
|
||||
- **Choose appropriate models**: Use models with strong reasoning capabilities for complex routing decisions.
|
||||
|
||||
110
apps/docs/content/docs/en/enterprise/index.mdx
Normal file
110
apps/docs/content/docs/en/enterprise/index.mdx
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
title: Enterprise
|
||||
description: Enterprise features for business organizations
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Sim Enterprise provides advanced features for organizations with enhanced security, compliance, and management requirements.
|
||||
|
||||
---
|
||||
|
||||
## Access Control
|
||||
|
||||
Define permission groups to control what features and integrations team members can use.
|
||||
|
||||
### Features
|
||||
|
||||
- **Allowed Model Providers** - Restrict which AI providers users can access (OpenAI, Anthropic, Google, etc.)
|
||||
- **Allowed Blocks** - Control which workflow blocks are available
|
||||
- **Platform Settings** - Hide Knowledge Base, disable MCP tools, disable custom tools, or disable invitations
|
||||
|
||||
### Setup
|
||||
|
||||
1. Navigate to **Settings** → **Access Control** in your workspace
|
||||
2. Create a permission group with your desired restrictions
|
||||
3. Add team members to the permission group
|
||||
|
||||
<Callout type="info">
|
||||
Users not assigned to any permission group have full access. Permission restrictions are enforced at both UI and execution time.
|
||||
</Callout>
|
||||
|
||||
---
|
||||
|
||||
## Single Sign-On (SSO)
|
||||
|
||||
Enterprise authentication with SAML 2.0 and OIDC support for centralized identity management.
|
||||
|
||||
### Supported Providers
|
||||
|
||||
- Okta
|
||||
- Azure AD / Entra ID
|
||||
- Google Workspace
|
||||
- OneLogin
|
||||
- Any SAML 2.0 or OIDC provider
|
||||
|
||||
### Setup
|
||||
|
||||
1. Navigate to **Settings** → **SSO** in your workspace
|
||||
2. Choose your identity provider
|
||||
3. Configure the connection using your IdP's metadata
|
||||
4. Enable SSO for your organization
|
||||
|
||||
<Callout type="info">
|
||||
Once SSO is enabled, team members authenticate through your identity provider instead of email/password.
|
||||
</Callout>
|
||||
|
||||
---
|
||||
|
||||
## Self-Hosted Configuration
|
||||
|
||||
For self-hosted deployments, enterprise features can be enabled via environment variables without requiring billing.
|
||||
|
||||
### Environment Variables
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `ORGANIZATIONS_ENABLED`, `NEXT_PUBLIC_ORGANIZATIONS_ENABLED` | Enable team/organization management |
|
||||
| `ACCESS_CONTROL_ENABLED`, `NEXT_PUBLIC_ACCESS_CONTROL_ENABLED` | Permission groups for access restrictions |
|
||||
| `SSO_ENABLED`, `NEXT_PUBLIC_SSO_ENABLED` | Single Sign-On with SAML/OIDC |
|
||||
| `CREDENTIAL_SETS_ENABLED`, `NEXT_PUBLIC_CREDENTIAL_SETS_ENABLED` | Polling Groups for email triggers |
|
||||
| `DISABLE_INVITATIONS`, `NEXT_PUBLIC_DISABLE_INVITATIONS` | Globally disable workspace/organization invitations |
|
||||
|
||||
### Organization Management
|
||||
|
||||
When billing is disabled, use the Admin API to manage organizations:
|
||||
|
||||
```bash
|
||||
# Create an organization
|
||||
curl -X POST https://your-instance/api/v1/admin/organizations \
|
||||
-H "x-admin-key: YOUR_ADMIN_API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"name": "My Organization", "ownerId": "user-id-here"}'
|
||||
|
||||
# Add a member
|
||||
curl -X POST https://your-instance/api/v1/admin/organizations/{orgId}/members \
|
||||
-H "x-admin-key: YOUR_ADMIN_API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"userId": "user-id-here", "role": "admin"}'
|
||||
```
|
||||
|
||||
### Workspace Members
|
||||
|
||||
When invitations are disabled, use the Admin API to manage workspace memberships directly:
|
||||
|
||||
```bash
|
||||
# Add a user to a workspace
|
||||
curl -X POST https://your-instance/api/v1/admin/workspaces/{workspaceId}/members \
|
||||
-H "x-admin-key: YOUR_ADMIN_API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"userId": "user-id-here", "permissions": "write"}'
|
||||
|
||||
# Remove a user from a workspace
|
||||
curl -X DELETE "https://your-instance/api/v1/admin/workspaces/{workspaceId}/members?userId=user-id-here" \
|
||||
-H "x-admin-key: YOUR_ADMIN_API_KEY"
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
- Enabling `ACCESS_CONTROL_ENABLED` automatically enables organizations, as access control requires organization membership.
|
||||
- When `DISABLE_INVITATIONS` is set, users cannot send invitations. Use the Admin API to manage workspace and organization memberships instead.
|
||||
@@ -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:
|
||||
|
||||
<Tabs items={['Hosted Models', 'Bring Your Own API Key']}>
|
||||
<Tab>
|
||||
**Hosted Models** - Sim provides API keys with a 2x pricing multiplier:
|
||||
**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 | $2.50 / $20.00 |
|
||||
| GPT-5 | $1.25 / $10.00 | $2.50 / $20.00 |
|
||||
| GPT-5 Mini | $0.25 / $2.00 | $0.50 / $4.00 |
|
||||
| GPT-5 Nano | $0.05 / $0.40 | $0.10 / $0.80 |
|
||||
| GPT-4o | $2.50 / $10.00 | $5.00 / $20.00 |
|
||||
| GPT-4.1 | $2.00 / $8.00 | $4.00 / $16.00 |
|
||||
| GPT-4.1 Mini | $0.40 / $1.60 | $0.80 / $3.20 |
|
||||
| GPT-4.1 Nano | $0.10 / $0.40 | $0.20 / $0.80 |
|
||||
| o1 | $15.00 / $60.00 | $30.00 / $120.00 |
|
||||
| o3 | $2.00 / $8.00 | $4.00 / $16.00 |
|
||||
| o4 Mini | $1.10 / $4.40 | $2.20 / $8.80 |
|
||||
| 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 | $10.00 / $50.00 |
|
||||
| Claude Opus 4.1 | $15.00 / $75.00 | $30.00 / $150.00 |
|
||||
| Claude Sonnet 4.5 | $3.00 / $15.00 | $6.00 / $30.00 |
|
||||
| Claude Sonnet 4.0 | $3.00 / $15.00 | $6.00 / $30.00 |
|
||||
| Claude Haiku 4.5 | $1.00 / $5.00 | $2.00 / $10.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 | $4.00 / $24.00 |
|
||||
| Gemini 2.5 Pro | $1.25 / $10.00 | $2.50 / $20.00 |
|
||||
| Gemini 2.5 Flash | $0.30 / $2.50 | $0.60 / $5.00 |
|
||||
| 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 2x multiplier covers infrastructure and API management costs.*
|
||||
*The 1.1x multiplier covers infrastructure and API management costs.*
|
||||
</Tab>
|
||||
|
||||
<Tab>
|
||||
@@ -106,7 +106,28 @@ The model breakdown shows:
|
||||
|
||||
## Bring Your Own Key (BYOK)
|
||||
|
||||
You can use your own API keys for hosted models (OpenAI, Anthropic, Google, Mistral) in **Settings → BYOK** to pay base prices. Keys are encrypted and apply workspace-wide.
|
||||
Use your own API keys for AI model providers instead of Sim's hosted keys to pay base prices with no markup.
|
||||
|
||||
### Supported Providers
|
||||
|
||||
| Provider | Usage |
|
||||
|----------|-------|
|
||||
| OpenAI | Knowledge Base embeddings, Agent block |
|
||||
| Anthropic | Agent block |
|
||||
| Google | Agent block |
|
||||
| Mistral | Knowledge Base OCR |
|
||||
|
||||
### Setup
|
||||
|
||||
1. Navigate to **Settings** → **BYOK** in your workspace
|
||||
2. Click **Add Key** for your provider
|
||||
3. Enter your API key and save
|
||||
|
||||
<Callout type="info">
|
||||
BYOK keys are encrypted at rest. Only workspace admins can manage keys.
|
||||
</Callout>
|
||||
|
||||
When configured, workflows use your key instead of Sim's hosted keys. If removed, workflows automatically fall back to hosted keys with the multiplier.
|
||||
|
||||
## Cost Optimization Strategies
|
||||
|
||||
|
||||
136
apps/docs/content/docs/en/execution/form.mdx
Normal file
136
apps/docs/content/docs/en/execution/form.mdx
Normal file
@@ -0,0 +1,136 @@
|
||||
---
|
||||
title: Form Deployment
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
|
||||
Deploy your workflow as an embeddable form that users can fill out on your website or share via link. Form submissions trigger your workflow with the `form` trigger type.
|
||||
|
||||
## Overview
|
||||
|
||||
Form deployment turns your workflow's Input Format into a responsive form that can be:
|
||||
- Shared via a direct link (e.g., `https://sim.ai/form/my-survey`)
|
||||
- Embedded in any website using an iframe
|
||||
|
||||
When a user submits the form, it triggers your workflow with the form data.
|
||||
|
||||
<Callout type="info">
|
||||
Forms derive their fields from your workflow's Start block Input Format. Each field becomes a form input with the appropriate type.
|
||||
</Callout>
|
||||
|
||||
## Creating a Form
|
||||
|
||||
1. Open your workflow and click **Deploy**
|
||||
2. Select the **Form** tab
|
||||
3. Configure:
|
||||
- **URL**: Unique identifier (e.g., `contact-form` → `sim.ai/form/contact-form`)
|
||||
- **Title**: Form heading
|
||||
- **Description**: Optional subtitle
|
||||
- **Form Fields**: Customize labels and descriptions for each field
|
||||
- **Authentication**: Public, password-protected, or email whitelist
|
||||
- **Thank You Message**: Shown after submission
|
||||
4. Click **Launch**
|
||||
|
||||
## Field Type Mapping
|
||||
|
||||
| Input Format Type | Form Field |
|
||||
|------------------|------------|
|
||||
| `string` | Text input |
|
||||
| `number` | Number input |
|
||||
| `boolean` | Toggle switch |
|
||||
| `object` | JSON editor |
|
||||
| `array` | JSON array editor |
|
||||
| `files` | File upload |
|
||||
|
||||
## Access Control
|
||||
|
||||
| Mode | Description |
|
||||
|------|-------------|
|
||||
| **Public** | Anyone with the link can submit |
|
||||
| **Password** | Users must enter a password |
|
||||
| **Email Whitelist** | Only specified emails/domains can submit |
|
||||
|
||||
For email whitelist:
|
||||
- Exact: `user@example.com`
|
||||
- Domain: `@example.com` (all emails from domain)
|
||||
|
||||
## Embedding
|
||||
|
||||
### Direct Link
|
||||
|
||||
```
|
||||
https://sim.ai/form/your-identifier
|
||||
```
|
||||
|
||||
### Iframe
|
||||
|
||||
```html
|
||||
<iframe
|
||||
src="https://sim.ai/form/your-identifier"
|
||||
width="100%"
|
||||
height="600"
|
||||
frameborder="0"
|
||||
title="Form"
|
||||
></iframe>
|
||||
```
|
||||
|
||||
## API Submission
|
||||
|
||||
Submit forms programmatically:
|
||||
|
||||
<Tabs items={['cURL', 'TypeScript']}>
|
||||
<Tab value="cURL">
|
||||
```bash
|
||||
curl -X POST https://sim.ai/api/form/your-identifier \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"formData": {
|
||||
"name": "John Doe",
|
||||
"email": "john@example.com"
|
||||
}
|
||||
}'
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
const response = await fetch('https://sim.ai/api/form/your-identifier', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
formData: {
|
||||
name: 'John Doe',
|
||||
email: 'john@example.com'
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
// { success: true, data: { executionId: '...' } }
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Protected Forms
|
||||
|
||||
For password-protected forms:
|
||||
```bash
|
||||
curl -X POST https://sim.ai/api/form/your-identifier \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{ "password": "secret", "formData": { "name": "John" } }'
|
||||
```
|
||||
|
||||
For email-protected forms:
|
||||
```bash
|
||||
curl -X POST https://sim.ai/api/form/your-identifier \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{ "email": "allowed@example.com", "formData": { "name": "John" } }'
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**"No input fields configured"** - Add Input Format fields to your Start block.
|
||||
|
||||
**Form not loading in iframe** - Check your site's CSP allows iframes from `sim.ai`.
|
||||
|
||||
**Submissions failing** - Verify the identifier is correct and required fields are filled.
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"pages": ["index", "basics", "api", "logging", "costs"]
|
||||
"pages": ["index", "basics", "api", "form", "logging", "costs"]
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"permissions",
|
||||
"sdks",
|
||||
"self-hosting",
|
||||
"./enterprise/index",
|
||||
"./keyboard-shortcuts/index"
|
||||
],
|
||||
"defaultOpen": false
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Docker
|
||||
description: Deploy Sim Studio with Docker Compose
|
||||
description: Deploy Sim with Docker Compose
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Environment Variables
|
||||
description: Configuration reference for Sim Studio
|
||||
description: Configuration reference for Sim
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
---
|
||||
title: Self-Hosting
|
||||
description: Deploy Sim Studio on your own infrastructure
|
||||
description: Deploy Sim on your own infrastructure
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Deploy Sim Studio on your own infrastructure with Docker or Kubernetes.
|
||||
Deploy Sim on your own infrastructure with Docker or Kubernetes.
|
||||
|
||||
<div className="flex gap-2 my-4">
|
||||
<a href="https://cursor.com/link/prompt?text=Help%20me%20set%20up%20Sim%20locally.%20Follow%20these%20steps%3A%0A%0A1.%20First%2C%20verify%20Docker%20is%20installed%20and%20running%3A%0A%20%20%20docker%20--version%0A%20%20%20docker%20info%0A%0A2.%20Clone%20the%20repository%3A%0A%20%20%20git%20clone%20https%3A%2F%2Fgithub.com%2Fsimstudioai%2Fsim.git%0A%20%20%20cd%20sim%0A%0A3.%20Start%20the%20services%20with%20Docker%20Compose%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20up%20-d%0A%0A4.%20Wait%20for%20all%20containers%20to%20be%20healthy%20(this%20may%20take%201-2%20minutes)%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20ps%0A%0A5.%20Verify%20the%20app%20is%20accessible%20at%20http%3A%2F%2Flocalhost%3A3000%0A%0AIf%20there%20are%20any%20errors%2C%20help%20me%20troubleshoot%20them.%20Common%20issues%3A%0A-%20Port%203000%2C%203002%2C%20or%205432%20already%20in%20use%0A-%20Docker%20not%20running%0A-%20Insufficient%20memory%20(needs%2012GB%2B%20RAM)%0A%0AFor%20local%20AI%20models%20with%20Ollama%2C%20use%20this%20instead%20of%20step%203%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.ollama.yml%20--profile%20setup%20up%20-d">
|
||||
<img src="https://img.shields.io/badge/Set%20Up%20with-Cursor-000000?logo=cursor&logoColor=white" alt="Set Up with Cursor" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -48,3 +54,4 @@ Open [http://localhost:3000](http://localhost:3000)
|
||||
| realtime | 3002 | WebSocket server |
|
||||
| db | 5432 | PostgreSQL with pgvector |
|
||||
| migrations | - | Database migrations (runs once) |
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: Deploy Sim Studio with Helm
|
||||
description: Deploy Sim with Helm
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Cloud Platforms
|
||||
description: Deploy Sim Studio on cloud platforms
|
||||
description: Deploy Sim on cloud platforms
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
@@ -57,7 +57,7 @@ sudo usermod -aG docker $USER
|
||||
docker --version
|
||||
```
|
||||
|
||||
### Deploy Sim Studio
|
||||
### Deploy Sim
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
212
apps/docs/content/docs/en/tools/a2a.mdx
Normal file
212
apps/docs/content/docs/en/tools/a2a.mdx
Normal file
@@ -0,0 +1,212 @@
|
||||
---
|
||||
title: A2A
|
||||
description: Interact with external A2A-compatible agents
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="a2a"
|
||||
color="#4151B5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
The A2A (Agent-to-Agent) protocol enables Sim to interact with external AI agents and systems that implement A2A-compatible APIs. With A2A, you can connect Sim’s automations and workflows to remote agents—such as LLM-powered bots, microservices, and other AI-based tools—using a standardized messaging format.
|
||||
|
||||
Using the A2A tools in Sim, you can:
|
||||
|
||||
- **Send Messages to External Agents**: Communicate directly with remote agents, providing prompts, commands, or data.
|
||||
- **Receive and Stream Responses**: Get structured responses, artifacts, or real-time updates from the agent as the task progresses.
|
||||
- **Continue Conversations or Tasks**: Carry on multi-turn conversations or workflows by referencing task and context IDs.
|
||||
- **Integrate Third-Party AI and Automation**: Leverage external A2A-compatible services as part of your Sim workflows.
|
||||
|
||||
These features allow you to build advanced workflows that combine Sim’s native capabilities with the intelligence and automation of external AIs or custom agents. To use A2A integrations, you’ll need the external agent’s endpoint URL and, if required, an API key or credentials.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Use the A2A (Agent-to-Agent) protocol to interact with external AI agents.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `a2a_send_message`
|
||||
|
||||
Send a message to an external A2A-compatible agent.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `agentUrl` | string | Yes | The A2A agent endpoint URL |
|
||||
| `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
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | The text response from the agent |
|
||||
| `taskId` | string | Task ID for follow-up interactions |
|
||||
| `contextId` | string | Context ID for conversation continuity |
|
||||
| `state` | string | Task state |
|
||||
| `artifacts` | array | Structured output artifacts |
|
||||
| `history` | array | Full message history |
|
||||
|
||||
### `a2a_get_task`
|
||||
|
||||
Query the status of an existing A2A task.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `agentUrl` | string | Yes | The A2A agent endpoint URL |
|
||||
| `taskId` | string | Yes | Task ID to query |
|
||||
| `apiKey` | string | No | API key for authentication |
|
||||
| `historyLength` | number | No | Number of history messages to include |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `taskId` | string | Task ID |
|
||||
| `contextId` | string | Context ID |
|
||||
| `state` | string | Task state |
|
||||
| `artifacts` | array | Output artifacts |
|
||||
| `history` | array | Message history |
|
||||
|
||||
### `a2a_cancel_task`
|
||||
|
||||
Cancel a running A2A task.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `agentUrl` | string | Yes | The A2A agent endpoint URL |
|
||||
| `taskId` | string | Yes | Task ID to cancel |
|
||||
| `apiKey` | string | No | API key for authentication |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `cancelled` | boolean | Whether cancellation was successful |
|
||||
| `state` | string | Task state after cancellation |
|
||||
|
||||
### `a2a_get_agent_card`
|
||||
|
||||
Fetch the Agent Card (discovery document) for an A2A agent.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `agentUrl` | string | Yes | The A2A agent endpoint URL |
|
||||
| `apiKey` | string | No | API key for authentication \(if required\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `name` | string | Agent name |
|
||||
| `description` | string | Agent description |
|
||||
| `url` | string | Agent endpoint URL |
|
||||
| `version` | string | Agent version |
|
||||
| `capabilities` | object | Agent capabilities \(streaming, pushNotifications, etc.\) |
|
||||
| `skills` | array | Skills the agent can perform |
|
||||
| `defaultInputModes` | array | Default input modes \(text, file, data\) |
|
||||
| `defaultOutputModes` | array | Default output modes \(text, file, data\) |
|
||||
|
||||
### `a2a_resubscribe`
|
||||
|
||||
Reconnect to an ongoing A2A task stream after connection interruption.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `agentUrl` | string | Yes | The A2A agent endpoint URL |
|
||||
| `taskId` | string | Yes | Task ID to resubscribe to |
|
||||
| `apiKey` | string | No | API key for authentication |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `taskId` | string | Task ID |
|
||||
| `contextId` | string | Context ID |
|
||||
| `state` | string | Current task state |
|
||||
| `isRunning` | boolean | Whether the task is still running |
|
||||
| `artifacts` | array | Output artifacts |
|
||||
| `history` | array | Message history |
|
||||
|
||||
### `a2a_set_push_notification`
|
||||
|
||||
Configure a webhook to receive task update notifications.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `agentUrl` | string | Yes | The A2A agent endpoint URL |
|
||||
| `taskId` | string | Yes | Task ID to configure notifications for |
|
||||
| `webhookUrl` | string | Yes | HTTPS webhook URL to receive notifications |
|
||||
| `token` | string | No | Token for webhook validation |
|
||||
| `apiKey` | string | No | API key for authentication |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `url` | string | Configured webhook URL |
|
||||
| `token` | string | Token for webhook validation |
|
||||
| `success` | boolean | Whether configuration was successful |
|
||||
|
||||
### `a2a_get_push_notification`
|
||||
|
||||
Get the push notification webhook configuration for a task.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `agentUrl` | string | Yes | The A2A agent endpoint URL |
|
||||
| `taskId` | string | Yes | Task ID to get notification config for |
|
||||
| `apiKey` | string | No | API key for authentication |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `url` | string | Configured webhook URL |
|
||||
| `token` | string | Token for webhook validation |
|
||||
| `exists` | boolean | Whether a push notification config exists |
|
||||
|
||||
### `a2a_delete_push_notification`
|
||||
|
||||
Delete the push notification webhook configuration for a task.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `agentUrl` | string | Yes | The A2A agent endpoint URL |
|
||||
| `taskId` | string | Yes | Task ID to delete notification config for |
|
||||
| `pushNotificationConfigId` | string | No | Push notification configuration ID to delete \(optional - server can derive from taskId\) |
|
||||
| `apiKey` | string | No | API key for authentication |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether deletion was successful |
|
||||
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `ahrefs`
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `airtable`
|
||||
|
||||
@@ -86,8 +86,3 @@ Run an APIFY actor asynchronously with polling for long-running tasks
|
||||
| `items` | array | Dataset items \(if completed\) |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `apify`
|
||||
|
||||
@@ -61,7 +61,9 @@ Search Apollo
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `people` | json | Array of people matching the search criteria |
|
||||
| `metadata` | json | Pagination information including page, per_page, and total_entries |
|
||||
| `page` | number | Current page number |
|
||||
| `per_page` | number | Results per page |
|
||||
| `total_entries` | number | Total matching entries |
|
||||
|
||||
### `apollo_people_enrich`
|
||||
|
||||
@@ -86,7 +88,7 @@ Enrich data for a single person using Apollo
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `person` | json | Enriched person data from Apollo |
|
||||
| `metadata` | json | Enrichment metadata including enriched status |
|
||||
| `enriched` | boolean | Whether the person was successfully enriched |
|
||||
|
||||
### `apollo_people_bulk_enrich`
|
||||
|
||||
@@ -106,7 +108,8 @@ Enrich data for up to 10 people at once using Apollo
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `people` | json | Array of enriched people data |
|
||||
| `metadata` | json | Bulk enrichment metadata including total and enriched counts |
|
||||
| `total` | number | Total number of people processed |
|
||||
| `enriched` | number | Number of people successfully enriched |
|
||||
|
||||
### `apollo_organization_search`
|
||||
|
||||
@@ -129,7 +132,9 @@ Search Apollo
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `organizations` | json | Array of organizations matching the search criteria |
|
||||
| `metadata` | json | Pagination information including page, per_page, and total_entries |
|
||||
| `page` | number | Current page number |
|
||||
| `per_page` | number | Results per page |
|
||||
| `total_entries` | number | Total matching entries |
|
||||
|
||||
### `apollo_organization_enrich`
|
||||
|
||||
@@ -148,7 +153,7 @@ Enrich data for a single organization using Apollo
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `organization` | json | Enriched organization data from Apollo |
|
||||
| `metadata` | json | Enrichment metadata including enriched status |
|
||||
| `enriched` | boolean | Whether the organization was successfully enriched |
|
||||
|
||||
### `apollo_organization_bulk_enrich`
|
||||
|
||||
@@ -166,7 +171,8 @@ Enrich data for up to 10 organizations at once using Apollo
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `organizations` | json | Array of enriched organization data |
|
||||
| `metadata` | json | Bulk enrichment metadata including total and enriched counts |
|
||||
| `total` | number | Total number of organizations processed |
|
||||
| `enriched` | number | Number of organizations successfully enriched |
|
||||
|
||||
### `apollo_contact_create`
|
||||
|
||||
@@ -189,7 +195,7 @@ Create a new contact in your Apollo database
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | json | Created contact data from Apollo |
|
||||
| `metadata` | json | Creation metadata including created status |
|
||||
| `created` | boolean | Whether the contact was successfully created |
|
||||
|
||||
### `apollo_contact_update`
|
||||
|
||||
@@ -213,7 +219,7 @@ Update an existing contact in your Apollo database
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | json | Updated contact data from Apollo |
|
||||
| `metadata` | json | Update metadata including updated status |
|
||||
| `updated` | boolean | Whether the contact was successfully updated |
|
||||
|
||||
### `apollo_contact_search`
|
||||
|
||||
@@ -234,7 +240,7 @@ Search your team
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | json | Array of contacts matching the search criteria |
|
||||
| `metadata` | json | Pagination information including page, per_page, and total_entries |
|
||||
| `pagination` | json | Pagination information |
|
||||
|
||||
### `apollo_contact_bulk_create`
|
||||
|
||||
@@ -254,7 +260,9 @@ Create up to 100 contacts at once in your Apollo database. Supports deduplicatio
|
||||
| --------- | ---- | ----------- |
|
||||
| `created_contacts` | json | Array of newly created contacts |
|
||||
| `existing_contacts` | json | Array of existing contacts \(when deduplication is enabled\) |
|
||||
| `metadata` | json | Bulk creation metadata including counts of created and existing contacts |
|
||||
| `total_submitted` | number | Total number of contacts submitted |
|
||||
| `created` | number | Number of contacts successfully created |
|
||||
| `existing` | number | Number of existing contacts found |
|
||||
|
||||
### `apollo_contact_bulk_update`
|
||||
|
||||
@@ -273,7 +281,9 @@ Update up to 100 existing contacts at once in your Apollo database. Each contact
|
||||
| --------- | ---- | ----------- |
|
||||
| `updated_contacts` | json | Array of successfully updated contacts |
|
||||
| `failed_contacts` | json | Array of contacts that failed to update |
|
||||
| `metadata` | json | Bulk update metadata including counts of updated and failed contacts |
|
||||
| `total_submitted` | number | Total number of contacts submitted |
|
||||
| `updated` | number | Number of contacts successfully updated |
|
||||
| `failed` | number | Number of contacts that failed to update |
|
||||
|
||||
### `apollo_account_create`
|
||||
|
||||
@@ -294,7 +304,7 @@ Create a new account (company) in your Apollo database
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `account` | json | Created account data from Apollo |
|
||||
| `metadata` | json | Creation metadata including created status |
|
||||
| `created` | boolean | Whether the account was successfully created |
|
||||
|
||||
### `apollo_account_update`
|
||||
|
||||
@@ -316,7 +326,7 @@ Update an existing account in your Apollo database
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `account` | json | Updated account data from Apollo |
|
||||
| `metadata` | json | Update metadata including updated status |
|
||||
| `updated` | boolean | Whether the account was successfully updated |
|
||||
|
||||
### `apollo_account_search`
|
||||
|
||||
@@ -338,7 +348,7 @@ Search your team
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `accounts` | json | Array of accounts matching the search criteria |
|
||||
| `metadata` | json | Pagination information including page, per_page, and total_entries |
|
||||
| `pagination` | json | Pagination information |
|
||||
|
||||
### `apollo_account_bulk_create`
|
||||
|
||||
@@ -357,7 +367,9 @@ Create up to 100 accounts at once in your Apollo database. Note: Apollo does not
|
||||
| --------- | ---- | ----------- |
|
||||
| `created_accounts` | json | Array of newly created accounts |
|
||||
| `failed_accounts` | json | Array of accounts that failed to create |
|
||||
| `metadata` | json | Bulk creation metadata including counts of created and failed accounts |
|
||||
| `total_submitted` | number | Total number of accounts submitted |
|
||||
| `created` | number | Number of accounts successfully created |
|
||||
| `failed` | number | Number of accounts that failed to create |
|
||||
|
||||
### `apollo_account_bulk_update`
|
||||
|
||||
@@ -376,7 +388,9 @@ Update up to 1000 existing accounts at once in your Apollo database (higher limi
|
||||
| --------- | ---- | ----------- |
|
||||
| `updated_accounts` | json | Array of successfully updated accounts |
|
||||
| `failed_accounts` | json | Array of accounts that failed to update |
|
||||
| `metadata` | json | Bulk update metadata including counts of updated and failed accounts |
|
||||
| `total_submitted` | number | Total number of accounts submitted |
|
||||
| `updated` | number | Number of accounts successfully updated |
|
||||
| `failed` | number | Number of accounts that failed to update |
|
||||
|
||||
### `apollo_opportunity_create`
|
||||
|
||||
@@ -400,7 +414,7 @@ Create a new deal for an account in your Apollo database (master key required)
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `opportunity` | json | Created opportunity data from Apollo |
|
||||
| `metadata` | json | Creation metadata including created status |
|
||||
| `created` | boolean | Whether the opportunity was successfully created |
|
||||
|
||||
### `apollo_opportunity_search`
|
||||
|
||||
@@ -423,7 +437,9 @@ Search and list all deals/opportunities in your team
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `opportunities` | json | Array of opportunities matching the search criteria |
|
||||
| `metadata` | json | Pagination information including page, per_page, and total_entries |
|
||||
| `page` | number | Current page number |
|
||||
| `per_page` | number | Results per page |
|
||||
| `total_entries` | number | Total matching entries |
|
||||
|
||||
### `apollo_opportunity_get`
|
||||
|
||||
@@ -441,7 +457,7 @@ Retrieve complete details of a specific deal/opportunity by ID
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `opportunity` | json | Complete opportunity data from Apollo |
|
||||
| `metadata` | json | Retrieval metadata including found status |
|
||||
| `found` | boolean | Whether the opportunity was found |
|
||||
|
||||
### `apollo_opportunity_update`
|
||||
|
||||
@@ -465,7 +481,7 @@ Update an existing deal/opportunity in your Apollo database
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `opportunity` | json | Updated opportunity data from Apollo |
|
||||
| `metadata` | json | Update metadata including updated status |
|
||||
| `updated` | boolean | Whether the opportunity was successfully updated |
|
||||
|
||||
### `apollo_sequence_search`
|
||||
|
||||
@@ -486,7 +502,9 @@ Search for sequences/campaigns in your team
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sequences` | json | Array of sequences/campaigns matching the search criteria |
|
||||
| `metadata` | json | Pagination information including page, per_page, and total_entries |
|
||||
| `page` | number | Current page number |
|
||||
| `per_page` | number | Results per page |
|
||||
| `total_entries` | number | Total matching entries |
|
||||
|
||||
### `apollo_sequence_add_contacts`
|
||||
|
||||
@@ -507,7 +525,8 @@ Add contacts to an Apollo sequence
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts_added` | json | Array of contact IDs added to the sequence |
|
||||
| `metadata` | json | Sequence metadata including sequence_id and total_added count |
|
||||
| `sequence_id` | string | ID of the sequence contacts were added to |
|
||||
| `total_added` | number | Total number of contacts added |
|
||||
|
||||
### `apollo_task_create`
|
||||
|
||||
@@ -530,7 +549,7 @@ Create a new task in Apollo
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `task` | json | Created task data from Apollo |
|
||||
| `metadata` | json | Creation metadata including created status |
|
||||
| `created` | boolean | Whether the task was successfully created |
|
||||
|
||||
### `apollo_task_search`
|
||||
|
||||
@@ -552,7 +571,7 @@ Search for tasks in Apollo
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `tasks` | json | Array of tasks matching the search criteria |
|
||||
| `metadata` | json | Pagination information including page, per_page, and total_entries |
|
||||
| `pagination` | json | Pagination information |
|
||||
|
||||
### `apollo_email_accounts`
|
||||
|
||||
@@ -569,11 +588,6 @@ Get list of team
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `email_accounts` | json | Array of team email accounts linked in Apollo |
|
||||
| `metadata` | json | Metadata including total count of email accounts |
|
||||
| `total` | number | Total count of email accounts |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `apollo`
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `arxiv`
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `asana`
|
||||
|
||||
@@ -58,8 +58,3 @@ Runs a browser automation task using BrowserUse
|
||||
| `steps` | json | Execution steps taken |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `browser_use`
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `calendly`
|
||||
|
||||
@@ -57,8 +57,3 @@ Receive meeting notes, action items, transcripts, and recordings when meetings a
|
||||
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `triggers`
|
||||
- Type: `circleback`
|
||||
|
||||
@@ -61,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `clay`
|
||||
|
||||
@@ -354,8 +354,3 @@ List all Confluence spaces accessible to the user.
|
||||
| `spaces` | array | List of spaces |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `confluence`
|
||||
|
||||
@@ -1,49 +1,22 @@
|
||||
---
|
||||
title: Cursor
|
||||
description: Launch and manage Cursor cloud agents to work on GitHub repositories
|
||||
description: Agent identifier
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="cursor"
|
||||
color="#1E1E1E"
|
||||
type="cursor_v2"
|
||||
color="#F5F5F5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Cursor](https://www.cursor.so/) is an AI IDE and cloud-based platform that lets you launch and manage powerful AI agents able to work directly on your GitHub repositories. Cursor agents can automate development tasks, enhance your team's productivity, and collaborate with you by making code changes, responding to natural language instructions, and maintaining conversation history about their activities.
|
||||
|
||||
With Cursor, you can:
|
||||
|
||||
- **Launch cloud agents for codebases**: Instantly create new AI agents that work on your repositories in the cloud
|
||||
- **Delegate coding tasks using natural language**: Guide agents with written instructions, amendments, and clarifications
|
||||
- **Monitor progress and outputs**: Retrieve agent status, view detailed results, and inspect current or completed tasks
|
||||
- **Access full conversation history**: Review all prompts and AI responses for transparency and auditability
|
||||
- **Control and manage agent lifecycle**: List active agents, terminate agents, and manage API-based agent launches and follow-ups
|
||||
|
||||
In Sim, the Cursor integration enables your agents and workflows to interact programmatically with Cursor cloud agents. This means you can use Sim to:
|
||||
|
||||
- List all cloud agents and browse their current state (`cursor_list_agents`)
|
||||
- Retrieve up-to-date status and outputs for any agent (`cursor_get_agent`)
|
||||
- View the full conversation history for any coding agent (`cursor_get_conversation`)
|
||||
- Add follow-up instructions or new prompts to a running agent
|
||||
- Manage and terminate agents as needed
|
||||
|
||||
This integration helps you combine the flexible intelligence of Sim agents with the powerful development automation capabilities of Cursor, making it possible to scale AI-driven development across your projects.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Interact with Cursor Cloud Agents API to launch AI agents that can work on your GitHub repositories. Supports launching agents, adding follow-up instructions, checking status, viewing conversations, and managing agent lifecycle.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `cursor_list_agents`
|
||||
|
||||
List all cloud agents for the authenticated user with optional pagination.
|
||||
List all cloud agents for the authenticated user with optional pagination. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -57,12 +30,12 @@ List all cloud agents for the authenticated user with optional pagination.
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Human-readable list of agents |
|
||||
| `metadata` | object | Agent list metadata |
|
||||
| `agents` | array | Array of agent objects |
|
||||
| `nextCursor` | string | Pagination cursor for next page |
|
||||
|
||||
### `cursor_get_agent`
|
||||
|
||||
Retrieve the current status and results of a cloud agent.
|
||||
Retrieve the current status and results of a cloud agent. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -75,12 +48,17 @@ Retrieve the current status and results of a cloud agent.
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Human-readable agent details |
|
||||
| `metadata` | object | Agent metadata |
|
||||
| `id` | string | Agent ID |
|
||||
| `name` | string | Agent name |
|
||||
| `status` | string | Agent status |
|
||||
| `source` | json | Source repository info |
|
||||
| `target` | json | Target branch/PR info |
|
||||
| `summary` | string | Agent summary |
|
||||
| `createdAt` | string | Creation timestamp |
|
||||
|
||||
### `cursor_get_conversation`
|
||||
|
||||
Retrieve the conversation history of a cloud agent, including all user prompts and assistant responses.
|
||||
Retrieve the conversation history of a cloud agent, including all user prompts and assistant responses. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -93,12 +71,12 @@ Retrieve the conversation history of a cloud agent, including all user prompts a
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Human-readable conversation history |
|
||||
| `metadata` | object | Conversation metadata |
|
||||
| `id` | string | Agent ID |
|
||||
| `messages` | array | Array of conversation messages |
|
||||
|
||||
### `cursor_launch_agent`
|
||||
|
||||
Start a new cloud agent to work on a GitHub repository with the given instructions.
|
||||
Start a new cloud agent to work on a GitHub repository with the given instructions. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -119,12 +97,12 @@ Start a new cloud agent to work on a GitHub repository with the given instructio
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message with agent details |
|
||||
| `metadata` | object | Launch result metadata |
|
||||
| `id` | string | Agent ID |
|
||||
| `url` | string | Agent URL |
|
||||
|
||||
### `cursor_add_followup`
|
||||
|
||||
Add a follow-up instruction to an existing cloud agent.
|
||||
Add a follow-up instruction to an existing cloud agent. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -139,12 +117,11 @@ Add a follow-up instruction to an existing cloud agent.
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Result metadata |
|
||||
| `id` | string | Agent ID |
|
||||
|
||||
### `cursor_stop_agent`
|
||||
|
||||
Stop a running cloud agent. This pauses the agent without deleting it.
|
||||
Stop a running cloud agent. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -157,12 +134,11 @@ Stop a running cloud agent. This pauses the agent without deleting it.
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Result metadata |
|
||||
| `id` | string | Agent ID |
|
||||
|
||||
### `cursor_delete_agent`
|
||||
|
||||
Permanently delete a cloud agent. This action cannot be undone.
|
||||
Permanently delete a cloud agent. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -175,12 +151,6 @@ Permanently delete a cloud agent. This action cannot be undone.
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Result metadata |
|
||||
| `id` | string | Agent ID |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `cursor`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -300,8 +360,3 @@ Cancel a scheduled downtime.
|
||||
| `success` | boolean | Whether the downtime was successfully canceled |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `datadog`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -735,8 +875,3 @@ Delete a Discord webhook
|
||||
| `message` | string | Success or error message |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `discord`
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `dropbox`
|
||||
|
||||
@@ -59,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `duckduckgo`
|
||||
|
||||
@@ -37,7 +37,7 @@ This integration empowers Sim agents to automate data management tasks within yo
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Amazon DynamoDB into workflows. Supports Get, Put, Query, Scan, Update, and Delete operations on DynamoDB tables.
|
||||
Integrate Amazon DynamoDB into workflows. Supports Get, Put, Query, Scan, Update, Delete, and Introspect operations on DynamoDB tables.
|
||||
|
||||
|
||||
|
||||
@@ -185,9 +185,25 @@ Delete an item from a DynamoDB table
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Operation status message |
|
||||
|
||||
### `dynamodb_introspect`
|
||||
|
||||
Introspect DynamoDB to list tables or get detailed schema information for a specific table
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `region` | string | Yes | AWS region \(e.g., us-east-1\) |
|
||||
| `accessKeyId` | string | Yes | AWS access key ID |
|
||||
| `secretAccessKey` | string | Yes | AWS secret access key |
|
||||
| `tableName` | string | No | Optional table name to get detailed schema. If not provided, lists all tables. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Operation status message |
|
||||
| `tables` | array | List of table names in the region |
|
||||
| `tableDetails` | object | Detailed schema information for a specific table |
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `dynamodb`
|
||||
|
||||
@@ -362,9 +362,27 @@ Get comprehensive statistics about the Elasticsearch cluster.
|
||||
| `nodes` | object | Node statistics including count and versions |
|
||||
| `indices` | object | Index statistics including document count and store size |
|
||||
|
||||
### `elasticsearch_list_indices`
|
||||
|
||||
List all indices in the Elasticsearch cluster with their health, status, and statistics.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Summary message about the indices |
|
||||
| `indices` | json | Array of index information objects |
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `elasticsearch`
|
||||
|
||||
@@ -54,8 +54,3 @@ Convert TTS using ElevenLabs voices
|
||||
| `audioFile` | file | The generated audio file |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `elevenlabs`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -148,8 +168,3 @@ Perform comprehensive research using AI to generate detailed reports with citati
|
||||
| `research` | array | Comprehensive research findings with citations and summaries |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `exa`
|
||||
|
||||
@@ -52,8 +52,3 @@ Parse one or more uploaded files or files from URLs (text, PDF, CSV, images, etc
|
||||
| `combinedContent` | string | Combined content of all parsed files |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `file`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -176,8 +191,3 @@ Autonomous web data extraction agent. Searches and gathers information based on
|
||||
| `sources` | object | Array of source URLs used by the agent |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `firecrawl`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -231,8 +255,3 @@ List all contacts from your Fireflies.ai meetings
|
||||
| `contacts` | array | List of contacts from meetings |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `fireflies`
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -427,8 +427,3 @@ Cancel a running GitLab pipeline
|
||||
| `pipeline` | object | The cancelled GitLab pipeline |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `gitlab`
|
||||
|
||||
@@ -1,50 +1,22 @@
|
||||
---
|
||||
title: Gmail
|
||||
description: Send, read, search, and move Gmail messages or trigger workflows from Gmail events
|
||||
description: Gmail message ID
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="gmail"
|
||||
color="#E0E0E0"
|
||||
type="gmail_v2"
|
||||
color="#F5F5F5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Gmail](https://gmail.com) is Google's popular email service that provides a robust platform for sending, receiving, and managing email communications. With over 1.8 billion active users worldwide, Gmail offers a feature-rich experience with powerful search capabilities, organizational tools, and integration options.
|
||||
|
||||
With Gmail, you can:
|
||||
|
||||
- **Send and receive emails**: Communicate with contacts through a clean, intuitive interface
|
||||
- **Organize messages**: Use labels, folders, and filters to keep your inbox organized
|
||||
- **Search efficiently**: Find specific messages quickly with Google's powerful search technology
|
||||
- **Automate workflows**: Create filters and rules to automatically process incoming emails
|
||||
- **Access from anywhere**: Use Gmail across devices with synchronized content and settings
|
||||
- **Integrate with other services**: Connect with Google Calendar, Drive, and other productivity tools
|
||||
|
||||
In Sim, the Gmail integration enables your agents to fully manage emails programmatically with comprehensive automation capabilities. This allows for powerful automation scenarios such as sending notifications, processing incoming messages, extracting information from emails, and managing communication workflows at scale. Your agents can:
|
||||
|
||||
- **Compose and send**: Create personalized emails with attachments and send to recipients
|
||||
- **Read and search**: Find specific messages using Gmail's query syntax and extract content
|
||||
- **Organize intelligently**: Mark messages as read/unread, archive or unarchive emails, and manage labels
|
||||
- **Clean up inbox**: Delete messages, move emails between labels, and maintain inbox zero
|
||||
- **Trigger workflows**: Listen for new emails in real-time, enabling responsive workflows that react to incoming messages
|
||||
|
||||
This integration bridges the gap between your AI workflows and email communications, enabling seamless interaction with one of the world's most widely used communication platforms. Whether you're automating customer support responses, processing receipts, managing subscriptions, or coordinating team communications, the Gmail integration provides all the tools you need for comprehensive email automation.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Gmail into the workflow. Can send, read, search, and move emails. Can be used in trigger mode to trigger a workflow when a new email is received.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `gmail_send`
|
||||
|
||||
Send emails using Gmail
|
||||
Send emails using Gmail. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -64,12 +36,13 @@ Send emails using Gmail
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Email metadata |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Email labels |
|
||||
|
||||
### `gmail_draft`
|
||||
|
||||
Draft emails using Gmail
|
||||
Draft emails using Gmail. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -89,12 +62,14 @@ Draft emails using Gmail
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Draft metadata |
|
||||
| `draftId` | string | Draft ID |
|
||||
| `messageId` | string | Gmail message ID for the draft |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Email labels |
|
||||
|
||||
### `gmail_read`
|
||||
|
||||
Read emails from Gmail
|
||||
Read emails from Gmail. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -110,13 +85,22 @@ Read emails from Gmail
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Text content of the email |
|
||||
| `metadata` | json | Metadata of the email |
|
||||
| `attachments` | file[] | Attachments of the email |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Email labels |
|
||||
| `from` | string | Sender email address |
|
||||
| `to` | string | Recipient email address |
|
||||
| `subject` | string | Email subject |
|
||||
| `date` | string | Email date |
|
||||
| `body` | string | Email body text \(best-effort plain text\) |
|
||||
| `hasAttachments` | boolean | Whether the email has attachments |
|
||||
| `attachmentCount` | number | Number of attachments |
|
||||
| `attachments` | file[] | Downloaded attachments \(if enabled\) |
|
||||
| `results` | json | Summary results when reading multiple messages |
|
||||
|
||||
### `gmail_search`
|
||||
|
||||
Search emails in Gmail
|
||||
Search emails in Gmail. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -129,12 +113,11 @@ Search emails in Gmail
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Search results summary |
|
||||
| `metadata` | object | Search metadata |
|
||||
| `results` | json | Array of search results |
|
||||
|
||||
### `gmail_move`
|
||||
|
||||
Move emails between Gmail labels/folders
|
||||
Move emails between labels/folders in Gmail. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -148,12 +131,13 @@ Move emails between Gmail labels/folders
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Email metadata |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Email labels |
|
||||
|
||||
### `gmail_mark_read`
|
||||
|
||||
Mark a Gmail message as read
|
||||
Mark a Gmail message as read. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -165,12 +149,13 @@ Mark a Gmail message as read
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Email metadata |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Updated email labels |
|
||||
|
||||
### `gmail_mark_unread`
|
||||
|
||||
Mark a Gmail message as unread
|
||||
Mark a Gmail message as unread. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -182,12 +167,13 @@ Mark a Gmail message as unread
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Email metadata |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Updated email labels |
|
||||
|
||||
### `gmail_archive`
|
||||
|
||||
Archive a Gmail message (remove from inbox)
|
||||
Archive a Gmail message (remove from inbox). Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -199,12 +185,13 @@ Archive a Gmail message (remove from inbox)
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Email metadata |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Updated email labels |
|
||||
|
||||
### `gmail_unarchive`
|
||||
|
||||
Unarchive a Gmail message (move back to inbox)
|
||||
Unarchive a Gmail message (move back to inbox). Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -216,12 +203,13 @@ Unarchive a Gmail message (move back to inbox)
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Email metadata |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Updated email labels |
|
||||
|
||||
### `gmail_delete`
|
||||
|
||||
Delete a Gmail message (move to trash)
|
||||
Delete a Gmail message (move to trash). Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -233,12 +221,13 @@ Delete a Gmail message (move to trash)
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Email metadata |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Updated email labels |
|
||||
|
||||
### `gmail_add_label`
|
||||
|
||||
Add label(s) to a Gmail message
|
||||
Add label(s) to a Gmail message. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -251,12 +240,13 @@ Add label(s) to a Gmail message
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Email metadata |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Updated email labels |
|
||||
|
||||
### `gmail_remove_label`
|
||||
|
||||
Remove label(s) from a Gmail message
|
||||
Remove label(s) from a Gmail message. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -269,12 +259,8 @@ Remove label(s) from a Gmail message
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Email metadata |
|
||||
| `id` | string | Gmail message ID |
|
||||
| `threadId` | string | Gmail thread ID |
|
||||
| `labelIds` | array | Updated email labels |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `gmail`
|
||||
|
||||
@@ -1,41 +1,22 @@
|
||||
---
|
||||
title: Google Calendar
|
||||
description: Manage Google Calendar events
|
||||
description: Event ID
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_calendar"
|
||||
color="#E0E0E0"
|
||||
type="google_calendar_v2"
|
||||
color="#F5F5F5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Google Calendar](https://calendar.google.com) is Google's powerful calendar and scheduling service that provides a comprehensive platform for managing events, meetings, and appointments. With seamless integration across Google's ecosystem and widespread adoption, Google Calendar offers robust features for both personal and professional scheduling needs.
|
||||
|
||||
With Google Calendar, you can:
|
||||
|
||||
- **Create and manage events**: Schedule meetings, appointments, and reminders with detailed information
|
||||
- **Send calendar invites**: Automatically notify and coordinate with attendees through email invitations
|
||||
- **Natural language event creation**: Quickly add events using conversational language like "Meeting with John tomorrow at 3pm"
|
||||
- **View and search events**: Easily find and access your scheduled events across multiple calendars
|
||||
- **Manage multiple calendars**: Organize different types of events across various calendars
|
||||
|
||||
In Sim, the Google Calendar integration enables your agents to programmatically create, read, and manage calendar events. This allows for powerful automation scenarios such as scheduling meetings, sending calendar invites, checking availability, and managing event details. Your agents can create events with natural language input, send automated calendar invitations to attendees, retrieve event information, and list upcoming events. This integration bridges the gap between your AI workflows and calendar management, enabling seamless scheduling automation and coordination with one of the world's most widely used calendar platforms.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Google Calendar into the workflow. Can create, read, update, and list calendar events.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `google_calendar_create`
|
||||
|
||||
Create a new event in Google Calendar
|
||||
Create a new event in Google Calendar. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -55,12 +36,21 @@ Create a new event in Google Calendar
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Event creation confirmation message |
|
||||
| `metadata` | json | Created event metadata including ID, status, and details |
|
||||
| `id` | string | Event ID |
|
||||
| `htmlLink` | string | Event link |
|
||||
| `status` | string | Event status |
|
||||
| `summary` | string | Event title |
|
||||
| `description` | string | Event description |
|
||||
| `location` | string | Event location |
|
||||
| `start` | json | Event start |
|
||||
| `end` | json | Event end |
|
||||
| `attendees` | json | Event attendees |
|
||||
| `creator` | json | Event creator |
|
||||
| `organizer` | json | Event organizer |
|
||||
|
||||
### `google_calendar_list`
|
||||
|
||||
List events from Google Calendar
|
||||
List events from Google Calendar. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -76,12 +66,13 @@ List events from Google Calendar
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Summary of found events count |
|
||||
| `metadata` | json | List of events with pagination tokens and event details |
|
||||
| `nextPageToken` | string | Next page token |
|
||||
| `timeZone` | string | Calendar time zone |
|
||||
| `events` | json | List of events |
|
||||
|
||||
### `google_calendar_get`
|
||||
|
||||
Get a specific event from Google Calendar
|
||||
Get a specific event from Google Calendar. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -94,12 +85,21 @@ Get a specific event from Google Calendar
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Event retrieval confirmation message |
|
||||
| `metadata` | json | Event details including ID, status, times, and attendees |
|
||||
| `id` | string | Event ID |
|
||||
| `htmlLink` | string | Event link |
|
||||
| `status` | string | Event status |
|
||||
| `summary` | string | Event title |
|
||||
| `description` | string | Event description |
|
||||
| `location` | string | Event location |
|
||||
| `start` | json | Event start |
|
||||
| `end` | json | Event end |
|
||||
| `attendees` | json | Event attendees |
|
||||
| `creator` | json | Event creator |
|
||||
| `organizer` | json | Event organizer |
|
||||
|
||||
### `google_calendar_quick_add`
|
||||
|
||||
Create events from natural language text
|
||||
Create events from natural language text. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -114,12 +114,21 @@ Create events from natural language text
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Event creation confirmation message from natural language |
|
||||
| `metadata` | json | Created event metadata including parsed details |
|
||||
| `id` | string | Event ID |
|
||||
| `htmlLink` | string | Event link |
|
||||
| `status` | string | Event status |
|
||||
| `summary` | string | Event title |
|
||||
| `description` | string | Event description |
|
||||
| `location` | string | Event location |
|
||||
| `start` | json | Event start |
|
||||
| `end` | json | Event end |
|
||||
| `attendees` | json | Event attendees |
|
||||
| `creator` | json | Event creator |
|
||||
| `organizer` | json | Event organizer |
|
||||
|
||||
### `google_calendar_invite`
|
||||
|
||||
Invite attendees to an existing Google Calendar event
|
||||
Invite attendees to an existing Google Calendar event. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -135,12 +144,16 @@ Invite attendees to an existing Google Calendar event
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Attendee invitation confirmation message with email delivery status |
|
||||
| `metadata` | json | Updated event metadata including attendee list and details |
|
||||
| `id` | string | Event ID |
|
||||
| `htmlLink` | string | Event link |
|
||||
| `status` | string | Event status |
|
||||
| `summary` | string | Event title |
|
||||
| `description` | string | Event description |
|
||||
| `location` | string | Event location |
|
||||
| `start` | json | Event start |
|
||||
| `end` | json | Event end |
|
||||
| `attendees` | json | Event attendees |
|
||||
| `creator` | json | Event creator |
|
||||
| `organizer` | json | Event organizer |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_calendar`
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_docs`
|
||||
|
||||
@@ -48,7 +48,7 @@ Integrate Google Drive into the workflow. Can create, upload, and list files.
|
||||
|
||||
### `google_drive_upload`
|
||||
|
||||
Upload a file to Google Drive
|
||||
Upload a file to Google Drive with complete metadata returned
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -65,11 +65,63 @@ Upload a file to Google Drive
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `file` | json | Uploaded file metadata including ID, name, and links |
|
||||
| `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`
|
||||
|
||||
Create a new folder in Google Drive
|
||||
Create a new folder in Google Drive with complete metadata returned
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -83,11 +135,48 @@ Create a new folder in Google Drive
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `file` | json | Created folder metadata including ID, name, and parent information |
|
||||
| `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`
|
||||
|
||||
Download a file from Google Drive (exports Google Workspace files automatically)
|
||||
Download a file from Google Drive with complete metadata (exports Google Workspace files automatically)
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -96,16 +185,75 @@ Download a file from Google Drive (exports Google Workspace files automatically)
|
||||
| `fileId` | string | Yes | The ID of the file to download |
|
||||
| `mimeType` | string | No | The MIME type to export Google Workspace files to \(optional\) |
|
||||
| `fileName` | string | No | Optional filename override |
|
||||
| `includeRevisions` | boolean | No | Whether to include revision history in the metadata \(default: true, returns first 100 revisions\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `file` | file | Downloaded file stored in execution files |
|
||||
| `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`
|
||||
|
||||
List files and folders in Google Drive
|
||||
List files and folders in Google Drive with complete metadata
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -121,11 +269,59 @@ List files and folders in Google Drive
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `files` | json | Array of file metadata objects from the specified folder |
|
||||
| `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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_drive`
|
||||
|
||||
@@ -49,8 +49,3 @@ Integrate Google Forms into your workflow. Provide a Form ID to list responses,
|
||||
| `data` | json | Response or list of responses |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_forms`
|
||||
|
||||
@@ -216,8 +216,3 @@ Check if a user is a member of a Google Group
|
||||
| `isMember` | boolean | Whether the user is a member of the group |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_groups`
|
||||
|
||||
@@ -63,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_search`
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_sheets`
|
||||
|
||||
@@ -178,8 +178,3 @@ Generate a thumbnail image of a specific slide in a Google Slides presentation
|
||||
| `metadata` | json | Operation metadata including presentation ID and page object ID |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_slides`
|
||||
|
||||
@@ -157,8 +157,3 @@ List matters, or get a specific matter if matterId is provided
|
||||
| `nextPageToken` | string | Token for fetching next page of results |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_vault`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -502,8 +551,3 @@ Create a new folder in Grafana
|
||||
| `version` | number | Version number of the folder |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `grafana`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -162,6 +185,7 @@ Create a webhook to receive recording events
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Grain API key \(Personal Access Token\) |
|
||||
| `hookUrl` | string | Yes | Webhook endpoint URL \(must respond 2xx\) |
|
||||
| `hookType` | string | Yes | Type of webhook: "recording_added" or "upload_status" |
|
||||
| `filterBeforeDatetime` | string | No | Filter: recordings before this date |
|
||||
| `filterAfterDatetime` | string | No | Filter: recordings after this date |
|
||||
| `filterParticipantScope` | string | No | Filter: "internal" or "external" |
|
||||
@@ -178,6 +202,7 @@ Create a webhook to receive recording events
|
||||
| `id` | string | Hook UUID |
|
||||
| `enabled` | boolean | Whether hook is active |
|
||||
| `hook_url` | string | The webhook URL |
|
||||
| `hook_type` | string | Type of hook: recording_added or upload_status |
|
||||
| `filter` | object | Applied filters |
|
||||
| `include` | object | Included fields |
|
||||
| `inserted_at` | string | ISO8601 creation timestamp |
|
||||
@@ -197,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`
|
||||
|
||||
@@ -216,8 +248,3 @@ Delete a webhook by ID
|
||||
| `success` | boolean | True when webhook was successfully deleted |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `grain`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -134,8 +150,3 @@ Check the indexing status of a repository. Use this to verify if a repository is
|
||||
| `sha` | string | Git commit SHA of the indexed version |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `greptile`
|
||||
|
||||
@@ -51,7 +51,7 @@ Retrieve all users from HubSpot account
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `users` | array | Array of HubSpot user objects |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `totalItems` | number | Total number of users returned |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_list_contacts`
|
||||
@@ -73,7 +73,7 @@ Retrieve all contacts from HubSpot account with pagination support
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Array of HubSpot contact objects |
|
||||
| `paging` | object | Pagination information |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `metadata` | object | Metadata with totalReturned and hasMore |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_get_contact`
|
||||
@@ -94,7 +94,7 @@ Retrieve a single contact by ID or email from HubSpot
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | HubSpot contact object with properties |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `contactId` | string | The retrieved contact ID |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_create_contact`
|
||||
@@ -113,7 +113,7 @@ Create a new contact in HubSpot. Requires at least one of: email, firstname, or
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Created HubSpot contact object |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `contactId` | string | The created contact ID |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_update_contact`
|
||||
@@ -133,7 +133,7 @@ Update an existing contact in HubSpot by ID or email
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Updated HubSpot contact object |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `contactId` | string | The updated contact ID |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_search_contacts`
|
||||
@@ -158,7 +158,7 @@ Search for contacts in HubSpot using filters, sorting, and queries
|
||||
| `contacts` | array | Array of matching HubSpot contact objects |
|
||||
| `total` | number | Total number of matching contacts |
|
||||
| `paging` | object | Pagination information |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `metadata` | object | Metadata with totalReturned and hasMore |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_list_companies`
|
||||
@@ -180,7 +180,7 @@ Retrieve all companies from HubSpot account with pagination support
|
||||
| --------- | ---- | ----------- |
|
||||
| `companies` | array | Array of HubSpot company objects |
|
||||
| `paging` | object | Pagination information |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `metadata` | object | Metadata with totalReturned and hasMore |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_get_company`
|
||||
@@ -201,7 +201,7 @@ Retrieve a single company by ID or domain from HubSpot
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | HubSpot company object with properties |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `companyId` | string | The retrieved company ID |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_create_company`
|
||||
@@ -220,7 +220,7 @@ Create a new company in HubSpot
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Created HubSpot company object |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `companyId` | string | The created company ID |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_update_company`
|
||||
@@ -240,7 +240,7 @@ Update an existing company in HubSpot by ID or domain
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Updated HubSpot company object |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `companyId` | string | The updated company ID |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_search_companies`
|
||||
@@ -265,7 +265,7 @@ Search for companies in HubSpot using filters, sorting, and queries
|
||||
| `companies` | array | Array of matching HubSpot company objects |
|
||||
| `total` | number | Total number of matching companies |
|
||||
| `paging` | object | Pagination information |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `metadata` | object | Metadata with totalReturned and hasMore |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
### `hubspot_list_deals`
|
||||
@@ -287,12 +287,7 @@ Retrieve all deals from HubSpot account with pagination support
|
||||
| --------- | ---- | ----------- |
|
||||
| `deals` | array | Array of HubSpot deal objects |
|
||||
| `paging` | object | Pagination information |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `metadata` | object | Metadata with totalReturned and hasMore |
|
||||
| `success` | boolean | Operation success status |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `hubspot`
|
||||
|
||||
@@ -54,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `huggingface`
|
||||
|
||||
@@ -190,8 +190,3 @@ Returns the total number of email addresses found for a domain or company.
|
||||
| `seniority` | object | Breakdown of email addresses by seniority level \(junior, senior, executive\) |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `hunter`
|
||||
|
||||
@@ -58,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `image_generator`
|
||||
|
||||
@@ -33,8 +33,3 @@ Connect to any email server via IMAP protocol to trigger workflows when new emai
|
||||
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `triggers`
|
||||
- Type: `imap`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -841,8 +1367,3 @@ Delete an escalation path in incident.io
|
||||
| `message` | string | Success message |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `incidentio`
|
||||
|
||||
@@ -1,41 +1,22 @@
|
||||
---
|
||||
title: Intercom
|
||||
description: Manage contacts, companies, conversations, tickets, and messages in Intercom
|
||||
description: Contact object with id, type, role, email, phone, name, external_id, created_at, updated_at
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="intercom"
|
||||
color="#E0E0E0"
|
||||
type="intercom_v2"
|
||||
color="#F5F5F5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Intercom](https://www.intercom.com/) is a leading customer communications platform that enables you to manage and automate your interactions with contacts, companies, conversations, tickets, and messages—all in one place. The Intercom integration in Sim lets your agents programmatically manage customer relationships, support requests, and conversations directly from your automated workflows.
|
||||
|
||||
With the Intercom tools, you can:
|
||||
|
||||
- **Contacts Management:** Create, get, update, list, search, and delete contacts—automate your CRM processes and keep your customer records up-to-date.
|
||||
- **Company Management:** Create new companies, retrieve company details, and list all companies related to your users or business clients.
|
||||
- **Conversation Handling:** Get, list, reply to, and search through conversations—allowing agents to track ongoing support threads, provide answers, and automate follow-up actions.
|
||||
- **Ticket Management:** Create and retrieve tickets programmatically, helping you automate customer service, support issue tracking, and workflow escalations.
|
||||
- **Send Messages:** Trigger messages to users or leads for onboarding, support, or marketing, all from within your workflow automation.
|
||||
|
||||
By integrating Intercom tools into Sim, you empower your workflows to communicate directly with your users, automate customer support processes, manage leads, and streamline communications at scale. Whether you need to create new contacts, keep customer data synchronized, manage support tickets, or send personalized engagement messages, the Intercom tools provide a comprehensive way to manage customer interactions as part of your intelligent automations.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Intercom into the workflow. Can create, get, update, list, search, and delete contacts; create, get, and list companies; get, list, reply, and search conversations; create and get tickets; and create messages.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `intercom_create_contact`
|
||||
|
||||
Create a new contact in Intercom with email, external_id, or role
|
||||
Create a new contact in Intercom with email, external_id, or role. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -59,10 +40,64 @@ Create a new contact in Intercom with email, external_id, or role
|
||||
| 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`
|
||||
|
||||
Get a single contact by ID from Intercom
|
||||
Get a single contact by ID from Intercom. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -75,10 +110,29 @@ Get a single contact by ID from Intercom
|
||||
| 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`
|
||||
|
||||
Update an existing contact in Intercom
|
||||
Update an existing contact in Intercom. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -103,6 +157,26 @@ Update an existing contact in Intercom
|
||||
| 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`
|
||||
|
||||
@@ -120,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`
|
||||
|
||||
@@ -140,10 +233,37 @@ 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`
|
||||
|
||||
Delete a contact from Intercom by ID
|
||||
Delete a contact from Intercom by ID. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -157,7 +277,6 @@ Delete a contact from Intercom by ID
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | ID of deleted contact |
|
||||
| `deleted` | boolean | Whether the contact was deleted |
|
||||
| `metadata` | object | Operation metadata |
|
||||
|
||||
### `intercom_create_company`
|
||||
|
||||
@@ -182,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`
|
||||
|
||||
@@ -198,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`
|
||||
|
||||
@@ -216,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`
|
||||
|
||||
@@ -234,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`
|
||||
|
||||
@@ -253,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`
|
||||
|
||||
@@ -274,10 +493,28 @@ 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`
|
||||
|
||||
Search for conversations in Intercom using a query
|
||||
Search for conversations in Intercom using a query. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -294,10 +531,32 @@ Search for conversations in Intercom using a query
|
||||
| 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`
|
||||
|
||||
Create a new ticket in Intercom
|
||||
Create a new ticket in Intercom. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -316,10 +575,27 @@ Create a new ticket in Intercom
|
||||
| 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`
|
||||
|
||||
Retrieve a single ticket by ID from Intercom
|
||||
Retrieve a single ticket by ID from Intercom. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -332,10 +608,27 @@ Retrieve a single ticket by ID from Intercom
|
||||
| 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`
|
||||
|
||||
Create and send a new admin-initiated message in Intercom
|
||||
Create and send a new admin-initiated message in Intercom. Returns API-aligned fields only.
|
||||
|
||||
#### Input
|
||||
|
||||
@@ -356,10 +649,14 @@ Create and send a new admin-initiated message in Intercom
|
||||
| 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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `intercom`
|
||||
|
||||
@@ -93,8 +93,3 @@ Search the web and return top 5 results with LLM-friendly content. Each result i
|
||||
| `results` | array | Array of search results, each containing title, description, url, and LLM-friendly content |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `jina`
|
||||
|
||||
@@ -555,8 +555,3 @@ Get Jira users. If an account ID is provided, returns a single user. Otherwise,
|
||||
| `maxResults` | number | Maximum results per page |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `jira`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -483,8 +484,3 @@ Approve or decline an approval request in Jira Service Management
|
||||
| `success` | boolean | Whether the operation succeeded |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `jira_service_management`
|
||||
|
||||
@@ -382,8 +382,3 @@ Modify the price or quantity of an existing order on Kalshi
|
||||
| `order` | object | The amended order object |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `kalshi`
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `blocks`
|
||||
- Type: `knowledge`
|
||||
|
||||
77
apps/docs/content/docs/en/tools/langsmith.mdx
Normal file
77
apps/docs/content/docs/en/tools/langsmith.mdx
Normal file
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: LangSmith
|
||||
description: Forward workflow runs to LangSmith for observability
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="langsmith"
|
||||
color="#181C1E"
|
||||
/>
|
||||
|
||||
## 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 |
|
||||
|
||||
|
||||
102
apps/docs/content/docs/en/tools/lemlist.mdx
Normal file
102
apps/docs/content/docs/en/tools/lemlist.mdx
Normal file
@@ -0,0 +1,102 @@
|
||||
---
|
||||
title: Lemlist
|
||||
description: Manage outreach activities, leads, and send emails via Lemlist
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="lemlist"
|
||||
color="#316BFF"
|
||||
/>
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Lemlist into your workflow. Retrieve campaign activities and replies, get lead information, and send emails through the Lemlist inbox.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `lemlist_get_activities`
|
||||
|
||||
Retrieves campaign activities and steps performed, including email opens, clicks, replies, and other events.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Lemlist API key |
|
||||
| `type` | string | No | Filter by activity type \(e.g., emailOpened, emailClicked, emailReplied, paused\) |
|
||||
| `campaignId` | string | No | Filter by campaign ID |
|
||||
| `leadId` | string | No | Filter by lead ID |
|
||||
| `isFirst` | boolean | No | Filter for first activity only |
|
||||
| `limit` | number | No | Number of results per request \(max 100, default 100\) |
|
||||
| `offset` | number | No | Number of records to skip for pagination |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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`
|
||||
|
||||
Retrieves lead information by email address or lead ID.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Lemlist API key |
|
||||
| `leadIdentifier` | string | Yes | Lead email address or lead ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `_id` | string | Lead ID |
|
||||
| `email` | string | Lead email address |
|
||||
| `firstName` | string | Lead first name |
|
||||
| `lastName` | string | Lead last name |
|
||||
| `companyName` | string | Company name |
|
||||
| `jobTitle` | string | Job title |
|
||||
| `companyDomain` | string | Company domain |
|
||||
| `isPaused` | boolean | Whether the lead is paused |
|
||||
| `campaignId` | string | Campaign ID the lead belongs to |
|
||||
| `contactId` | string | Contact ID |
|
||||
| `emailStatus` | string | Email deliverability status |
|
||||
|
||||
### `lemlist_send_email`
|
||||
|
||||
Sends an email to a contact through the Lemlist inbox.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Lemlist API key |
|
||||
| `sendUserId` | string | Yes | Identifier for the user sending the message |
|
||||
| `sendUserEmail` | string | Yes | Email address of the sender |
|
||||
| `sendUserMailboxId` | string | Yes | Mailbox identifier for the sender |
|
||||
| `contactId` | string | Yes | Recipient contact identifier |
|
||||
| `leadId` | string | Yes | Associated lead identifier |
|
||||
| `subject` | string | Yes | Email subject line |
|
||||
| `message` | string | Yes | Email message body in HTML format |
|
||||
| `cc` | json | No | Array of CC email addresses |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ok` | boolean | Whether the email was sent successfully |
|
||||
|
||||
|
||||
@@ -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,24 +1100,12 @@ List all status updates for a project in Linear
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `updates` | array | Array of project updates |
|
||||
|
||||
### `linear_create_project_link`
|
||||
|
||||
Add an external link to a project in Linear
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID to add link to |
|
||||
| `url` | string | Yes | URL of the external link |
|
||||
| `label` | string | No | Link label/title |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `link` | object | The created project link |
|
||||
| ↳ `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`
|
||||
|
||||
@@ -885,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`
|
||||
|
||||
@@ -902,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`
|
||||
|
||||
@@ -926,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`
|
||||
|
||||
@@ -944,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`
|
||||
|
||||
@@ -964,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`
|
||||
|
||||
@@ -985,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`
|
||||
|
||||
@@ -1003,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`
|
||||
|
||||
@@ -1019,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`
|
||||
|
||||
@@ -1246,7 +1554,6 @@ Create a new project label in Linear
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | The project for this label |
|
||||
| `name` | string | Yes | Project label name |
|
||||
| `color` | string | No | Label color \(hex code\) |
|
||||
| `description` | string | No | Label description |
|
||||
@@ -1424,12 +1731,12 @@ Create a new project status in Linear
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | The project to create the status for |
|
||||
| `name` | string | Yes | Project status name |
|
||||
| `type` | string | Yes | Status type: "backlog", "planned", "started", "paused", "completed", or "canceled" |
|
||||
| `color` | string | Yes | Status color \(hex code\) |
|
||||
| `position` | number | Yes | Position in status list \(e.g. 0, 1, 2...\) |
|
||||
| `description` | string | No | Status description |
|
||||
| `indefinite` | boolean | No | Whether the status is indefinite |
|
||||
| `position` | number | No | Position in status list |
|
||||
|
||||
#### Output
|
||||
|
||||
@@ -1490,8 +1797,3 @@ List all project statuses in Linear
|
||||
| `projectStatuses` | array | List of project statuses |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `linear`
|
||||
|
||||
@@ -81,8 +81,3 @@ Retrieve your LinkedIn profile information
|
||||
| `error` | string | Error message if operation failed |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `linkedin`
|
||||
|
||||
@@ -60,8 +60,3 @@ Search the web for information using Linkup
|
||||
| `sources` | array | Array of sources used to compile the answer, each containing name, url, and snippet |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `linkup`
|
||||
|
||||
@@ -70,8 +70,11 @@ Retrieve a list of audiences (lists) from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Audiences data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -88,8 +91,10 @@ Retrieve details of a specific audience (list) from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Audience data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -150,8 +161,7 @@ Delete an audience (list) from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the audience was successfully deleted |
|
||||
|
||||
### `mailchimp_get_members`
|
||||
|
||||
@@ -171,8 +181,11 @@ Retrieve a list of members from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Members data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -190,8 +203,10 @@ Retrieve details of a specific member from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Member data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -214,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`
|
||||
|
||||
@@ -237,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`
|
||||
|
||||
@@ -260,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`
|
||||
|
||||
@@ -277,8 +301,7 @@ Delete a member from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the member was successfully deleted |
|
||||
|
||||
### `mailchimp_archive_member`
|
||||
|
||||
@@ -298,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`
|
||||
|
||||
@@ -319,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,8 +365,11 @@ Retrieve a list of campaigns from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Campaigns data and metadata |
|
||||
| `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,8 +386,10 @@ Retrieve details of a specific campaign from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Campaign data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -378,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`
|
||||
|
||||
@@ -398,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`
|
||||
|
||||
@@ -414,8 +452,7 @@ Delete a campaign from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the campaign was successfully deleted |
|
||||
|
||||
### `mailchimp_send_campaign`
|
||||
|
||||
@@ -434,6 +471,7 @@ Send a Mailchimp campaign
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Send confirmation |
|
||||
| ↳ `success` | boolean | Operation success |
|
||||
|
||||
### `mailchimp_schedule_campaign`
|
||||
|
||||
@@ -451,8 +489,7 @@ Schedule a Mailchimp campaign to be sent at a specific time
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Schedule confirmation |
|
||||
| `success` | boolean | Whether the campaign was successfully scheduled |
|
||||
|
||||
### `mailchimp_unschedule_campaign`
|
||||
|
||||
@@ -471,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`
|
||||
|
||||
@@ -489,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`
|
||||
|
||||
@@ -505,8 +546,9 @@ Retrieve the HTML and plain-text content for a Mailchimp campaign
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `success` | boolean | Whether the campaign content was successfully retrieved |
|
||||
| `output` | object | Campaign content data |
|
||||
| ↳ `content` | json | Campaign content object |
|
||||
|
||||
### `mailchimp_set_campaign_content`
|
||||
|
||||
@@ -528,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`
|
||||
|
||||
@@ -545,8 +589,11 @@ Retrieve a list of automations from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Automations data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -563,8 +610,10 @@ Retrieve details of a specific automation from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Automation data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -583,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`
|
||||
|
||||
@@ -601,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`
|
||||
|
||||
@@ -621,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`
|
||||
|
||||
@@ -638,8 +691,11 @@ Retrieve a list of templates from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Templates data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -656,8 +712,10 @@ Retrieve details of a specific template from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Template data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -677,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`
|
||||
|
||||
@@ -697,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`
|
||||
|
||||
@@ -713,8 +777,7 @@ Delete a template from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the template was successfully deleted |
|
||||
|
||||
### `mailchimp_get_campaign_reports`
|
||||
|
||||
@@ -732,8 +795,11 @@ Retrieve a list of campaign reports from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Campaign reports data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -750,8 +816,10 @@ Retrieve the report for a specific campaign from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Campaign report data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -770,8 +838,11 @@ Retrieve a list of segments from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Segments data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -789,8 +860,10 @@ Retrieve details of a specific segment from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Segment data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -811,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`
|
||||
|
||||
@@ -832,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`
|
||||
|
||||
@@ -849,8 +928,7 @@ Delete a segment from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the segment was successfully deleted |
|
||||
|
||||
### `mailchimp_get_segment_members`
|
||||
|
||||
@@ -870,8 +948,11 @@ Retrieve members of a specific segment from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Segment members data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -892,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`
|
||||
|
||||
@@ -912,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`
|
||||
|
||||
@@ -929,8 +1013,11 @@ Retrieve tags associated with a member in a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Member tags data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -951,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`
|
||||
|
||||
@@ -971,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`
|
||||
|
||||
@@ -989,8 +1078,11 @@ Retrieve a list of merge fields from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Merge fields data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1008,8 +1100,10 @@ Retrieve details of a specific merge field from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Merge field data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1030,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`
|
||||
|
||||
@@ -1050,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`
|
||||
|
||||
@@ -1067,8 +1167,7 @@ Delete a merge field from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the merge field was successfully deleted |
|
||||
|
||||
### `mailchimp_get_interest_categories`
|
||||
|
||||
@@ -1087,8 +1186,11 @@ Retrieve a list of interest categories from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Interest categories data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1106,8 +1208,10 @@ Retrieve details of a specific interest category from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Interest category data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1128,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`
|
||||
|
||||
@@ -1148,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`
|
||||
|
||||
@@ -1165,8 +1275,7 @@ Delete an interest category from a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the interest category was successfully deleted |
|
||||
|
||||
### `mailchimp_get_interests`
|
||||
|
||||
@@ -1186,8 +1295,11 @@ Retrieve a list of interests from an interest category in a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Interests data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1206,8 +1318,10 @@ Retrieve details of a specific interest from an interest category in a Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Interest data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1228,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`
|
||||
|
||||
@@ -1249,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`
|
||||
|
||||
@@ -1267,8 +1387,7 @@ Delete an interest from an interest category in a Mailchimp audience
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the interest was successfully deleted |
|
||||
|
||||
### `mailchimp_get_landing_pages`
|
||||
|
||||
@@ -1286,8 +1405,11 @@ Retrieve a list of landing pages from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Landing pages data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1304,8 +1426,10 @@ Retrieve details of a specific landing page from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Landing page data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1325,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`
|
||||
|
||||
@@ -1344,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`
|
||||
|
||||
@@ -1360,8 +1490,7 @@ Delete a landing page from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the landing page was successfully deleted |
|
||||
|
||||
### `mailchimp_publish_landing_page`
|
||||
|
||||
@@ -1380,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`
|
||||
|
||||
@@ -1398,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`
|
||||
|
||||
@@ -1415,8 +1546,11 @@ Retrieve a list of batch operations from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Batch operations data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1433,8 +1567,10 @@ Retrieve details of a specific batch operation from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Batch operation data and metadata |
|
||||
| `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`
|
||||
|
||||
@@ -1453,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`
|
||||
|
||||
@@ -1469,12 +1608,6 @@ Delete a batch operation from Mailchimp
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion confirmation |
|
||||
| `success` | boolean | Whether the batch operation was successfully deleted |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `mailchimp`
|
||||
|
||||
@@ -214,8 +214,3 @@ Get details of a specific domain
|
||||
| `domain` | json | Domain details |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `mailgun`
|
||||
|
||||
@@ -96,8 +96,3 @@ Retrieve memories from Mem0 by ID or filter criteria
|
||||
| `ids` | array | Array of memory IDs that were retrieved |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `mem0`
|
||||
|
||||
@@ -97,8 +97,3 @@ Delete memories by conversationId.
|
||||
| `error` | string | Error message if operation failed |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `blocks`
|
||||
- Type: `memory`
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"pages": [
|
||||
"index",
|
||||
"a2a",
|
||||
"ahrefs",
|
||||
"airtable",
|
||||
"apify",
|
||||
@@ -51,6 +52,8 @@
|
||||
"jira_service_management",
|
||||
"kalshi",
|
||||
"knowledge",
|
||||
"langsmith",
|
||||
"lemlist",
|
||||
"linear",
|
||||
"linkedin",
|
||||
"linkup",
|
||||
@@ -101,7 +104,7 @@
|
||||
"supabase",
|
||||
"tavily",
|
||||
"telegram",
|
||||
"thinking",
|
||||
"tinybird",
|
||||
"translate",
|
||||
"trello",
|
||||
"tts",
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `microsoft_excel`
|
||||
|
||||
@@ -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,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `microsoft_planner`
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -337,8 +346,3 @@ List all members of a Microsoft Teams channel
|
||||
| `memberCount` | number | Total number of members |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `microsoft_teams`
|
||||
|
||||
@@ -57,10 +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 |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `mistral_parse`
|
||||
|
||||
@@ -172,9 +172,28 @@ Execute MongoDB aggregation pipeline
|
||||
| `documents` | array | Array of documents returned from aggregation |
|
||||
| `documentCount` | number | Number of documents returned |
|
||||
|
||||
### `mongodb_introspect`
|
||||
|
||||
Introspect MongoDB database to list databases, collections, and indexes
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Yes | MongoDB server hostname or IP address |
|
||||
| `port` | number | Yes | MongoDB server port \(default: 27017\) |
|
||||
| `database` | string | No | Database name to introspect \(optional - if not provided, lists all databases\) |
|
||||
| `username` | string | No | MongoDB username |
|
||||
| `password` | string | No | MongoDB password |
|
||||
| `authSource` | string | No | Authentication database |
|
||||
| `ssl` | string | No | SSL connection mode \(disabled, required, preferred\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Operation status message |
|
||||
| `databases` | array | Array of database names |
|
||||
| `collections` | array | Array of collection info with name, type, document count, and indexes |
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `mongodb`
|
||||
|
||||
@@ -157,9 +157,27 @@ Execute raw SQL query on MySQL database
|
||||
| `rows` | array | Array of rows returned from the query |
|
||||
| `rowCount` | number | Number of rows affected |
|
||||
|
||||
### `mysql_introspect`
|
||||
|
||||
Introspect MySQL database schema to retrieve table structures, columns, and relationships
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Yes | MySQL server hostname or IP address |
|
||||
| `port` | number | Yes | MySQL server port \(default: 3306\) |
|
||||
| `database` | string | Yes | Database name to connect to |
|
||||
| `username` | string | Yes | Database username |
|
||||
| `password` | string | Yes | Database password |
|
||||
| `ssl` | string | No | SSL connection mode \(disabled, required, preferred\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Operation status message |
|
||||
| `tables` | array | Array of table schemas with columns, keys, and indexes |
|
||||
| `databases` | array | List of available databases on the server |
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `mysql`
|
||||
|
||||
@@ -168,9 +168,31 @@ Execute arbitrary Cypher queries on Neo4j graph database for complex operations
|
||||
| `recordCount` | number | Number of records returned |
|
||||
| `summary` | json | Execution summary with timing and counters |
|
||||
|
||||
### `neo4j_introspect`
|
||||
|
||||
Introspect a Neo4j database to discover its schema including node labels, relationship types, properties, constraints, and indexes.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Yes | Neo4j server hostname or IP address |
|
||||
| `port` | number | Yes | Neo4j server port \(default: 7687 for Bolt protocol\) |
|
||||
| `database` | string | Yes | Database name to connect to |
|
||||
| `username` | string | Yes | Neo4j username |
|
||||
| `password` | string | Yes | Neo4j password |
|
||||
| `encryption` | string | No | Connection encryption mode \(enabled, disabled\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Operation status message |
|
||||
| `labels` | array | Array of node labels in the database |
|
||||
| `relationshipTypes` | array | Array of relationship types in the database |
|
||||
| `nodeSchemas` | array | Array of node schemas with their properties |
|
||||
| `relationshipSchemas` | array | Array of relationship schemas with their properties |
|
||||
| `constraints` | array | Array of database constraints |
|
||||
| `indexes` | array | Array of database indexes |
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `neo4j`
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user