Compare commits

..

4 Commits

Author SHA1 Message Date
waleed
79621d788e fix(change-detection): add condition to check against duplicate edges 2026-01-13 15:51:35 -08:00
Waleed
67686eac07 fix(a2a): removed deployment constraint for redeploying a2a workflows (#2796)
* fix(a2a): removed deployment constraint for redeploying a2a workflows

* updated A2A tab copy state

* consolidated trigger types const
2026-01-13 15:51:35 -08:00
waleed
96a2979bee fix(change-detection): add condition to check against duplicate edges 2026-01-13 15:51:30 -08:00
waleed
c1a92d3be9 fix(dups): onConntext being called twice for a signle edge, once in onConnectEnd and onConnectExtended 2026-01-13 15:51:00 -08:00
1525 changed files with 34068 additions and 179693 deletions

View File

@@ -351,16 +351,14 @@ Enables AI-assisted field generation.
## Tools Configuration
**Preferred:** Use tool names directly as dropdown option IDs to avoid switch cases:
### Simple Tool Selector
```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,
tools: {
access: ['service_create', 'service_read', 'service_update'],
config: {
tool: (params) => `service_${params.operation}`,
},
}
```
### With Parameter Transformation
@@ -579,17 +577,6 @@ export const ServiceBlock: BlockConfig = {
See the `/add-trigger` skill for creating triggers.
## Icon Requirement
If the icon doesn't already exist in `@/components/icons.tsx`, **do NOT search for it yourself**. After completing the block, ask the user to provide the SVG:
```
The block is complete, but I need an icon for {Service}.
Please provide the SVG and I'll convert it to a React component.
You can usually find this in the service's brand/press kit page, or copy it from their website.
```
## Checklist Before Finishing
- [ ] All subBlocks have `id`, `title` (except switch), and `type`
@@ -601,5 +588,4 @@ You can usually find this in the service's brand/press kit page, or copy it from
- [ ] 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

View File

@@ -226,26 +226,17 @@ export function {Service}Icon(props: SVGProps<SVGSVGElement>) {
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
{/* SVG paths from user-provided SVG */}
{/* SVG paths from brand assets */}
</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
### Finding Icons
1. Check the service's brand/press kit page
2. Download SVG logo
3. Convert to React component
4. Ensure it accepts and spreads props
## Step 5: Create Triggers (Optional)
@@ -414,7 +405,6 @@ If creating V2 versions (API-aligned outputs):
- [ ] If triggers: spread trigger subBlocks with `getTrigger()`
### Icon
- [ ] Asked user to provide SVG
- [ ] Added icon to `components/icons.tsx`
- [ ] Icon spreads props correctly
@@ -443,18 +433,11 @@ 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
4. Add the Stripe icon
5. Register everything
6. Generate docs
[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

View File

@@ -552,53 +552,6 @@ 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).
@@ -696,11 +649,6 @@ export const {service}WebhookTrigger: TriggerConfig = {
- [ ] Added `delete{Service}Webhook` function to `provider-subscriptions.ts`
- [ ] Added provider to `cleanupExternalWebhook` function
### Webhook Input Formatting
- [ ] Added handler in `apps/sim/lib/webhooks/utils.server.ts` (if custom formatting needed)
- [ ] Handler returns fields matching trigger `outputs` exactly
- [ ] Run `bunx scripts/check-trigger-alignment.ts {service}` to verify alignment
### Testing
- [ ] Run `bun run type-check` to verify no TypeScript errors
- [ ] Restart dev server to pick up new triggers

View File

@@ -1,35 +0,0 @@
---
paths:
- "apps/sim/components/emcn/**"
---
# EMCN Components
Import from `@/components/emcn`, never from subpaths (except CSS files).
## CVA vs Direct Styles
**Use CVA when:** 2+ variants (primary/secondary, sm/md/lg)
```tsx
const buttonVariants = cva('base-classes', {
variants: { variant: { default: '...', primary: '...' } }
})
export { Button, buttonVariants }
```
**Use direct className when:** Single consistent style, no variations
```tsx
function Label({ className, ...props }) {
return <Primitive className={cn('style-classes', className)} {...props} />
}
```
## Rules
- Use Radix UI primitives for accessibility
- Export component and variants (if using CVA)
- TSDoc with usage examples
- Consistent tokens: `font-medium`, `text-[12px]`, `rounded-[4px]`
- `transition-colors` for hover states

View File

@@ -1,13 +0,0 @@
# Global Standards
## Logging
Import `createLogger` from `sim/logger`. Use `logger.info`, `logger.warn`, `logger.error` instead of `console.log`.
## Comments
Use TSDoc for documentation. No `====` separators. No non-TSDoc comments.
## Styling
Never update global styles. Keep all styling local to components.
## Package Manager
Use `bun` and `bunx`, not `npm` and `npx`.

View File

@@ -1,56 +0,0 @@
---
paths:
- "apps/sim/**"
---
# Sim App Architecture
## Core Principles
1. **Single Responsibility**: Each component, hook, store has one clear purpose
2. **Composition Over Complexity**: Break down complex logic into smaller pieces
3. **Type Safety First**: TypeScript interfaces for all props, state, return types
4. **Predictable State**: Zustand for global state, useState for UI-only concerns
## Root-Level Structure
```
apps/sim/
├── app/ # Next.js app router (pages, API routes)
├── blocks/ # Block definitions and registry
├── components/ # Shared UI (emcn/, ui/)
├── executor/ # Workflow execution engine
├── hooks/ # Shared hooks (queries/, selectors/)
├── lib/ # App-wide utilities
├── providers/ # LLM provider integrations
├── stores/ # Zustand stores
├── tools/ # Tool definitions
└── triggers/ # Trigger definitions
```
## Feature Organization
Features live under `app/workspace/[workspaceId]/`:
```
feature/
├── components/ # Feature components
├── hooks/ # Feature-scoped hooks
├── utils/ # Feature-scoped utilities (2+ consumers)
├── feature.tsx # Main component
└── page.tsx # Next.js page entry
```
## Naming Conventions
- **Components**: PascalCase (`WorkflowList`)
- **Hooks**: `use` prefix (`useWorkflowOperations`)
- **Files**: kebab-case (`workflow-list.tsx`)
- **Stores**: `stores/feature/store.ts`
- **Constants**: SCREAMING_SNAKE_CASE
- **Interfaces**: PascalCase with suffix (`WorkflowListProps`)
## Utils Rules
- **Never create `utils.ts` for single consumer** - inline it
- **Create `utils.ts` when** 2+ files need the same helper
- **Check existing sources** before duplicating (`lib/` has many utilities)
- **Location**: `lib/` (app-wide) → `feature/utils/` (feature-scoped) → inline (single-use)

View File

@@ -1,48 +0,0 @@
---
paths:
- "apps/sim/**/*.tsx"
---
# Component Patterns
## Structure Order
```typescript
'use client' // Only if using hooks
// Imports (external → internal)
// Constants at module level
const CONFIG = { SPACING: 8 } as const
// Props interface
interface ComponentProps {
requiredProp: string
optionalProp?: boolean
}
export function Component({ requiredProp, optionalProp = false }: ComponentProps) {
// a. Refs
// b. External hooks (useParams, useRouter)
// c. Store hooks
// d. Custom hooks
// e. Local state
// f. useMemo
// g. useCallback
// h. useEffect
// i. Return JSX
}
```
## Rules
1. `'use client'` only when using React hooks
2. Always define props interface
3. Extract constants with `as const`
4. Semantic HTML (`aside`, `nav`, `article`)
5. Optional chain callbacks: `onAction?.(id)`
## Component Extraction
**Extract when:** 50+ lines, used in 2+ files, or has own state/logic
**Keep inline when:** < 10 lines, single use, purely presentational

View File

@@ -1,55 +0,0 @@
---
paths:
- "apps/sim/**/use-*.ts"
- "apps/sim/**/hooks/**/*.ts"
---
# Hook Patterns
## Structure
```typescript
interface UseFeatureProps {
id: string
onSuccess?: (result: Result) => void
}
export function useFeature({ id, onSuccess }: UseFeatureProps) {
// 1. Refs for stable dependencies
const idRef = useRef(id)
const onSuccessRef = useRef(onSuccess)
// 2. State
const [data, setData] = useState<Data | null>(null)
const [isLoading, setIsLoading] = useState(false)
// 3. Sync refs
useEffect(() => {
idRef.current = id
onSuccessRef.current = onSuccess
}, [id, onSuccess])
// 4. Operations (useCallback with empty deps when using refs)
const fetchData = useCallback(async () => {
setIsLoading(true)
try {
const result = await fetch(`/api/${idRef.current}`).then(r => r.json())
setData(result)
onSuccessRef.current?.(result)
} finally {
setIsLoading(false)
}
}, [])
return { data, isLoading, fetchData }
}
```
## Rules
1. Single responsibility per hook
2. Props interface required
3. Refs for stable callback dependencies
4. Wrap returned functions in useCallback
5. Always try/catch async operations
6. Track loading/error states

View File

@@ -1,62 +0,0 @@
---
paths:
- "apps/sim/**/*.ts"
- "apps/sim/**/*.tsx"
---
# Import Patterns
## Absolute Imports
**Always use absolute imports.** Never use relative imports.
```typescript
// ✓ Good
import { useWorkflowStore } from '@/stores/workflows/store'
import { Button } from '@/components/ui/button'
// ✗ Bad
import { useWorkflowStore } from '../../../stores/workflows/store'
```
## Barrel Exports
Use barrel exports (`index.ts`) when a folder has 3+ exports. Import from barrel, not individual files.
```typescript
// ✓ Good
import { Dashboard, Sidebar } from '@/app/workspace/[workspaceId]/logs/components'
// ✗ Bad
import { Dashboard } from '@/app/workspace/[workspaceId]/logs/components/dashboard/dashboard'
```
## No Re-exports
Do not re-export from non-barrel files. Import directly from the source.
```typescript
// ✓ Good - import from where it's declared
import { CORE_TRIGGER_TYPES } from '@/stores/logs/filters/types'
// ✗ Bad - re-exporting in utils.ts then importing from there
import { CORE_TRIGGER_TYPES } from '@/app/workspace/.../utils'
```
## Import Order
1. React/core libraries
2. External libraries
3. UI components (`@/components/emcn`, `@/components/ui`)
4. Utilities (`@/lib/...`)
5. Stores (`@/stores/...`)
6. Feature imports
7. CSS imports
## Type Imports
Use `type` keyword for type-only imports:
```typescript
import type { WorkflowLog } from '@/stores/logs/types'
```

View File

@@ -1,209 +0,0 @@
---
paths:
- "apps/sim/tools/**"
- "apps/sim/blocks/**"
- "apps/sim/triggers/**"
---
# Adding Integrations
## Overview
Adding a new integration typically requires:
1. **Tools** - API operations (`tools/{service}/`)
2. **Block** - UI component (`blocks/blocks/{service}.ts`)
3. **Icon** - SVG icon (`components/icons.tsx`)
4. **Trigger** (optional) - Webhooks/polling (`triggers/{service}/`)
Always look up the service's API docs first.
## 1. Tools (`tools/{service}/`)
```
tools/{service}/
├── index.ts # Export all tools
├── types.ts # Params/response types
├── {action}.ts # Individual tool (e.g., send_message.ts)
└── ...
```
**Tool file structure:**
```typescript
// tools/{service}/{action}.ts
import type { {Service}Params, {Service}Response } from '@/tools/{service}/types'
import type { ToolConfig } from '@/tools/types'
export const {service}{Action}Tool: ToolConfig<{Service}Params, {Service}Response> = {
id: '{service}_{action}',
name: '{Service} {Action}',
description: 'What this tool does',
version: '1.0.0',
oauth: { required: true, provider: '{service}' }, // if OAuth
params: { /* param definitions */ },
request: {
url: '/api/tools/{service}/{action}',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({ ...params }),
},
transformResponse: async (response) => {
const data = await response.json()
if (!data.success) throw new Error(data.error)
return { success: true, output: data.output }
},
outputs: { /* output definitions */ },
}
```
**Register in `tools/registry.ts`:**
```typescript
import { {service}{Action}Tool } from '@/tools/{service}'
// Add to registry object
{service}_{action}: {service}{Action}Tool,
```
## 2. Block (`blocks/blocks/{service}.ts`)
```typescript
import { {Service}Icon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import type { {Service}Response } from '@/tools/{service}/types'
export const {Service}Block: BlockConfig<{Service}Response> = {
type: '{service}',
name: '{Service}',
description: 'Short description',
longDescription: 'Detailed description',
category: 'tools',
bgColor: '#hexcolor',
icon: {Service}Icon,
subBlocks: [ /* see SubBlock Properties below */ ],
tools: {
access: ['{service}_{action}', ...],
config: {
tool: (params) => `{service}_${params.operation}`,
params: (params) => ({ ...params }),
},
},
inputs: { /* input definitions */ },
outputs: { /* output definitions */ },
}
```
### SubBlock Properties
```typescript
{
id: 'fieldName', // Unique identifier
title: 'Field Label', // UI label
type: 'short-input', // See SubBlock Types below
placeholder: 'Hint text',
required: true, // See Required below
condition: { ... }, // See Condition below
dependsOn: ['otherField'], // See DependsOn below
mode: 'basic', // 'basic' | 'advanced' | 'both' | 'trigger'
}
```
**SubBlock Types:** `short-input`, `long-input`, `dropdown`, `code`, `switch`, `slider`, `oauth-input`, `channel-selector`, `user-selector`, `file-upload`, etc.
### `condition` - Show/hide based on another field
```typescript
// Show when operation === 'send'
condition: { field: 'operation', value: 'send' }
// Show when operation is 'send' OR 'read'
condition: { field: 'operation', value: ['send', 'read'] }
// Show when operation !== 'send'
condition: { field: 'operation', value: 'send', not: true }
// Complex: NOT in list AND another condition
condition: {
field: 'operation',
value: ['list_channels', 'list_users'],
not: true,
and: { field: 'destinationType', value: 'dm', not: true }
}
```
### `required` - Field validation
```typescript
// Always required
required: true
// Conditionally required (same syntax as condition)
required: { field: 'operation', value: 'send' }
```
### `dependsOn` - Clear field when dependencies change
```typescript
// Clear when credential changes
dependsOn: ['credential']
// Clear when authMethod changes AND (credential OR botToken) changes
dependsOn: { all: ['authMethod'], any: ['credential', 'botToken'] }
```
### `mode` - When to show field
- `'basic'` - Only in basic mode (default UI)
- `'advanced'` - Only in advanced mode (manual input)
- `'both'` - Show in both modes (default)
- `'trigger'` - Only when block is used as trigger
**Register in `blocks/registry.ts`:**
```typescript
import { {Service}Block } from '@/blocks/blocks/{service}'
// Add to registry object (alphabetically)
{service}: {Service}Block,
```
## 3. Icon (`components/icons.tsx`)
```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 path from service's brand assets */}
</svg>
)
}
```
## 4. Trigger (`triggers/{service}/`) - Optional
```
triggers/{service}/
├── index.ts # Export all triggers
├── webhook.ts # Webhook handler
├── utils.ts # Shared utilities
└── {event}.ts # Specific event handlers
```
**Register in `triggers/registry.ts`:**
```typescript
import { {service}WebhookTrigger } from '@/triggers/{service}'
// Add to TRIGGER_REGISTRY
{service}_webhook: {service}WebhookTrigger,
```
## Checklist
- [ ] Look up API docs for the service
- [ ] Create `tools/{service}/types.ts` with proper types
- [ ] Create tool files for each operation
- [ ] Create `tools/{service}/index.ts` barrel export
- [ ] Register tools in `tools/registry.ts`
- [ ] Add icon to `components/icons.tsx`
- [ ] Create block in `blocks/blocks/{service}.ts`
- [ ] Register block in `blocks/registry.ts`
- [ ] (Optional) Create triggers in `triggers/{service}/`
- [ ] (Optional) Register triggers in `triggers/registry.ts`

View File

@@ -1,66 +0,0 @@
---
paths:
- "apps/sim/hooks/queries/**/*.ts"
---
# React Query Patterns
All React Query hooks live in `hooks/queries/`.
## Query Key Factory
Every query file defines a keys factory:
```typescript
export const entityKeys = {
all: ['entity'] as const,
list: (workspaceId?: string) => [...entityKeys.all, 'list', workspaceId ?? ''] as const,
detail: (id?: string) => [...entityKeys.all, 'detail', id ?? ''] as const,
}
```
## File Structure
```typescript
// 1. Query keys factory
// 2. Types (if needed)
// 3. Private fetch functions
// 4. Exported hooks
```
## Query Hook
```typescript
export function useEntityList(workspaceId?: string, options?: { enabled?: boolean }) {
return useQuery({
queryKey: entityKeys.list(workspaceId),
queryFn: () => fetchEntities(workspaceId as string),
enabled: Boolean(workspaceId) && (options?.enabled ?? true),
staleTime: 60 * 1000,
placeholderData: keepPreviousData,
})
}
```
## Mutation Hook
```typescript
export function useCreateEntity() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: async (variables) => { /* fetch POST */ },
onSuccess: () => queryClient.invalidateQueries({ queryKey: entityKeys.all }),
})
}
```
## Optimistic Updates
For optimistic mutations syncing with Zustand, use `createOptimisticMutationHandlers` from `@/hooks/queries/utils/optimistic-mutation`.
## Naming
- **Keys**: `entityKeys`
- **Query hooks**: `useEntity`, `useEntityList`
- **Mutation hooks**: `useCreateEntity`, `useUpdateEntity`
- **Fetch functions**: `fetchEntity` (private)

View File

@@ -1,71 +0,0 @@
---
paths:
- "apps/sim/**/store.ts"
- "apps/sim/**/stores/**/*.ts"
---
# Zustand Store Patterns
Stores live in `stores/`. Complex stores split into `store.ts` + `types.ts`.
## Basic Store
```typescript
import { create } from 'zustand'
import { devtools } from 'zustand/middleware'
import type { FeatureState } from '@/stores/feature/types'
const initialState = { items: [] as Item[], activeId: null as string | null }
export const useFeatureStore = create<FeatureState>()(
devtools(
(set, get) => ({
...initialState,
setItems: (items) => set({ items }),
addItem: (item) => set((state) => ({ items: [...state.items, item] })),
reset: () => set(initialState),
}),
{ name: 'feature-store' }
)
)
```
## Persisted Store
```typescript
import { create } from 'zustand'
import { persist } from 'zustand/middleware'
export const useFeatureStore = create<FeatureState>()(
persist(
(set) => ({
width: 300,
setWidth: (width) => set({ width }),
_hasHydrated: false,
setHasHydrated: (v) => set({ _hasHydrated: v }),
}),
{
name: 'feature-state',
partialize: (state) => ({ width: state.width }),
onRehydrateStorage: () => (state) => state?.setHasHydrated(true),
}
)
)
```
## Rules
1. Use `devtools` middleware (named stores)
2. Use `persist` only when data should survive reload
3. `partialize` to persist only necessary state
4. `_hasHydrated` pattern for persisted stores needing hydration tracking
5. Immutable updates only
6. `set((state) => ...)` when depending on previous state
7. Provide `reset()` action
## Outside React
```typescript
const items = useFeatureStore.getState().items
useFeatureStore.setState({ items: newItems })
```

View File

@@ -1,41 +0,0 @@
---
paths:
- "apps/sim/**/*.tsx"
- "apps/sim/**/*.css"
---
# Styling Rules
## Tailwind
1. **No inline styles** - Use Tailwind classes
2. **No duplicate dark classes** - Skip `dark:` when value matches light mode
3. **Exact values** - `text-[14px]`, `h-[26px]`
4. **Transitions** - `transition-colors` for interactive states
## Conditional Classes
```typescript
import { cn } from '@/lib/utils'
<div className={cn(
'base-classes',
isActive && 'active-classes',
disabled ? 'opacity-60' : 'hover:bg-accent'
)} />
```
## CSS Variables
For dynamic values (widths, heights) synced with stores:
```typescript
// In store
setWidth: (width) => {
set({ width })
document.documentElement.style.setProperty('--sidebar-width', `${width}px`)
}
// In component
<aside style={{ width: 'var(--sidebar-width)' }} />
```

View File

@@ -1,58 +0,0 @@
---
paths:
- "apps/sim/**/*.test.ts"
- "apps/sim/**/*.test.tsx"
---
# Testing Patterns
Use Vitest. Test files: `feature.ts``feature.test.ts`
## Structure
```typescript
/**
* @vitest-environment node
*/
import { databaseMock, loggerMock } from '@sim/testing'
import { describe, expect, it, vi } from 'vitest'
vi.mock('@sim/db', () => databaseMock)
vi.mock('@sim/logger', () => loggerMock)
import { myFunction } from '@/lib/feature'
describe('myFunction', () => {
beforeEach(() => vi.clearAllMocks())
it.concurrent('isolated tests run in parallel', () => { ... })
})
```
## @sim/testing Package
Always prefer over local mocks.
| 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. `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
## Hoisted Mocks
For mutable mock references:
```typescript
const mockFn = vi.hoisted(() => vi.fn())
vi.mock('@/lib/module', () => ({ myFunction: mockFn }))
mockFn.mockResolvedValue({ data: 'test' })
```

View File

@@ -1,21 +0,0 @@
---
paths:
- "apps/sim/**/*.ts"
- "apps/sim/**/*.tsx"
---
# TypeScript Rules
1. **No `any`** - Use proper types or `unknown` with type guards
2. **Props interface** - Always define for components
3. **Const assertions** - `as const` for constant objects/arrays
4. **Ref types** - Explicit: `useRef<HTMLDivElement>(null)`
5. **Type imports** - `import type { X }` for type-only imports
```typescript
// ✗ Bad
const handleClick = (e: any) => {}
// ✓ Good
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {}
```

View File

@@ -8,7 +8,7 @@ alwaysApply: true
You are a professional software engineer. All code must follow best practices: accurate, readable, clean, and efficient.
## Logging
Import `createLogger` from `@sim/logger`. Use `logger.info`, `logger.warn`, `logger.error` instead of `console.log`.
Import `createLogger` from `sim/logger`. Use `logger.info`, `logger.warn`, `logger.error` instead of `console.log`.
## Comments
Use TSDoc for documentation. No `====` separators. No non-TSDoc comments.

View File

@@ -44,7 +44,7 @@ services:
deploy:
resources:
limits:
memory: 1G
memory: 4G
environment:
- NODE_ENV=development
- DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio

View File

@@ -10,9 +10,6 @@ concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: false
permissions:
contents: read
jobs:
test-build:
name: Test and Build
@@ -30,11 +27,10 @@ jobs:
steps:
- name: Extract version from commit message
id: extract
env:
COMMIT_MSG: ${{ github.event.head_commit.message }}
run: |
COMMIT_MSG="${{ github.event.head_commit.message }}"
# Only tag versions on main branch
if [ "$GITHUB_REF" = "refs/heads/main" ] && [[ "$COMMIT_MSG" =~ ^(v[0-9]+\.[0-9]+\.[0-9]+): ]]; then
if [ "${{ github.ref }}" = "refs/heads/main" ] && [[ "$COMMIT_MSG" =~ ^(v[0-9]+\.[0-9]+\.[0-9]+): ]]; then
VERSION="${BASH_REMATCH[1]}"
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "is_release=true" >> $GITHUB_OUTPUT
@@ -281,30 +277,3 @@ jobs:
if: needs.check-docs-changes.outputs.docs_changed == 'true'
uses: ./.github/workflows/docs-embeddings.yml
secrets: inherit
# Create GitHub Release (only for version commits on main, after all builds complete)
create-release:
name: Create GitHub Release
runs-on: blacksmith-4vcpu-ubuntu-2404
needs: [create-ghcr-manifests, detect-version]
if: needs.detect-version.outputs.is_release == 'true'
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Create release
env:
GH_PAT: ${{ secrets.GITHUB_TOKEN }}
run: bun run scripts/create-single-release.ts ${{ needs.detect-version.outputs.version }}

View File

@@ -4,9 +4,6 @@ on:
workflow_call:
workflow_dispatch: # Allow manual triggering
permissions:
contents: read
jobs:
process-docs-embeddings:
name: Process Documentation Embeddings

View File

@@ -1,10 +1,11 @@
name: 'Auto-translate Documentation'
on:
schedule:
# Run every Sunday at midnight UTC
- cron: '0 0 * * 0'
workflow_dispatch: # Allow manual triggers
push:
branches: [ staging ]
paths:
- 'apps/docs/content/docs/en/**'
- 'apps/docs/i18n.json'
permissions:
contents: write
@@ -19,7 +20,6 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: staging
token: ${{ secrets.GH_PAT }}
fetch-depth: 0
@@ -68,11 +68,12 @@ jobs:
title: "feat(i18n): update translations"
body: |
## Summary
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
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 }}
**Workflow**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
## Type of Change
@@ -106,7 +107,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/weekly-${{ github.run_id }}
branch: auto-translate/staging-merge-${{ github.run_id }}
base: staging
labels: |
i18n
@@ -144,8 +145,6 @@ 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
@@ -154,7 +153,7 @@ jobs:
run: |
cd apps/docs
echo "## Translation Status Report" >> $GITHUB_STEP_SUMMARY
echo "**Weekly scheduled translation run**" >> $GITHUB_STEP_SUMMARY
echo "**Triggered by merge to staging branch**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
en_count=$(find content/docs/en -name "*.mdx" | wc -l)

View File

@@ -4,9 +4,6 @@ on:
workflow_call:
workflow_dispatch:
permissions:
contents: read
jobs:
migrate:
name: Apply Database Migrations

View File

@@ -6,9 +6,6 @@ on:
paths:
- 'packages/cli/**'
permissions:
contents: read
jobs:
publish-npm:
runs-on: blacksmith-4vcpu-ubuntu-2404

View File

@@ -6,9 +6,6 @@ on:
paths:
- 'packages/python-sdk/**'
permissions:
contents: write
jobs:
publish-pypi:
runs-on: blacksmith-4vcpu-ubuntu-2404

View File

@@ -6,9 +6,6 @@ on:
paths:
- 'packages/ts-sdk/**'
permissions:
contents: write
jobs:
publish-npm:
runs-on: blacksmith-4vcpu-ubuntu-2404

View File

@@ -4,9 +4,6 @@ on:
workflow_call:
workflow_dispatch:
permissions:
contents: read
jobs:
test-build:
name: Test and Build

View File

@@ -9,12 +9,12 @@
<p align="center">
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/sim.ai-6F3DFA" alt="Sim.ai"></a>
<a href="https://discord.gg/Hr4UWYEcTT" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
<a href="https://x.com/simdotai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/twitter/follow/simdotai?style=social" alt="Twitter"></a>
<a href="https://x.com/simdotai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/twitter/follow/simstudioai?style=social" alt="Twitter"></a>
<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://deepwiki.com/simstudioai/sim" target="_blank" rel="noopener noreferrer"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a> <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>
<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

View File

@@ -185,6 +185,11 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
tableOfContent={{
style: 'clerk',
enabled: true,
header: (
<div key='toc-header' className='mb-2 font-medium text-sm'>
On this page
</div>
),
footer: <TOCFooter />,
single: false,
}}

View File

@@ -3,13 +3,13 @@ import { defineI18nUI } from 'fumadocs-ui/i18n'
import { DocsLayout } from 'fumadocs-ui/layouts/docs'
import { RootProvider } from 'fumadocs-ui/provider/next'
import { Geist_Mono, Inter } from 'next/font/google'
import Image from 'next/image'
import {
SidebarFolder,
SidebarItem,
SidebarSeparator,
} from '@/components/docs-layout/sidebar-components'
import { Navbar } from '@/components/navbar/navbar'
import { SimLogoFull } from '@/components/ui/sim-logo'
import { i18n } from '@/lib/i18n'
import { source } from '@/lib/source'
import '../global.css'
@@ -102,7 +102,16 @@ export default async function Layout({ children, params }: LayoutProps) {
<DocsLayout
tree={source.pageTree[lang]}
nav={{
title: <SimLogoFull className='h-7 w-auto' />,
title: (
<Image
src='/static/logo.png'
alt='Sim'
width={72}
height={28}
className='h-7 w-auto'
priority
/>
),
}}
sidebar={{
defaultOpenLevel: 0,

View File

@@ -33,41 +33,15 @@ async function loadGoogleFont(font: string, weights: string, text: string): Prom
throw new Error('Failed to load font data')
}
/**
* Sim logo with icon and "Sim" text for OG image.
*/
function SimLogoFull() {
return (
<svg height='28' viewBox='720 440 1020 320' fill='none'>
{/* Green icon - top left shape with cutout */}
<path
fillRule='evenodd'
clipRule='evenodd'
d='M875.791 577.171C875.791 581.922 873.911 586.483 870.576 589.842L870.098 590.323C866.764 593.692 862.234 595.575 857.517 595.575H750.806C740.978 595.575 733 603.6 733 613.498V728.902C733 738.799 740.978 746.826 750.806 746.826H865.382C875.209 746.826 883.177 738.799 883.177 728.902V620.853C883.177 616.448 884.912 612.222 888.008 609.104C891.093 605.997 895.29 604.249 899.664 604.249H1008.16C1017.99 604.249 1025.96 596.224 1025.96 586.327V470.923C1025.96 461.025 1017.99 453 1008.16 453H893.586C883.759 453 875.791 461.025 875.791 470.923V577.171ZM910.562 477.566H991.178C996.922 477.566 1001.57 482.254 1001.57 488.029V569.22C1001.57 574.995 996.922 579.683 991.178 579.683H910.562C904.828 579.683 900.173 574.995 900.173 569.22V488.029C900.173 482.254 904.828 477.566 910.562 477.566Z'
fill='#33C482'
/>
{/* Green icon - bottom right square */}
<path
d='M1008.3 624.59H923.113C912.786 624.59 904.414 633.022 904.414 643.423V728.171C904.414 738.572 912.786 747.004 923.113 747.004H1008.3C1018.63 747.004 1027 738.572 1027 728.171V643.423C1027 633.022 1018.63 624.59 1008.3 624.59Z'
fill='#33C482'
/>
{/* "Sim" text - white for dark background */}
<path
d='M1210.54 515.657C1226.65 515.657 1240.59 518.51 1252.31 524.257H1252.31C1264.3 529.995 1273.63 538.014 1280.26 548.319H1280.26C1287.19 558.635 1290.78 570.899 1291.08 585.068L1291.1 586.089H1249.11L1249.09 585.115C1248.8 574.003 1245.18 565.493 1238.32 559.451C1231.45 553.399 1221.79 550.308 1209.21 550.308C1196.3 550.308 1186.48 553.113 1179.61 558.588C1172.76 564.046 1169.33 571.499 1169.33 581.063C1169.33 588.092 1171.88 593.978 1177.01 598.783C1182.17 603.618 1189.99 607.399 1200.56 610.061H1200.56L1238.77 619.451C1257.24 623.65 1271.21 630.571 1280.57 640.293L1281.01 640.739C1290.13 650.171 1294.64 662.97 1294.64 679.016C1294.64 692.923 1290.88 705.205 1283.34 715.822L1283.33 715.834C1275.81 726.134 1265.44 734.14 1252.26 739.866L1252.25 739.871C1239.36 745.302 1224.12 748 1206.54 748C1180.9 748 1160.36 741.696 1145.02 728.984C1129.67 716.258 1122 699.269 1122 678.121V677.121H1163.99V678.121C1163.99 688.869 1167.87 697.367 1175.61 703.722L1176.34 704.284C1184.04 709.997 1194.37 712.902 1207.43 712.902C1222.13 712.902 1233.3 710.087 1241.07 704.588C1248.8 698.812 1252.64 691.21 1252.64 681.699C1252.64 674.769 1250.5 669.057 1246.25 664.49L1246.23 664.478L1246.22 664.464C1242.28 659.929 1234.83 656.119 1223.64 653.152L1185.43 644.208L1185.42 644.204C1166.05 639.407 1151.49 632.035 1141.83 622.012L1141.83 622.006L1141.82 622C1132.43 611.94 1127.78 598.707 1127.78 582.405C1127.78 568.81 1131.23 556.976 1138.17 546.949L1138.18 546.941L1138.19 546.933C1145.41 536.936 1155.18 529.225 1167.48 523.793L1167.48 523.79C1180.07 518.36 1194.43 515.657 1210.54 515.657ZM1323.39 521.979C1331.68 525.008 1337.55 526.482 1343.51 526.482C1349.48 526.482 1355.64 525.005 1364.49 521.973L1365.82 521.52V742.633H1322.05V521.489L1323.39 521.979ZM1642.01 515.657C1667.11 515.657 1686.94 523.031 1701.39 537.876C1715.83 552.716 1723 572.968 1723 598.507V742.633H1680.12V608.794C1680.12 591.666 1675.72 578.681 1667.07 569.681L1667.06 569.669L1667.04 569.656C1658.67 560.359 1647.26 555.675 1632.68 555.675C1622.47 555.675 1613.47 558.022 1605.64 562.69L1605.63 562.696C1598.11 567.064 1592.17 573.475 1587.8 581.968C1583.44 590.448 1581.25 600.424 1581.25 611.925V742.633H1537.92V608.347C1537.92 591.208 1533.67 578.376 1525.31 569.68L1525.31 569.674L1525.3 569.668C1516.93 560.664 1505.52 556.122 1490.93 556.122C1480.72 556.122 1471.72 558.469 1463.89 563.138L1463.88 563.144C1456.36 567.511 1450.41 573.922 1446.05 582.415L1446.05 582.422L1446.04 582.428C1441.69 590.602 1439.5 600.423 1439.5 611.925V742.633H1395.72V521.919H1435.05V554.803C1439.92 544.379 1447.91 535.465 1458.37 528.356C1470.71 519.875 1485.58 515.657 1502.93 515.657C1522.37 515.657 1538.61 520.931 1551.55 531.538C1560.38 538.771 1567.1 547.628 1571.72 558.091C1576.05 547.619 1582.83 538.757 1592.07 531.524C1605.61 520.93 1622.28 515.657 1642.01 515.657ZM1343.49 452C1351.45 452 1358.23 454.786 1363.75 460.346C1369.27 465.905 1372.04 472.721 1372.04 480.73C1372.04 488.452 1369.27 495.254 1363.77 501.096L1363.76 501.105L1363.75 501.115C1358.23 506.675 1351.45 509.461 1343.49 509.461C1335.81 509.461 1329.05 506.669 1323.25 501.134L1323.23 501.115L1323.21 501.096C1317.71 495.254 1314.94 488.452 1314.94 480.73C1314.94 472.721 1317.7 465.905 1323.23 460.346L1323.24 460.337L1323.25 460.327C1329.05 454.792 1335.81 452 1343.49 452Z'
fill='#fafafa'
/>
</svg>
)
}
/**
* Generates dynamic Open Graph images for documentation pages.
* Style matches Cursor docs: dark background, title at top, logo bottom-left, domain bottom-right.
*/
export async function GET(request: NextRequest) {
const { searchParams } = new URL(request.url)
const title = searchParams.get('title') || 'Documentation'
const baseUrl = new URL(request.url).origin
const allText = `${title}docs.sim.ai`
const fontData = await loadGoogleFont('Geist', '400;500;600', allText)
@@ -78,39 +52,84 @@ export async function GET(request: NextRequest) {
width: '100%',
display: 'flex',
flexDirection: 'column',
justifyContent: 'space-between',
padding: '56px 64px',
background: '#121212', // Dark mode background matching docs (hsla 0, 0%, 7%)
background: '#0c0c0c',
position: 'relative',
fontFamily: 'Geist',
}}
>
{/* Title at top */}
<span
{/* Base gradient layer - subtle purple tint across the entire image */}
<div
style={{
fontSize: getTitleFontSize(title),
fontWeight: 500,
color: '#fafafa', // Light text matching docs
lineHeight: 1.2,
letterSpacing: '-0.02em',
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
background:
'radial-gradient(ellipse 150% 100% at 50% 100%, rgba(88, 28, 135, 0.15) 0%, rgba(88, 28, 135, 0.08) 25%, rgba(88, 28, 135, 0.03) 50%, transparent 80%)',
display: 'flex',
}}
>
{title}
</span>
/>
{/* Footer: icon left, domain right */}
{/* Secondary glow - adds depth without harsh edges */}
<div
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
background:
'radial-gradient(ellipse 100% 80% at 80% 90%, rgba(112, 31, 252, 0.12) 0%, rgba(112, 31, 252, 0.04) 40%, transparent 70%)',
display: 'flex',
}}
/>
{/* Top darkening - creates natural vignette */}
<div
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
background:
'linear-gradient(180deg, rgba(0, 0, 0, 0.3) 0%, transparent 40%, transparent 100%)',
display: 'flex',
}}
/>
{/* Content */}
<div
style={{
display: 'flex',
flexDirection: 'column',
padding: '56px 72px',
height: '100%',
justifyContent: 'space-between',
alignItems: 'center',
width: '100%',
}}
>
<SimLogoFull />
{/* Logo */}
<img src={`${baseUrl}/static/logo.png`} alt='sim' height={32} />
{/* Title */}
<span
style={{
fontSize: getTitleFontSize(title),
fontWeight: 600,
color: '#ffffff',
lineHeight: 1.1,
letterSpacing: '-0.02em',
}}
>
{title}
</span>
{/* Footer */}
<span
style={{
fontSize: 20,
fontWeight: 400,
fontWeight: 500,
color: '#71717a',
}}
>

View File

@@ -86,112 +86,27 @@ export async function GET(request: NextRequest) {
)
.limit(candidateLimit)
const knownLocales = ['en', 'es', 'fr', 'de', 'ja', 'zh']
const seenIds = new Set<string>()
const mergedResults = []
const vectorRankMap = new Map<string, number>()
vectorResults.forEach((r, idx) => vectorRankMap.set(r.chunkId, idx + 1))
const keywordRankMap = new Map<string, number>()
keywordResults.forEach((r, idx) => keywordRankMap.set(r.chunkId, idx + 1))
const allChunkIds = new Set([
...vectorResults.map((r) => r.chunkId),
...keywordResults.map((r) => r.chunkId),
])
const k = 60
type ResultWithRRF = (typeof vectorResults)[0] & { rrfScore: number }
const scoredResults: ResultWithRRF[] = []
for (const chunkId of allChunkIds) {
const vectorRank = vectorRankMap.get(chunkId) ?? Number.POSITIVE_INFINITY
const keywordRank = keywordRankMap.get(chunkId) ?? Number.POSITIVE_INFINITY
const rrfScore = 1 / (k + vectorRank) + 1 / (k + keywordRank)
const result =
vectorResults.find((r) => r.chunkId === chunkId) ||
keywordResults.find((r) => r.chunkId === chunkId)
if (result) {
scoredResults.push({ ...result, rrfScore })
for (let i = 0; i < Math.max(vectorResults.length, keywordResults.length); i++) {
if (i < vectorResults.length && !seenIds.has(vectorResults[i].chunkId)) {
mergedResults.push(vectorResults[i])
seenIds.add(vectorResults[i].chunkId)
}
if (i < keywordResults.length && !seenIds.has(keywordResults[i].chunkId)) {
mergedResults.push(keywordResults[i])
seenIds.add(keywordResults[i].chunkId)
}
}
scoredResults.sort((a, b) => b.rrfScore - a.rrfScore)
const localeFilteredResults = scoredResults.filter((result) => {
const firstPart = result.sourceDocument.split('/')[0]
if (knownLocales.includes(firstPart)) {
return firstPart === locale
}
return locale === 'en'
})
const queryLower = query.toLowerCase()
const getTitleBoost = (result: ResultWithRRF): number => {
const fileName = result.sourceDocument
.replace('.mdx', '')
.split('/')
.pop()
?.toLowerCase()
?.replace(/_/g, ' ')
if (fileName === queryLower) return 0.01
if (fileName?.includes(queryLower)) return 0.005
return 0
}
localeFilteredResults.sort((a, b) => {
return b.rrfScore + getTitleBoost(b) - (a.rrfScore + getTitleBoost(a))
})
const pageMap = new Map<string, ResultWithRRF>()
for (const result of localeFilteredResults) {
const pageKey = result.sourceDocument
const existing = pageMap.get(pageKey)
if (!existing || result.rrfScore > existing.rrfScore) {
pageMap.set(pageKey, result)
}
}
const deduplicatedResults = Array.from(pageMap.values())
.sort((a, b) => b.rrfScore + getTitleBoost(b) - (a.rrfScore + getTitleBoost(a)))
.slice(0, limit)
const searchResults = deduplicatedResults.map((result) => {
const filteredResults = mergedResults.slice(0, limit)
const searchResults = filteredResults.map((result) => {
const title = result.headerText || result.sourceDocument.replace('.mdx', '')
const pathParts = result.sourceDocument
.replace('.mdx', '')
.split('/')
.filter((part) => part !== 'index' && !knownLocales.includes(part))
.map((part) => {
return part
.replace(/_/g, ' ')
.split(' ')
.map((word) => {
const acronyms = [
'api',
'mcp',
'sdk',
'url',
'http',
'json',
'xml',
'html',
'css',
'ai',
]
if (acronyms.includes(word.toLowerCase())) {
return word.toUpperCase()
}
return word.charAt(0).toUpperCase() + word.slice(1)
})
.join(' ')
})
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
return {
id: result.chunkId,

View File

@@ -9,20 +9,11 @@ body {
}
@theme {
--color-fd-primary: #33c482; /* Green from Sim logo */
--color-fd-primary: #802fff; /* Purple from control-bar component */
--font-geist-sans: var(--font-geist-sans);
--font-geist-mono: var(--font-geist-mono);
}
/* Ensure primary color is set in both light and dark modes */
:root {
--color-fd-primary: #33c482;
}
.dark {
--color-fd-primary: #33c482;
}
/* Font family utilities */
.font-sans {
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
@@ -43,7 +34,7 @@ body {
:root {
--fd-border: transparent !important;
--fd-border-sidebar: transparent !important;
--fd-nav-height: 65px; /* Custom navbar height (h-16 = 64px + 1px border) */
--fd-nav-height: 64px; /* Custom navbar height (h-16 = 4rem = 64px) */
/* Content container width used to center main content */
--spacing-fd-container: 1400px;
/* Edge gutter = leftover space on each side of centered container */
@@ -128,28 +119,15 @@ aside#nd-sidebar {
}
}
/* Hide TOC popover on tablet/medium screens (768px - 1279px) */
/* Keeps it visible on mobile (<768px) for easy navigation */
/* Desktop (>=1280px) already hides it via fumadocs xl:hidden */
@media (min-width: 768px) and (max-width: 1279px) {
#nd-docs-layout {
--fd-toc-popover-height: 0px !important;
}
[data-toc-popover] {
display: none !important;
}
}
/* Desktop only: Apply custom navbar offset, sidebar width and margin offsets */
/* On mobile, let fumadocs handle the layout natively */
@media (min-width: 1024px) {
:root {
--fd-banner-height: 65px !important; /* 64px navbar + 1px border */
--fd-banner-height: 64px !important;
}
#nd-docs-layout {
--fd-docs-height: calc(100dvh - 65px) !important; /* 64px navbar + 1px border */
--fd-docs-height: calc(100dvh - 64px) !important;
--fd-sidebar-width: 300px !important;
margin-left: var(--sidebar-offset) !important;
margin-right: var(--toc-offset) !important;
@@ -236,19 +214,19 @@ html:not(.dark) #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*
letter-spacing: 0.05em !important;
}
/* Override active state */
/* Override active state (NO PURPLE) */
#nd-sidebar a[data-active="true"],
#nd-sidebar button[data-active="true"],
#nd-sidebar a.bg-fd-primary\/10,
#nd-sidebar a.text-fd-primary,
#nd-sidebar a[class*="bg-fd-primary"],
#nd-sidebar a[class*="text-fd-primary"],
/* Override custom sidebar green classes */
/* Override custom sidebar purple classes */
#nd-sidebar
a.bg-emerald-50\/80,
#nd-sidebar a.text-emerald-600,
#nd-sidebar a[class*="bg-emerald"],
#nd-sidebar a[class*="text-emerald"] {
a.bg-purple-50\/80,
#nd-sidebar a.text-purple-600,
#nd-sidebar a[class*="bg-purple"],
#nd-sidebar a[class*="text-purple"] {
background-image: none !important;
}
@@ -259,10 +237,10 @@ html.dark #nd-sidebar a.bg-fd-primary\/10,
html.dark #nd-sidebar a.text-fd-primary,
html.dark #nd-sidebar a[class*="bg-fd-primary"],
html.dark #nd-sidebar a[class*="text-fd-primary"],
html.dark #nd-sidebar a.bg-emerald-50\/80,
html.dark #nd-sidebar a.text-emerald-600,
html.dark #nd-sidebar a[class*="bg-emerald"],
html.dark #nd-sidebar a[class*="text-emerald"] {
html.dark #nd-sidebar a.bg-purple-50\/80,
html.dark #nd-sidebar a.text-purple-600,
html.dark #nd-sidebar a[class*="bg-purple"],
html.dark #nd-sidebar a[class*="text-purple"] {
background-color: rgba(255, 255, 255, 0.15) !important;
color: rgba(255, 255, 255, 1) !important;
}
@@ -274,10 +252,10 @@ html:not(.dark) #nd-sidebar a.bg-fd-primary\/10,
html:not(.dark) #nd-sidebar a.text-fd-primary,
html:not(.dark) #nd-sidebar a[class*="bg-fd-primary"],
html:not(.dark) #nd-sidebar a[class*="text-fd-primary"],
html:not(.dark) #nd-sidebar a.bg-emerald-50\/80,
html:not(.dark) #nd-sidebar a.text-emerald-600,
html:not(.dark) #nd-sidebar a[class*="bg-emerald"],
html:not(.dark) #nd-sidebar a[class*="text-emerald"] {
html:not(.dark) #nd-sidebar a.bg-purple-50\/80,
html:not(.dark) #nd-sidebar a.text-purple-600,
html:not(.dark) #nd-sidebar a[class*="bg-purple"],
html:not(.dark) #nd-sidebar a[class*="text-purple"] {
background-color: rgba(0, 0, 0, 0.07) !important;
color: rgba(0, 0, 0, 0.9) !important;
}
@@ -295,8 +273,8 @@ html:not(.dark) #nd-sidebar button:hover:not([data-active="true"]) {
}
/* Dark mode - ensure active/selected items don't change on hover */
html.dark #nd-sidebar a.bg-emerald-50\/80:hover,
html.dark #nd-sidebar a[class*="bg-emerald"]:hover,
html.dark #nd-sidebar a.bg-purple-50\/80:hover,
html.dark #nd-sidebar a[class*="bg-purple"]:hover,
html.dark #nd-sidebar a[data-active="true"]:hover,
html.dark #nd-sidebar button[data-active="true"]:hover {
background-color: rgba(255, 255, 255, 0.15) !important;
@@ -304,8 +282,8 @@ html.dark #nd-sidebar button[data-active="true"]:hover {
}
/* Light mode - ensure active/selected items don't change on hover */
html:not(.dark) #nd-sidebar a.bg-emerald-50\/80:hover,
html:not(.dark) #nd-sidebar a[class*="bg-emerald"]:hover,
html:not(.dark) #nd-sidebar a.bg-purple-50\/80:hover,
html:not(.dark) #nd-sidebar a[class*="bg-purple"]:hover,
html:not(.dark) #nd-sidebar a[data-active="true"]:hover,
html:not(.dark) #nd-sidebar button[data-active="true"]:hover {
background-color: rgba(0, 0, 0, 0.07) !important;
@@ -377,24 +355,16 @@ aside[data-sidebar] > *:not([data-sidebar-viewport]) {
button[aria-label="Toggle Sidebar"],
button[aria-label="Collapse Sidebar"],
/* Hide nav title/logo in sidebar on desktop - target all possible locations */
/* Lower specificity selectors first (attribute selectors) */
[data-sidebar-header],
[data-sidebar] [data-title],
aside[data-sidebar] a[href="/"],
aside[data-sidebar] a[href="/"] img,
aside[data-sidebar] > a:first-child,
aside[data-sidebar] > div > a:first-child,
aside[data-sidebar] img[alt="Sim"],
aside[data-sidebar] svg[aria-label="Sim"],
/* Higher specificity selectors (ID selectors) */
#nd-sidebar
a[href="/"],
#nd-sidebar a[href="/"] img,
#nd-sidebar a[href="/"] svg,
[data-sidebar-header],
[data-sidebar] [data-title],
#nd-sidebar > a:first-child,
#nd-sidebar > div:first-child > a:first-child,
#nd-sidebar img[alt="Sim"],
#nd-sidebar svg[aria-label="Sim"],
/* Hide theme toggle at bottom of sidebar on desktop */
#nd-sidebar
> footer,
@@ -532,15 +502,6 @@ pre code .line {
color: var(--color-fd-primary);
}
/* ============================================
TOC (Table of Contents) Styling
============================================ */
/* Remove the thin border-left on nested TOC items (keeps main indicator only) */
#nd-toc a[style*="padding-inline-start"] {
border-left: none !important;
}
/* Add bottom spacing to prevent abrupt page endings */
[data-content] {
padding-top: 1.5rem !important;

View File

@@ -44,7 +44,7 @@ export function SidebarItem({ item }: { item: Item }) {
'lg:text-gray-600 lg:dark:text-gray-400',
!active && 'lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40',
active &&
'lg:bg-emerald-50/80 lg:font-normal lg:text-emerald-600 lg:dark:bg-emerald-900/15 lg:dark:text-emerald-400'
'lg:bg-purple-50/80 lg:font-normal lg:text-purple-600 lg:dark:bg-purple-900/15 lg:dark:text-purple-400'
)}
>
{item.name}
@@ -79,7 +79,7 @@ export function SidebarFolder({ item, children }: { item: Folder; children: Reac
'lg:text-gray-600 lg:dark:text-gray-400',
!active && 'lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40',
active &&
'lg:bg-emerald-50/80 lg:font-normal lg:text-emerald-600 lg:dark:bg-emerald-900/15 lg:dark:text-emerald-400'
'lg:bg-purple-50/80 lg:font-normal lg:text-purple-600 lg:dark:bg-purple-900/15 lg:dark:text-purple-400'
)}
>
{item.name}
@@ -104,7 +104,7 @@ export function SidebarFolder({ item, children }: { item: Folder; children: Reac
'lg:text-gray-800 lg:dark:text-gray-200',
!active && 'lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40',
active &&
'lg:bg-emerald-50/80 lg:text-emerald-600 lg:dark:bg-emerald-900/15 lg:dark:text-emerald-400'
'lg:bg-purple-50/80 lg:text-purple-600 lg:dark:bg-purple-900/15 lg:dark:text-purple-400'
)}
>
{item.name}

View File

@@ -23,7 +23,7 @@ export function TOCFooter() {
rel='noopener noreferrer'
onMouseEnter={() => setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
className='group mt-2 inline-flex h-8 w-fit items-center justify-center gap-1 whitespace-nowrap rounded-[10px] border border-[#2AAD6C] bg-gradient-to-b from-[#3ED990] to-[#2AAD6C] px-3 pr-[10px] pl-[12px] font-medium text-sm text-white shadow-[inset_0_2px_4px_0_#5EE8A8] outline-none transition-all hover:shadow-lg focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50'
className='group mt-2 inline-flex h-8 w-fit items-center justify-center gap-1 whitespace-nowrap rounded-[10px] border border-[#6F3DFA] bg-gradient-to-b from-[#8357FF] to-[#6F3DFA] px-3 pr-[10px] pl-[12px] font-medium text-sm text-white shadow-[inset_0_2px_4px_0_#9B77FF] outline-none transition-all hover:shadow-lg focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50'
aria-label='Get started with Sim - Sign up for free'
>
<span>Get started</span>

File diff suppressed because one or more lines are too long

View File

@@ -1,9 +1,9 @@
'use client'
import Image from 'next/image'
import Link from 'next/link'
import { LanguageDropdown } from '@/components/ui/language-dropdown'
import { SearchTrigger } from '@/components/ui/search-trigger'
import { SimLogoFull } from '@/components/ui/sim-logo'
import { ThemeToggle } from '@/components/ui/theme-toggle'
export function Navbar() {
@@ -27,7 +27,13 @@ export function Navbar() {
{/* Left cluster: logo */}
<div className='flex items-center'>
<Link href='/' className='flex min-w-[100px] items-center'>
<SimLogoFull className='h-7 w-auto' />
<Image
src='/static/logo.png'
alt='Sim'
width={72}
height={28}
className='h-7 w-auto'
/>
</Link>
</div>

View File

@@ -1,87 +0,0 @@
'use client'
import { useState } from 'react'
import { cn, getAssetUrl } from '@/lib/utils'
import { Lightbox } from './lightbox'
interface ActionImageProps {
src: string
alt: string
enableLightbox?: boolean
}
interface ActionVideoProps {
src: string
alt: string
enableLightbox?: boolean
}
export function ActionImage({ src, alt, enableLightbox = true }: ActionImageProps) {
const [isLightboxOpen, setIsLightboxOpen] = useState(false)
const handleClick = () => {
if (enableLightbox) {
setIsLightboxOpen(true)
}
}
return (
<>
<img
src={src}
alt={alt}
onClick={handleClick}
className={cn(
'inline-block w-full max-w-[200px] rounded border border-neutral-200 dark:border-neutral-700',
enableLightbox && 'cursor-pointer transition-opacity hover:opacity-90'
)}
/>
{enableLightbox && (
<Lightbox
isOpen={isLightboxOpen}
onClose={() => setIsLightboxOpen(false)}
src={src}
alt={alt}
type='image'
/>
)}
</>
)
}
export function ActionVideo({ src, alt, enableLightbox = true }: ActionVideoProps) {
const [isLightboxOpen, setIsLightboxOpen] = useState(false)
const resolvedSrc = getAssetUrl(src)
const handleClick = () => {
if (enableLightbox) {
setIsLightboxOpen(true)
}
}
return (
<>
<video
src={resolvedSrc}
autoPlay
loop
muted
playsInline
onClick={handleClick}
className={cn(
'inline-block w-full max-w-[200px] rounded border border-neutral-200 dark:border-neutral-700',
enableLightbox && 'cursor-pointer transition-opacity hover:opacity-90'
)}
/>
{enableLightbox && (
<Lightbox
isOpen={isLightboxOpen}
onClose={() => setIsLightboxOpen(false)}
src={src}
alt={alt}
type='video'
/>
)}
</>
)
}

View File

@@ -55,7 +55,6 @@ import {
JiraIcon,
JiraServiceManagementIcon,
KalshiIcon,
LangsmithIcon,
LemlistIcon,
LinearIcon,
LinkedInIcon,
@@ -84,11 +83,9 @@ import {
PolymarketIcon,
PostgresIcon,
PosthogIcon,
PulseIcon,
QdrantIcon,
RDSIcon,
RedditIcon,
ReductoIcon,
ResendIcon,
S3Icon,
SalesforceIcon,
@@ -101,6 +98,7 @@ import {
ShopifyIcon,
SlackIcon,
SmtpIcon,
SpotifyIcon,
SQSIcon,
SshIcon,
STTIcon,
@@ -109,8 +107,6 @@ import {
SupabaseIcon,
TavilyIcon,
TelegramIcon,
TextractIcon,
TinybirdIcon,
TranslateIcon,
TrelloIcon,
TTSIcon,
@@ -143,7 +139,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
calendly: CalendlyIcon,
circleback: CirclebackIcon,
clay: ClayIcon,
confluence_v2: ConfluenceIcon,
confluence: ConfluenceIcon,
cursor_v2: CursorIcon,
datadog: DatadogIcon,
discord: DiscordIcon,
@@ -153,7 +149,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
elasticsearch: ElasticsearchIcon,
elevenlabs: ElevenLabsIcon,
exa: ExaAIIcon,
file_v2: DocumentIcon,
file: DocumentIcon,
firecrawl: FirecrawlIcon,
fireflies: FirefliesIcon,
github_v2: GithubIcon,
@@ -165,7 +161,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
google_forms: GoogleFormsIcon,
google_groups: GoogleGroupsIcon,
google_search: GoogleIcon,
google_sheets_v2: GoogleSheetsIcon,
google_sheets: GoogleSheetsIcon,
google_slides: GoogleSlidesIcon,
google_vault: GoogleVaultIcon,
grafana: GrafanaIcon,
@@ -181,9 +177,8 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
jina: JinaAIIcon,
jira: JiraIcon,
jira_service_management: JiraServiceManagementIcon,
kalshi_v2: KalshiIcon,
kalshi: KalshiIcon,
knowledge: PackageSearchIcon,
langsmith: LangsmithIcon,
lemlist: LemlistIcon,
linear: LinearIcon,
linkedin: LinkedInIcon,
@@ -192,10 +187,10 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
mailgun: MailgunIcon,
mem0: Mem0Icon,
memory: BrainIcon,
microsoft_excel_v2: MicrosoftExcelIcon,
microsoft_excel: MicrosoftExcelIcon,
microsoft_planner: MicrosoftPlannerIcon,
microsoft_teams: MicrosoftTeamsIcon,
mistral_parse_v2: MistralIcon,
mistral_parse: MistralIcon,
mongodb: MongoDBIcon,
mysql: MySQLIcon,
neo4j: Neo4jIcon,
@@ -210,11 +205,9 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
polymarket: PolymarketIcon,
postgresql: PostgresIcon,
posthog: PosthogIcon,
pulse: PulseIcon,
qdrant: QdrantIcon,
rds: RDSIcon,
reddit: RedditIcon,
reducto: ReductoIcon,
resend: ResendIcon,
s3: S3Icon,
salesforce: SalesforceIcon,
@@ -228,6 +221,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
shopify: ShopifyIcon,
slack: SlackIcon,
smtp: SmtpIcon,
spotify: SpotifyIcon,
sqs: SQSIcon,
ssh: SshIcon,
stagehand: StagehandIcon,
@@ -236,15 +230,13 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
supabase: SupabaseIcon,
tavily: TavilyIcon,
telegram: TelegramIcon,
textract: TextractIcon,
tinybird: TinybirdIcon,
translate: TranslateIcon,
trello: TrelloIcon,
tts: TTSIcon,
twilio_sms: TwilioIcon,
twilio_voice: TwilioIcon,
typeform: TypeformIcon,
video_generator_v2: VideoIcon,
video_generator: VideoIcon,
vision: EyeIcon,
wealthbox: WealthboxIcon,
webflow: WebflowIcon,

View File

@@ -1,9 +1,8 @@
'use client'
import { useEffect, useState } from 'react'
import { Check, ChevronDown } from 'lucide-react'
import { Check, ChevronRight } from 'lucide-react'
import { useParams, usePathname, useRouter } from 'next/navigation'
import { cn } from '@/lib/utils'
const languages = {
en: { name: 'English', flag: '🇺🇸' },
@@ -16,7 +15,6 @@ const languages = {
export function LanguageDropdown() {
const [isOpen, setIsOpen] = useState(false)
const [hoveredIndex, setHoveredIndex] = useState<number>(-1)
const pathname = usePathname()
const params = useParams()
const router = useRouter()
@@ -73,15 +71,6 @@ export function LanguageDropdown() {
return () => window.removeEventListener('keydown', onKey)
}, [isOpen])
// Reset hovered index when popover closes
useEffect(() => {
if (!isOpen) {
setHoveredIndex(-1)
}
}, [isOpen])
const languageEntries = Object.entries(languages)
return (
<div className='relative'>
<button
@@ -93,14 +82,14 @@ export function LanguageDropdown() {
aria-haspopup='listbox'
aria-expanded={isOpen}
aria-controls='language-menu'
className='flex cursor-pointer items-center gap-1.5 rounded-[6px] px-3 py-2 font-normal text-[0.9375rem] text-foreground/60 leading-[1.4] transition-colors hover:bg-foreground/8 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring'
className='flex cursor-pointer items-center gap-1.5 rounded-xl px-3 py-2 font-normal text-[0.9375rem] text-foreground/60 leading-[1.4] transition-colors hover:bg-foreground/8 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring'
style={{
fontFamily:
'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
}}
>
<span>{languages[currentLang as keyof typeof languages]?.name}</span>
<ChevronDown className={cn('h-3.5 w-3.5 transition-transform', isOpen && 'rotate-180')} />
<ChevronRight className='h-3.5 w-3.5' />
</button>
{isOpen && (
@@ -109,37 +98,29 @@ export function LanguageDropdown() {
<div
id='language-menu'
role='listbox'
className='absolute top-full right-0 z-[1001] mt-2 max-h-[400px] min-w-[160px] overflow-auto rounded-[6px] bg-white px-[6px] py-[6px] shadow-lg dark:bg-neutral-900'
className='absolute top-full right-0 z-[1001] mt-1 max-h-[75vh] w-56 overflow-auto rounded-xl border border-border/50 bg-white shadow-2xl md:w-44 md:bg-background/95 md:backdrop-blur-md dark:bg-neutral-950 md:dark:bg-background/95'
>
{languageEntries.map(([code, lang], index) => {
const isSelected = currentLang === code
const isHovered = hoveredIndex === index
return (
<button
key={code}
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
handleLanguageChange(code)
}}
onMouseEnter={() => setHoveredIndex(index)}
onMouseLeave={() => setHoveredIndex(-1)}
role='option'
aria-selected={isSelected}
className={cn(
'flex h-[26px] w-full min-w-0 cursor-pointer items-center gap-[8px] rounded-[6px] px-[6px] text-[13px] transition-colors',
'text-neutral-700 dark:text-neutral-200',
isHovered && 'bg-neutral-100 dark:bg-neutral-800',
'focus:outline-none'
)}
>
<span className='text-[13px]'>{lang.flag}</span>
<span className='flex-1 text-left leading-none'>{lang.name}</span>
{isSelected && <Check className='ml-auto h-3.5 w-3.5' />}
</button>
)
})}
{Object.entries(languages).map(([code, lang]) => (
<button
key={code}
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
handleLanguageChange(code)
}}
role='option'
aria-selected={currentLang === code}
className={`flex w-full cursor-pointer items-center gap-3 px-3 py-3 text-base transition-colors first:rounded-t-xl last:rounded-b-xl hover:bg-muted/80 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring md:gap-2 md:px-2.5 md:py-2 md:text-sm ${
currentLang === code ? 'bg-muted/60 font-medium text-primary' : 'text-foreground'
}`}
>
<span className='text-base md:text-sm'>{lang.flag}</span>
<span className='leading-none'>{lang.name}</span>
{currentLang === code && (
<Check className='ml-auto h-4 w-4 text-primary md:h-3.5 md:w-3.5' />
)}
</button>
))}
</div>
</>
)}

View File

@@ -1,108 +0,0 @@
'use client'
import { cn } from '@/lib/utils'
interface SimLogoProps {
className?: string
}
/**
* Sim logo with icon and text.
* The icon stays green (#33C482), text adapts to light/dark mode.
*/
export function SimLogo({ className }: SimLogoProps) {
return (
<svg
viewBox='720 440 320 320'
fill='none'
xmlns='http://www.w3.org/2000/svg'
className={cn('h-7 w-auto', className)}
aria-label='Sim'
>
{/* Green icon - top left shape with cutout */}
<path
fillRule='evenodd'
clipRule='evenodd'
d='M875.791 577.171C875.791 581.922 873.911 586.483 870.576 589.842L870.098 590.323C866.764 593.692 862.234 595.575 857.517 595.575H750.806C740.978 595.575 733 603.6 733 613.498V728.902C733 738.799 740.978 746.826 750.806 746.826H865.382C875.209 746.826 883.177 738.799 883.177 728.902V620.853C883.177 616.448 884.912 612.222 888.008 609.104C891.093 605.997 895.29 604.249 899.664 604.249H1008.16C1017.99 604.249 1025.96 596.224 1025.96 586.327V470.923C1025.96 461.025 1017.99 453 1008.16 453H893.586C883.759 453 875.791 461.025 875.791 470.923V577.171ZM910.562 477.566H991.178C996.922 477.566 1001.57 482.254 1001.57 488.029V569.22C1001.57 574.995 996.922 579.683 991.178 579.683H910.562C904.828 579.683 900.173 574.995 900.173 569.22V488.029C900.173 482.254 904.828 477.566 910.562 477.566Z'
fill='#33C482'
/>
{/* Green icon - bottom right square */}
<path
d='M1008.3 624.59H923.113C912.786 624.59 904.414 633.022 904.414 643.423V728.171C904.414 738.572 912.786 747.004 923.113 747.004H1008.3C1018.63 747.004 1027 738.572 1027 728.171V643.423C1027 633.022 1018.63 624.59 1008.3 624.59Z'
fill='#33C482'
/>
{/* Gradient overlay on bottom right square */}
<path
d='M1008.3 624.199H923.113C912.786 624.199 904.414 632.631 904.414 643.033V727.78C904.414 738.181 912.786 746.612 923.113 746.612H1008.3C1018.63 746.612 1027 738.181 1027 727.78V643.033C1027 632.631 1018.63 624.199 1008.3 624.199Z'
fill='url(#sim-logo-gradient)'
fillOpacity='0.2'
/>
<defs>
<linearGradient
id='sim-logo-gradient'
x1='904.414'
y1='624.199'
x2='978.836'
y2='698.447'
gradientUnits='userSpaceOnUse'
>
<stop />
<stop offset='1' stopOpacity='0' />
</linearGradient>
</defs>
</svg>
)
}
/**
* Full Sim logo with icon and "Sim" text.
* The icon stays green (#33C482), text adapts to light/dark mode.
*/
export function SimLogoFull({ className }: SimLogoProps) {
return (
<svg
viewBox='720 440 1020 320'
fill='none'
xmlns='http://www.w3.org/2000/svg'
className={cn('h-7 w-auto', className)}
aria-label='Sim'
>
{/* Green icon - top left shape with cutout */}
<path
fillRule='evenodd'
clipRule='evenodd'
d='M875.791 577.171C875.791 581.922 873.911 586.483 870.576 589.842L870.098 590.323C866.764 593.692 862.234 595.575 857.517 595.575H750.806C740.978 595.575 733 603.6 733 613.498V728.902C733 738.799 740.978 746.826 750.806 746.826H865.382C875.209 746.826 883.177 738.799 883.177 728.902V620.853C883.177 616.448 884.912 612.222 888.008 609.104C891.093 605.997 895.29 604.249 899.664 604.249H1008.16C1017.99 604.249 1025.96 596.224 1025.96 586.327V470.923C1025.96 461.025 1017.99 453 1008.16 453H893.586C883.759 453 875.791 461.025 875.791 470.923V577.171ZM910.562 477.566H991.178C996.922 477.566 1001.57 482.254 1001.57 488.029V569.22C1001.57 574.995 996.922 579.683 991.178 579.683H910.562C904.828 579.683 900.173 574.995 900.173 569.22V488.029C900.173 482.254 904.828 477.566 910.562 477.566Z'
fill='#33C482'
/>
{/* Green icon - bottom right square */}
<path
d='M1008.3 624.59H923.113C912.786 624.59 904.414 633.022 904.414 643.423V728.171C904.414 738.572 912.786 747.004 923.113 747.004H1008.3C1018.63 747.004 1027 738.572 1027 728.171V643.423C1027 633.022 1018.63 624.59 1008.3 624.59Z'
fill='#33C482'
/>
{/* Gradient overlay on bottom right square */}
<path
d='M1008.3 624.199H923.113C912.786 624.199 904.414 632.631 904.414 643.033V727.78C904.414 738.181 912.786 746.612 923.113 746.612H1008.3C1018.63 746.612 1027 738.181 1027 727.78V643.033C1027 632.631 1018.63 624.199 1008.3 624.199Z'
fill='url(#sim-logo-full-gradient)'
fillOpacity='0.2'
/>
{/* "Sim" text - adapts to light/dark mode via currentColor */}
<path
d='M1210.54 515.657C1226.65 515.657 1240.59 518.51 1252.31 524.257H1252.31C1264.3 529.995 1273.63 538.014 1280.26 548.319H1280.26C1287.19 558.635 1290.78 570.899 1291.08 585.068L1291.1 586.089H1249.11L1249.09 585.115C1248.8 574.003 1245.18 565.493 1238.32 559.451C1231.45 553.399 1221.79 550.308 1209.21 550.308C1196.3 550.308 1186.48 553.113 1179.61 558.588C1172.76 564.046 1169.33 571.499 1169.33 581.063C1169.33 588.092 1171.88 593.978 1177.01 598.783C1182.17 603.618 1189.99 607.399 1200.56 610.061H1200.56L1238.77 619.451C1257.24 623.65 1271.21 630.571 1280.57 640.293L1281.01 640.739C1290.13 650.171 1294.64 662.97 1294.64 679.016C1294.64 692.923 1290.88 705.205 1283.34 715.822L1283.33 715.834C1275.81 726.134 1265.44 734.14 1252.26 739.866L1252.25 739.871C1239.36 745.302 1224.12 748 1206.54 748C1180.9 748 1160.36 741.696 1145.02 728.984C1129.67 716.258 1122 699.269 1122 678.121V677.121H1163.99V678.121C1163.99 688.869 1167.87 697.367 1175.61 703.722L1176.34 704.284C1184.04 709.997 1194.37 712.902 1207.43 712.902C1222.13 712.902 1233.3 710.087 1241.07 704.588C1248.8 698.812 1252.64 691.21 1252.64 681.699C1252.64 674.769 1250.5 669.057 1246.25 664.49L1246.23 664.478L1246.22 664.464C1242.28 659.929 1234.83 656.119 1223.64 653.152L1185.43 644.208L1185.42 644.204C1166.05 639.407 1151.49 632.035 1141.83 622.012L1141.83 622.006L1141.82 622C1132.43 611.94 1127.78 598.707 1127.78 582.405C1127.78 568.81 1131.23 556.976 1138.17 546.949L1138.18 546.941L1138.19 546.933C1145.41 536.936 1155.18 529.225 1167.48 523.793L1167.48 523.79C1180.07 518.36 1194.43 515.657 1210.54 515.657ZM1323.39 521.979C1331.68 525.008 1337.55 526.482 1343.51 526.482C1349.48 526.482 1355.64 525.005 1364.49 521.973L1365.82 521.52V742.633H1322.05V521.489L1323.39 521.979ZM1642.01 515.657C1667.11 515.657 1686.94 523.031 1701.39 537.876C1715.83 552.716 1723 572.968 1723 598.507V742.633H1680.12V608.794C1680.12 591.666 1675.72 578.681 1667.07 569.681L1667.06 569.669L1667.04 569.656C1658.67 560.359 1647.26 555.675 1632.68 555.675C1622.47 555.675 1613.47 558.022 1605.64 562.69L1605.63 562.696C1598.11 567.064 1592.17 573.475 1587.8 581.968C1583.44 590.448 1581.25 600.424 1581.25 611.925V742.633H1537.92V608.347C1537.92 591.208 1533.67 578.376 1525.31 569.68L1525.31 569.674L1525.3 569.668C1516.93 560.664 1505.52 556.122 1490.93 556.122C1480.72 556.122 1471.72 558.469 1463.89 563.138L1463.88 563.144C1456.36 567.511 1450.41 573.922 1446.05 582.415L1446.05 582.422L1446.04 582.428C1441.69 590.602 1439.5 600.423 1439.5 611.925V742.633H1395.72V521.919H1435.05V554.803C1439.92 544.379 1447.91 535.465 1458.37 528.356C1470.71 519.875 1485.58 515.657 1502.93 515.657C1522.37 515.657 1538.61 520.931 1551.55 531.538C1560.38 538.771 1567.1 547.628 1571.72 558.091C1576.05 547.619 1582.83 538.757 1592.07 531.524C1605.61 520.93 1622.28 515.657 1642.01 515.657ZM1343.49 452C1351.45 452 1358.23 454.786 1363.75 460.346C1369.27 465.905 1372.04 472.721 1372.04 480.73C1372.04 488.452 1369.27 495.254 1363.77 501.096L1363.76 501.105L1363.75 501.115C1358.23 506.675 1351.45 509.461 1343.49 509.461C1335.81 509.461 1329.05 506.669 1323.25 501.134L1323.23 501.115L1323.21 501.096C1317.71 495.254 1314.94 488.452 1314.94 480.73C1314.94 472.721 1317.7 465.905 1323.23 460.346L1323.24 460.337L1323.25 460.327C1329.05 454.792 1335.81 452 1343.49 452Z'
className='fill-neutral-900 dark:fill-white'
/>
<defs>
<linearGradient
id='sim-logo-full-gradient'
x1='904.414'
y1='624.199'
x2='978.836'
y2='698.447'
gradientUnits='userSpaceOnUse'
>
<stop />
<stop offset='1' stopOpacity='0' />
</linearGradient>
</defs>
</svg>
)
}

View File

@@ -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** können Sie:
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

View File

@@ -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

View File

@@ -10,20 +10,12 @@ Stellen Sie Sim auf Ihrer eigenen Infrastruktur mit Docker oder Kubernetes berei
## Anforderungen
| Ressource | Klein | Standard | Produktion |
|----------|-------|----------|------------|
| CPU | 2 Kerne | 4 Kerne | 8+ Kerne |
| RAM | 12 GB | 16 GB | 32+ GB |
| Speicher | 20 GB SSD | 50 GB SSD | 100+ GB SSD |
| Docker | 20.10+ | 20.10+ | Neueste Version |
**Klein**: Entwicklung, Tests, Einzelnutzer (1-5 Nutzer)
**Standard**: Teams (5-50 Nutzer), moderate Arbeitslasten
**Produktion**: Große Teams (50+ Nutzer), Hochverfügbarkeit, intensive Workflow-Ausführung
<Callout type="info">
Die Ressourcenanforderungen werden durch Workflow-Ausführung (isolated-vm Sandboxing), Dateiverarbeitung (In-Memory-Dokumentenparsing) und Vektoroperationen (pgvector) bestimmt. Arbeitsspeicher ist typischerweise der limitierende Faktor, nicht CPU. Produktionsdaten zeigen, dass die Hauptanwendung durchschnittlich 4-8 GB und bei hoher Last bis zu 12 GB benötigt.
</Callout>
| Ressource | Minimum | Empfohlen |
|----------|---------|-------------|
| CPU | 2 Kerne | 4+ Kerne |
| RAM | 12 GB | 16+ GB |
| Speicher | 20 GB SSD | 50+ GB SSD |
| Docker | 20.10+ | Neueste Version |
## Schnellstart

View File

@@ -56,10 +56,6 @@ Controls response randomness and creativity:
- **Medium (0.3-0.7)**: Balanced creativity and focus. Good for general use.
- **High (0.7-2.0)**: Creative and varied. Ideal for brainstorming and content generation.
### Max Output Tokens
Controls the maximum length of the model's response. For Anthropic models, Sim uses reliable defaults: streaming executions use the model's full capacity (e.g. 64,000 tokens for Claude 4.5), while non-streaming executions default to 8,192 to avoid timeout issues. For long-form content generation via API, explicitly set a higher value.
### API Key
Your API key for the selected LLM provider. This is securely stored and used for authentication.

View File

@@ -124,44 +124,11 @@ Choose between four types of loops:
3. Drag other blocks inside the loop container
4. Connect the blocks as needed
### Referencing Loop Data
### Accessing Results
There's an important distinction between referencing loop data from **inside** vs **outside** the loop:
After a loop completes, you can access aggregated results:
<Tabs items={['Inside the Loop', 'Outside the Loop']}>
<Tab>
**Inside the loop**, use `<loop.>` references to access the current iteration context:
- **`<loop.index>`**: Current iteration number (0-based)
- **`<loop.currentItem>`**: Current item being processed (forEach only)
- **`<loop.items>`**: Full collection being iterated (forEach only)
```
// Inside a Function block within the loop
const idx = <loop.index>; // 0, 1, 2, ...
const item = <loop.currentItem>; // Current item
```
<Callout type="info">
These references are only available for blocks **inside** the loop container. They give you access to the current iteration's context.
</Callout>
</Tab>
<Tab>
**Outside the loop** (after it completes), reference the loop block by its name to access aggregated results:
- **`<LoopBlockName.results>`**: Array of results from all iterations
```
// If your loop block is named "Process Items"
const allResults = <processitems.results>;
// Returns: [result1, result2, result3, ...]
```
<Callout type="info">
After the loop completes, use the loop's block name (not `loop.`) to access the collected results. The block name is normalized (lowercase, no spaces).
</Callout>
</Tab>
</Tabs>
- **`<loop.results>`**: Array of results from all loop iterations
## Example Use Cases
@@ -217,29 +184,28 @@ Variables (i=0) → Loop (While i<10) → Agent (Process) → Variables (i++)
</ul>
</Tab>
<Tab>
Available **inside** the loop only:
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>{"<loop.index>"}</strong>: Current iteration number (0-based)
<strong>loop.currentItem</strong>: Current item being processed
</li>
<li>
<strong>{"<loop.currentItem>"}</strong>: Current item being processed (forEach only)
<strong>loop.index</strong>: Current iteration number (0-based)
</li>
<li>
<strong>{"<loop.items>"}</strong>: Full collection (forEach only)
<strong>loop.items</strong>: Full collection (forEach loops)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>{"<blockname.results>"}</strong>: Array of all iteration results (accessed via block name)
<strong>loop.results</strong>: Array of all iteration results
</li>
<li>
<strong>Structure</strong>: Results maintain iteration order
</li>
<li>
<strong>Access</strong>: Available in blocks after the loop completes
<strong>Access</strong>: Available in blocks after the loop
</li>
</ul>
</Tab>

View File

@@ -76,44 +76,11 @@ Choose between two types of parallel execution:
3. Drag a single block inside the parallel container
4. Connect the block as needed
### Referencing Parallel Data
### Accessing Results
There's an important distinction between referencing parallel data from **inside** vs **outside** the parallel block:
After a parallel block completes, you can access aggregated results:
<Tabs items={['Inside the Parallel', 'Outside the Parallel']}>
<Tab>
**Inside the parallel**, use `<parallel.>` references to access the current instance context:
- **`<parallel.index>`**: Current instance number (0-based)
- **`<parallel.currentItem>`**: Item for this instance (collection-based only)
- **`<parallel.items>`**: Full collection being distributed (collection-based only)
```
// Inside a Function block within the parallel
const idx = <parallel.index>; // 0, 1, 2, ...
const item = <parallel.currentItem>; // This instance's item
```
<Callout type="info">
These references are only available for blocks **inside** the parallel container. They give you access to the current instance's context.
</Callout>
</Tab>
<Tab>
**Outside the parallel** (after it completes), reference the parallel block by its name to access aggregated results:
- **`<ParallelBlockName.results>`**: Array of results from all instances
```
// If your parallel block is named "Process Tasks"
const allResults = <processtasks.results>;
// Returns: [result1, result2, result3, ...]
```
<Callout type="info">
After the parallel completes, use the parallel's block name (not `parallel.`) to access the collected results. The block name is normalized (lowercase, no spaces).
</Callout>
</Tab>
</Tabs>
- **`<parallel.results>`**: Array of results from all parallel instances
## Example Use Cases
@@ -131,11 +98,11 @@ Parallel (["gpt-4o", "claude-3.7-sonnet", "gemini-2.5-pro"]) → Agent → Evalu
### Result Aggregation
Results from all parallel instances are automatically collected and accessible via the block name:
Results from all parallel instances are automatically collected:
```javascript
// In a Function block after a parallel named "Process Tasks"
const allResults = <processtasks.results>;
// In a Function block after the parallel
const allResults = input.parallel.results;
// Returns: [result1, result2, result3, ...]
```
@@ -191,26 +158,25 @@ Understanding when to use each:
</ul>
</Tab>
<Tab>
Available **inside** the parallel only:
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>{"<parallel.index>"}</strong>: Instance number (0-based)
<strong>parallel.currentItem</strong>: Item for this instance
</li>
<li>
<strong>{"<parallel.currentItem>"}</strong>: Item for this instance (collection-based only)
<strong>parallel.index</strong>: Instance number (0-based)
</li>
<li>
<strong>{"<parallel.items>"}</strong>: Full collection (collection-based only)
<strong>parallel.items</strong>: Full collection (collection-based)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>{"<blockname.results>"}</strong>: Array of all instance results (accessed via block name)
<strong>parallel.results</strong>: Array of all instance results
</li>
<li>
<strong>Access</strong>: Available in blocks after the parallel completes
<strong>Access</strong>: Available in blocks after the parallel
</li>
</ul>
</Tab>

View File

@@ -5,24 +5,44 @@ title: Copilot
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
import { Image } from '@/components/ui/image'
import { MessageCircle, Hammer, Zap, Globe, Paperclip, History, RotateCcw, Brain } from 'lucide-react'
import { MessageCircle, Package, Zap, Infinity as InfinityIcon, Brain, BrainCircuit } from 'lucide-react'
Copilot is your in-editor assistant that helps you build and edit workflows. It can:
Copilot is your in-editor assistant that helps you build and edit workflows with Sim Copilot, as well as understand and improve them. It can:
- **Explain**: Answer questions about Sim and your current workflow
- **Guide**: Suggest edits and best practices
- **Build**: Add blocks, wire connections, and configure settings
- **Debug**: Analyze execution issues and optimize performance
- **Edit**: Make changes to blocks, connections, and settings when you approve
<Callout type="info">
Copilot is a Sim-managed service. For self-hosted deployments:
Copilot is a Sim-managed service. For self-hosted deployments, generate a Copilot API key in the hosted app (sim.ai → Settings → Copilot)
1. Go to [sim.ai](https://sim.ai) → Settings → Copilot and generate a Copilot API key
2. Set `COPILOT_API_KEY` in your self-hosted environment
2. Set `COPILOT_API_KEY` in your self-hosted environment to that value
</Callout>
## Modes
## Context Menu (@)
Switch between modes using the mode selector at the bottom of the input area.
Use the `@` symbol to reference various resources and give Copilot more context about your workspace:
<Image
src="/static/copilot/copilot-menu.png"
alt="Copilot context menu showing available reference options"
width={600}
height={400}
/>
The `@` menu provides access to:
- **Chats**: Reference previous copilot conversations
- **All workflows**: Reference any workflow in your workspace
- **Workflow Blocks**: Reference specific blocks from workflows
- **Blocks**: Reference block types and templates
- **Knowledge**: Reference your uploaded documents and knowledgebase
- **Docs**: Reference Sim documentation
- **Templates**: Reference workflow templates
- **Logs**: Reference execution logs and results
This contextual information helps Copilot provide more accurate and relevant assistance for your specific use case.
## Modes
<Cards>
<Card
@@ -40,153 +60,113 @@ Switch between modes using the mode selector at the bottom of the input area.
<Card
title={
<span className="inline-flex items-center gap-2">
<Hammer className="h-4 w-4 text-muted-foreground" />
Build
<Package className="h-4 w-4 text-muted-foreground" />
Agent
</span>
}
>
<div className="m-0 text-sm">
Workflow building mode. Copilot can add blocks, wire connections, edit configurations, and debug issues.
Build-and-edit mode. Copilot proposes specific edits (add blocks, wire variables, tweak settings) and applies them when you approve.
</div>
</Card>
</Cards>
## Models
<div className="flex justify-center">
<Image
src="/static/copilot/copilot-mode.png"
alt="Copilot mode selection interface"
width={600}
height={400}
className="my-6"
/>
</div>
Select your preferred AI model using the model selector at the bottom right of the input area.
## Depth Levels
**Available Models:**
- Claude 4.5 Opus, Sonnet (default), Haiku
- GPT 5.2 Codex, Pro
- Gemini 3 Pro
<Cards>
<Card
title={
<span className="inline-flex items-center gap-2">
<Zap className="h-4 w-4 text-muted-foreground" />
Fast
</span>
}
>
<div className="m-0 text-sm">Quickest and cheapest. Best for small edits, simple workflows, and minor tweaks.</div>
</Card>
<Card
title={
<span className="inline-flex items-center gap-2">
<InfinityIcon className="h-4 w-4 text-muted-foreground" />
Auto
</span>
}
>
<div className="m-0 text-sm">Balanced speed and reasoning. Recommended default for most tasks.</div>
</Card>
<Card
title={
<span className="inline-flex items-center gap-2">
<Brain className="h-4 w-4 text-muted-foreground" />
Advanced
</span>
}
>
<div className="m-0 text-sm">More reasoning for larger workflows and complex edits while staying performant.</div>
</Card>
<Card
title={
<span className="inline-flex items-center gap-2">
<BrainCircuit className="h-4 w-4 text-muted-foreground" />
Behemoth
</span>
}
>
<div className="m-0 text-sm">Maximum reasoning for deep planning, debugging, and complex architectural changes.</div>
</Card>
</Cards>
Choose based on your needs: faster models for simple tasks, more capable models for complex workflows.
### Mode Selection Interface
## Context Menu (@)
You can easily switch between different reasoning modes using the mode selector in the Copilot interface:
Use the `@` symbol to reference resources and give Copilot more context:
<Image
src="/static/copilot/copilot-models.png"
alt="Copilot mode selection showing Advanced mode with MAX toggle"
width={600}
height={300}
/>
| Reference | Description |
|-----------|-------------|
| **Chats** | Previous copilot conversations |
| **Workflows** | Any workflow in your workspace |
| **Workflow Blocks** | Blocks in the current workflow |
| **Blocks** | Block types and templates |
| **Knowledge** | Uploaded documents and knowledge bases |
| **Docs** | Sim documentation |
| **Templates** | Workflow templates |
| **Logs** | Execution logs and results |
The interface allows you to:
- **Select reasoning level**: Choose from Fast, Auto, Advanced, or Behemoth
- **Enable MAX mode**: Toggle for maximum reasoning capabilities when you need the most thorough analysis
- **See mode descriptions**: Understand what each mode is optimized for
Type `@` in the input field to open the context menu, then search or browse to find what you need.
Choose your mode based on the complexity of your task - use Fast for simple questions and Behemoth for complex architectural changes.
## Slash Commands (/)
## Billing and Cost Calculation
Use slash commands for quick actions:
### How Costs Are Calculated
| Command | Description |
|---------|-------------|
| `/fast` | Fast mode execution |
| `/research` | Research and exploration mode |
| `/actions` | Execute agent actions |
Copilot usage is billed per token from the underlying LLM:
**Web Commands:**
- **Input tokens**: billed at the provider's base rate (**at-cost**)
- **Output tokens**: billed at **1.5×** the provider's base output rate
| Command | Description |
|---------|-------------|
| `/search` | Search the web |
| `/read` | Read a specific URL |
| `/scrape` | Scrape web page content |
| `/crawl` | Crawl multiple pages |
```javascript
copilotCost = (inputTokens × inputPrice + outputTokens × (outputPrice × 1.5)) / 1,000,000
```
Type `/` in the input field to see available commands.
| Component | Rate Applied |
|----------|----------------------|
| Input | inputPrice |
| Output | outputPrice × 1.5 |
## Chat Management
### Starting a New Chat
Click the **+** button in the Copilot header to start a fresh conversation.
### Chat History
Click **History** to view previous conversations grouped by date. You can:
- Click a chat to resume it
- Delete chats you no longer need
### Editing Messages
Hover over any of your messages and click **Edit** to modify and resend it. This is useful for refining your prompts.
### Message Queue
If you send a message while Copilot is still responding, it gets queued. You can:
- View queued messages in the expandable queue panel
- Send a queued message immediately (aborts current response)
- Remove messages from the queue
## File Attachments
Click the attachment icon to upload files with your message. Supported file types include:
- Images (preview thumbnails shown)
- PDFs
- Text files, JSON, XML
- Other document formats
Files are displayed as clickable thumbnails that open in a new tab.
## Checkpoints & Changes
When Copilot makes changes to your workflow, it saves checkpoints so you can revert if needed.
### Viewing Checkpoints
Hover over a Copilot message and click the checkpoints icon to see saved workflow states for that message.
### Reverting Changes
Click **Revert** on any checkpoint to restore your workflow to that state. A confirmation dialog will warn that this action cannot be undone.
### Accepting Changes
When Copilot proposes changes, you can:
- **Accept**: Apply the proposed changes (`Mod+Shift+Enter`)
- **Reject**: Dismiss the changes and keep your current workflow
## Thinking Blocks
For complex requests, Copilot may show its reasoning process in expandable thinking blocks:
- Blocks auto-expand while Copilot is thinking
- Click to manually expand/collapse
- Shows duration of the thinking process
- Helps you understand how Copilot arrived at its solution
## Options Selection
When Copilot presents multiple options, you can select using:
| Control | Action |
|---------|--------|
| **1-9** | Select option by number |
| **Arrow Up/Down** | Navigate between options |
| **Enter** | Select highlighted option |
Selected options are highlighted; unselected options appear struck through.
## Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| `@` | Open context menu |
| `/` | Open slash commands |
| `Arrow Up/Down` | Navigate menu items |
| `Enter` | Select menu item |
| `Esc` | Close menus |
| `Mod+Shift+Enter` | Accept Copilot changes |
## Usage Limits
Copilot usage is billed per token from the underlying LLM. If you reach your usage limit, Copilot will prompt you to increase your limit. You can add usage in increments ($50, $100) from your current base.
<Callout type="warning">
Pricing shown reflects rates as of September 4, 2025. Check provider documentation for current pricing.
</Callout>
<Callout type="info">
See the [Cost Calculation page](/execution/costs) for billing details.
Model prices are per million tokens. The calculation divides by 1,000,000 to get the actual cost. See <a href="/execution/costs">the Cost Calculation page</a> for background and examples.
</Callout>

View File

@@ -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.005 per execution
**Base Execution Charge**: $0.001 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 1.1x pricing multiplier for Agent blocks:
**Hosted Models** - Sim provides API keys with a 1.4x pricing multiplier for Agent blocks:
**OpenAI**
| Model | Base Price (Input/Output) | Hosted Price (Input/Output) |
|-------|---------------------------|----------------------------|
| 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 |
| 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**
| Model | Base Price (Input/Output) | Hosted Price (Input/Output) |
|-------|---------------------------|----------------------------|
| 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 |
| 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**
| Model | Base Price (Input/Output) | Hosted Price (Input/Output) |
|-------|---------------------------|----------------------------|
| 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 |
| 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 |
*The 1.1x multiplier covers infrastructure and API management costs.*
*The 1.4x multiplier covers infrastructure and API management costs.*
</Tab>
<Tab>

View File

@@ -1,3 +1,3 @@
{
"pages": ["index", "basics", "api", "logging", "costs"]
"pages": ["index", "basics", "api", "form", "logging", "costs"]
}

View File

@@ -34,8 +34,6 @@ Speed up your workflow building with these keyboard shortcuts and mouse controls
| `Mod` + `V` | Paste blocks |
| `Delete` or `Backspace` | Delete selected blocks or edges |
| `Shift` + `L` | Auto-layout canvas |
| `Mod` + `Shift` + `F` | Fit to view |
| `Mod` + `Shift` + `Enter` | Accept Copilot changes |
## Panel Navigation

View File

@@ -16,7 +16,7 @@ MCP servers group your workflow tools together. Create and manage them in worksp
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
</div>
1. Navigate to **Settings → MCP Servers**
1. Navigate to **Settings → Deployed MCPs**
2. Click **Create Server**
3. Enter a name and optional description
4. Copy the server URL for use in your MCP clients
@@ -78,7 +78,7 @@ Include your API key header (`X-API-Key`) for authenticated access when using mc
## Server Management
From the server detail view in **Settings → MCP Servers**, you can:
From the server detail view in **Settings → Deployed MCPs**, you can:
- **View tools**: See all workflows added to a server
- **Copy URL**: Get the server URL for MCP clients

View File

@@ -27,7 +27,7 @@ MCP servers provide collections of tools that your agents can use. Configure the
</div>
1. Navigate to your workspace settings
2. Go to the **MCP Servers** section
2. Go to the **Deployed MCPs** section
3. Click **Add MCP Server**
4. Enter the server configuration details
5. Save the configuration

View File

@@ -3,7 +3,6 @@
"pages": [
"./introduction/index",
"./getting-started/index",
"./quick-reference/index",
"triggers",
"blocks",
"tools",

View File

@@ -1,375 +0,0 @@
---
title: Quick Reference
description: Essential actions for navigating and using the Sim workflow editor
---
import { Callout } from 'fumadocs-ui/components/callout'
import { ActionImage, ActionVideo } from '@/components/ui/action-media'
A quick lookup for everyday actions in the Sim workflow editor. For keyboard shortcuts, see [Keyboard Shortcuts](/keyboard-shortcuts).
<Callout type="info">
**Mod** refers to `Cmd` on macOS and `Ctrl` on Windows/Linux.
</Callout>
## Workspaces
<table>
<thead>
<tr><th>Action</th><th>How</th><th>Preview</th></tr>
</thead>
<tbody>
<tr>
<td>Create a workspace</td>
<td>Click workspace dropdown → **New Workspace**</td>
<td><ActionVideo src="quick-reference/create-workspace.mp4" alt="Create workspace" /></td>
</tr>
<tr>
<td>Switch workspaces</td>
<td>Click workspace dropdown → Select workspace</td>
<td><ActionVideo src="quick-reference/switch-workspace.mp4" alt="Switch workspaces" /></td>
</tr>
<tr>
<td>Invite team members</td>
<td>Sidebar → **Invite**</td>
<td><ActionVideo src="quick-reference/invite.mp4" alt="Invite team members" /></td>
</tr>
<tr>
<td>Rename a workspace</td>
<td>Right-click workspace → **Rename**</td>
<td rowSpan={4}><ActionImage src="/static/quick-reference/workspace-context-menu.png" alt="Workspace context menu" /></td>
</tr>
<tr>
<td>Duplicate a workspace</td>
<td>Right-click workspace → **Duplicate**</td>
</tr>
<tr>
<td>Export a workspace</td>
<td>Right-click workspace → **Export**</td>
</tr>
<tr>
<td>Delete a workspace</td>
<td>Right-click workspace → **Delete**</td>
</tr>
</tbody>
</table>
## Workflows
<table>
<thead>
<tr><th>Action</th><th>How</th><th>Preview</th></tr>
</thead>
<tbody>
<tr>
<td>Create a workflow</td>
<td>Click **+** button in sidebar</td>
<td><ActionImage src="/static/quick-reference/create-workflow.png" alt="Create workflow" /></td>
</tr>
<tr>
<td>Reorder / move workflows</td>
<td>Drag workflow up/down or onto a folder</td>
<td><ActionVideo src="quick-reference/reordering.mp4" alt="Reorder workflows" /></td>
</tr>
<tr>
<td>Import a workflow</td>
<td>Click import button in sidebar → Select file</td>
<td><ActionImage src="/static/quick-reference/import-workflow.png" alt="Import workflow" /></td>
</tr>
<tr>
<td>Multi-select workflows</td>
<td>`Mod+Click` or `Shift+Click` workflows in sidebar</td>
<td><ActionVideo src="quick-reference/multiselect.mp4" alt="Multi-select workflows" /></td>
</tr>
<tr>
<td>Open in new tab</td>
<td>Right-click workflow → **Open in New Tab**</td>
<td rowSpan={6}><ActionImage src="/static/quick-reference/workflow-context-menu.png" alt="Workflow context menu" /></td>
</tr>
<tr>
<td>Rename a workflow</td>
<td>Right-click workflow → **Rename**</td>
</tr>
<tr>
<td>Assign workflow color</td>
<td>Right-click workflow → **Change Color**</td>
</tr>
<tr>
<td>Duplicate a workflow</td>
<td>Right-click workflow → **Duplicate**</td>
</tr>
<tr>
<td>Export a workflow</td>
<td>Right-click workflow → **Export**</td>
</tr>
<tr>
<td>Delete a workflow</td>
<td>Right-click workflow → **Delete**</td>
</tr>
<tr>
<td>Rename a folder</td>
<td>Right-click folder → **Rename**</td>
<td rowSpan={6}><ActionImage src="/static/quick-reference/folder-context-menu.png" alt="Folder context menu" /></td>
</tr>
<tr>
<td>Create workflow in folder</td>
<td>Right-click folder → **Create workflow**</td>
</tr>
<tr>
<td>Create folder in folder</td>
<td>Right-click folder → **Create folder**</td>
</tr>
<tr>
<td>Duplicate a folder</td>
<td>Right-click folder → **Duplicate**</td>
</tr>
<tr>
<td>Export a folder</td>
<td>Right-click folder → **Export**</td>
</tr>
<tr>
<td>Delete a folder</td>
<td>Right-click folder → **Delete**</td>
</tr>
</tbody>
</table>
## Blocks
<table>
<thead>
<tr><th>Action</th><th>How</th><th>Preview</th></tr>
</thead>
<tbody>
<tr>
<td>Add a block</td>
<td>Drag from Toolbar panel, or right-click canvas → **Add Block**</td>
<td><ActionVideo src="quick-reference/add-block.mp4" alt="Add a block" /></td>
</tr>
<tr>
<td>Multi-select blocks</td>
<td>`Mod+Click` additional blocks, or shift-drag to draw selection box</td>
<td><ActionVideo src="quick-reference/multiselect-blocks.mp4" alt="Multi-select blocks" /></td>
</tr>
<tr>
<td>Copy blocks</td>
<td>`Mod+C` with blocks selected</td>
<td rowSpan={2}><ActionVideo src="quick-reference/copy-paste.mp4" alt="Copy and paste blocks" /></td>
</tr>
<tr>
<td>Paste blocks</td>
<td>`Mod+V` to paste copied blocks</td>
</tr>
<tr>
<td>Duplicate blocks</td>
<td>Right-click → **Duplicate**</td>
<td><ActionVideo src="quick-reference/duplicate-block.mp4" alt="Duplicate blocks" /></td>
</tr>
<tr>
<td>Delete blocks</td>
<td>`Delete` or `Backspace` key, or right-click → **Delete**</td>
<td><ActionImage src="/static/quick-reference/delete-block.png" alt="Delete block" /></td>
</tr>
<tr>
<td>Rename a block</td>
<td>Click block name in header, or edit in the Editor panel</td>
<td><ActionVideo src="quick-reference/rename-block.mp4" alt="Rename a block" /></td>
</tr>
<tr>
<td>Enable/Disable a block</td>
<td>Right-click → **Enable/Disable**</td>
<td><ActionImage src="/static/quick-reference/disable-block.png" alt="Disable block" /></td>
</tr>
<tr>
<td>Toggle handle orientation</td>
<td>Right-click → **Toggle Handles**</td>
<td><ActionVideo src="quick-reference/toggle-handles.mp4" alt="Toggle handle orientation" /></td>
</tr>
<tr>
<td>Configure a block</td>
<td>Select block → use Editor panel on right</td>
<td><ActionVideo src="quick-reference/configure-block.mp4" alt="Configure a block" /></td>
</tr>
</tbody>
</table>
## Connections
<table>
<thead>
<tr><th>Action</th><th>How</th><th>Preview</th></tr>
</thead>
<tbody>
<tr>
<td>Create a connection</td>
<td>Drag from output handle to input handle</td>
<td><ActionVideo src="quick-reference/connect-blocks.mp4" alt="Connect blocks" /></td>
</tr>
<tr>
<td>Delete a connection</td>
<td>Click edge to select → `Delete` key</td>
<td><ActionVideo src="quick-reference/delete-connection.mp4" alt="Delete connection" /></td>
</tr>
<tr>
<td>Use output in another block</td>
<td>Drag connection tag into input field</td>
<td><ActionVideo src="quick-reference/connection-tag.mp4" alt="Use connection tag" /></td>
</tr>
</tbody>
</table>
## Panels & Views
<table>
<thead>
<tr><th>Action</th><th>How</th><th>Preview</th></tr>
</thead>
<tbody>
<tr>
<td>Search toolbar</td>
<td>`Mod+F`</td>
<td><ActionVideo src="quick-reference/search-toolbar.mp4" alt="Search toolbar" /></td>
</tr>
<tr>
<td>Search everything</td>
<td>`Mod+K`</td>
<td><ActionImage src="/static/quick-reference/search-everything.png" alt="Search everything" /></td>
</tr>
<tr>
<td>Toggle manual mode</td>
<td>Click toggle button to switch between manual and selector</td>
<td><ActionImage src="/static/quick-reference/toggle-manual-mode.png" alt="Toggle manual mode" /></td>
</tr>
<tr>
<td>Collapse/expand sidebar</td>
<td>Click collapse button on sidebar</td>
<td><ActionVideo src="quick-reference/collapse-sidebar.mp4" alt="Collapse sidebar" /></td>
</tr>
</tbody>
</table>
## Running & Testing
<table>
<thead>
<tr><th>Action</th><th>How</th><th>Preview</th></tr>
</thead>
<tbody>
<tr>
<td>Run workflow</td>
<td>Click Run Workflow button or `Mod+Enter`</td>
<td><ActionImage src="/static/quick-reference/run-workflow.png" alt="Run workflow" /></td>
</tr>
<tr>
<td>Stop workflow</td>
<td>Click Stop button or `Mod+Enter` while running</td>
<td><ActionImage src="/static/quick-reference/stop-workflow.png" alt="Stop workflow" /></td>
</tr>
<tr>
<td>Test with chat</td>
<td>Use Chat panel on the right side</td>
<td><ActionImage src="/static/quick-reference/test-chat.png" alt="Test with chat" /></td>
</tr>
<tr>
<td>Select output to view</td>
<td>Click dropdown in Chat panel → Select block output</td>
<td><ActionImage src="/static/quick-reference/output-select.png" alt="Select output to view" /></td>
</tr>
<tr>
<td>Clear chat history</td>
<td>Click clear button in Chat panel</td>
<td><ActionImage src="/static/quick-reference/clear-chat.png" alt="Clear chat history" /></td>
</tr>
<tr>
<td>View execution logs</td>
<td>Open terminal panel at bottom, or `Mod+L`</td>
<td><ActionImage src="/static/quick-reference/terminal.png" alt="Execution logs terminal" /></td>
</tr>
<tr>
<td>Filter logs by block or status</td>
<td>Click block filter in terminal or right-click log entry → **Filter by Block** or **Filter by Status**</td>
<td><ActionImage src="/static/quick-reference/filter-block.png" alt="Filter logs by block" /></td>
</tr>
<tr>
<td>Search logs</td>
<td>Use search field in terminal or right-click log entry → **Search**</td>
<td><ActionImage src="/static/quick-reference/terminal-search.png" alt="Search logs" /></td>
</tr>
<tr>
<td>Copy log entry</td>
<td>Clipboard Icon or Right-click log entry → **Copy**</td>
<td><ActionImage src="/static/quick-reference/copy-log.png" alt="Copy log entry" /></td>
</tr>
<tr>
<td>Clear terminal</td>
<td>Trash icon or `Mod+D`</td>
<td><ActionImage src="/static/quick-reference/clear-terminal.png" alt="Clear terminal" /></td>
</tr>
</tbody>
</table>
## Deployment
<table>
<thead>
<tr><th>Action</th><th>How</th><th>Preview</th></tr>
</thead>
<tbody>
<tr>
<td>Deploy a workflow</td>
<td>Click **Deploy** button in panel</td>
<td><ActionImage src="/static/quick-reference/deploy.png" alt="Deploy workflow" /></td>
</tr>
<tr>
<td>Update deployment</td>
<td>Click **Update** when changes are detected</td>
<td><ActionImage src="/static/quick-reference/update-deployment.png" alt="Update deployment" /></td>
</tr>
<tr>
<td>View deployment status</td>
<td>Check status indicator (Live/Update/Deploy) in Deploy tab</td>
<td><ActionImage src="/static/quick-reference/view-deployment.png" alt="View deployment status" /></td>
</tr>
<tr>
<td>Revert deployment</td>
<td>Access previous versions in Deploy tab → **Promote to live**</td>
<td><ActionImage src="/static/quick-reference/promote-deployment.png" alt="Promote deployment to live" /></td>
</tr>
<tr>
<td>Copy API endpoint</td>
<td>Deploy tab → API → Copy API cURL</td>
<td><ActionImage src="/static/quick-reference/copy-api.png" alt="Copy API endpoint" /></td>
</tr>
</tbody>
</table>
## Variables
<table>
<thead>
<tr><th>Action</th><th>How</th><th>Preview</th></tr>
</thead>
<tbody>
<tr>
<td>Add / Edit / Delete workflow variable</td>
<td>Panel -> Variables -> **Add Variable**, click to edit, or delete icon</td>
<td><ActionImage src="/static/quick-reference/variables.png" alt="Variables panel" /></td>
</tr>
<tr>
<td>Add environment variable</td>
<td>Settings → **Environment Variables** → **Add**</td>
<td><ActionImage src="/static/quick-reference/add-env-variable.png" alt="Add environment variable" /></td>
</tr>
<tr>
<td>Reference a workflow variable</td>
<td>Use `<blockName.itemName>` syntax in block inputs</td>
<td><ActionImage src="/static/quick-reference/variable-reference.png" alt="Reference workflow variable" /></td>
</tr>
<tr>
<td>Reference an environment variable</td>
<td>Use `{{ENV_VAR}}` syntax in block inputs</td>
<td><ActionImage src="/static/quick-reference/env-variable-reference.png" alt="Reference environment variable" /></td>
</tr>
</tbody>
</table>

View File

@@ -16,20 +16,12 @@ Deploy Sim on your own infrastructure with Docker or Kubernetes.
## Requirements
| Resource | Small | Standard | Production |
|----------|-------|----------|------------|
| CPU | 2 cores | 4 cores | 8+ cores |
| RAM | 12 GB | 16 GB | 32+ GB |
| Storage | 20 GB SSD | 50 GB SSD | 100+ GB SSD |
| Docker | 20.10+ | 20.10+ | Latest |
**Small**: Development, testing, single user (1-5 users)
**Standard**: Teams (5-50 users), moderate workloads
**Production**: Large teams (50+ users), high availability, heavy workflow execution
<Callout type="info">
Resource requirements are driven by workflow execution (isolated-vm sandboxing), file processing (in-memory document parsing), and vector operations (pgvector). Memory is typically the constraining factor rather than CPU. Production telemetry shows the main app uses 4-8 GB average with peaks up to 12 GB under heavy load.
</Callout>
| Resource | Minimum | Recommended |
|----------|---------|-------------|
| CPU | 2 cores | 4+ cores |
| RAM | 12 GB | 16+ GB |
| Storage | 20 GB SSD | 50+ GB SSD |
| Docker | 20.10+ | Latest |
## Quick Start

View File

@@ -44,8 +44,6 @@ Send a message to an external A2A-compatible agent.
| `message` | string | Yes | Message to send to the agent |
| `taskId` | string | No | Task ID for continuing an existing task |
| `contextId` | string | No | Context ID for conversation continuity |
| `data` | string | No | Structured data to include with the message \(JSON string\) |
| `files` | array | No | Files to include with the message |
| `apiKey` | string | No | API key for authentication |
#### Output
@@ -210,3 +208,8 @@ Delete the push notification webhook configuration for a task.
| `success` | boolean | Whether deletion was successful |
## Notes
- Category: `tools`
- Type: `a2a`

View File

@@ -72,13 +72,6 @@ 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`
@@ -98,12 +91,6 @@ 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`
@@ -125,12 +112,6 @@ 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`
@@ -153,12 +134,6 @@ 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`
@@ -182,11 +157,6 @@ 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`
@@ -205,14 +175,6 @@ 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`
@@ -234,10 +196,5 @@ 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 |

View File

@@ -50,7 +50,6 @@ 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`
@@ -89,7 +88,6 @@ Write new records to an Airtable table
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `records` | json | Array of created Airtable records |
| `metadata` | json | Operation metadata |
### `airtable_update_record`
@@ -128,6 +126,5 @@ 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 |

View File

@@ -52,7 +52,6 @@ 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`
@@ -86,6 +85,5 @@ 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 |

View File

@@ -10,21 +10,6 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
color="#E0E0E0"
/>
{/* MANUAL-CONTENT-START:intro */}
[Asana](https://asana.com/) is a leading work management platform designed to help teams organize, track, and manage their tasks and projects more efficiently. With Asana, individuals and organizations can streamline project planning, delegate responsibilities, monitor progress, and collaborate seamlessly across different workspaces and projects.
With Asana, you can:
- **Create, assign, and update tasks**: Break down your work into actionable items, assign them to team members, and keep everyone on the same page.
- **Organize projects**: Group related tasks into projects, set deadlines, and visualize the flow of work from start to finish.
- **Set priorities and due dates**: Ensure important tasks are completed on time and stay aligned with your project goals.
- **Track progress and completion**: Monitor tasks as they move through various stages and quickly identify roadblocks.
- **Collaborate with your team**: Share notes, attach relevant resources, and communicate updates directly on tasks.
In Sim, the Asana integration enables your agents to programmatically interact with Asana through a suite of flexible tools described below. Your agents can retrieve, create, and update tasks, making it easy to automate project management workflows, synchronize status with other tools, or trigger actions based on Asana task events. Harness these tools to streamline your team's productivity and keep all your projects organized and up to date directly within your Sim projects.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Integrate Asana into the workflow. Can read, write, and update tasks.
@@ -59,18 +44,6 @@ 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`
@@ -143,9 +116,6 @@ 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`
@@ -168,22 +138,6 @@ 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`
@@ -206,7 +160,5 @@ 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 |

View File

@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="browser_use"
color="#181C1E"
color="#E0E0E0"
/>
{/* MANUAL-CONTENT-START:intro */}
@@ -47,7 +47,6 @@ Runs a browser automation task using BrowserUse
| `save_browser_data` | boolean | No | Whether to save browser data |
| `model` | string | No | LLM model to use \(default: gpt-4o\) |
| `apiKey` | string | Yes | API key for BrowserUse API |
| `profile_id` | string | No | Browser profile ID for persistent sessions \(cookies, login state\) |
#### Output

View File

@@ -47,16 +47,6 @@ 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`
@@ -79,25 +69,6 @@ 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`
@@ -115,30 +86,6 @@ 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`
@@ -164,30 +111,6 @@ 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`
@@ -205,36 +128,6 @@ 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`
@@ -257,32 +150,6 @@ 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`
@@ -301,9 +168,5 @@ 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 |

View File

@@ -11,17 +11,27 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
/>
{/* MANUAL-CONTENT-START:intro */}
[Clay](https://www.clay.com/) is a data enrichment and workflow automation platform designed to help teams streamline lead generation, research, and other data operations using powerful integrations and flexible input options.
[Clay](https://www.clay.com/) is a data enrichment and workflow automation platform that helps teams streamline lead generation, research, and data operations through powerful integrations and flexible inputs.
In Sim, the Clay integration lets your agents seamlessly insert structured data into Clay workbooks via webhook triggers. This makes it easy to collect, enrich, and manage dynamic outputs—such as leads, research summaries, or action items—directly within a collaborative, spreadsheet-like interface.
Learn how to use the Clay Tool in Sim to seamlessly insert data into a Clay workbook through webhook triggers. This tutorial walks you through setting up a webhook, configuring data mapping, and automating real-time updates to your Clay workbooks. Perfect for streamlining lead generation and data enrichment directly from your workflow!
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/cx_75X5sI_s"
title="Clay Integration with Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
With Clay, you can:
- **Enrich agent outputs**: Automatically feed your Sim agent data into Clay tables for structured tracking and analysis.
- **Trigger workflows via webhooks**: Use Clays webhook support to initiate Sim agent tasks directly from Clay or have agents send data to Clay as part of your workflow.
- **Leverage data loops**: Seamlessly iterate over enriched data rows with agents that operate across dynamic datasets.
- **Enrich agent outputs**: Automatically feed your Sim agent data into Clay tables for structured tracking and analysis
- **Trigger workflows via webhooks**: Use Clays webhook support to initiate Sim agent tasks from within Clay
- **Leverage data loops**: Seamlessly iterate over enriched data rows with agents that operate across dynamic datasets
The integration supports workflows where your agents populate rows in real time, enabling asynchronous, collaborative work. Whether you're automating research, enriching CRM data, or tracking operational outcomes, Clay becomes a living data layer that interacts intelligently with your agents. By connecting Sim with Clay, you can operationalize agent-generated results, automate dataset processing, and maintain an auditable, up-to-date record of AI-driven work.
In Sim, the Clay integration allows your agents to push structured data into Clay tables via webhooks. This makes it easy to collect, enrich, and manage dynamic outputs such as leads, research summaries, or action items—all in a collaborative, spreadsheet-like interface. Your agents can populate rows in real time, enabling asynchronous workflows where AI-generated insights are captured, reviewed, and used by your team. Whether you're automating research, enriching CRM data, or tracking operational outcomes, Clay becomes a living data layer that interacts intelligently with your agents. By connecting Sim with Clay, you gain a powerful way to operationalize agent results, loop over datasets with precision, and maintain a clean, auditable record of AI-driven work.
{/* MANUAL-CONTENT-END */}
@@ -51,10 +61,5 @@ 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 |

View File

@@ -6,7 +6,7 @@ description: Interact with Confluence
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="confluence_v2"
type="confluence"
color="#E0E0E0"
/>

View File

@@ -1,35 +1,15 @@
---
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_v2"
color="#1E1E1E"
color="#F5F5F5"
/>
{/* MANUAL-CONTENT-START:intro */}
[Cursor](https://www.cursor.so) is an intelligent cloud-based platform that enables you to launch and manage AI agents capable of collaborating on your GitHub repositories. Cursor agents are designed to help automate software development workflows, accelerate code changes, and provide powerful assistance directly within your version control stack.
With Cursor, you can:
- **Launch cloud agents**: Instantly start AI agents to perform tasks on your repositories—ranging from code generation and refactoring to documentation and bug fixing.
- **Collaborate on pull requests and branches**: Agents can work on feature branches, propose changes, and assist with code reviews.
- **Guide and refine AI work**: Provide follow-up instructions to agents, enabling you to iteratively direct their actions and results.
- **Monitor progress and results**: Check agent status, review their output, and inspect conversation threads—all from a unified dashboard or API.
- **Control agent lifecycle**: Start, stop, restart, or archive agents as needed to manage compute resources and workflow states.
- **Integrate with your workflow**: Use the API to connect Cursor agents with CI/CD pipelines, chatbots, or internal tools for automated workflows.
Integrating Cursor into your Sim automations unleashes the power of AI assistance on your software projects. Let agents contribute code, resolve issues, and complete repetitive development tasks so you and your team can focus on higher-level engineering work.
{/* 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

View File

@@ -99,15 +99,6 @@ 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`
@@ -133,16 +124,6 @@ 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`
@@ -164,16 +145,6 @@ 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`
@@ -199,12 +170,6 @@ 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`
@@ -250,19 +215,6 @@ 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`
@@ -307,12 +259,6 @@ 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`
@@ -333,12 +279,6 @@ 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`

View File

@@ -64,24 +64,6 @@ 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`
@@ -101,43 +83,6 @@ 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`
@@ -156,14 +101,6 @@ 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`
@@ -182,14 +119,6 @@ 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`
@@ -211,10 +140,6 @@ 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`
@@ -335,11 +260,6 @@ 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`
@@ -396,8 +316,6 @@ 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`
@@ -420,10 +338,6 @@ 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`
@@ -445,10 +359,6 @@ 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`
@@ -486,11 +396,6 @@ 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`
@@ -513,11 +418,6 @@ 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`
@@ -541,9 +441,6 @@ 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`
@@ -677,16 +574,6 @@ 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`
@@ -709,9 +596,6 @@ 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`
@@ -734,11 +618,6 @@ 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`
@@ -758,11 +637,6 @@ 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`
@@ -801,11 +675,6 @@ 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`
@@ -827,10 +696,6 @@ 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`
@@ -850,11 +715,6 @@ 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`

View File

@@ -54,15 +54,6 @@ 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`
@@ -79,12 +70,6 @@ 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`
@@ -105,12 +90,6 @@ 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`
@@ -128,10 +107,6 @@ 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`
@@ -148,9 +123,6 @@ 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`
@@ -169,10 +141,6 @@ 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`
@@ -191,10 +159,6 @@ 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`
@@ -213,15 +177,6 @@ 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`
@@ -241,11 +196,6 @@ 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`
@@ -265,9 +215,5 @@ 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 |

View File

@@ -59,12 +59,5 @@ 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 |

View File

@@ -61,15 +61,6 @@ 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`
@@ -93,10 +84,6 @@ 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`
@@ -122,10 +109,6 @@ 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`
@@ -145,9 +128,6 @@ 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`

View File

@@ -6,7 +6,7 @@ description: Read and parse multiple files
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="file_v2"
type="file"
color="#40916C"
/>
@@ -48,7 +48,7 @@ Parse one or more uploaded files or files from URLs (text, PDF, CSV, images, etc
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `files` | array | Array of parsed files with content, metadata, and file properties |
| `combinedContent` | string | All file contents merged into a single text string |
| `files` | array | Array of parsed files |
| `combinedContent` | string | Combined content of all parsed files |

View File

@@ -97,21 +97,6 @@ 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`

View File

@@ -75,18 +75,6 @@ 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`
@@ -104,15 +92,6 @@ 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`
@@ -214,9 +193,6 @@ 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`

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +1,15 @@
---
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_v2"
color="#E0E0E0"
color="#F5F5F5"
/>
{/* MANUAL-CONTENT-START:intro */}
[Gmail](https://mail.google.com/) is one of the worlds most popular and reliable email services, trusted by individuals and organizations to send, receive, and manage messages. Gmail offers a secure, intuitive interface with advanced organization and search capabilities, making it a top choice for personal and professional communication.
Gmail provides a comprehensive suite of features for efficient email management, message filtering, and workflow integration. With its powerful API, Gmail enables developers and platforms to automate common email-related tasks, integrate mailbox activities into broader workflows, and enhance productivity by reducing manual effort.
Key features of Gmail include:
- Email Sending and Receiving: Compose, send, and receive emails reliably and securely
- Message Search and Organization: Advanced search, labels, and filters to easily find and categorize messages
- Conversation Threading: Keeps related messages grouped together for better conversation tracking
- Attachments and Formatting: Support for file attachments, rich formatting, and embedded media
- Integration and Automation: Robust API for integrating with other tools and automating email workflows
In Sim, the Gmail integration allows your agents to interact with your emails programmatically—sending, receiving, searching, and organizing messages as part of powerful AI workflows. Agents can draft emails, trigger processes based on new email arrivals, and automate repetitive email tasks, freeing up time and reducing manual labor. By connecting Sim with Gmail, you can build intelligent agents to manage communications, automate follow-ups, and maintain organized inboxes within your workflows.
{/* 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

View File

@@ -1,37 +1,15 @@
---
title: Google Calendar
description: Manage Google Calendar events
description: Event ID
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="google_calendar_v2"
color="#E0E0E0"
color="#F5F5F5"
/>
{/* MANUAL-CONTENT-START:intro */}
[Google Calendar](https://calendar.google.com) is Google's widely used online calendar and scheduling service, making it easy to organize meetings, events, reminders, and appointments individually or collaboratively. As a key part of Google Workspace, Google Calendar offers robust tools for managing your schedule, sending invitations, setting event reminders, and sharing calendars with others.
Google Calendar supports feature-rich integrations and automation, allowing users and teams to streamline event management and keep their workflows synchronized. Its API enables programmatic creation, modification, and listing of calendar events, empowering agents and automated workflows to interact with your schedule in real time.
Key features of Google Calendar include:
- **Event Scheduling**: Create one-time or recurring events with rich details like time, location, and guests.
- **Reminders & Notifications**: Automated email and push reminders to ensure you never miss an important event.
- **Sharing & Collaboration**: Share calendars with individuals or groups, manage permissions, and coordinate meetings seamlessly.
- **Integration**: Connect with Gmail, Meet, Docs, and external tools for a unified productivity experience.
- **Time Zone Support**: Schedule meetings across regions with full time zone awareness.
- **Mobile & Multi-Device Access**: Access your calendar from web, mobile, and desktop.
In Sim, the Google Calendar integration allows your agents to read, create, update, and list calendar events as part of automated workflows. This enables powerful scenarios such as syncing meeting information, generating reminders, tracking event changes, coordinating team schedules, and much more. By connecting Sim with Google Calendar, your agents can handle scheduling tasks, manage events intelligently, and keep your whole organization on track without manual intervention.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Integrate Google Calendar into the workflow. Can create, read, update, and list calendar events.
## Tools
@@ -119,145 +97,6 @@ Get a specific event from Google Calendar. Returns API-aligned fields only.
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |
### `google_calendar_update`
Update an existing event in Google Calendar. Returns API-aligned fields only.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Calendar ID \(defaults to primary\) |
| `eventId` | string | Yes | Event ID to update |
| `summary` | string | No | New event title/summary |
| `description` | string | No | New event description |
| `location` | string | No | New event location |
| `startDateTime` | string | No | New start date and time. MUST include timezone offset \(e.g., 2025-06-03T10:00:00-08:00\) OR provide timeZone parameter |
| `endDateTime` | string | No | New end date and time. MUST include timezone offset \(e.g., 2025-06-03T11:00:00-08:00\) OR provide timeZone parameter |
| `timeZone` | string | No | Time zone \(e.g., America/Los_Angeles\). Required if datetime does not include offset. |
| `attendees` | array | No | Array of attendee email addresses \(replaces existing attendees\) |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `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_delete`
Delete an event from Google Calendar. Returns API-aligned fields only.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Calendar ID \(defaults to primary\) |
| `eventId` | string | Yes | Event ID to delete |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `eventId` | string | Deleted event ID |
| `deleted` | boolean | Whether deletion was successful |
### `google_calendar_move`
Move an event to a different calendar. Returns API-aligned fields only.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Source calendar ID \(defaults to primary\) |
| `eventId` | string | Yes | Event ID to move |
| `destinationCalendarId` | string | Yes | Destination calendar ID |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `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_instances`
Get instances of a recurring event from Google Calendar. Returns API-aligned fields only.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Calendar ID \(defaults to primary\) |
| `eventId` | string | Yes | Recurring event ID to get instances of |
| `timeMin` | string | No | Lower bound for instances \(RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z\) |
| `timeMax` | string | No | Upper bound for instances \(RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z\) |
| `maxResults` | number | No | Maximum number of instances to return \(default 250, max 2500\) |
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
| `showDeleted` | boolean | No | Include deleted instances |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `nextPageToken` | string | Next page token |
| `timeZone` | string | Calendar time zone |
| `instances` | json | List of recurring event instances |
### `google_calendar_list_calendars`
List all calendars in the user
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `minAccessRole` | string | No | Minimum access role for returned calendars: freeBusyReader, reader, writer, or owner |
| `maxResults` | number | No | Maximum number of calendars to return \(default 100, max 250\) |
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
| `showDeleted` | boolean | No | Include deleted calendars |
| `showHidden` | boolean | No | Include hidden calendars |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `nextPageToken` | string | Next page token |
| `calendars` | array | List of calendars |
| ↳ `id` | string | Calendar ID |
| ↳ `summary` | string | Calendar title |
| ↳ `description` | string | Calendar description |
| ↳ `location` | string | Calendar location |
| ↳ `timeZone` | string | Calendar time zone |
| ↳ `accessRole` | string | Access role for the calendar |
| ↳ `backgroundColor` | string | Calendar background color |
| ↳ `foregroundColor` | string | Calendar foreground color |
| ↳ `primary` | boolean | Whether this is the primary calendar |
| ↳ `hidden` | boolean | Whether the calendar is hidden |
| ↳ `selected` | boolean | Whether the calendar is selected |
### `google_calendar_quick_add`
Create events from natural language text. Returns API-aligned fields only.

View File

@@ -87,10 +87,6 @@ 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`
@@ -109,10 +105,6 @@ 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`
@@ -132,9 +124,5 @@ 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 |

View File

@@ -1,6 +1,6 @@
---
title: Google Drive
description: Manage files, folders, and permissions
description: Create, upload, and list files
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
@@ -40,179 +40,12 @@ In Sim, the Google Drive integration enables your agents to interact directly wi
## Usage Instructions
Integrate Google Drive into the workflow. Can create, upload, download, copy, move, delete, share files and manage permissions.
Integrate Google Drive into the workflow. Can create, upload, and list files.
## Tools
### `google_drive_list`
List files and folders in Google Drive with complete metadata
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `folderSelector` | string | No | Select the folder to list files from |
| `folderId` | string | No | The ID of the folder to list files from \(internal use\) |
| `query` | string | No | Search term to filter files by name \(e.g. "budget" finds files with "budget" in the name\). Do NOT use Google Drive query syntax here - just provide a plain search term. |
| `pageSize` | number | No | The maximum number of files to return \(default: 100\) |
| `pageToken` | string | No | The page token to use for pagination |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `files` | array | Array of file metadata objects from Google Drive |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `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 |
### `google_drive_get_file`
Get metadata for a specific file in Google Drive by its ID
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to retrieve |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | json | The file metadata |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `description` | string | File description |
| ↳ `size` | string | File size in bytes |
| ↳ `starred` | boolean | Whether file is starred |
| ↳ `trashed` | boolean | Whether file is in trash |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `webContentLink` | string | Direct download URL |
| ↳ `iconLink` | string | URL to file icon |
| ↳ `thumbnailLink` | string | URL to thumbnail |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `owners` | json | List of file owners |
| ↳ `permissions` | json | File permissions |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `lastModifyingUser` | json | User who last modified the file |
| ↳ `shared` | boolean | Whether file is shared |
| ↳ `ownedByMe` | boolean | Whether owned by current user |
| ↳ `capabilities` | json | User capabilities on file |
| ↳ `md5Checksum` | string | MD5 hash |
| ↳ `version` | string | Version number |
### `google_drive_create_folder`
Create a new folder in Google Drive with complete metadata returned
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileName` | string | Yes | Name of the folder to create |
| `folderSelector` | string | No | Select the parent folder to create the folder in |
| `folderId` | string | No | ID of the parent folder \(internal use\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | object | Complete created folder metadata from Google Drive |
| ↳ `id` | string | Google Drive folder ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | Folder name |
| ↳ `mimeType` | string | MIME type \(application/vnd.google-apps.folder\) |
| ↳ `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_upload`
Upload a file to Google Drive with complete metadata returned
@@ -233,58 +66,24 @@ Upload a file to Google Drive with complete metadata returned
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | object | Complete uploaded file metadata from Google Drive |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `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 with complete metadata returned
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileName` | string | Yes | Name of the folder to create |
| `folderSelector` | string | No | Select the parent folder to create the folder in |
| `folderId` | string | No | ID of the parent folder \(internal use\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | object | Complete created folder metadata from Google Drive |
### `google_drive_download`
@@ -304,270 +103,25 @@ Download a file from Google Drive with complete metadata (exports Google Workspa
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | object | Downloaded file data |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type of the file |
| ↳ `data` | string | File content as base64-encoded string |
| ↳ `size` | number | File size in bytes |
| `metadata` | object | Complete file metadata from Google Drive |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `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_copy`
### `google_drive_list`
Create a copy of a file in Google Drive
List files and folders in Google Drive with complete metadata
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to copy |
| `newName` | string | No | Name for the copied file \(defaults to "Copy of \[original name\]"\) |
| `destinationFolderId` | string | No | ID of the folder to place the copy in \(defaults to same location as original\) |
| `folderSelector` | string | No | Select the folder to list files from |
| `folderId` | string | No | The ID of the folder to list files from \(internal use\) |
| `query` | string | No | Search term to filter files by name \(e.g. "budget" finds files with "budget" in the name\). Do NOT use Google Drive query syntax here - just provide a plain search term. |
| `pageSize` | number | No | The maximum number of files to return \(default: 100\) |
| `pageToken` | string | No | The page token to use for pagination |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | json | The copied file metadata |
| ↳ `id` | string | Google Drive file ID of the copy |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `createdTime` | string | File creation time |
| ↳ `modifiedTime` | string | Last modification time |
| ↳ `owners` | json | List of file owners |
| ↳ `size` | string | File size in bytes |
### `google_drive_update`
Update file metadata in Google Drive (rename, move, star, add description)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to update |
| `name` | string | No | New name for the file |
| `description` | string | No | New description for the file |
| `addParents` | string | No | Comma-separated list of parent folder IDs to add \(moves file to these folders\) |
| `removeParents` | string | No | Comma-separated list of parent folder IDs to remove |
| `starred` | boolean | No | Whether to star or unstar the file |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | json | The updated file metadata |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `description` | string | File description |
| ↳ `starred` | boolean | Whether file is starred |
| ↳ `webViewLink` | string | URL to view in browser |
| ↳ `parents` | json | Parent folder IDs |
| ↳ `modifiedTime` | string | Last modification time |
### `google_drive_trash`
Move a file to the trash in Google Drive (can be restored later)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to move to trash |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | json | The trashed file metadata |
| ↳ `id` | string | Google Drive file ID |
| ↳ `kind` | string | Resource type identifier |
| ↳ `name` | string | File name |
| ↳ `mimeType` | string | MIME type |
| ↳ `trashed` | boolean | Whether file is in trash \(should be true\) |
| ↳ `trashedTime` | string | When file was trashed |
| ↳ `webViewLink` | string | URL to view in browser |
### `google_drive_delete`
Permanently delete a file from Google Drive (bypasses trash)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to permanently delete |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | boolean | Whether the file was successfully deleted |
| `fileId` | string | The ID of the deleted file |
### `google_drive_share`
Share a file with a user, group, domain, or make it public
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to share |
| `type` | string | Yes | Type of grantee: user, group, domain, or anyone |
| `role` | string | Yes | Permission role: owner \(transfer ownership\), organizer \(shared drive only\), fileOrganizer \(shared drive only\), writer \(edit\), commenter \(view and comment\), reader \(view only\) |
| `email` | string | No | Email address of the user or group \(required for type=user or type=group\) |
| `domain` | string | No | Domain to share with \(required for type=domain\) |
| `transferOwnership` | boolean | No | Required when role is owner. Transfers ownership to the specified user. |
| `moveToNewOwnersRoot` | boolean | No | When transferring ownership, move the file to the new owner's My Drive root folder. |
| `sendNotification` | boolean | No | Whether to send an email notification \(default: true\) |
| `emailMessage` | string | No | Custom message to include in the notification email |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `permission` | json | The created permission details |
| ↳ `id` | string | Permission ID |
| ↳ `type` | string | Grantee type \(user, group, domain, anyone\) |
| ↳ `role` | string | Permission role |
| ↳ `emailAddress` | string | Email of the grantee |
| ↳ `displayName` | string | Display name of the grantee |
| ↳ `domain` | string | Domain of the grantee |
| ↳ `expirationTime` | string | Expiration time |
| ↳ `deleted` | boolean | Whether grantee is deleted |
### `google_drive_unshare`
Remove a permission from a file (revoke access)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to modify permissions on |
| `permissionId` | string | Yes | The ID of the permission to remove \(use list_permissions to find this\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `removed` | boolean | Whether the permission was successfully removed |
| `fileId` | string | The ID of the file |
| `permissionId` | string | The ID of the removed permission |
### `google_drive_list_permissions`
List all permissions (who has access) for a file in Google Drive
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to list permissions for |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `permissions` | array | List of permissions on the file |
| ↳ `id` | string | Permission ID \(use to remove permission\) |
| ↳ `type` | string | Grantee type \(user, group, domain, anyone\) |
| ↳ `role` | string | Permission role \(owner, organizer, fileOrganizer, writer, commenter, reader\) |
| ↳ `emailAddress` | string | Email of the grantee |
| ↳ `displayName` | string | Display name of the grantee |
| ↳ `photoLink` | string | Photo URL of the grantee |
| ↳ `domain` | string | Domain of the grantee |
| ↳ `expirationTime` | string | When permission expires |
| ↳ `deleted` | boolean | Whether grantee account is deleted |
| ↳ `allowFileDiscovery` | boolean | Whether file is discoverable by grantee |
| ↳ `pendingOwner` | boolean | Whether ownership transfer is pending |
| ↳ `permissionDetails` | json | Details about inherited permissions |
| `nextPageToken` | string | Token for fetching the next page of permissions |
### `google_drive_get_about`
Get information about the user and their Google Drive (storage quota, capabilities)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `user` | json | Information about the authenticated user |
| ↳ `displayName` | string | User display name |
| ↳ `emailAddress` | string | User email address |
| ↳ `photoLink` | string | URL to user profile photo |
| ↳ `permissionId` | string | User permission ID |
| ↳ `me` | boolean | Whether this is the authenticated user |
| `storageQuota` | json | Storage quota information in bytes |
| ↳ `limit` | string | Total storage limit in bytes \(null for unlimited\) |
| ↳ `usage` | string | Total storage used in bytes |
| ↳ `usageInDrive` | string | Storage used by Drive files in bytes |
| ↳ `usageInDriveTrash` | string | Storage used by trashed files in bytes |
| `canCreateDrives` | boolean | Whether user can create shared drives |
| `importFormats` | json | Map of MIME types that can be imported and their target formats |
| `exportFormats` | json | Map of Google Workspace MIME types and their exportable formats |
| `maxUploadSize` | string | Maximum upload size in bytes |
| `files` | array | Array of file metadata objects from Google Drive |

View File

@@ -1,6 +1,6 @@
---
title: Google Forms
description: Manage Google Forms and responses
description: Read responses from a Google Form
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
@@ -29,7 +29,7 @@ In Sim, the Google Forms integration enables your agents to programmatically acc
## Usage Instructions
Integrate Google Forms into your workflow. Read form structure, get responses, create forms, update content, and manage notification watches.
Integrate Google Forms into your workflow. Provide a Form ID to list responses, or specify a Response ID to fetch a single response. Requires OAuth.
@@ -37,246 +37,15 @@ Integrate Google Forms into your workflow. Read form structure, get responses, c
### `google_forms_get_responses`
Retrieve a single response or list responses from a Google Form
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `formId` | string | Yes | The ID of the Google Form |
| `responseId` | string | No | If provided, returns this specific response |
| `pageSize` | number | No | Maximum number of responses to return \(service may return fewer\). Defaults to 5000. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `responses` | array | Array of form responses \(when no responseId provided\) |
| ↳ `responseId` | string | Unique response ID |
| ↳ `createTime` | string | When the response was created |
| ↳ `lastSubmittedTime` | string | When the response was last submitted |
| ↳ `answers` | json | Map of question IDs to answer values |
| `response` | object | Single form response \(when responseId is provided\) |
| ↳ `responseId` | string | Unique response ID |
| ↳ `createTime` | string | When the response was created |
| ↳ `lastSubmittedTime` | string | When the response was last submitted |
| ↳ `answers` | json | Map of question IDs to answer values |
| `raw` | json | Raw API response data |
### `google_forms_get_form`
Retrieve a form structure including its items, settings, and metadata
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `formId` | string | Yes | The ID of the Google Form to retrieve |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `formId` | string | The form ID |
| `title` | string | The form title visible to responders |
| `description` | string | The form description |
| `documentTitle` | string | The document title visible in Drive |
| `responderUri` | string | The URI to share with responders |
| `linkedSheetId` | string | The ID of the linked Google Sheet |
| `revisionId` | string | The revision ID of the form |
| `items` | array | The form items \(questions, sections, etc.\) |
| ↳ `itemId` | string | Item ID |
| ↳ `title` | string | Item title |
| ↳ `description` | string | Item description |
| `settings` | json | Form settings |
| `publishSettings` | json | Form publish settings |
### `google_forms_create_form`
Create a new Google Form with a title
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `title` | string | Yes | The title of the form visible to responders |
| `documentTitle` | string | No | The document title visible in Drive \(defaults to form title\) |
| `unpublished` | boolean | No | If true, create an unpublished form that does not accept responses |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `formId` | string | The ID of the created form |
| `title` | string | The form title |
| `documentTitle` | string | The document title in Drive |
| `responderUri` | string | The URI to share with responders |
| `revisionId` | string | The revision ID of the form |
### `google_forms_batch_update`
Apply multiple updates to a form (add items, update info, change settings, etc.)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `formId` | string | Yes | The ID of the Google Form to update |
| `requests` | json | Yes | Array of update requests \(updateFormInfo, updateSettings, createItem, updateItem, moveItem, deleteItem\) |
| `includeFormInResponse` | boolean | No | Whether to return the updated form in the response |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `replies` | array | The replies from each update request |
| `writeControl` | object | Write control information with revision IDs |
| ↳ `requiredRevisionId` | string | Required revision ID for conflict detection |
| ↳ `targetRevisionId` | string | Target revision ID |
| `form` | object | The updated form \(if includeFormInResponse was true\) |
| ↳ `formId` | string | The form ID |
| ↳ `info` | object | Form info containing title and description |
| ↳ `title` | string | The form title visible to responders |
| ↳ `description` | string | The form description |
| ↳ `documentTitle` | string | The document title visible in Drive |
| ↳ `title` | string | Item title |
| ↳ `description` | string | Item description |
| ↳ `documentTitle` | string | The document title visible in Drive |
| ↳ `settings` | object | Form settings |
| ↳ `quizSettings` | object | Quiz settings |
| ↳ `isQuiz` | boolean | Whether the form is a quiz |
| ↳ `isQuiz` | boolean | Whether the form is a quiz |
| ↳ `emailCollectionType` | string | Email collection type |
| ↳ `quizSettings` | object | Quiz settings |
| ↳ `isQuiz` | boolean | Whether the form is a quiz |
| ↳ `isQuiz` | boolean | Whether the form is a quiz |
| ↳ `emailCollectionType` | string | Email collection type |
| ↳ `itemId` | string | Item ID |
| ↳ `questionItem` | json | Question item configuration |
| ↳ `questionGroupItem` | json | Question group configuration |
| ↳ `pageBreakItem` | json | Page break configuration |
| ↳ `textItem` | json | Text item configuration |
| ↳ `imageItem` | json | Image item configuration |
| ↳ `videoItem` | json | Video item configuration |
| ↳ `revisionId` | string | The revision ID of the form |
| ↳ `responderUri` | string | The URI to share with responders |
| ↳ `linkedSheetId` | string | The ID of the linked Google Sheet |
| ↳ `publishSettings` | object | Form publish settings |
| ↳ `publishState` | object | Current publish state |
| ↳ `isPublished` | boolean | Whether the form is published |
| ↳ `isAcceptingResponses` | boolean | Whether the form is accepting responses |
| ↳ `isPublished` | boolean | Whether the form is published |
| ↳ `isAcceptingResponses` | boolean | Whether the form is accepting responses |
| ↳ `publishState` | object | Current publish state |
| ↳ `isPublished` | boolean | Whether the form is published |
| ↳ `isAcceptingResponses` | boolean | Whether the form is accepting responses |
| ↳ `isPublished` | boolean | Whether the form is published |
| ↳ `isAcceptingResponses` | boolean | Whether the form is accepting responses |
### `google_forms_set_publish_settings`
Update the publish settings of a form (publish/unpublish, accept responses)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `formId` | string | Yes | The ID of the Google Form |
| `isPublished` | boolean | Yes | Whether the form is published and visible to others |
| `isAcceptingResponses` | boolean | No | Whether the form accepts responses \(forced to false if isPublished is false\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `formId` | string | The form ID |
| `publishSettings` | json | The updated publish settings |
| ↳ `publishState` | object | The publish state |
| ↳ `isPublished` | boolean | Whether the form is published |
| ↳ `isAcceptingResponses` | boolean | Whether the form accepts responses |
| ↳ `isPublished` | boolean | Whether the form is published |
| ↳ `isAcceptingResponses` | boolean | Whether the form accepts responses |
### `google_forms_create_watch`
Create a notification watch for form changes (schema changes or new responses)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `formId` | string | Yes | The ID of the Google Form to watch |
| `eventType` | string | Yes | Event type to watch: SCHEMA \(form changes\) or RESPONSES \(new submissions\) |
| `topicName` | string | Yes | The Cloud Pub/Sub topic name \(format: projects/\{project\}/topics/\{topic\}\) |
| `watchId` | string | No | Custom watch ID \(4-63 chars, lowercase letters, numbers, hyphens\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | The watch ID |
| `eventType` | string | The event type being watched |
| `topicName` | string | The Cloud Pub/Sub topic |
| `createTime` | string | When the watch was created |
| `expireTime` | string | When the watch expires \(7 days after creation\) |
| `state` | string | The watch state \(ACTIVE, SUSPENDED\) |
### `google_forms_list_watches`
List all notification watches for a form
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `formId` | string | Yes | The ID of the Google Form |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `watches` | array | List of watches for the form |
| ↳ `id` | string | Watch ID |
| ↳ `eventType` | string | Event type \(SCHEMA or RESPONSES\) |
| ↳ `createTime` | string | When the watch was created |
| ↳ `expireTime` | string | When the watch expires |
| ↳ `state` | string | Watch state |
### `google_forms_delete_watch`
Delete a notification watch from a form
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `formId` | string | Yes | The ID of the Google Form |
| `watchId` | string | Yes | The ID of the watch to delete |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | boolean | Whether the watch was successfully deleted |
### `google_forms_renew_watch`
Renew a notification watch for another 7 days
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `formId` | string | Yes | The ID of the Google Form |
| `watchId` | string | Yes | The ID of the watch to renew |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | The watch ID |
| `eventType` | string | The event type being watched |
| `expireTime` | string | The new expiration time |
| `state` | string | The watch state |
| `data` | json | Response or list of responses |

View File

@@ -215,191 +215,4 @@ Check if a user is a member of a Google Group
| --------- | ---- | ----------- |
| `isMember` | boolean | Whether the user is a member of the group |
### `google_groups_list_aliases`
List all email aliases for a Google Group
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `groupKey` | string | Yes | Group email address or unique group ID |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `aliases` | array | List of email aliases for the group |
| ↳ `id` | string | Unique group identifier |
| ↳ `primaryEmail` | string | Group |
| ↳ `alias` | string | Alias email address |
| ↳ `kind` | string | API resource type |
| ↳ `etag` | string | Resource version identifier |
### `google_groups_add_alias`
Add an email alias to a Google Group
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `groupKey` | string | Yes | Group email address or unique group ID |
| `alias` | string | Yes | The email alias to add to the group |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Unique group identifier |
| `primaryEmail` | string | Group |
| `alias` | string | The alias that was added |
| `kind` | string | API resource type |
| `etag` | string | Resource version identifier |
### `google_groups_remove_alias`
Remove an email alias from a Google Group
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `groupKey` | string | Yes | Group email address or unique group ID |
| `alias` | string | Yes | The email alias to remove from the group |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | boolean | Whether the alias was successfully deleted |
### `google_groups_get_settings`
Get the settings for a Google Group including access permissions, moderation, and posting options
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `groupEmail` | string | Yes | The email address of the group |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `email` | string | The group |
| `name` | string | The group name \(max 75 characters\) |
| `description` | string | The group description \(max 4096 characters\) |
| `whoCanJoin` | string | Who can join the group \(ANYONE_CAN_JOIN, ALL_IN_DOMAIN_CAN_JOIN, INVITED_CAN_JOIN, CAN_REQUEST_TO_JOIN\) |
| `whoCanViewMembership` | string | Who can view group membership |
| `whoCanViewGroup` | string | Who can view group messages |
| `whoCanPostMessage` | string | Who can post messages to the group |
| `allowExternalMembers` | string | Whether external users can be members |
| `allowWebPosting` | string | Whether web posting is allowed |
| `primaryLanguage` | string | The group |
| `isArchived` | string | Whether messages are archived |
| `archiveOnly` | string | Whether the group is archive-only \(inactive\) |
| `messageModerationLevel` | string | Message moderation level |
| `spamModerationLevel` | string | Spam handling level \(ALLOW, MODERATE, SILENTLY_MODERATE, REJECT\) |
| `replyTo` | string | Default reply destination |
| `customReplyTo` | string | Custom email for replies |
| `includeCustomFooter` | string | Whether to include custom footer |
| `customFooterText` | string | Custom footer text \(max 1000 characters\) |
| `sendMessageDenyNotification` | string | Whether to send rejection notifications |
| `defaultMessageDenyNotificationText` | string | Default rejection message text |
| `membersCanPostAsTheGroup` | string | Whether members can post as the group |
| `includeInGlobalAddressList` | string | Whether included in Global Address List |
| `whoCanLeaveGroup` | string | Who can leave the group |
| `whoCanContactOwner` | string | Who can contact the group owner |
| `favoriteRepliesOnTop` | string | Whether favorite replies appear at top |
| `whoCanApproveMembers` | string | Who can approve new members |
| `whoCanBanUsers` | string | Who can ban users |
| `whoCanModerateMembers` | string | Who can manage members |
| `whoCanModerateContent` | string | Who can moderate content |
| `whoCanAssistContent` | string | Who can assist with content metadata |
| `enableCollaborativeInbox` | string | Whether collaborative inbox is enabled |
| `whoCanDiscoverGroup` | string | Who can discover the group |
| `defaultSender` | string | Default sender identity \(DEFAULT_SELF or GROUP\) |
### `google_groups_update_settings`
Update the settings for a Google Group including access permissions, moderation, and posting options
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `groupEmail` | string | Yes | The email address of the group |
| `name` | string | No | The group name \(max 75 characters\) |
| `description` | string | No | The group description \(max 4096 characters\) |
| `whoCanJoin` | string | No | Who can join: ANYONE_CAN_JOIN, ALL_IN_DOMAIN_CAN_JOIN, INVITED_CAN_JOIN, CAN_REQUEST_TO_JOIN |
| `whoCanViewMembership` | string | No | Who can view membership: ALL_IN_DOMAIN_CAN_VIEW, ALL_MEMBERS_CAN_VIEW, ALL_MANAGERS_CAN_VIEW |
| `whoCanViewGroup` | string | No | Who can view group messages: ANYONE_CAN_VIEW, ALL_IN_DOMAIN_CAN_VIEW, ALL_MEMBERS_CAN_VIEW, ALL_MANAGERS_CAN_VIEW |
| `whoCanPostMessage` | string | No | Who can post: NONE_CAN_POST, ALL_MANAGERS_CAN_POST, ALL_MEMBERS_CAN_POST, ALL_OWNERS_CAN_POST, ALL_IN_DOMAIN_CAN_POST, ANYONE_CAN_POST |
| `allowExternalMembers` | string | No | Whether external users can be members: true or false |
| `allowWebPosting` | string | No | Whether web posting is allowed: true or false |
| `primaryLanguage` | string | No | The group's primary language \(e.g., en\) |
| `isArchived` | string | No | Whether messages are archived: true or false |
| `archiveOnly` | string | No | Whether the group is archive-only \(inactive\): true or false |
| `messageModerationLevel` | string | No | Message moderation: MODERATE_ALL_MESSAGES, MODERATE_NON_MEMBERS, MODERATE_NEW_MEMBERS, MODERATE_NONE |
| `spamModerationLevel` | string | No | Spam handling: ALLOW, MODERATE, SILENTLY_MODERATE, REJECT |
| `replyTo` | string | No | Default reply: REPLY_TO_CUSTOM, REPLY_TO_SENDER, REPLY_TO_LIST, REPLY_TO_OWNER, REPLY_TO_IGNORE, REPLY_TO_MANAGERS |
| `customReplyTo` | string | No | Custom email for replies \(when replyTo is REPLY_TO_CUSTOM\) |
| `includeCustomFooter` | string | No | Whether to include custom footer: true or false |
| `customFooterText` | string | No | Custom footer text \(max 1000 characters\) |
| `sendMessageDenyNotification` | string | No | Whether to send rejection notifications: true or false |
| `defaultMessageDenyNotificationText` | string | No | Default rejection message text |
| `membersCanPostAsTheGroup` | string | No | Whether members can post as the group: true or false |
| `includeInGlobalAddressList` | string | No | Whether included in Global Address List: true or false |
| `whoCanLeaveGroup` | string | No | Who can leave: ALL_MANAGERS_CAN_LEAVE, ALL_MEMBERS_CAN_LEAVE, NONE_CAN_LEAVE |
| `whoCanContactOwner` | string | No | Who can contact owner: ALL_IN_DOMAIN_CAN_CONTACT, ALL_MANAGERS_CAN_CONTACT, ALL_MEMBERS_CAN_CONTACT, ANYONE_CAN_CONTACT |
| `favoriteRepliesOnTop` | string | No | Whether favorite replies appear at top: true or false |
| `whoCanApproveMembers` | string | No | Who can approve members: ALL_OWNERS_CAN_APPROVE, ALL_MANAGERS_CAN_APPROVE, ALL_MEMBERS_CAN_APPROVE, NONE_CAN_APPROVE |
| `whoCanBanUsers` | string | No | Who can ban users: OWNERS_ONLY, OWNERS_AND_MANAGERS, NONE |
| `whoCanModerateMembers` | string | No | Who can manage members: OWNERS_ONLY, OWNERS_AND_MANAGERS, ALL_MEMBERS, NONE |
| `whoCanModerateContent` | string | No | Who can moderate content: OWNERS_ONLY, OWNERS_AND_MANAGERS, ALL_MEMBERS, NONE |
| `whoCanAssistContent` | string | No | Who can assist with content metadata: OWNERS_ONLY, OWNERS_AND_MANAGERS, ALL_MEMBERS, NONE |
| `enableCollaborativeInbox` | string | No | Whether collaborative inbox is enabled: true or false |
| `whoCanDiscoverGroup` | string | No | Who can discover: ANYONE_CAN_DISCOVER, ALL_IN_DOMAIN_CAN_DISCOVER, ALL_MEMBERS_CAN_DISCOVER |
| `defaultSender` | string | No | Default sender: DEFAULT_SELF or GROUP |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `email` | string | The group |
| `name` | string | The group name |
| `description` | string | The group description |
| `whoCanJoin` | string | Who can join the group |
| `whoCanViewMembership` | string | Who can view group membership |
| `whoCanViewGroup` | string | Who can view group messages |
| `whoCanPostMessage` | string | Who can post messages to the group |
| `allowExternalMembers` | string | Whether external users can be members |
| `allowWebPosting` | string | Whether web posting is allowed |
| `primaryLanguage` | string | The group |
| `isArchived` | string | Whether messages are archived |
| `archiveOnly` | string | Whether the group is archive-only |
| `messageModerationLevel` | string | Message moderation level |
| `spamModerationLevel` | string | Spam handling level |
| `replyTo` | string | Default reply destination |
| `customReplyTo` | string | Custom email for replies |
| `includeCustomFooter` | string | Whether to include custom footer |
| `customFooterText` | string | Custom footer text |
| `sendMessageDenyNotification` | string | Whether to send rejection notifications |
| `defaultMessageDenyNotificationText` | string | Default rejection message text |
| `membersCanPostAsTheGroup` | string | Whether members can post as the group |
| `includeInGlobalAddressList` | string | Whether included in Global Address List |
| `whoCanLeaveGroup` | string | Who can leave the group |
| `whoCanContactOwner` | string | Who can contact the group owner |
| `favoriteRepliesOnTop` | string | Whether favorite replies appear at top |
| `whoCanApproveMembers` | string | Who can approve new members |
| `whoCanBanUsers` | string | Who can ban users |
| `whoCanModerateMembers` | string | Who can manage members |
| `whoCanModerateContent` | string | Who can moderate content |
| `whoCanAssistContent` | string | Who can assist with content metadata |
| `enableCollaborativeInbox` | string | Whether collaborative inbox is enabled |
| `whoCanDiscoverGroup` | string | Who can discover the group |
| `defaultSender` | string | Default sender identity |

View File

@@ -63,15 +63,5 @@ 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 |

View File

@@ -1,34 +1,83 @@
---
title: Google Sheets
description: Read, write, and update data with sheet selection
description: Read, write, and update data
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="google_sheets_v2"
type="google_sheets"
color="#E0E0E0"
/>
{/* MANUAL-CONTENT-START:intro */}
[Google Sheets](https://www.google.com/sheets/about/) is a powerful, cloud-based spreadsheet platform that allows teams and individuals to create, edit, and collaborate on spreadsheets in real-time. Widely used for data tracking, reporting, and lightweight database needs, Google Sheets seamlessly integrates with many tools and services to empower workflow automation and data-driven operations.
[Google Sheets](https://sheets.google.com) is a powerful cloud-based spreadsheet application that allows users to create, edit, and collaborate on spreadsheets in real-time. As part of Google's productivity suite, Google Sheets offers a versatile platform for data organization, analysis, and visualization with robust formatting, formula, and sharing capabilities.
Google Sheets offers an extensive feature set for managing and analyzing tabular data, supporting everything from basic calculations to complex reporting and collaborative editing. Its robust API and integration capabilities enable automated access, updates, and reporting from agents and external services.
Learn how to integrate the Google Sheets "Read" tool in Sim to effortlessly fetch data from your spreadsheets to integrate into your workflows. This tutorial walks you through connecting Google Sheets, setting up data reads, and using that information to automate processes in real-time. Perfect for syncing live data with your agents.
Key features of Google Sheets include:
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/xxP7MZRuq_0"
title="Use the Google Sheets Read tool in Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
- Real-Time Collaboration: Multiple users can edit and view spreadsheets simultaneously from anywhere.
- Rich Data Manipulation: Support for formulas, charts, pivots, and add-ons to analyze and visualize data.
- Easy Data Import/Export: Ability to connect and sync data from various sources using integrations and APIs.
- Powerful Permissions: Fine-grained sharing, access controls, and version history for team management.
Discover how to use the Google Sheets "Write" tool in Sim to automatically send data from your workflows to your Google Sheets. This tutorial covers setting up the integration, configuring write operations, and updating your sheets seamlessly as workflows execute. Perfect for maintaining real-time records without manual input.
In Sim, the Google Sheets integration empowers your agents to automate reading from, writing to, and updating specific sheets within spreadsheets. Agents can interact programmatically with Google Sheets to retrieve or modify data, manage collaborative documents, and automate reporting or record-keeping as part of your AI workflows. By connecting Sim with Google Sheets, you can build intelligent agents that manage, analyze, and update your data dynamically—streamlining operations, enhancing productivity, and ensuring up-to-date data access across your organization.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/cO86qTj7qeY"
title="Use the Google Sheets Write tool in Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Explore how to leverage the Google Sheets "Update" tool in Sim to modify existing entries in your spreadsheets based on workflow execution. This tutorial demonstrates setting up the update logic, mapping data fields, and synchronizing changes instantly. Perfect for keeping your data current and consistent.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/95by2fL9yn4"
title="Use the Google Sheets Update tool in Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Learn how to use the Google Sheets "Append" tool in Sim to effortlessly add new rows of data to your spreadsheets during workflow execution. This tutorial walks you through setting up the integration, configuring append actions, and ensuring smooth data growth. Perfect for expanding records without manual effort!
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/8DgNvLBCsAo"
title="Use the Google Sheets Append tool in Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
With Google Sheets, you can:
- **Create and edit spreadsheets**: Develop data-driven documents with comprehensive formatting and calculation options
- **Collaborate in real-time**: Work simultaneously with multiple users on the same spreadsheet
- **Analyze data**: Use formulas, functions, and pivot tables to process and understand your data
- **Visualize information**: Create charts, graphs, and conditional formatting to represent data visually
- **Access anywhere**: Use Google Sheets across devices with automatic cloud synchronization
- **Work offline**: Continue working without internet connection with changes syncing when back online
- **Integrate with other services**: Connect with Google Drive, Forms, and third-party applications
In Sim, the Google Sheets integration enables your agents to interact directly with spreadsheet data programmatically. This allows for powerful automation scenarios such as data extraction, analysis, reporting, and management. Your agents can read existing spreadsheets to extract information, write to spreadsheets to update data, and create new spreadsheets from scratch. This integration bridges the gap between your AI workflows and data management, enabling seamless interaction with structured data. By connecting Sim with Google Sheets, you can automate data workflows, generate reports, extract insights from data, and maintain up-to-date information - all through your intelligent agents. The integration supports various data formats and range specifications, making it flexible enough to handle diverse data management needs while maintaining the collaborative and accessible nature of Google Sheets.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Integrate Google Sheets into the workflow with explicit sheet selection. Can read, write, append, update, clear data, create spreadsheets, get spreadsheet info, and copy sheets.
Integrate Google Sheets into the workflow. Can read, write, append, and update data.
@@ -36,7 +85,7 @@ Integrate Google Sheets into the workflow with explicit sheet selection. Can rea
### `google_sheets_read`
Read data from a specific sheet in a Google Sheets spreadsheet
Read data from a Google Sheets spreadsheet
#### Input
@@ -49,16 +98,12 @@ Read data from a specific sheet in a Google Sheets spreadsheet
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sheetName` | string | Name of the sheet that was read |
| `range` | string | The range of cells that was read |
| `values` | array | The cell values as a 2D array |
| `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`
Write data to a specific sheet in a Google Sheets spreadsheet
Write data to a Google Sheets spreadsheet
#### Input
@@ -79,12 +124,10 @@ Write data to a specific sheet 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_update`
Update data in a specific sheet in a Google Sheets spreadsheet
Update data in a Google Sheets spreadsheet
#### Input
@@ -105,12 +148,10 @@ Update data in a specific sheet 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`
Append data to the end of a specific sheet in a Google Sheets spreadsheet
Append data to the end of a Google Sheets spreadsheet
#### Input
@@ -133,183 +174,5 @@ Append data to the end of a specific sheet 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_clear`
Clear values from a specific range in a Google Sheets spreadsheet
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Yes | The ID of the spreadsheet |
| `sheetName` | string | Yes | The name of the sheet/tab to clear |
| `cellRange` | string | No | The cell range to clear \(e.g. "A1:D10"\). Clears entire sheet if not specified. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `clearedRange` | string | The range that was cleared |
| `sheetName` | string | Name of the sheet that was cleared |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### `google_sheets_get_spreadsheet`
Get metadata about a Google Sheets spreadsheet including title and sheet list
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Yes | The ID of the spreadsheet |
| `includeGridData` | boolean | No | Whether to include grid data \(cell values\). Defaults to false. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `spreadsheetId` | string | The spreadsheet ID |
| `title` | string | The title of the spreadsheet |
| `locale` | string | The locale of the spreadsheet |
| `timeZone` | string | The time zone of the spreadsheet |
| `spreadsheetUrl` | string | URL to the spreadsheet |
| `sheets` | array | List of sheets in the spreadsheet |
| ↳ `sheetId` | number | The sheet ID |
| ↳ `title` | string | The sheet title/name |
| ↳ `index` | number | The sheet index \(position\) |
| ↳ `rowCount` | number | Number of rows in the sheet |
| ↳ `columnCount` | number | Number of columns in the sheet |
| ↳ `hidden` | boolean | Whether the sheet is hidden |
### `google_sheets_create_spreadsheet`
Create a new Google Sheets spreadsheet
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `title` | string | Yes | The title of the new spreadsheet |
| `sheetTitles` | json | No | Array of sheet names to create \(e.g., \["Sheet1", "Data", "Summary"\]\). Defaults to a single "Sheet1". |
| `locale` | string | No | The locale of the spreadsheet \(e.g., "en_US"\) |
| `timeZone` | string | No | The time zone of the spreadsheet \(e.g., "America/New_York"\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `spreadsheetId` | string | The ID of the created spreadsheet |
| `title` | string | The title of the created spreadsheet |
| `spreadsheetUrl` | string | URL to the created spreadsheet |
| `sheets` | array | List of sheets created in the spreadsheet |
| ↳ `sheetId` | number | The sheet ID |
| ↳ `title` | string | The sheet title/name |
| ↳ `index` | number | The sheet index \(position\) |
### `google_sheets_batch_get`
Read multiple ranges from a Google Sheets spreadsheet in a single request
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Yes | The ID of the spreadsheet |
| `ranges` | json | Yes | Array of ranges to read \(e.g., \["Sheet1!A1:D10", "Sheet2!A1:B5"\]\). Each range should include sheet name. |
| `majorDimension` | string | No | The major dimension of values: "ROWS" \(default\) or "COLUMNS" |
| `valueRenderOption` | string | No | How values should be rendered: "FORMATTED_VALUE" \(default\), "UNFORMATTED_VALUE", or "FORMULA" |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `spreadsheetId` | string | The spreadsheet ID |
| `valueRanges` | array | Array of value ranges read from the spreadsheet |
| ↳ `range` | string | The range that was read |
| ↳ `majorDimension` | string | Major dimension \(ROWS or COLUMNS\) |
| ↳ `values` | array | The cell values as a 2D array |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### `google_sheets_batch_update`
Update multiple ranges in a Google Sheets spreadsheet in a single request
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Yes | The ID of the spreadsheet |
| `data` | json | Yes | Array of value ranges to update. Each item should have "range" \(e.g., "Sheet1!A1:D10"\) and "values" \(2D array\). |
| `valueInputOption` | string | No | How input data should be interpreted: "RAW" or "USER_ENTERED" \(default\). USER_ENTERED parses formulas. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `spreadsheetId` | string | The spreadsheet ID |
| `totalUpdatedRows` | number | Total number of rows updated |
| `totalUpdatedColumns` | number | Total number of columns updated |
| `totalUpdatedCells` | number | Total number of cells updated |
| `totalUpdatedSheets` | number | Total number of sheets updated |
| `responses` | array | Array of update responses for each range |
| ↳ `spreadsheetId` | string | The spreadsheet ID |
| ↳ `updatedRange` | string | The range that was updated |
| ↳ `updatedRows` | number | Number of rows updated in this range |
| ↳ `updatedColumns` | number | Number of columns updated in this range |
| ↳ `updatedCells` | number | Number of cells updated in this range |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### `google_sheets_batch_clear`
Clear multiple ranges in a Google Sheets spreadsheet in a single request
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Yes | The ID of the spreadsheet |
| `ranges` | json | Yes | Array of ranges to clear \(e.g., \["Sheet1!A1:D10", "Sheet2!A1:B5"\]\). Each range should include sheet name. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `spreadsheetId` | string | The spreadsheet ID |
| `clearedRanges` | array | Array of ranges that were cleared |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Google Sheets spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
### `google_sheets_copy_sheet`
Copy a sheet from one spreadsheet to another
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `sourceSpreadsheetId` | string | Yes | The ID of the source spreadsheet |
| `sheetId` | number | Yes | The ID of the sheet to copy \(numeric ID, not the sheet name\). Use Get Spreadsheet to find sheet IDs. |
| `destinationSpreadsheetId` | string | Yes | The ID of the destination spreadsheet where the sheet will be copied |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sheetId` | number | The ID of the newly created sheet in the destination |
| `title` | string | The title of the copied sheet |
| `index` | number | The index \(position\) of the copied sheet |
| `sheetType` | string | The type of the sheet \(GRID, CHART, etc.\) |
| `destinationSpreadsheetId` | string | The ID of the destination spreadsheet |
| `destinationSpreadsheetUrl` | string | URL to the destination spreadsheet |

View File

@@ -30,7 +30,7 @@ In Sim, the Google Slides integration enables your agents to interact directly w
## Usage Instructions
Integrate Google Slides into the workflow. Can read, write, create presentations, replace text, add slides, add images, get thumbnails, get page details, delete objects, duplicate objects, reorder slides, create tables, create shapes, and insert text.
Integrate Google Slides into the workflow. Can read, write, create presentations, replace text, add slides, add images, and get thumbnails.
@@ -52,15 +52,6 @@ Read content from a Google Slides presentation
| --------- | ---- | ----------- |
| `slides` | json | Array of slides with their content |
| `metadata` | json | Presentation metadata including ID, title, and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `title` | string | The presentation title |
| ↳ `pageSize` | object | Presentation page size |
| ↳ `width` | json | Page width as a Dimension object |
| ↳ `height` | json | Page height as a Dimension object |
| ↳ `width` | json | Page width as a Dimension object |
| ↳ `height` | json | Page height as a Dimension object |
| ↳ `mimeType` | string | The mime type of the presentation |
| ↳ `url` | string | URL to open the presentation |
### `google_slides_write`
@@ -80,10 +71,6 @@ Write or update content in a Google Slides presentation
| --------- | ---- | ----------- |
| `updatedContent` | boolean | Indicates if presentation content was updated successfully |
| `metadata` | json | Updated presentation metadata including ID, title, and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `title` | string | The presentation title |
| ↳ `mimeType` | string | The mime type of the presentation |
| ↳ `url` | string | URL to open the presentation |
### `google_slides_create`
@@ -103,10 +90,6 @@ Create a new Google Slides presentation
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `metadata` | json | Created presentation metadata including ID, title, and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `title` | string | The presentation title |
| ↳ `mimeType` | string | The mime type of the presentation |
| ↳ `url` | string | URL to open the presentation |
### `google_slides_replace_all_text`
@@ -128,10 +111,6 @@ Find and replace all occurrences of text throughout a Google Slides presentation
| --------- | ---- | ----------- |
| `occurrencesChanged` | number | Number of text occurrences that were replaced |
| `metadata` | json | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `findText` | string | The text that was searched for |
| ↳ `replaceText` | string | The text that replaced the matches |
| ↳ `url` | string | URL to open the presentation |
### `google_slides_add_slide`
@@ -152,10 +131,6 @@ Add a new slide to a Google Slides presentation with a specified layout
| --------- | ---- | ----------- |
| `slideId` | string | The object ID of the newly created slide |
| `metadata` | json | Operation metadata including presentation ID, layout, and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `layout` | string | The layout used for the new slide |
| ↳ `insertionIndex` | number | The zero-based index where the slide was inserted |
| ↳ `url` | string | URL to open the presentation |
### `google_slides_add_image`
@@ -179,10 +154,6 @@ Insert an image into a specific slide in a Google Slides presentation
| --------- | ---- | ----------- |
| `imageId` | string | The object ID of the newly created image |
| `metadata` | json | Operation metadata including presentation ID and image URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The page object ID where the image was inserted |
| ↳ `imageUrl` | string | The source image URL |
| ↳ `url` | string | URL to open the presentation |
### `google_slides_get_thumbnail`
@@ -205,182 +176,5 @@ Generate a thumbnail image of a specific slide in a Google Slides presentation
| `width` | number | Width of the thumbnail in pixels |
| `height` | number | Height of the thumbnail in pixels |
| `metadata` | json | Operation metadata including presentation ID and page object ID |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The page object ID for the thumbnail |
| ↳ `thumbnailSize` | string | The requested thumbnail size |
| ↳ `mimeType` | string | The thumbnail MIME type |
### `google_slides_get_page`
Get detailed information about a specific slide/page in a Google Slides presentation
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `presentationId` | string | Yes | The ID of the presentation |
| `pageObjectId` | string | Yes | The object ID of the slide/page to retrieve |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `objectId` | string | The object ID of the page |
| `pageType` | string | The type of page \(SLIDE, MASTER, LAYOUT, NOTES, NOTES_MASTER\) |
| `pageElements` | array | Array of page elements \(shapes, images, tables, etc.\) on this page |
| `slideProperties` | object | Properties specific to slides \(layout, master, notes\) |
| ↳ `layoutObjectId` | string | Object ID of the layout this slide is based on |
| ↳ `masterObjectId` | string | Object ID of the master this slide is based on |
| ↳ `notesPage` | json | The notes page associated with the slide |
| `metadata` | object | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### `google_slides_delete_object`
Delete a page element (shape, image, table, etc.) or an entire slide from a Google Slides presentation
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `presentationId` | string | Yes | The ID of the presentation |
| `objectId` | string | Yes | The object ID of the element or slide to delete |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | boolean | Whether the object was successfully deleted |
| `objectId` | string | The object ID that was deleted |
| `metadata` | object | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### `google_slides_duplicate_object`
Duplicate an object (slide, shape, image, table, etc.) in a Google Slides presentation
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `presentationId` | string | Yes | The ID of the presentation |
| `objectId` | string | Yes | The object ID of the element or slide to duplicate |
| `objectIds` | string | No | Optional JSON object mapping source object IDs \(within the slide being duplicated\) to new object IDs for the duplicates. Format: \{"sourceId1":"newId1","sourceId2":"newId2"\} |
| `Format` | string | No | No description |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `duplicatedObjectId` | string | The object ID of the newly created duplicate |
| `metadata` | object | Operation metadata including presentation ID and source object ID |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `sourceObjectId` | string | The original object ID that was duplicated |
| ↳ `url` | string | URL to the presentation |
### `google_slides_update_slides_position`
Move one or more slides to a new position in a Google Slides presentation
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `presentationId` | string | Yes | The ID of the presentation |
| `slideObjectIds` | string | Yes | Comma-separated list of slide object IDs to move. The slides will maintain their relative order. |
| `insertionIndex` | number | Yes | The zero-based index where the slides should be moved. All slides with indices greater than or equal to this will be shifted right. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `moved` | boolean | Whether the slides were successfully moved |
| `slideObjectIds` | array | The slide object IDs that were moved |
| `insertionIndex` | number | The index where the slides were moved to |
| `metadata` | object | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |
### `google_slides_create_table`
Create a new table on a slide in a Google Slides presentation
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `presentationId` | string | Yes | The ID of the presentation |
| `pageObjectId` | string | Yes | The object ID of the slide/page to add the table to |
| `rows` | number | Yes | Number of rows in the table \(minimum 1\) |
| `columns` | number | Yes | Number of columns in the table \(minimum 1\) |
| `width` | number | No | Width of the table in points \(default: 400\) |
| `height` | number | No | Height of the table in points \(default: 200\) |
| `positionX` | number | No | X position from the left edge in points \(default: 100\) |
| `positionY` | number | No | Y position from the top edge in points \(default: 100\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `tableId` | string | The object ID of the newly created table |
| `rows` | number | Number of rows in the table |
| `columns` | number | Number of columns in the table |
| `metadata` | object | Operation metadata including presentation ID and page object ID |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The page object ID where the table was created |
| ↳ `url` | string | URL to the presentation |
### `google_slides_create_shape`
Create a shape (rectangle, ellipse, text box, arrow, etc.) on a slide in a Google Slides presentation
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `presentationId` | string | Yes | The ID of the presentation |
| `pageObjectId` | string | Yes | The object ID of the slide/page to add the shape to |
| `shapeType` | string | Yes | The type of shape to create. Common types: TEXT_BOX, RECTANGLE, ROUND_RECTANGLE, ELLIPSE, TRIANGLE, DIAMOND, STAR_5, ARROW_EAST, HEART, CLOUD |
| `width` | number | No | Width of the shape in points \(default: 200\) |
| `height` | number | No | Height of the shape in points \(default: 100\) |
| `positionX` | number | No | X position from the left edge in points \(default: 100\) |
| `positionY` | number | No | Y position from the top edge in points \(default: 100\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `shapeId` | string | The object ID of the newly created shape |
| `shapeType` | string | The type of shape that was created |
| `metadata` | object | Operation metadata including presentation ID and page object ID |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `pageObjectId` | string | The page object ID where the shape was created |
| ↳ `url` | string | URL to the presentation |
### `google_slides_insert_text`
Insert text into a shape or table cell in a Google Slides presentation. Use this to add text to text boxes, shapes, or table cells.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `presentationId` | string | Yes | The ID of the presentation |
| `objectId` | string | Yes | The object ID of the shape or table cell to insert text into. For table cells, use the cell object ID. |
| `text` | string | Yes | The text to insert |
| `insertionIndex` | number | No | The zero-based index at which to insert the text. If not specified, text is inserted at the beginning \(index 0\). |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `inserted` | boolean | Whether the text was successfully inserted |
| `objectId` | string | The object ID where text was inserted |
| `text` | string | The text that was inserted |
| `metadata` | object | Operation metadata including presentation ID and URL |
| ↳ `presentationId` | string | The presentation ID |
| ↳ `url` | string | URL to the presentation |

View File

@@ -10,22 +10,6 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
color="#E8F0FE"
/>
{/* MANUAL-CONTENT-START:intro */}
[Google Vault](https://workspace.google.com/products/vault/) is a core information governance and eDiscovery tool for organizations using Google Workspace. With Google Vault, you can retain, search, and export users' Google Workspace data (such as Gmail, Drive, Groups, and Meet) to support litigation, regulatory compliance, and internal investigations.
Vault provides administrators and legal teams with powerful controls to manage the lifecycle of business communications. You can place data on legal hold, create matters to group eDiscovery activities, search message and file content across your organization, and export relevant data for review.
Key features of Google Vault include:
- **Search & Export**: Search across Gmail, Drive, Groups, and Meet for relevant data and export the results for analysis.
- **Matters & Holds**: Create matters (cases) and apply legal holds to retain user data beyond standard retention policies.
- **Retention Rules**: Define retention rules to keep or delete data after a set period to meet business and compliance needs.
- **Audit & Review**: Monitor Vault activity and enforce compliance with organization-wide policies.
In Sim, the Google Vault integration lets your AI agents programmatically manage Vault matters, exports, and holds. This enables automated workflows for legal discovery, compliance archiving, and data retention management in your organization. Agents can initiate new exports, list available holds, manage legal matters, and retrieve exported files directly through your automated processes, ensuring your compliance and information governance needs are met efficiently and securely.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Connect Google Vault to create exports, list exports, and manage holds within matters.
@@ -42,14 +26,11 @@ Create an export in a matter
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `matterId` | string | Yes | The matter ID |
| `exportName` | string | Yes | Name for the export \(avoid special characters\) |
| `matterId` | string | Yes | No description |
| `exportName` | string | Yes | No description |
| `corpus` | string | Yes | Data corpus to export \(MAIL, DRIVE, GROUPS, HANGOUTS_CHAT, VOICE\) |
| `accountEmails` | string | No | Comma-separated list of user emails to scope export |
| `orgUnitId` | string | No | Organization unit ID to scope export \(alternative to emails\) |
| `startTime` | string | No | Start time for date filtering \(ISO 8601 format, e.g., 2024-01-01T00:00:00Z\) |
| `endTime` | string | No | End time for date filtering \(ISO 8601 format, e.g., 2024-12-31T23:59:59Z\) |
| `terms` | string | No | Search query terms to filter exported content |
#### Output
@@ -65,10 +46,10 @@ List exports for a matter
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `matterId` | string | Yes | The matter ID |
| `pageSize` | number | No | Number of exports to return per page |
| `pageToken` | string | No | Token for pagination |
| `exportId` | string | No | Optional export ID to fetch a specific export |
| `matterId` | string | Yes | No description |
| `pageSize` | number | No | No description |
| `pageToken` | string | No | No description |
| `exportId` | string | No | No description |
#### Output
@@ -86,10 +67,10 @@ Download a single file from a Google Vault export (GCS object)
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `matterId` | string | Yes | The matter ID |
| `bucketName` | string | Yes | GCS bucket name from cloudStorageSink.files.bucketName |
| `objectName` | string | Yes | GCS object name from cloudStorageSink.files.objectName |
| `fileName` | string | No | Optional filename override for the downloaded file |
| `matterId` | string | Yes | No description |
| `bucketName` | string | Yes | No description |
| `objectName` | string | Yes | No description |
| `fileName` | string | No | No description |
#### Output
@@ -105,15 +86,11 @@ Create a hold in a matter
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `matterId` | string | Yes | The matter ID |
| `holdName` | string | Yes | Name for the hold |
| `matterId` | string | Yes | No description |
| `holdName` | string | Yes | No description |
| `corpus` | string | Yes | Data corpus to hold \(MAIL, DRIVE, GROUPS, HANGOUTS_CHAT, VOICE\) |
| `accountEmails` | string | No | Comma-separated list of user emails to put on hold |
| `orgUnitId` | string | No | Organization unit ID to put on hold \(alternative to accounts\) |
| `terms` | string | No | Search terms to filter held content \(for MAIL and GROUPS corpus\) |
| `startTime` | string | No | Start time for date filtering \(ISO 8601 format, for MAIL and GROUPS corpus\) |
| `endTime` | string | No | End time for date filtering \(ISO 8601 format, for MAIL and GROUPS corpus\) |
| `includeSharedDrives` | boolean | No | Include files in shared drives \(for DRIVE corpus\) |
#### Output
@@ -129,10 +106,10 @@ List holds for a matter
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `matterId` | string | Yes | The matter ID |
| `pageSize` | number | No | Number of holds to return per page |
| `pageToken` | string | No | Token for pagination |
| `holdId` | string | No | Optional hold ID to fetch a specific hold |
| `matterId` | string | Yes | No description |
| `pageSize` | number | No | No description |
| `pageToken` | string | No | No description |
| `holdId` | string | No | No description |
#### Output
@@ -150,8 +127,8 @@ Create a new matter in Google Vault
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `name` | string | Yes | Name for the new matter |
| `description` | string | No | Optional description for the matter |
| `name` | string | Yes | No description |
| `description` | string | No | No description |
#### Output
@@ -167,9 +144,9 @@ List matters, or get a specific matter if matterId is provided
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `pageSize` | number | No | Number of matters to return per page |
| `pageToken` | string | No | Token for pagination |
| `matterId` | string | No | Optional matter ID to fetch a specific matter |
| `pageSize` | number | No | No description |
| `pageToken` | string | No | No description |
| `matterId` | string | No | No description |
#### Output

View File

@@ -80,12 +80,6 @@ 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`
@@ -188,13 +182,6 @@ 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`
@@ -323,10 +310,6 @@ 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`
@@ -377,19 +360,6 @@ 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`
@@ -451,12 +421,6 @@ 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`
@@ -503,19 +467,6 @@ 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`

View File

@@ -64,19 +64,6 @@ 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`
@@ -132,11 +119,6 @@ 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`
@@ -153,8 +135,6 @@ 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`
@@ -171,9 +151,6 @@ 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`
@@ -222,13 +199,6 @@ 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`

View File

@@ -59,14 +59,6 @@ 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`
@@ -88,14 +80,6 @@ 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`

View File

@@ -54,14 +54,5 @@ 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 |

View File

@@ -58,10 +58,5 @@ 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 |

View File

@@ -57,35 +57,6 @@ 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`
@@ -109,31 +80,6 @@ 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`
@@ -151,34 +97,6 @@ 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`
@@ -202,31 +120,6 @@ 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`
@@ -245,31 +138,6 @@ 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`
@@ -287,31 +155,6 @@ 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`
@@ -330,38 +173,6 @@ 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`
@@ -379,38 +190,6 @@ 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`
@@ -428,10 +207,6 @@ 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`
@@ -449,10 +224,6 @@ 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`
@@ -471,15 +242,6 @@ 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`
@@ -497,12 +259,6 @@ 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`
@@ -523,12 +279,6 @@ 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`
@@ -564,14 +314,6 @@ 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`
@@ -592,11 +334,6 @@ 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`
@@ -614,11 +351,6 @@ 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`
@@ -640,11 +372,6 @@ 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`
@@ -679,10 +406,6 @@ 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`
@@ -703,10 +426,6 @@ 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`
@@ -724,10 +443,6 @@ 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`
@@ -744,12 +459,6 @@ 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`
@@ -769,12 +478,6 @@ 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`
@@ -792,12 +495,6 @@ 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`
@@ -817,12 +514,6 @@ 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`
@@ -856,10 +547,6 @@ 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`
@@ -876,10 +563,6 @@ 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`
@@ -896,10 +579,6 @@ 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`
@@ -916,15 +595,6 @@ 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`
@@ -945,15 +615,6 @@ 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`
@@ -971,15 +632,6 @@ 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`
@@ -1001,15 +653,6 @@ 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`
@@ -1043,11 +686,6 @@ 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`
@@ -1065,11 +703,6 @@ 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`
@@ -1089,30 +722,6 @@ 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`
@@ -1134,23 +743,6 @@ 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`
@@ -1174,19 +766,6 @@ 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`
@@ -1206,41 +785,6 @@ 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`
@@ -1258,41 +802,6 @@ 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`
@@ -1313,41 +822,6 @@ 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`

View File

@@ -1,36 +1,15 @@
---
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_v2"
color="#E0E0E0"
color="#F5F5F5"
/>
{/* MANUAL-CONTENT-START:intro */}
Supercharge your customer communications and relationship management with [Intercom](https://www.intercom.com/) the all-in-one messaging platform for engaging, supporting, and retaining your customers. Integrate Intercom into your workflows to centralize conversations, contacts, support tickets, and more, all seamlessly accessible via automation.
With the Intercom tool, you can:
- **Create and manage contacts**: Easily add, update, search, list, and delete contacts to maintain a clean, actionable customer database.
- **Organize companies**: Create, get, and list companies to understand and support your customer organizations at scale.
- **Centralize customer conversations**: Retrieve, list, reply to, and search customer conversations to ensure no message slips through the cracks and support responses are always timely.
- **Manage tickets and messages**: Create and fetch tickets, as well as compose outbound messages, to deliver proactive, high-quality support experiences.
- **Automate and extend workflows**: Connect Intercom operations with your automations to trigger follow-ups, orchestrate customer journeys, and sync data with your stack.
Intercom empowers sales, support, and success teams to deliver personalized, efficient, and scalable customer experiences—whether you need to onboard new users, troubleshoot issues, or engage your customer base in real time.
Drive deeper relationships, faster response times, and smarter workflows by integrating Intercom with your automated processes today.
{/* 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
@@ -61,60 +40,6 @@ Create a new contact in Intercom with email, external_id, or role. Returns API-a
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `contact` | object | Created contact object |
| ↳ `id` | string | Unique identifier for the contact |
| ↳ `type` | string | List type |
| ↳ `role` | string | Role of the contact \(user or lead\) |
| ↳ `email` | string | Email address of the contact |
| ↳ `phone` | string | Phone number of the contact |
| ↳ `name` | string | Name of the contact |
| ↳ `avatar` | string | Avatar URL of the contact |
| ↳ `owner_id` | string | ID of the admin assigned to this contact |
| ↳ `external_id` | string | External identifier for the contact |
| ↳ `created_at` | number | Unix timestamp when contact was created |
| ↳ `updated_at` | number | Unix timestamp when contact was last updated |
| ↳ `signed_up_at` | number | Unix timestamp when user signed up |
| ↳ `last_seen_at` | number | Unix timestamp when user was last seen |
| ↳ `workspace_id` | string | Workspace ID the contact belongs to |
| ↳ `custom_attributes` | object | Custom attributes set on the contact |
| ↳ `tags` | object | Tags associated with the contact |
| ↳ `type` | string | List type |
| ↳ `url` | string | URL to fetch tags |
| ↳ `data` | array | Array of tag objects |
| ↳ `has_more` | boolean | Whether there are more tags |
| ↳ `total_count` | number | Total number of tags |
| ↳ `url` | string | URL to fetch companies |
| ↳ `data` | array | Array of social profile objects |
| ↳ `has_more` | boolean | Whether there are more companies |
| ↳ `total_count` | number | Total number of companies |
| ↳ `notes` | object | Notes associated with the contact |
| ↳ `type` | string | List type |
| ↳ `url` | string | URL to fetch notes |
| ↳ `data` | array | Array of note objects |
| ↳ `has_more` | boolean | Whether there are more notes |
| ↳ `total_count` | number | Total number of notes |
| ↳ `companies` | object | Companies associated with the contact |
| ↳ `type` | string | List type |
| ↳ `url` | string | URL to fetch companies |
| ↳ `data` | array | Array of company objects |
| ↳ `has_more` | boolean | Whether there are more companies |
| ↳ `total_count` | number | Total number of companies |
| ↳ `location` | object | Location information for the contact |
| ↳ `type` | string | Location type |
| ↳ `city` | string | City |
| ↳ `region` | string | Region/State |
| ↳ `country` | string | Country |
| ↳ `country_code` | string | Country code |
| ↳ `continent_code` | string | Continent code |
| ↳ `city` | string | City |
| ↳ `region` | string | Region/State |
| ↳ `country` | string | Country |
| ↳ `country_code` | string | Country code |
| ↳ `continent_code` | string | Continent code |
| ↳ `social_profiles` | object | Social profiles of the contact |
| ↳ `type` | string | List type |
| ↳ `data` | array | Array of social profile objects |
| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails |
| `contactId` | string | ID of the created contact |
### `intercom_get_contact`
@@ -131,25 +56,6 @@ Get a single contact by ID from Intercom. Returns API-aligned fields only.
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `contact` | object | Contact object |
| ↳ `id` | string | Unique identifier for the contact |
| ↳ `type` | string | Object type \(contact\) |
| ↳ `role` | string | Role of the contact \(user or lead\) |
| ↳ `email` | string | Email address of the contact |
| ↳ `phone` | string | Phone number of the contact |
| ↳ `name` | string | Name of the contact |
| ↳ `avatar` | string | Avatar URL of the contact |
| ↳ `owner_id` | string | ID of the admin assigned to this contact |
| ↳ `external_id` | string | External identifier for the contact |
| ↳ `created_at` | number | Unix timestamp when contact was created |
| ↳ `updated_at` | number | Unix timestamp when contact was last updated |
| ↳ `workspace_id` | string | Workspace ID the contact belongs to |
| ↳ `custom_attributes` | object | Custom attributes set on the contact |
| ↳ `tags` | object | Tags associated with the contact |
| ↳ `notes` | object | Notes associated with the contact |
| ↳ `companies` | object | Companies associated with the contact |
| ↳ `location` | object | Location information for the contact |
| ↳ `social_profiles` | object | Social profiles of the contact |
| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails |
### `intercom_update_contact`
@@ -178,26 +84,6 @@ Update an existing contact in Intercom. Returns API-aligned fields only.
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `contact` | object | Updated contact object |
| ↳ `id` | string | Unique identifier for the contact |
| ↳ `type` | string | Object type \(contact\) |
| ↳ `role` | string | Role of the contact \(user or lead\) |
| ↳ `email` | string | Email address of the contact |
| ↳ `phone` | string | Phone number of the contact |
| ↳ `name` | string | Name of the contact |
| ↳ `avatar` | string | Avatar URL of the contact |
| ↳ `owner_id` | string | ID of the admin assigned to this contact |
| ↳ `external_id` | string | External identifier for the contact |
| ↳ `created_at` | number | Unix timestamp when contact was created |
| ↳ `updated_at` | number | Unix timestamp when contact was last updated |
| ↳ `workspace_id` | string | Workspace ID the contact belongs to |
| ↳ `custom_attributes` | object | Custom attributes set on the contact |
| ↳ `tags` | object | Tags associated with the contact |
| ↳ `notes` | object | Notes associated with the contact |
| ↳ `companies` | object | Companies associated with the contact |
| ↳ `location` | object | Location information for the contact |
| ↳ `social_profiles` | object | Social profiles of the contact |
| ↳ `unsubscribed_from_emails` | boolean | Whether contact is unsubscribed from emails |
| `contactId` | string | ID of the updated contact |
### `intercom_list_contacts`
@@ -215,25 +101,6 @@ 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`
@@ -254,33 +121,6 @@ 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`
@@ -322,25 +162,6 @@ 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`
@@ -357,23 +178,6 @@ 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`
@@ -392,28 +196,6 @@ 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`
@@ -432,26 +214,6 @@ 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`
@@ -471,28 +233,6 @@ 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`
@@ -514,24 +254,6 @@ 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`
@@ -552,28 +274,6 @@ Search for conversations in Intercom using a query. Returns API-aligned fields o
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `conversations` | array | Array of matching conversation objects |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type \(conversation\) |
| ↳ `title` | string | Title of the conversation |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| ↳ `waiting_since` | number | Unix timestamp when waiting for reply |
| ↳ `open` | boolean | Whether the conversation is open |
| ↳ `state` | string | State of the conversation |
| ↳ `read` | boolean | Whether the conversation has been read |
| ↳ `priority` | string | Priority of the conversation |
| ↳ `admin_assignee_id` | number | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `tags` | object | Tags on the conversation |
| ↳ `source` | object | Source of the conversation |
| ↳ `contacts` | object | Contacts in the conversation |
| `pages` | object | Pagination information |
| ↳ `type` | string | Pages type identifier |
| ↳ `page` | number | Current page number |
| ↳ `per_page` | number | Number of results per page |
| ↳ `total_pages` | number | Total number of pages |
| `total_count` | number | Total number of matching conversations |
| `success` | boolean | Operation success status |
### `intercom_create_ticket`
@@ -596,23 +296,6 @@ Create a new ticket in Intercom. Returns API-aligned fields only.
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ticket` | object | Created ticket object |
| ↳ `id` | string | Unique identifier for the ticket |
| ↳ `type` | string | Object type \(ticket\) |
| ↳ `ticket_id` | string | Ticket ID |
| ↳ `ticket_type` | object | Type of the ticket |
| ↳ `ticket_attributes` | object | Attributes of the ticket |
| ↳ `ticket_state` | string | State of the ticket |
| ↳ `ticket_state_internal_label` | string | Internal label for ticket state |
| ↳ `ticket_state_external_label` | string | External label for ticket state |
| ↳ `created_at` | number | Unix timestamp when ticket was created |
| ↳ `updated_at` | number | Unix timestamp when ticket was last updated |
| ↳ `contacts` | object | Contacts associated with the ticket |
| ↳ `admin_assignee_id` | string | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `is_shared` | boolean | Whether the ticket is shared |
| ↳ `open` | boolean | Whether the ticket is open |
| `ticketId` | string | ID of the created ticket |
| `success` | boolean | Operation success status |
### `intercom_get_ticket`
@@ -629,59 +312,6 @@ Retrieve a single ticket by ID from Intercom. Returns API-aligned fields only.
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ticket` | object | Ticket object |
| ↳ `id` | string | Unique identifier for the ticket |
| ↳ `type` | string | Object type \(ticket\) |
| ↳ `ticket_id` | string | Ticket ID |
| ↳ `ticket_type` | object | Type of the ticket |
| ↳ `ticket_attributes` | object | Attributes of the ticket |
| ↳ `ticket_state` | string | State of the ticket |
| ↳ `ticket_state_internal_label` | string | Internal label for ticket state |
| ↳ `ticket_state_external_label` | string | External label for ticket state |
| ↳ `created_at` | number | Unix timestamp when ticket was created |
| ↳ `updated_at` | number | Unix timestamp when ticket was last updated |
| ↳ `contacts` | object | Contacts associated with the ticket |
| ↳ `admin_assignee_id` | string | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `is_shared` | boolean | Whether the ticket is shared |
| ↳ `open` | boolean | Whether the ticket is open |
| `ticketId` | string | ID of the retrieved ticket |
| `success` | boolean | Operation success status |
### `intercom_update_ticket`
Update a ticket in Intercom (change state, assignment, attributes)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `ticketId` | string | Yes | The ID of the ticket to update |
| `ticket_attributes` | string | No | JSON object with ticket attributes \(e.g., \{"_default_title_":"New Title","_default_description_":"Updated description"\}\) |
| `open` | boolean | No | Set to false to close the ticket, true to keep it open |
| `is_shared` | boolean | No | Whether the ticket is visible to users |
| `snoozed_until` | number | No | Unix timestamp for when the ticket should reopen |
| `admin_id` | string | No | The ID of the admin performing the update \(needed for workflows and attribution\) |
| `assignee_id` | string | No | The ID of the admin or team to assign the ticket to. Set to "0" to unassign. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ticket` | object | The updated ticket object |
| ↳ `id` | string | Unique identifier for the ticket |
| ↳ `type` | string | Object type \(ticket\) |
| ↳ `ticket_id` | string | Ticket ID shown in Intercom UI |
| ↳ `ticket_state` | string | State of the ticket |
| ↳ `ticket_attributes` | object | Attributes of the ticket |
| ↳ `open` | boolean | Whether the ticket is open |
| ↳ `is_shared` | boolean | Whether the ticket is visible to users |
| ↳ `snoozed_until` | number | Unix timestamp when ticket will reopen |
| ↳ `admin_assignee_id` | string | ID of assigned admin |
| ↳ `team_assignee_id` | string | ID of assigned team |
| ↳ `created_at` | number | Unix timestamp when ticket was created |
| ↳ `updated_at` | number | Unix timestamp when ticket was last updated |
| `ticketId` | string | ID of the updated ticket |
| `ticket_state` | string | Current state of the ticket |
### `intercom_create_message`
@@ -706,350 +336,5 @@ Create and send a new admin-initiated message in Intercom. Returns API-aligned f
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `message` | object | Created message object |
| ↳ `id` | string | Unique identifier for the message |
| ↳ `type` | string | Object type \(message\) |
| ↳ `created_at` | number | Unix timestamp when message was created |
| ↳ `body` | string | Body of the message |
| ↳ `message_type` | string | Type of the message \(in_app or email\) |
| ↳ `conversation_id` | string | ID of the conversation created |
| ↳ `owner` | object | Owner of the message |
| `messageId` | string | ID of the created message |
| `success` | boolean | Operation success status |
### `intercom_list_admins`
Fetch a list of all admins for the workspace
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `admins` | array | Array of admin objects |
| ↳ `id` | string | Unique identifier for the admin |
| ↳ `type` | string | Object type \(admin\) |
| ↳ `name` | string | Name of the admin |
| ↳ `email` | string | Email of the admin |
| ↳ `job_title` | string | Job title of the admin |
| ↳ `away_mode_enabled` | boolean | Whether admin is in away mode |
| ↳ `away_mode_reassign` | boolean | Whether to reassign conversations when away |
| ↳ `has_inbox_seat` | boolean | Whether admin has a paid inbox seat |
| ↳ `team_ids` | array | List of team IDs the admin belongs to |
| ↳ `avatar` | object | Avatar information |
| ↳ `email_verified` | boolean | Whether email is verified |
| `type` | string | Object type \(admin.list\) |
### `intercom_close_conversation`
Close a conversation in Intercom
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Yes | The ID of the conversation to close |
| `admin_id` | string | Yes | The ID of the admin performing the action |
| `body` | string | No | Optional closing message to add to the conversation |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `conversation` | object | The closed conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type \(conversation\) |
| ↳ `state` | string | State of the conversation \(closed\) |
| ↳ `open` | boolean | Whether the conversation is open \(false\) |
| ↳ `read` | boolean | Whether the conversation has been read |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| `conversationId` | string | ID of the closed conversation |
| `state` | string | State of the conversation \(closed\) |
### `intercom_open_conversation`
Open a closed or snoozed conversation in Intercom
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Yes | The ID of the conversation to open |
| `admin_id` | string | Yes | The ID of the admin performing the action |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `conversation` | object | The opened conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type \(conversation\) |
| ↳ `state` | string | State of the conversation \(open\) |
| ↳ `open` | boolean | Whether the conversation is open \(true\) |
| ↳ `read` | boolean | Whether the conversation has been read |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| `conversationId` | string | ID of the opened conversation |
| `state` | string | State of the conversation \(open\) |
### `intercom_snooze_conversation`
Snooze a conversation to reopen at a future time
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Yes | The ID of the conversation to snooze |
| `admin_id` | string | Yes | The ID of the admin performing the action |
| `snoozed_until` | number | Yes | Unix timestamp for when the conversation should reopen |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `conversation` | object | The snoozed conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type \(conversation\) |
| ↳ `state` | string | State of the conversation \(snoozed\) |
| ↳ `open` | boolean | Whether the conversation is open |
| ↳ `snoozed_until` | number | Unix timestamp when conversation will reopen |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| `conversationId` | string | ID of the snoozed conversation |
| `state` | string | State of the conversation \(snoozed\) |
| `snoozed_until` | number | Unix timestamp when conversation will reopen |
### `intercom_assign_conversation`
Assign a conversation to an admin or team in Intercom
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Yes | The ID of the conversation to assign |
| `admin_id` | string | Yes | The ID of the admin performing the assignment |
| `assignee_id` | string | Yes | The ID of the admin or team to assign the conversation to. Set to "0" to unassign. |
| `body` | string | No | Optional message to add when assigning \(e.g., "Passing to the support team"\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `conversation` | object | The assigned conversation object |
| ↳ `id` | string | Unique identifier for the conversation |
| ↳ `type` | string | Object type \(conversation\) |
| ↳ `state` | string | State of the conversation |
| ↳ `open` | boolean | Whether the conversation is open |
| ↳ `admin_assignee_id` | number | ID of the assigned admin |
| ↳ `team_assignee_id` | string | ID of the assigned team |
| ↳ `created_at` | number | Unix timestamp when conversation was created |
| ↳ `updated_at` | number | Unix timestamp when conversation was last updated |
| `conversationId` | string | ID of the assigned conversation |
| `admin_assignee_id` | number | ID of the assigned admin |
| `team_assignee_id` | string | ID of the assigned team |
### `intercom_list_tags`
Fetch a list of all tags in the workspace
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `tags` | array | Array of tag objects |
| ↳ `id` | string | Unique identifier for the tag |
| ↳ `type` | string | Object type \(tag\) |
| ↳ `name` | string | Name of the tag |
| `type` | string | Object type \(list\) |
### `intercom_create_tag`
Create a new tag or update an existing tag name
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `name` | string | Yes | The name of the tag. Will create a new tag if not found, or update the name if id is provided. |
| `id` | string | No | The ID of an existing tag to update. Omit to create a new tag. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Unique identifier for the tag |
| `name` | string | Name of the tag |
| `type` | string | Object type \(tag\) |
### `intercom_tag_contact`
Add a tag to a specific contact
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `contactId` | string | Yes | The ID of the contact to tag |
| `tagId` | string | Yes | The ID of the tag to apply |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Unique identifier for the tag |
| `name` | string | Name of the tag |
| `type` | string | Object type \(tag\) |
### `intercom_untag_contact`
Remove a tag from a specific contact
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `contactId` | string | Yes | The ID of the contact to untag |
| `tagId` | string | Yes | The ID of the tag to remove |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Unique identifier for the tag that was removed |
| `name` | string | Name of the tag that was removed |
| `type` | string | Object type \(tag\) |
### `intercom_tag_conversation`
Add a tag to a specific conversation
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Yes | The ID of the conversation to tag |
| `tagId` | string | Yes | The ID of the tag to apply |
| `admin_id` | string | Yes | The ID of the admin applying the tag |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Unique identifier for the tag |
| `name` | string | Name of the tag |
| `type` | string | Object type \(tag\) |
### `intercom_create_note`
Add a note to a specific contact
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `contactId` | string | Yes | The ID of the contact to add the note to |
| `body` | string | Yes | The text content of the note |
| `admin_id` | string | No | The ID of the admin creating the note |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Unique identifier for the note |
| `body` | string | The text content of the note |
| `created_at` | number | Unix timestamp when the note was created |
| `type` | string | Object type \(note\) |
| `author` | object | The admin who created the note |
| ↳ `type` | string | Author type \(admin\) |
| ↳ `id` | string | Author ID |
| ↳ `name` | string | Author name |
| ↳ `email` | string | Author email |
| `contact` | object | The contact the note was created for |
| ↳ `type` | string | Contact type |
| ↳ `id` | string | Contact ID |
### `intercom_create_event`
Track a custom event for a contact in Intercom
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `event_name` | string | Yes | The name of the event \(e.g., "order-completed"\). Use past-tense verb-noun format for readability. |
| `created_at` | number | No | Unix timestamp for when the event occurred. Strongly recommended for uniqueness. |
| `user_id` | string | No | Your identifier for the user \(external_id\) |
| `email` | string | No | Email address of the user. Use only if your app uses email to uniquely identify users. |
| `id` | string | No | The Intercom contact ID |
| `metadata` | string | No | JSON object with up to 10 metadata key-value pairs about the event \(e.g., \{"order_value": 99.99\}\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `accepted` | boolean | Whether the event was accepted \(202 Accepted\) |
### `intercom_attach_contact_to_company`
Attach a contact to a company in Intercom
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `contactId` | string | Yes | The ID of the contact to attach to the company |
| `companyId` | string | Yes | The ID of the company to attach the contact to |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `company` | object | The company object the contact was attached to |
| ↳ `id` | string | Unique identifier for the company |
| ↳ `type` | string | Object type \(company\) |
| ↳ `company_id` | string | The company_id you defined |
| ↳ `name` | string | Name of the company |
| ↳ `created_at` | number | Unix timestamp when company was created |
| ↳ `updated_at` | number | Unix timestamp when company was updated |
| ↳ `user_count` | number | Number of users in the company |
| ↳ `session_count` | number | Number of sessions |
| ↳ `monthly_spend` | number | Monthly spend amount |
| ↳ `plan` | object | Company plan details |
| `companyId` | string | ID of the company |
| `name` | string | Name of the company |
### `intercom_detach_contact_from_company`
Remove a contact from a company in Intercom
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `contactId` | string | Yes | The ID of the contact to detach from the company |
| `companyId` | string | Yes | The ID of the company to detach the contact from |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `company` | object | The company object the contact was detached from |
| ↳ `id` | string | Unique identifier for the company |
| ↳ `type` | string | Object type \(company\) |
| ↳ `company_id` | string | The company_id you defined |
| ↳ `name` | string | Name of the company |
| `companyId` | string | ID of the company |
| `name` | string | Name of the company |

View File

@@ -10,24 +10,6 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
color="#E0E0E0"
/>
{/* MANUAL-CONTENT-START:intro */}
[Jira Service Management](https://www.atlassian.com/software/jira/service-management) is Atlassians modern IT service management (ITSM) solution designed to help teams efficiently manage service requests, incidents, problems, assets, and changes across your organization. Built on the Jira platform, Jira Service Management empowers IT, DevOps, HR, facilities, and other business teams to deliver exceptional, collaborative service.
Jira Service Management (JSM) goes beyond traditional issue tracking by providing features purpose-built for service teams, such as integrated SLAs, customizable request types, automation, robust queues, and seamless customer portals. Through the JSM API and Sim integration, you can automate, monitor, and interact with all aspects of your service management workflows.
Key features of Jira Service Management include:
- **Service Request Management**: Streamline intake, triage, and resolution of IT or business requests via customizable forms, queues, and automated routing.
- **Incident and Problem Management**: Log, track, escalate, and resolve incidents with tools for root cause analysis, post-incident reviews, and real-time collaboration.
- **SLA Tracking and Reporting**: Define, monitor, and report on service level agreements to ensure timely service delivery and accountability.
- **Asset and Configuration Management**: Maintain an up-to-date inventory of assets, configuration items, and their relationships to improve visibility and impact analysis.
- **Queue Management**: Manage workload and priorities using powerful queues for service agents, including filtering, sorting, and bulk actions.
- **Customer and Organization Management**: Group customers into organizations, manage user permissions, and improve communication through tailored customer portals.
With Sims Jira Service Management integration, you can create, monitor, and update service requests, fetch and manage customer organizations, track active queues, and automate ITSM operations programmatically. Build intelligent service desk agents, automate workflows triggered by service events, and ensure both end-users and service teams benefit from proactive, AI-powered support.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Integrate with Jira Service Management for IT service management. Create and manage service requests, handle customers and organizations, track SLAs, and manage queues.
@@ -126,7 +108,6 @@ 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`

View File

@@ -6,7 +6,7 @@ description: Access prediction markets and trade on Kalshi
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="kalshi_v2"
type="kalshi"
color="#09C285"
/>
@@ -36,7 +36,7 @@ Integrate Kalshi prediction markets into the workflow. Can get markets, market,
### `kalshi_get_markets`
Retrieve a list of prediction markets from Kalshi with all filtering options (V2 - full API response)
Retrieve a list of prediction markets from Kalshi with optional filtering
#### Input
@@ -52,12 +52,12 @@ Retrieve a list of prediction markets from Kalshi with all filtering options (V2
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `markets` | array | Array of market objects with all API fields |
| `cursor` | string | Pagination cursor for fetching more results |
| `markets` | array | Array of market objects |
| `paging` | object | Pagination cursor for fetching more results |
### `kalshi_get_market`
Retrieve details of a specific prediction market by ticker (V2 - full API response)
Retrieve details of a specific prediction market by ticker
#### Input
@@ -69,62 +69,11 @@ Retrieve details of a specific prediction market by ticker (V2 - full API respon
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `market` | object | Market object with all API fields |
| ↳ `ticker` | string | Market ticker |
| ↳ `event_ticker` | string | Event ticker |
| ↳ `market_type` | string | Market type |
| ↳ `title` | string | Market title |
| ↳ `subtitle` | string | Market subtitle |
| ↳ `yes_sub_title` | string | Yes outcome subtitle |
| ↳ `no_sub_title` | string | No outcome subtitle |
| ↳ `open_time` | string | Market open time |
| ↳ `close_time` | string | Market close time |
| ↳ `expected_expiration_time` | string | Expected expiration time |
| ↳ `expiration_time` | string | Expiration time |
| ↳ `latest_expiration_time` | string | Latest expiration time |
| ↳ `settlement_timer_seconds` | number | Settlement timer in seconds |
| ↳ `status` | string | Market status |
| ↳ `response_price_units` | string | Response price units |
| ↳ `notional_value` | number | Notional value |
| ↳ `tick_size` | number | Tick size |
| ↳ `yes_bid` | number | Current yes bid price |
| ↳ `yes_ask` | number | Current yes ask price |
| ↳ `no_bid` | number | Current no bid price |
| ↳ `no_ask` | number | Current no ask price |
| ↳ `last_price` | number | Last trade price |
| ↳ `previous_yes_bid` | number | Previous yes bid |
| ↳ `previous_yes_ask` | number | Previous yes ask |
| ↳ `previous_price` | number | Previous price |
| ↳ `volume` | number | Total volume |
| ↳ `volume_24h` | number | 24-hour volume |
| ↳ `liquidity` | number | Market liquidity |
| ↳ `open_interest` | number | Open interest |
| ↳ `result` | string | Market result |
| ↳ `cap_strike` | number | Cap strike |
| ↳ `floor_strike` | number | Floor strike |
| ↳ `can_close_early` | boolean | Can close early |
| ↳ `expiration_value` | string | Expiration value |
| ↳ `category` | string | Market category |
| ↳ `risk_limit_cents` | number | Risk limit in cents |
| ↳ `strike_type` | string | Strike type |
| ↳ `rules_primary` | string | Primary rules |
| ↳ `rules_secondary` | string | Secondary rules |
| ↳ `settlement_source_url` | string | Settlement source URL |
| ↳ `custom_strike` | object | Custom strike object |
| ↳ `underlying` | string | Underlying asset |
| ↳ `settlement_value` | number | Settlement value |
| ↳ `cfd_contract_size` | number | CFD contract size |
| ↳ `yes_fee_fp` | number | Yes fee \(fixed-point\) |
| ↳ `no_fee_fp` | number | No fee \(fixed-point\) |
| ↳ `last_price_fp` | number | Last price \(fixed-point\) |
| ↳ `yes_bid_fp` | number | Yes bid \(fixed-point\) |
| ↳ `yes_ask_fp` | number | Yes ask \(fixed-point\) |
| ↳ `no_bid_fp` | number | No bid \(fixed-point\) |
| ↳ `no_ask_fp` | number | No ask \(fixed-point\) |
| `market` | object | Market object with details |
### `kalshi_get_events`
Retrieve a list of events from Kalshi with optional filtering (V2 - exact API response)
Retrieve a list of events from Kalshi with optional filtering
#### Input
@@ -141,12 +90,11 @@ Retrieve a list of events from Kalshi with optional filtering (V2 - exact API re
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `events` | array | Array of event objects |
| `milestones` | array | Array of milestone objects \(if requested\) |
| `cursor` | string | Pagination cursor for fetching more results |
| `paging` | object | Pagination cursor for fetching more results |
### `kalshi_get_event`
Retrieve details of a specific event by ticker (V2 - exact API response)
Retrieve details of a specific event by ticker
#### Input
@@ -159,23 +107,11 @@ Retrieve details of a specific event by ticker (V2 - exact API response)
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `event` | object | Event object with full details matching Kalshi API response |
| ↳ `event_ticker` | string | Event ticker |
| ↳ `series_ticker` | string | Series ticker |
| ↳ `title` | string | Event title |
| ↳ `sub_title` | string | Event subtitle |
| ↳ `mutually_exclusive` | boolean | Mutually exclusive markets |
| ↳ `category` | string | Event category |
| ↳ `collateral_return_type` | string | Collateral return type |
| ↳ `strike_date` | string | Strike date |
| ↳ `strike_period` | string | Strike period |
| ↳ `available_on_brokers` | boolean | Available on brokers |
| ↳ `product_metadata` | object | Product metadata |
| ↳ `markets` | array | Nested markets \(if requested\) |
| `event` | object | Event object with details |
### `kalshi_get_balance`
Retrieve your account balance and portfolio value from Kalshi (V2 - exact API response)
Retrieve your account balance and portfolio value from Kalshi
#### Input
@@ -189,12 +125,11 @@ Retrieve your account balance and portfolio value from Kalshi (V2 - exact API re
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `balance` | number | Account balance in cents |
| `portfolio_value` | number | Portfolio value in cents |
| `updated_ts` | number | Unix timestamp of last update \(milliseconds\) |
| `portfolioValue` | number | Portfolio value in cents |
### `kalshi_get_positions`
Retrieve your open positions from Kalshi (V2 - exact API response)
Retrieve your open positions from Kalshi
#### Input
@@ -212,13 +147,12 @@ Retrieve your open positions from Kalshi (V2 - exact API response)
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `market_positions` | array | Array of market position objects |
| `event_positions` | array | Array of event position objects |
| `cursor` | string | Pagination cursor for fetching more results |
| `positions` | array | Array of position objects |
| `paging` | object | Pagination cursor for fetching more results |
### `kalshi_get_orders`
Retrieve your orders from Kalshi with optional filtering (V2 with full API response)
Retrieve your orders from Kalshi with optional filtering
#### Input
@@ -236,12 +170,12 @@ Retrieve your orders from Kalshi with optional filtering (V2 with full API respo
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `orders` | array | Array of order objects with full API response fields |
| `cursor` | string | Pagination cursor for fetching more results |
| `orders` | array | Array of order objects |
| `paging` | object | Pagination cursor for fetching more results |
### `kalshi_get_order`
Retrieve details of a specific order by ID from Kalshi (V2 with full API response)
Retrieve details of a specific order by ID from Kalshi
#### Input
@@ -255,44 +189,11 @@ Retrieve details of a specific order by ID from Kalshi (V2 with full API respons
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `order` | object | Order object with full API response fields |
| ↳ `order_id` | string | Order ID |
| ↳ `user_id` | string | User ID |
| ↳ `client_order_id` | string | Client order ID |
| ↳ `ticker` | string | Market ticker |
| ↳ `side` | string | Order side \(yes/no\) |
| ↳ `action` | string | Action \(buy/sell\) |
| ↳ `type` | string | Order type \(limit/market\) |
| ↳ `status` | string | Order status \(resting/canceled/executed\) |
| ↳ `yes_price` | number | Yes price in cents |
| ↳ `no_price` | number | No price in cents |
| ↳ `yes_price_dollars` | string | Yes price in dollars |
| ↳ `no_price_dollars` | string | No price in dollars |
| ↳ `fill_count` | number | Filled contract count |
| ↳ `fill_count_fp` | string | Filled count \(fixed-point\) |
| ↳ `remaining_count` | number | Remaining contracts |
| ↳ `remaining_count_fp` | string | Remaining count \(fixed-point\) |
| ↳ `initial_count` | number | Initial contract count |
| ↳ `initial_count_fp` | string | Initial count \(fixed-point\) |
| ↳ `taker_fees` | number | Taker fees in cents |
| ↳ `maker_fees` | number | Maker fees in cents |
| ↳ `taker_fees_dollars` | string | Taker fees in dollars |
| ↳ `maker_fees_dollars` | string | Maker fees in dollars |
| ↳ `taker_fill_cost` | number | Taker fill cost in cents |
| ↳ `maker_fill_cost` | number | Maker fill cost in cents |
| ↳ `taker_fill_cost_dollars` | string | Taker fill cost in dollars |
| ↳ `maker_fill_cost_dollars` | string | Maker fill cost in dollars |
| ↳ `queue_position` | number | Queue position \(deprecated\) |
| ↳ `expiration_time` | string | Order expiration time |
| ↳ `created_time` | string | Order creation time |
| ↳ `last_update_time` | string | Last update time |
| ↳ `self_trade_prevention_type` | string | Self-trade prevention type |
| ↳ `order_group_id` | string | Order group ID |
| ↳ `cancel_order_on_pause` | boolean | Cancel on market pause |
| `order` | object | Order object with details |
### `kalshi_get_orderbook`
Retrieve the orderbook (yes and no bids) for a specific market (V2 - includes depth and fp fields)
Retrieve the orderbook (yes and no bids) for a specific market
#### Input
@@ -304,18 +205,11 @@ Retrieve the orderbook (yes and no bids) for a specific market (V2 - includes de
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `orderbook` | object | Orderbook with yes/no bids \(legacy integer counts\) |
| ↳ `yes` | array | Yes side bids as tuples \[price_cents, count\] |
| ↳ `no` | array | No side bids as tuples \[price_cents, count\] |
| ↳ `yes_dollars` | array | Yes side bids as tuples \[dollars_string, count\] |
| ↳ `no_dollars` | array | No side bids as tuples \[dollars_string, count\] |
| `orderbook_fp` | object | Orderbook with fixed-point counts \(preferred\) |
| ↳ `yes_dollars` | array | Yes side bids as tuples \[dollars_string, fp_count_string\] |
| ↳ `no_dollars` | array | No side bids as tuples \[dollars_string, fp_count_string\] |
| `orderbook` | object | Orderbook with yes/no bids and asks |
### `kalshi_get_trades`
Retrieve recent trades with additional filtering options (V2 - includes trade_id and count_fp)
Retrieve recent trades across all markets
#### Input
@@ -328,12 +222,12 @@ Retrieve recent trades with additional filtering options (V2 - includes trade_id
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `trades` | array | Array of trade objects with trade_id and count_fp |
| `cursor` | string | Pagination cursor for fetching more results |
| `trades` | array | Array of trade objects |
| `paging` | object | Pagination cursor for fetching more results |
### `kalshi_get_candlesticks`
Retrieve OHLC candlestick data for a specific market (V2 - full API response)
Retrieve OHLC candlestick data for a specific market
#### Input
@@ -349,8 +243,7 @@ Retrieve OHLC candlestick data for a specific market (V2 - full API response)
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ticker` | string | Market ticker |
| `candlesticks` | array | Array of OHLC candlestick data with nested bid/ask/price objects |
| `candlesticks` | array | Array of OHLC candlestick data |
### `kalshi_get_fills`
@@ -373,12 +266,12 @@ Retrieve your portfolio
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `fills` | array | Array of fill/trade objects with all API fields |
| `cursor` | string | Pagination cursor for fetching more results |
| `fills` | array | Array of fill/trade objects |
| `paging` | object | Pagination cursor for fetching more results |
### `kalshi_get_series_by_ticker`
Retrieve details of a specific market series by ticker (V2 - exact API response)
Retrieve details of a specific market series by ticker
#### Input
@@ -390,25 +283,11 @@ Retrieve details of a specific market series by ticker (V2 - exact API response)
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `series` | object | Series object with full details matching Kalshi API response |
| ↳ `ticker` | string | Series ticker |
| ↳ `title` | string | Series title |
| ↳ `frequency` | string | Event frequency |
| ↳ `category` | string | Series category |
| ↳ `tags` | array | Series tags |
| ↳ `settlement_sources` | array | Settlement sources |
| ↳ `contract_url` | string | Contract URL |
| ↳ `contract_terms_url` | string | Contract terms URL |
| ↳ `fee_type` | string | Fee type |
| ↳ `fee_multiplier` | number | Fee multiplier |
| ↳ `additional_prohibitions` | array | Additional prohibitions |
| ↳ `product_metadata` | object | Product metadata |
| ↳ `volume` | number | Series volume |
| ↳ `volume_fp` | number | Volume \(fixed-point\) |
| `series` | object | Series object with details |
### `kalshi_get_exchange_status`
Retrieve the current status of the Kalshi exchange (V2 - exact API response)
Retrieve the current status of the Kalshi exchange (trading and exchange activity)
#### Input
@@ -419,13 +298,11 @@ Retrieve the current status of the Kalshi exchange (V2 - exact API response)
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `exchange_active` | boolean | Whether the exchange is active |
| `trading_active` | boolean | Whether trading is active |
| `exchange_estimated_resume_time` | string | Estimated time when exchange will resume \(if inactive\) |
| `status` | object | Exchange status with trading_active and exchange_active flags |
### `kalshi_create_order`
Create a new order on a Kalshi prediction market (V2 with full API response)
Create a new order on a Kalshi prediction market
#### Input
@@ -455,44 +332,11 @@ Create a new order on a Kalshi prediction market (V2 with full API response)
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `order` | object | The created order object with full API response fields |
| ↳ `order_id` | string | Order ID |
| ↳ `user_id` | string | User ID |
| ↳ `client_order_id` | string | Client order ID |
| ↳ `ticker` | string | Market ticker |
| ↳ `side` | string | Order side \(yes/no\) |
| ↳ `action` | string | Action \(buy/sell\) |
| ↳ `type` | string | Order type \(limit/market\) |
| ↳ `status` | string | Order status \(resting/canceled/executed\) |
| ↳ `yes_price` | number | Yes price in cents |
| ↳ `no_price` | number | No price in cents |
| ↳ `yes_price_dollars` | string | Yes price in dollars |
| ↳ `no_price_dollars` | string | No price in dollars |
| ↳ `fill_count` | number | Filled contract count |
| ↳ `fill_count_fp` | string | Filled count \(fixed-point\) |
| ↳ `remaining_count` | number | Remaining contracts |
| ↳ `remaining_count_fp` | string | Remaining count \(fixed-point\) |
| ↳ `initial_count` | number | Initial contract count |
| ↳ `initial_count_fp` | string | Initial count \(fixed-point\) |
| ↳ `taker_fees` | number | Taker fees in cents |
| ↳ `maker_fees` | number | Maker fees in cents |
| ↳ `taker_fees_dollars` | string | Taker fees in dollars |
| ↳ `maker_fees_dollars` | string | Maker fees in dollars |
| ↳ `taker_fill_cost` | number | Taker fill cost in cents |
| ↳ `maker_fill_cost` | number | Maker fill cost in cents |
| ↳ `taker_fill_cost_dollars` | string | Taker fill cost in dollars |
| ↳ `maker_fill_cost_dollars` | string | Maker fill cost in dollars |
| ↳ `queue_position` | number | Queue position \(deprecated\) |
| ↳ `expiration_time` | string | Order expiration time |
| ↳ `created_time` | string | Order creation time |
| ↳ `last_update_time` | string | Last update time |
| ↳ `self_trade_prevention_type` | string | Self-trade prevention type |
| ↳ `order_group_id` | string | Order group ID |
| ↳ `cancel_order_on_pause` | boolean | Cancel on market pause |
| `order` | object | The created order object |
### `kalshi_cancel_order`
Cancel an existing order on Kalshi (V2 with full API response)
Cancel an existing order on Kalshi
#### Input
@@ -506,46 +350,12 @@ Cancel an existing order on Kalshi (V2 with full API response)
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `order` | object | The canceled order object with full API response fields |
| ↳ `order_id` | string | Order ID |
| ↳ `user_id` | string | User ID |
| ↳ `client_order_id` | string | Client order ID |
| ↳ `ticker` | string | Market ticker |
| ↳ `side` | string | Order side \(yes/no\) |
| ↳ `action` | string | Action \(buy/sell\) |
| ↳ `type` | string | Order type \(limit/market\) |
| ↳ `status` | string | Order status \(resting/canceled/executed\) |
| ↳ `yes_price` | number | Yes price in cents |
| ↳ `no_price` | number | No price in cents |
| ↳ `yes_price_dollars` | string | Yes price in dollars |
| ↳ `no_price_dollars` | string | No price in dollars |
| ↳ `fill_count` | number | Filled contract count |
| ↳ `fill_count_fp` | string | Filled count \(fixed-point\) |
| ↳ `remaining_count` | number | Remaining contracts |
| ↳ `remaining_count_fp` | string | Remaining count \(fixed-point\) |
| ↳ `initial_count` | number | Initial contract count |
| ↳ `initial_count_fp` | string | Initial count \(fixed-point\) |
| ↳ `taker_fees` | number | Taker fees in cents |
| ↳ `maker_fees` | number | Maker fees in cents |
| ↳ `taker_fees_dollars` | string | Taker fees in dollars |
| ↳ `maker_fees_dollars` | string | Maker fees in dollars |
| ↳ `taker_fill_cost` | number | Taker fill cost in cents |
| ↳ `maker_fill_cost` | number | Maker fill cost in cents |
| ↳ `taker_fill_cost_dollars` | string | Taker fill cost in dollars |
| ↳ `maker_fill_cost_dollars` | string | Maker fill cost in dollars |
| ↳ `queue_position` | number | Queue position \(deprecated\) |
| ↳ `expiration_time` | string | Order expiration time |
| ↳ `created_time` | string | Order creation time |
| ↳ `last_update_time` | string | Last update time |
| ↳ `self_trade_prevention_type` | string | Self-trade prevention type |
| ↳ `order_group_id` | string | Order group ID |
| ↳ `cancel_order_on_pause` | boolean | Cancel on market pause |
| `reduced_by` | number | Number of contracts canceled |
| `reduced_by_fp` | string | Number of contracts canceled in fixed-point format |
| `order` | object | The canceled order object |
| `reducedBy` | number | Number of contracts canceled |
### `kalshi_amend_order`
Modify the price or quantity of an existing order on Kalshi (V2 with full API response)
Modify the price or quantity of an existing order on Kalshi
#### Input
@@ -569,63 +379,6 @@ Modify the price or quantity of an existing order on Kalshi (V2 with full API re
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `old_order` | object | The original order object before amendment |
| ↳ `order_id` | string | Order ID |
| ↳ `user_id` | string | User ID |
| ↳ `ticker` | string | Market ticker |
| ↳ `event_ticker` | string | Event ticker |
| ↳ `status` | string | Order status |
| ↳ `side` | string | Order side \(yes/no\) |
| ↳ `type` | string | Order type \(limit/market\) |
| ↳ `yes_price` | number | Yes price in cents |
| ↳ `no_price` | number | No price in cents |
| ↳ `action` | string | Action \(buy/sell\) |
| ↳ `count` | number | Number of contracts |
| ↳ `remaining_count` | number | Remaining contracts |
| ↳ `created_time` | string | Order creation time |
| ↳ `expiration_time` | string | Order expiration time |
| ↳ `order_group_id` | string | Order group ID |
| ↳ `client_order_id` | string | Client order ID |
| ↳ `place_count` | number | Place count |
| ↳ `decrease_count` | number | Decrease count |
| ↳ `queue_position` | number | Queue position |
| ↳ `maker_fill_count` | number | Maker fill count |
| ↳ `taker_fill_count` | number | Taker fill count |
| ↳ `maker_fees` | number | Maker fees |
| ↳ `taker_fees` | number | Taker fees |
| ↳ `last_update_time` | string | Last update time |
| ↳ `take_profit_order_id` | string | Take profit order ID |
| ↳ `stop_loss_order_id` | string | Stop loss order ID |
| ↳ `amend_count` | number | Amend count |
| ↳ `amend_taker_fill_count` | number | Amend taker fill count |
| `order` | object | The amended order object with full API response fields |
| ↳ `order_id` | string | Order ID |
| ↳ `user_id` | string | User ID |
| ↳ `ticker` | string | Market ticker |
| ↳ `event_ticker` | string | Event ticker |
| ↳ `status` | string | Order status |
| ↳ `side` | string | Order side \(yes/no\) |
| ↳ `type` | string | Order type \(limit/market\) |
| ↳ `yes_price` | number | Yes price in cents |
| ↳ `no_price` | number | No price in cents |
| ↳ `action` | string | Action \(buy/sell\) |
| ↳ `count` | number | Number of contracts |
| ↳ `remaining_count` | number | Remaining contracts |
| ↳ `created_time` | string | Order creation time |
| ↳ `expiration_time` | string | Order expiration time |
| ↳ `order_group_id` | string | Order group ID |
| ↳ `client_order_id` | string | Client order ID |
| ↳ `place_count` | number | Place count |
| ↳ `decrease_count` | number | Decrease count |
| ↳ `queue_position` | number | Queue position |
| ↳ `maker_fill_count` | number | Maker fill count |
| ↳ `taker_fill_count` | number | Taker fill count |
| ↳ `maker_fees` | number | Maker fees |
| ↳ `taker_fees` | number | Taker fees |
| ↳ `last_update_time` | string | Last update time |
| ↳ `take_profit_order_id` | string | Take profit order ID |
| ↳ `stop_loss_order_id` | string | Stop loss order ID |
| ↳ `amend_count` | number | Amend count |
| ↳ `amend_taker_fill_count` | number | Amend taker fill count |
| `order` | object | The amended order object |

View File

@@ -51,22 +51,12 @@ Search for similar content in a knowledge base using vector similarity
| `properties` | string | No | No description |
| `tagName` | string | No | No description |
| `tagValue` | string | No | No description |
| `tagFilters` | string | No | No description |
#### Output
| 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`
@@ -85,18 +75,6 @@ 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`
@@ -109,21 +87,24 @@ Create a new document in a knowledge base
| `knowledgeBaseId` | string | Yes | ID of the knowledge base containing the document |
| `name` | string | Yes | Name of the document |
| `content` | string | Yes | Content of the document |
| `documentTags` | object | No | Document tags |
| `documentTags` | string | No | No description |
| `tag1` | string | No | Tag 1 value for the document |
| `tag2` | string | No | Tag 2 value for the document |
| `tag3` | string | No | Tag 3 value for the document |
| `tag4` | string | No | Tag 4 value for the document |
| `tag5` | string | No | Tag 5 value for the document |
| `tag6` | string | No | Tag 6 value for the document |
| `tag7` | string | No | Tag 7 value for the document |
| `documentTagsData` | array | No | Structured tag data with names, types, and values |
| `items` | object | No | No description |
| `properties` | string | No | No description |
| `tagName` | string | No | No description |
| `tagValue` | string | No | No description |
| `tagType` | string | No | No description |
#### Output
| 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 |

View File

@@ -1,94 +0,0 @@
---
title: LangSmith
description: Forward workflow runs to LangSmith for observability
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="langsmith"
color="#181C1E"
/>
{/* MANUAL-CONTENT-START:intro */}
Unlock deep visibility and understanding of your AI workflows with [LangSmith](https://www.langchain.com/langsmith) a powerful platform for tracing, debugging, and monitoring LLM-powered applications and automations. Integrate LangSmith into your processes to capture detailed execution traces, log input/output data, attach metadata, and optimize your workflows through data-driven observability.
With the LangSmith integration, you can:
- **Trace and debug runs**: Forward workflow, tool, or model runs to LangSmith, record hierarchical execution details, and pinpoint bottlenecks or failures quickly.
- **Attach rich metadata**: Enrich your traces by logging inputs, outputs, tags, custom metadata, reasons for failure, and more for in-depth insight and analytics.
- **Monitor workflow performance**: Visualize executions, monitor error rates, durations, and success metrics over time to improve reliability and efficiency.
- **Collaborate and audit**: Enable team-based debugging and track changes, enabling transparent auditing and rapid iteration on chained LLM workflows.
- **Automate observability**: Seamlessly connect LangSmith traces to your workflow automations for always-on, effortless monitoring without manual instrumentation.
LangSmith empowers engineers, data scientists, and product teams to iterate faster, catch issues earlier, and build more robust LLM-based applications—whether youre orchestrating agents, chains, or end-to-end workflows.
Drive better observability, actionable insights, and higher product quality by integrating LangSmith into your automated processes today.
{/* MANUAL-CONTENT-END */}
## 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 |

View File

@@ -10,24 +10,6 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
color="#316BFF"
/>
{/* MANUAL-CONTENT-START:intro */}
Supercharge your sales outreach and engagement with [Lemlist](https://lemlist.com) the personalized outreach automation platform trusted by thousands of sales teams. With Lemlist, you can automate multi-channel campaigns, nurture leads, and boost reply rates, all while keeping your communication highly personalized and authentic.
With the Lemlist integration, you can:
- **Automate outreach sequences:** Launch personalized email, LinkedIn, and calling campaigns at scale, tailored to each recipient.
- **Track campaign activity:** Instantly monitor opens, clicks, replies, bounces, and every lead interaction for granular campaign insights.
- **Centralize engagement data:** Fetch real-time activity and replies for each campaign or lead, and sync it directly into your workflow automation.
- **Get lead details automatically:** Retrieve enriched lead information by email or ID to keep your CRM and processes up to date without manual data entry.
- **Send targeted emails from your inbox:** Trigger bespoke emails to leads directly from the workflow, using up-to-date templates and data.
- **Boost team collaboration and follow-up:** Assign leads, track outcomes, and ensure no prospect is lost thanks to Lemlists built-in tools—all accessible via automation.
Lemlist empowers sales, marketing, and outbound teams to save time, personalize at scale, and convert more prospects. Automate and optimize your campaigns, integrate with your stack, and never miss a valuable opportunity.
Drive more replies, book more meetings, and grow your pipeline by connecting Lemlist to your automated workflows today!
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Integrate Lemlist into your workflow. Retrieve campaign activities and replies, get lead information, and send emails through the Lemlist inbox.
@@ -57,14 +39,6 @@ Retrieves campaign activities and steps performed, including email opens, clicks
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `activities` | array | List of activities |
| ↳ `_id` | string | Activity ID |
| ↳ `type` | string | Activity type |
| ↳ `leadId` | string | Associated lead ID |
| ↳ `campaignId` | string | Campaign ID |
| ↳ `sequenceId` | string | Sequence ID |
| ↳ `stepId` | string | Step ID |
| ↳ `createdAt` | string | When the activity occurred |
| `count` | number | Number of activities returned |
### `lemlist_get_lead`
@@ -75,7 +49,8 @@ Retrieves lead information by email address or lead ID.
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Lemlist API key |
| `leadIdentifier` | string | Yes | Lead email address or lead ID |
| `email` | string | No | Lead email address \(use either email or id\) |
| `id` | string | No | Lead ID \(use either email or id\) |
#### Output

View File

@@ -60,27 +60,6 @@ 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`
@@ -97,17 +76,6 @@ 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`
@@ -137,25 +105,6 @@ 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`
@@ -185,22 +134,6 @@ 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`
@@ -270,16 +203,6 @@ 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`
@@ -333,11 +256,6 @@ 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`
@@ -355,10 +273,6 @@ 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`
@@ -393,14 +307,6 @@ 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`
@@ -420,14 +326,6 @@ 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`
@@ -444,15 +342,6 @@ 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`
@@ -475,13 +364,6 @@ 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`
@@ -505,15 +387,6 @@ 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`
@@ -549,14 +422,6 @@ 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`
@@ -574,11 +439,6 @@ 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`
@@ -594,13 +454,6 @@ 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`
@@ -619,12 +472,6 @@ 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`
@@ -644,11 +491,6 @@ 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`
@@ -668,10 +510,6 @@ 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`
@@ -707,13 +545,6 @@ 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`
@@ -735,12 +566,6 @@ 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`
@@ -761,11 +586,6 @@ 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`
@@ -784,15 +604,6 @@ 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`
@@ -809,13 +620,6 @@ 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`
@@ -835,12 +639,6 @@ 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`
@@ -857,13 +655,6 @@ 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`
@@ -883,11 +674,6 @@ 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`
@@ -906,12 +692,6 @@ 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`
@@ -930,11 +710,6 @@ 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`
@@ -969,10 +744,6 @@ 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`
@@ -991,11 +762,6 @@ 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`
@@ -1031,11 +797,6 @@ 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`
@@ -1053,12 +814,6 @@ 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`
@@ -1077,11 +832,6 @@ 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`
@@ -1100,12 +850,6 @@ List all status updates for a project in Linear
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `updates` | array | Array of project updates |
| ↳ `id` | string | Update ID |
| ↳ `body` | string | Update message |
| ↳ `health` | string | Project health |
| ↳ `createdAt` | string | Creation timestamp |
| ↳ `user` | object | User who created the update |
| `pageInfo` | object | Pagination information |
### `linear_list_notifications`
@@ -1123,12 +867,6 @@ 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`
@@ -1146,11 +884,6 @@ 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`
@@ -1175,14 +908,6 @@ 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`
@@ -1201,15 +926,6 @@ 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`
@@ -1230,17 +946,6 @@ 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`
@@ -1262,17 +967,6 @@ 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`
@@ -1291,18 +985,6 @@ 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`
@@ -1319,14 +1001,6 @@ 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`

View File

@@ -72,9 +72,6 @@ Retrieve a list of audiences (lists) from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the audiences were successfully retrieved |
| `output` | object | Audiences data |
| ↳ `lists` | json | Array of audience/list objects |
| ↳ `total_items` | number | Total number of lists |
| ↳ `total_returned` | number | Number of lists returned in this response |
### `mailchimp_get_audience`
@@ -93,8 +90,6 @@ Retrieve details of a specific audience (list) from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the audience was successfully retrieved |
| `output` | object | Audience data |
| ↳ `list` | json | Audience/list object |
| ↳ `list_id` | string | The unique ID of the audience |
### `mailchimp_create_audience`
@@ -117,9 +112,6 @@ 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`
@@ -142,9 +134,6 @@ 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`
@@ -183,9 +172,6 @@ Retrieve a list of members from a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the members were successfully retrieved |
| `output` | object | Members data |
| ↳ `members` | json | Array of member objects |
| ↳ `total_items` | number | Total number of members |
| ↳ `total_returned` | number | Number of members returned in this response |
### `mailchimp_get_member`
@@ -205,8 +191,6 @@ Retrieve details of a specific member from a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the member was successfully retrieved |
| `output` | object | Member data |
| ↳ `member` | json | Member object |
| ↳ `subscriber_hash` | string | The MD5 hash of the member email address |
### `mailchimp_add_member`
@@ -229,9 +213,6 @@ 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`
@@ -255,9 +236,6 @@ 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`
@@ -281,9 +259,6 @@ 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`
@@ -321,7 +296,6 @@ 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`
@@ -343,9 +317,6 @@ 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`
@@ -367,9 +338,6 @@ Retrieve a list of campaigns from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the campaigns were successfully retrieved |
| `output` | object | Campaigns data |
| ↳ `campaigns` | json | Array of campaign objects |
| ↳ `total_items` | number | Total number of campaigns |
| ↳ `total_returned` | number | Number of campaigns returned in this response |
### `mailchimp_get_campaign`
@@ -388,8 +356,6 @@ Retrieve details of a specific campaign from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the campaign was successfully retrieved |
| `output` | object | Campaign data |
| ↳ `campaign` | json | Campaign object |
| ↳ `campaign_id` | string | The unique ID of the campaign |
### `mailchimp_create_campaign`
@@ -410,9 +376,6 @@ 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`
@@ -433,9 +396,6 @@ 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`
@@ -471,7 +431,6 @@ Send a Mailchimp campaign
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Send confirmation |
| ↳ `success` | boolean | Operation success |
### `mailchimp_schedule_campaign`
@@ -508,7 +467,6 @@ Unschedule a previously scheduled Mailchimp campaign
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Unschedule confirmation |
| ↳ `success` | boolean | Operation success |
### `mailchimp_replicate_campaign`
@@ -527,9 +485,6 @@ 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`
@@ -548,7 +503,6 @@ Retrieve the HTML and plain-text content for a Mailchimp campaign
| --------- | ---- | ----------- |
| `success` | boolean | Whether the campaign content was successfully retrieved |
| `output` | object | Campaign content data |
| ↳ `content` | json | Campaign content object |
### `mailchimp_set_campaign_content`
@@ -570,8 +524,6 @@ 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`
@@ -591,9 +543,6 @@ Retrieve a list of automations from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the automations were successfully retrieved |
| `output` | object | Automations data |
| ↳ `automations` | json | Array of automation objects |
| ↳ `total_items` | number | Total number of automations |
| ↳ `total_returned` | number | Number of automations returned in this response |
### `mailchimp_get_automation`
@@ -612,8 +561,6 @@ Retrieve details of a specific automation from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the automation was successfully retrieved |
| `output` | object | Automation data |
| ↳ `automation` | json | Automation object |
| ↳ `workflow_id` | string | The unique ID of the automation workflow |
### `mailchimp_start_automation`
@@ -632,7 +579,6 @@ Start all emails in a Mailchimp automation workflow
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Start confirmation |
| ↳ `success` | boolean | Operation success |
### `mailchimp_pause_automation`
@@ -651,7 +597,6 @@ 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`
@@ -672,8 +617,6 @@ 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`
@@ -693,9 +636,6 @@ Retrieve a list of templates from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the templates were successfully retrieved |
| `output` | object | Templates data |
| ↳ `templates` | json | Array of template objects |
| ↳ `total_items` | number | Total number of templates |
| ↳ `total_returned` | number | Number of templates returned in this response |
### `mailchimp_get_template`
@@ -714,8 +654,6 @@ Retrieve details of a specific template from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the template was successfully retrieved |
| `output` | object | Template data |
| ↳ `template` | json | Template object |
| ↳ `template_id` | string | The unique ID of the template |
### `mailchimp_create_template`
@@ -735,9 +673,6 @@ 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`
@@ -758,9 +693,6 @@ 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`
@@ -797,9 +729,6 @@ Retrieve a list of campaign reports from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the campaign reports were successfully retrieved |
| `output` | object | Campaign reports data |
| ↳ `reports` | json | Array of campaign report objects |
| ↳ `total_items` | number | Total number of reports |
| ↳ `total_returned` | number | Number of reports returned in this response |
### `mailchimp_get_campaign_report`
@@ -818,8 +747,6 @@ Retrieve the report for a specific campaign from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the campaign report was successfully retrieved |
| `output` | object | Campaign report data |
| ↳ `report` | json | Campaign report object |
| ↳ `campaign_id` | string | The unique ID of the campaign |
### `mailchimp_get_segments`
@@ -840,9 +767,6 @@ Retrieve a list of segments from a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the segments were successfully retrieved |
| `output` | object | Segments data |
| ↳ `segments` | json | Array of segment objects |
| ↳ `total_items` | number | Total number of segments |
| ↳ `total_returned` | number | Number of segments returned in this response |
### `mailchimp_get_segment`
@@ -862,8 +786,6 @@ Retrieve details of a specific segment from a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the segment was successfully retrieved |
| `output` | object | Segment data |
| ↳ `segment` | json | Segment object |
| ↳ `segment_id` | string | The unique ID of the segment |
### `mailchimp_create_segment`
@@ -884,9 +806,6 @@ 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`
@@ -908,9 +827,6 @@ 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`
@@ -950,9 +866,6 @@ Retrieve members of a specific segment from a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the segment members were successfully retrieved |
| `output` | object | Segment members data |
| ↳ `members` | json | Array of member objects |
| ↳ `total_items` | number | Total number of members |
| ↳ `total_returned` | number | Number of members returned in this response |
### `mailchimp_add_segment_member`
@@ -973,8 +886,6 @@ 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`
@@ -995,7 +906,6 @@ 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`
@@ -1015,9 +925,6 @@ Retrieve tags associated with a member in a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the member tags were successfully retrieved |
| `output` | object | Member tags data |
| ↳ `tags` | json | Array of tag objects |
| ↳ `total_items` | number | Total number of tags |
| ↳ `total_returned` | number | Number of tags returned in this response |
### `mailchimp_add_member_tags`
@@ -1038,7 +945,6 @@ 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`
@@ -1059,7 +965,6 @@ 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`
@@ -1080,9 +985,6 @@ Retrieve a list of merge fields from a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the merge fields were successfully retrieved |
| `output` | object | Merge fields data |
| ↳ `mergeFields` | json | Array of merge field objects |
| ↳ `total_items` | number | Total number of merge fields |
| ↳ `total_returned` | number | Number of merge fields returned in this response |
### `mailchimp_get_merge_field`
@@ -1102,8 +1004,6 @@ Retrieve details of a specific merge field from a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the merge field was successfully retrieved |
| `output` | object | Merge field data |
| ↳ `mergeField` | json | Merge field object |
| ↳ `merge_id` | string | The unique ID of the merge field |
### `mailchimp_create_merge_field`
@@ -1124,9 +1024,6 @@ 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`
@@ -1147,9 +1044,6 @@ 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`
@@ -1188,9 +1082,6 @@ Retrieve a list of interest categories from a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the interest categories were successfully retrieved |
| `output` | object | Interest categories data |
| ↳ `categories` | json | Array of interest category objects |
| ↳ `total_items` | number | Total number of categories |
| ↳ `total_returned` | number | Number of categories returned in this response |
### `mailchimp_get_interest_category`
@@ -1210,8 +1101,6 @@ Retrieve details of a specific interest category from a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the interest category was successfully retrieved |
| `output` | object | Interest category data |
| ↳ `category` | json | Interest category object |
| ↳ `interest_category_id` | string | The unique ID of the interest category |
### `mailchimp_create_interest_category`
@@ -1232,9 +1121,6 @@ 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`
@@ -1255,9 +1141,6 @@ 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`
@@ -1297,9 +1180,6 @@ Retrieve a list of interests from an interest category in a Mailchimp audience
| --------- | ---- | ----------- |
| `success` | boolean | Whether the interests were successfully retrieved |
| `output` | object | Interests data |
| ↳ `interests` | json | Array of interest objects |
| ↳ `total_items` | number | Total number of interests |
| ↳ `total_returned` | number | Number of interests returned in this response |
### `mailchimp_get_interest`
@@ -1320,8 +1200,6 @@ Retrieve details of a specific interest from an interest category in a Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the interest was successfully retrieved |
| `output` | object | Interest data |
| ↳ `interest` | json | Interest object |
| ↳ `interest_id` | string | The unique ID of the interest |
### `mailchimp_create_interest`
@@ -1342,9 +1220,6 @@ 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`
@@ -1366,9 +1241,6 @@ 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`
@@ -1407,9 +1279,6 @@ Retrieve a list of landing pages from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the landing pages were successfully retrieved |
| `output` | object | Landing pages data |
| ↳ `landingPages` | json | Array of landing page objects |
| ↳ `total_items` | number | Total number of landing pages |
| ↳ `total_returned` | number | Number of landing pages returned in this response |
### `mailchimp_get_landing_page`
@@ -1428,8 +1297,6 @@ Retrieve details of a specific landing page from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the landing page was successfully retrieved |
| `output` | object | Landing page data |
| ↳ `landingPage` | json | Landing page object |
| ↳ `page_id` | string | The unique ID of the landing page |
### `mailchimp_create_landing_page`
@@ -1449,9 +1316,6 @@ 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`
@@ -1471,9 +1335,6 @@ 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`
@@ -1509,7 +1370,6 @@ Publish a landing page in Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Publish confirmation |
| ↳ `success` | boolean | Operation success |
### `mailchimp_unpublish_landing_page`
@@ -1528,7 +1388,6 @@ Unpublish a landing page in Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Unpublish confirmation |
| ↳ `success` | boolean | Operation success |
### `mailchimp_get_batch_operations`
@@ -1548,9 +1407,6 @@ Retrieve a list of batch operations from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the batch operations were successfully retrieved |
| `output` | object | Batch operations data |
| ↳ `batches` | json | Array of batch operation objects |
| ↳ `total_items` | number | Total number of batch operations |
| ↳ `total_returned` | number | Number of batch operations returned in this response |
### `mailchimp_get_batch_operation`
@@ -1569,8 +1425,6 @@ Retrieve details of a specific batch operation from Mailchimp
| --------- | ---- | ----------- |
| `success` | boolean | Whether the batch operation was successfully retrieved |
| `output` | object | Batch operation data |
| ↳ `batch` | json | Batch operation object |
| ↳ `batch_id` | string | The unique ID of the batch operation |
### `mailchimp_create_batch_operation`
@@ -1589,9 +1443,6 @@ 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`

View File

@@ -52,7 +52,6 @@
"jira_service_management",
"kalshi",
"knowledge",
"langsmith",
"lemlist",
"linear",
"linkedin",
@@ -79,11 +78,9 @@
"polymarket",
"postgresql",
"posthog",
"pulse",
"qdrant",
"rds",
"reddit",
"reducto",
"resend",
"s3",
"salesforce",
@@ -97,6 +94,7 @@
"shopify",
"slack",
"smtp",
"spotify",
"sqs",
"ssh",
"stagehand",
@@ -105,8 +103,6 @@
"supabase",
"tavily",
"telegram",
"textract",
"tinybird",
"translate",
"trello",
"tts",

View File

@@ -1,36 +1,33 @@
---
title: Microsoft Excel
description: Read and write data with sheet selection
description: Read, write, and update data
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="microsoft_excel_v2"
type="microsoft_excel"
color="#E0E0E0"
/>
{/* MANUAL-CONTENT-START:intro */}
[Microsoft Excel](https://www.microsoft.com/en-us/microsoft-365/excel) is the worlds most popular spreadsheet tool for organizing, analyzing, and visualizing data. The Microsoft Excel integration enables you to programmatically read from and write to Excel workbooks as part of your automation workflows, with easy selection of sheets and cell ranges.
[Microsoft Teams](https://www.microsoft.com/en-us/microsoft-365/excel) is a powerful spreadsheet application that enables data management, analysis, and visualization. Through the Microsoft Excel integration in Sim, you can programmatically read, write, and manipulate spreadsheet data to support your workflow automation needs.
With Microsoft Excel integration, you can:
- **Read data from specific sheets:** Extract table data, lists, records, or custom ranges from any sheet in your Excel files for use in downstream workflow steps.
- **Write and update data:** Programmatically update cells, insert new rows, or modify existing records in chosen sheets, without ever opening the file manually.
- **Select cell ranges:** Specify exact ranges (e.g., A1:D10) to target for read and write operations, allowing fine-grained data manipulation.
- **Automate calculations and reporting:** Pull in live data, perform calculations, and produce custom Excel reports automatically.
- **Centralize spreadsheet tasks:** Remove manual copy-pasting—the workflow can update Excel files, capture new submissions, or sync data between systems.
- **Integrate seamlessly with Microsoft 365:** Access and modify cloud-hosted spreadsheets, whether for finance, sales, operations, or analytics.
- **Read Spreadsheet Data**: Access data from specific ranges, sheets, and cells
- **Write and Update Data**: Add new data or modify existing spreadsheet content
- **Manage Tables**: Create and manipulate tabular data structures
- **Handle Multiple Sheets**: Work with multiple worksheets in a workbook
- **Process Data**: Import, export, and transform spreadsheet data
Excels integration empowers every type of user—from analysts to managers—to automate their data collection, enrich reporting, trigger actions from sheet updates, and keep important data always up-to-date.
Connect Microsoft Excel to your automations to streamline data management, reporting, and collaboration within your workflows.
In Sim, the Microsoft Excel integration provides seamless access to spreadsheet functionality through OAuth authentication. You can read data from specific ranges, write new information, update existing cells, and handle various data formats. The integration supports both reading and writing operations with flexible input and output options. This enables you to build workflows that can effectively manage spreadsheet data, whether you're extracting information for analysis, updating records automatically, or maintaining data consistency across your applications.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Integrate Microsoft Excel into the workflow with explicit sheet selection. Can read and write data in specific sheets.
Integrate Microsoft Excel into the workflow. Can read, write, update, add to table, and create new worksheets.
@@ -38,7 +35,7 @@ Integrate Microsoft Excel into the workflow with explicit sheet selection. Can r
### `microsoft_excel_read`
Read data from a specific sheet in a Microsoft Excel spreadsheet
Read data from a Microsoft Excel spreadsheet
#### Input
@@ -51,16 +48,11 @@ Read data from a specific sheet in a Microsoft Excel spreadsheet
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sheetName` | string | Name of the sheet that was read |
| `range` | string | The range that was read |
| `values` | array | Array of rows containing cell values |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Microsoft Excel spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
| `data` | object | Range data from the spreadsheet |
### `microsoft_excel_write`
Write data to a specific sheet in a Microsoft Excel spreadsheet
Write data to a Microsoft Excel spreadsheet
#### Input
@@ -76,12 +68,47 @@ Write data to a specific sheet in a Microsoft Excel spreadsheet
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `updatedRange` | string | Range of cells that were updated |
| `updatedRows` | number | Number of rows updated |
| `updatedColumns` | number | Number of columns updated |
| `updatedCells` | number | Number of cells updated |
| `metadata` | json | Spreadsheet metadata including ID and URL |
| ↳ `spreadsheetId` | string | Microsoft Excel spreadsheet ID |
| ↳ `spreadsheetUrl` | string | Spreadsheet URL |
| `updatedRange` | string | The range that was updated |
| `updatedRows` | number | Number of rows that were updated |
| `updatedColumns` | number | Number of columns that were updated |
| `updatedCells` | number | Number of cells that were updated |
| `metadata` | object | Spreadsheet metadata |
### `microsoft_excel_table_add`
Add new rows to a Microsoft Excel table
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Yes | The ID of the spreadsheet containing the table |
| `tableName` | string | Yes | The name of the table to add rows to |
| `values` | array | Yes | The data to add to the table \(array of arrays or array of objects\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `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 |
### `microsoft_excel_worksheet_add`
Create a new worksheet (sheet) in a Microsoft Excel workbook
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Yes | The ID of the Excel workbook to add the worksheet to |
| `worksheetName` | string | Yes | The name of the new worksheet. Must be unique within the workbook and cannot exceed 31 characters |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `worksheet` | object | Details of the newly created worksheet |

View File

@@ -50,9 +50,6 @@ 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`
@@ -76,9 +73,6 @@ 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`
@@ -108,9 +102,6 @@ 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`
@@ -147,8 +138,6 @@ 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`
@@ -167,8 +156,6 @@ 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`
@@ -187,8 +174,6 @@ 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`
@@ -207,8 +192,6 @@ 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`
@@ -228,8 +211,6 @@ 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`
@@ -250,8 +231,6 @@ 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`
@@ -290,7 +269,6 @@ 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`
@@ -314,6 +292,5 @@ 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 |

Some files were not shown because too many files have changed in this diff Show More