Compare commits

...

75 Commits

Author SHA1 Message Date
Waleed
3792bdd252 v0.5.49: hitl improvements, new email styles, imap trigger, logs context menu (#2672)
* feat(logs-context-menu): consolidated logs utils and types, added logs record context menu (#2659)

* feat(email): welcome email; improvement(emails): ui/ux (#2658)

* feat(email): welcome email; improvement(emails): ui/ux

* improvement(emails): links, accounts, preview

* refactor(emails): file structure and wrapper components

* added envvar for personal emails sent, added isHosted gate

* fixed failing tests, added env mock

* fix: removed comment

---------

Co-authored-by: waleed <walif6@gmail.com>

* fix(logging): hitl + trigger dev crash protection (#2664)

* hitl gaps

* deal with trigger worker crashes

* cleanup import strcuture

* feat(imap): added support for imap trigger (#2663)

* feat(tools): added support for imap trigger

* feat(imap): added parity, tested

* ack PR comments

* final cleanup

* feat(i18n): update translations (#2665)

Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>

* fix(grain): updated grain trigger to auto-establish trigger (#2666)

Co-authored-by: aadamgough <adam@sim.ai>

* feat(admin): routes to manage deployments (#2667)

* feat(admin): routes to manage deployments

* fix naming fo deployed by

* feat(time-picker): added timepicker emcn component, added to playground, added searchable prop for dropdown, added more timezones for schedule, updated license and notice date (#2668)

* feat(time-picker): added timepicker emcn component, added to playground, added searchable prop for dropdown, added more timezones for schedule, updated license and notice date

* removed unused params, cleaned up redundant utils

* improvement(invite): aligned styling (#2669)

* improvement(invite): aligned with rest of app

* fix(invite): error handling

* fix: addressed comments

---------

Co-authored-by: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com>
Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com>
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
Co-authored-by: Adam Gough <77861281+aadamgough@users.noreply.github.com>
Co-authored-by: aadamgough <adam@sim.ai>
2026-01-03 13:19:18 -08:00
Emir Karabeg
8d15219c12 improvement(invite): aligned styling (#2669)
* improvement(invite): aligned with rest of app

* fix(invite): error handling

* fix: addressed comments
2026-01-02 19:45:10 -08:00
Waleed
c3adcf315b feat(time-picker): added timepicker emcn component, added to playground, added searchable prop for dropdown, added more timezones for schedule, updated license and notice date (#2668)
* feat(time-picker): added timepicker emcn component, added to playground, added searchable prop for dropdown, added more timezones for schedule, updated license and notice date

* removed unused params, cleaned up redundant utils
2026-01-02 18:46:39 -08:00
Vikhyath Mondreti
4df5d56ac5 feat(admin): routes to manage deployments (#2667)
* feat(admin): routes to manage deployments

* fix naming fo deployed by
2026-01-02 17:58:19 -08:00
Adam Gough
7515809df0 fix(grain): updated grain trigger to auto-establish trigger (#2666)
Co-authored-by: aadamgough <adam@sim.ai>
2026-01-02 17:56:06 -08:00
Waleed
385e93f4bb feat(i18n): update translations (#2665)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2026-01-02 15:40:15 -08:00
Waleed
096af4fdfa feat(imap): added support for imap trigger (#2663)
* feat(tools): added support for imap trigger

* feat(imap): added parity, tested

* ack PR comments

* final cleanup
2026-01-02 15:28:00 -08:00
Vikhyath Mondreti
dc3de95c39 fix(logging): hitl + trigger dev crash protection (#2664)
* hitl gaps

* deal with trigger worker crashes

* cleanup import strcuture
2026-01-02 14:01:01 -08:00
Emir Karabeg
79be435918 feat(email): welcome email; improvement(emails): ui/ux (#2658)
* feat(email): welcome email; improvement(emails): ui/ux

* improvement(emails): links, accounts, preview

* refactor(emails): file structure and wrapper components

* added envvar for personal emails sent, added isHosted gate

* fixed failing tests, added env mock

* fix: removed comment

---------

Co-authored-by: waleed <walif6@gmail.com>
2026-01-02 00:16:27 -08:00
Waleed
852562cfdd feat(logs-context-menu): consolidated logs utils and types, added logs record context menu (#2659) 2026-01-01 13:47:30 -08:00
Waleed
eb5d1f3e5b v0.5.48: copy-paste workflow blocks, docs updates, mcp tool fixes 2025-12-31 18:00:04 -08:00
Waleed
4da128d77c improvement(context-menu): gray out undo redo if the stack is empty (#2657) 2025-12-31 17:59:44 -08:00
Waleed
0c8d05fc98 feat(workflow): added context menu for block, pane, and multi-block selection on canvas (#2656)
* feat(workflow): added context menu for block, pane, and multi-block selection on canvas

* added more

* ack PR comments
2025-12-31 14:42:33 -08:00
Vikhyath Mondreti
4301342ffb fix(mcp): exclude serverUrl from mcp tool call params (#2654) 2025-12-31 11:44:21 -08:00
Waleed
56e485d13b feat(i18n): update translations 2025-12-31 06:48:03 -08:00
Vikhyath Mondreti
1ed746bacf fix(paste): single instance trigger notification correction (#2653) 2025-12-31 03:34:14 -08:00
Vikhyath Mondreti
bf5d0a5573 feat(copy-paste): allow cross workflow selection, paste, move for blocks (#2649)
* feat(copy-paste): allow cross workflow selection, paste, move for blocks

* fix drag options

* add keyboard and mouse controls into docs

* refactor sockets and undo/redo for batch additions and removals

* fix tests

* cleanup more code

* fix perms issue

* fix subflow copy/paste

* remove log file

* fit paste in viewport bounds

* fix deselection
2025-12-31 02:47:06 -08:00
Adam Gough
fb148c6203 fix(jsm): renamed operation (#2651)
* renamed operaiton

* revert icons file
2025-12-31 00:08:20 -08:00
Waleed
54ab82c8dd v0.5.47: deploy workflow as mcp, kb chunks tokenizer, UI improvements, jira service management tools 2025-12-30 23:18:58 -08:00
Waleed
b90cc5b874 fix(build): resolve failing build due to symlink issue in main app dockerfile (#2650) 2025-12-30 22:48:55 -08:00
Waleed
4787909851 improvement(kb): removed zustand cache syncing in kb, added chunk text tokenizer (#2647)
* improvement(kb): removed zustand cache syncing in kb, added chunk text tokenizer

* removed dead code

* removed redundant hook

* remove unused hook

* remove alert notification and use simple error

* added more popover actions

* removed debug instrumentation

* remove extraneous comments

* removed unused handler
2025-12-30 20:15:08 -08:00
Waleed
776f82c0a6 feat(i18n): update translations (#2645)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-30 19:50:11 -08:00
Vikhyath Mondreti
2cfd75a422 fix(tool-input): code subblock should be emptyable (#2646) 2025-12-30 17:45:56 -08:00
Priyanshu Solanki
c77268c13d feat(workflow-as-mcp): added ability to deploy workflows as mcp servers and mcp tools (#2415)
* added a workflow as mcp

* fixed the issue of UI rendering for deleted mcp servers

* fixing lint issues

* using mcn components

* fixing merge conflicts

* fix

* fix lint errors

* refactored code to use hasstartblock from the tirgger utils

* removing unecessary auth

* using official mcp sdk and added description fields

* using normalised input schema function

* ui fixes part 1

* remove migration before merge

* fix merge conflicts

* remove migration to prep merge

* re-add migration

* cleanup code to use mcp sdk types

* fix discovery calls

* add migration

* ui improvements

* fix lint

* fix types

* fix lint

* fix spacing

* remove migration to prep merge

* add migration back

* fix imports

* fix tool refresh ux

* fix test failures

* fix tests

* cleanup code

* styling improvements, ability to edit mcp server description, etc

* fixed ui in light mode api keys modal

* update docs

* deprecated unused input components, shifted to emcn

* updated playground, simplified components

* move images and videos

* updated more docs images

---------

Co-authored-by: priyanshu.solanki <priyanshu.solanki@saviynt.com>
Co-authored-by: Siddharth Ganesan <siddharthganesan@gmail.com>
Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
Co-authored-by: waleed <walif6@gmail.com>
2025-12-30 16:52:50 -08:00
Waleed
34bc115468 feat(i18n): update translations (#2643)
Co-authored-by: icecrasher321 <icecrasher321@users.noreply.github.com>
2025-12-30 16:27:37 -08:00
Adam Gough
2697da5d9c fix(jsm): combined jira providers for jsm (#2644) 2025-12-30 16:01:35 -08:00
Waleed
eca91232bf improvement(tools): added input validation to jira service management routes (#2642) 2025-12-30 14:55:08 -08:00
Adam Gough
7356edccbb added jsm (#2641)
Co-authored-by: aadamgough <adam@sim.ai>
2025-12-30 14:46:31 -08:00
Waleed
9208375523 feat(cursorrules): updated cursorrules and claude md file (#2640)
* feat(cursorrules): updated cursorrules and claude md file

* added rules for adding new integrations
2025-12-30 10:58:33 -08:00
Waleed
df099e9485 feat(filtering): added the ability to filter logs by date and date range (#2639) 2025-12-30 10:42:44 -08:00
ppippi-dev
f8b1880575 fix(docker): resolve @sim/logger module not found in realtime container (#2637) 2025-12-29 23:06:28 -08:00
Emir Karabeg
a7a7c8601c improvement(copilot): ui/ux; refactor: store dimensions (#2636) 2025-12-29 20:42:42 -08:00
Waleed
97a9295230 feat(kb): added permissions to workspace popover, added kb popover to view tags, edit description and kb name (#2634) 2025-12-29 18:56:50 -08:00
Emir Karabeg
e9e5721610 improvement: HITL, subblocks, general (#2633)
* improvement: knowledge tags subblock, start subblock

* improvement: terminal height, subblocks

* improvement: general settings, HITL
2025-12-29 17:51:07 -08:00
Emir Karabeg
a08d86d42b fix(note): light mode (#2631) 2025-12-29 15:39:47 -08:00
Vikhyath Mondreti
400178a3b0 fix(templates): only change updatedAt for actual updates to workflow or metadata (#2630) 2025-12-29 12:11:32 -08:00
Waleed
da1f668272 improvement(sidebar): fix workspace name truncation on sidebar preview (#2628) 2025-12-29 11:11:00 -08:00
Waleed
f895bf469b v0.5.46: build improvements, greptile, light mode improvements 2025-12-29 02:17:52 -08:00
Waleed
88065088bf fix(deploy): fix workflow change detection to handle old variable reference format (#2623) 2025-12-29 02:09:38 -08:00
Emir Karabeg
1c626dfcae improvement(globals): light colors (#2620)
* improvement(globals): light colors

* improvement(ui): logs, templates, kb, light globals

* improvement(subflows): start node and ui/ux
2025-12-28 13:28:36 -08:00
Waleed
132aae1615 feat(i18n): update translations (#2619)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-28 12:37:20 -08:00
Waleed
f44fc18041 fix(build): add tsconfig to db dockerfile (#2617)
* fix(build): add tsconfig to db dockerfile

* ack pr comment
2025-12-28 12:29:34 -08:00
Waleed
7761b16b87 feat(tools): added greptile tools/block, updated copilot panel styling (#2618) 2025-12-28 12:12:22 -08:00
Waleed
71130c8b0a improvement(monorepo): added tsconfig package, resolved type errors in testing package (#2613) 2025-12-28 00:36:48 -08:00
Waleed
dd3209af06 v0.5.45: light mode fixes, realtime usage indicator, docker build improvements 2025-12-27 19:57:42 -08:00
Waleed
7c0a3c15ac improvement(build): migrate to blacksmith sticky disks for faster builds, other build improvements (#2611) 2025-12-27 18:09:29 -08:00
Waleed
cdc1a832d7 fix(docker): add logger package to realtime dockerfile (#2610) 2025-12-27 17:55:16 -08:00
Waleed
aa9cc5604a improvement(usage-indicator): update query invalidation for usage to update in realtime (#2607)
* improvement(usage-indicator): update query invalidation for usage to update in realtime

* ack PR comments
2025-12-27 15:23:02 -08:00
Emir Karabeg
fdba1cfac2 improvement: required permissions, oauth modal badge (#2609) 2025-12-27 15:18:03 -08:00
Waleed
2e1ccb16f5 improvement(ui): hide divider when following subblock value is null (#2608)
* improvement(ui): hide divider when following subblock value is null

* closed gap in mcp dynamic args subblock
2025-12-27 15:15:43 -08:00
Waleed
b6ba3b50a7 v0.5.44: keyboard shortcuts, autolayout, light mode, byok, testing improvements 2025-12-26 21:25:19 -08:00
Waleed
8651896277 feat(i18n): update translations (#2604)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-26 21:11:01 -08:00
Emir Karabeg
3054d6c1ed fix: bg styling outside workspace (#2605) 2025-12-26 21:08:13 -08:00
Waleed
3d75445459 feat(tools): added new firecrawl agent endpoint (#2603) 2025-12-26 20:34:39 -08:00
Waleed
5add2613ff improvement(easyconnect): use native reactflow getIntersectingNodes instead of custom impl for easy connect (#2601) 2025-12-26 18:29:03 -08:00
Waleed
bd0eca04d7 fix(tag-dropdown): fix the way variables are displayed in the tag dropdown (#2597) 2025-12-26 17:17:01 -08:00
Adam Gough
a60a1fc49a improvement(edges): drag edge over block (#2596)
* drag edge over block

* fix minor stale closure

---------

Co-authored-by: aadamgough <adam@sim.ai>
Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
2025-12-26 17:05:15 -08:00
Vikhyath Mondreti
298546daf1 fix(parallel): add parallel sentinel to make parallel-parallel and parallel-loop work correctly (#2593)
* fix(parallel): add parallel sentinel to make parallel-parallel and parallel-loop work correctly

* fix regular -> parallel + copilot nested subflows

* add tests

* consolidate to always explode parallel dag at runtime
2025-12-26 16:51:54 -08:00
Waleed
b60b98e42c improvement(tag-dropdown): added option to select block in tag dropdown, custom tools modal improvements, light mode fixes (#2594)
* improvement(tag-dropdown): added option to select block in tag dropdown, custom tools modal improvements, light mode fixes

* fix UI bugs

* remove unused components

* tag drop ordering fix
2025-12-26 16:24:38 -08:00
Waleed
7793a6d597 feat(kb): added tags information to kb docs table (#2589)
* feat(kb): added tags information to kb docs table

* improvement(base): table and tags styling

---------

Co-authored-by: Emir Karabeg <emirkarabeg@berkeley.edu>
2025-12-26 13:54:33 -08:00
Vikhyath Mondreti
66b8434861 fix(block-name): updating block name should update downstream var refs (#2592)
* fix(block-name): updating block name should update downstream var refs

* remove random comments
2025-12-26 12:56:02 -08:00
Adam Gough
27ec4120bc fix(tools): fixed tool outputs (#2534)
* fixed typeform

* fixed supabase tools

* salesforce fix

* removed comments

* pinecone fix

* fixed intercom

* regex constant

* removed fallback logic
2025-12-26 12:46:39 -08:00
Emir Karabeg
1f0e3f2be6 feat: light mode (#2457)
* feat(light): restored light theme

* feat: styling consolidation, note block upgrades

* improvement(zoom-prevention): moved downstream

* fix(notifications): mismatching workflow ID

* feat(light): button variant updates and controls consolidation

* improvement: UI consolidation

* feat: badges, usage limit; fix(note): iframe security; improvement(s-modal): sizing

* improvement: oauth modal, subscription

* improvement(team): ui/ux

* feat: emcn, subscription, tool input

* improvement(copilot): styling consolidation

* feat: colors consolidation

* improvement(ui): light styling

* fix(build): unused billing component

* improvement: addressed comments
2025-12-26 12:45:06 -08:00
Waleed
88cda3a9ce improvement(billing): migrate to decimaljs from number.parseFloat (#2588)
* improvement(billing): migrate to decimaljs from number.parseFloat

* ack PR comments

* ack pr comment

* consistency
2025-12-26 12:35:49 -08:00
Waleed
d707d18ee6 fix(build): update dockerfile to contain testing package deps (#2591)
* fix(build): update dockerfile to contain testing package deps

* added logger package
2025-12-26 12:20:38 -08:00
Waleed
b304233062 v0.5.43: export logs, circleback, grain, vertex, code hygiene, schedule improvements 2025-12-23 19:19:18 -08:00
Vikhyath Mondreti
57e4b49bd6 v0.5.42: fix memory migration 2025-12-23 01:24:54 -08:00
Vikhyath Mondreti
e12dd204ed v0.5.41: memory fixes, copilot improvements, knowledgebase improvements, LLM providers standardization 2025-12-23 00:15:18 -08:00
Vikhyath Mondreti
3d9d9cbc54 v0.5.40: supabase ops to allow non-public schemas, jira uuid 2025-12-21 22:28:05 -08:00
Waleed
0f4ec962ad v0.5.39: notion, workflow variables fixes 2025-12-20 20:44:00 -08:00
Waleed
4827866f9a v0.5.38: snap to grid, copilot ux improvements, billing line items 2025-12-20 17:24:38 -08:00
Waleed
3e697d9ed9 v0.5.37: redaction utils consolidation, logs updates, autoconnect improvements, additional kb tag types 2025-12-19 22:31:55 -08:00
Martin Yankov
4431a1a484 fix(helm): add custom egress rules to realtime network policy (#2481)
The realtime service network policy was missing the custom egress rules section
that allows configuration of additional egress rules via values.yaml. This caused
the realtime pods to be unable to connect to external databases (e.g., PostgreSQL
on port 5432) when using external database configurations.

The app network policy already had this section, but the realtime network policy
was missing it, creating an inconsistency and preventing the realtime service
from accessing external databases configured via networkPolicy.egress values.

This fix adds the same custom egress rules template section to the realtime
network policy, matching the app network policy behavior and allowing users to
configure database connectivity via values.yaml.
2025-12-19 18:59:08 -08:00
Waleed
4d1a9a3f22 v0.5.36: hitl improvements, opengraph, slack fixes, one-click unsubscribe, auth checks, new db indexes 2025-12-19 01:27:49 -08:00
Vikhyath Mondreti
eb07a080fb v0.5.35: helm updates, copilot improvements, 404 for docs, salesforce fixes, subflow resize clamping 2025-12-18 16:23:19 -08:00
1666 changed files with 49983 additions and 20217 deletions

View File

@@ -1,45 +1,35 @@
---
description: EMCN component library patterns with CVA
description: EMCN component library patterns
globs: ["apps/sim/components/emcn/**"]
---
# EMCN Component Guidelines
# EMCN Components
## When to Use CVA vs Direct Styles
Import from `@/components/emcn`, never from subpaths (except CSS files).
**Use CVA (class-variance-authority) when:**
- 2+ visual variants (primary, secondary, outline)
- Multiple sizes or state variations
- Example: Button with variants
## CVA vs Direct Styles
**Use direct className when:**
- Single consistent style
- No variations needed
- Example: Label with one style
**Use CVA when:** 2+ variants (primary/secondary, sm/md/lg)
## Patterns
**With CVA:**
```tsx
const buttonVariants = cva('base-classes', {
variants: {
variant: { default: '...', primary: '...' },
size: { sm: '...', md: '...' }
}
variants: { variant: { default: '...', primary: '...' } }
})
export { Button, buttonVariants }
```
**Without CVA:**
**Use direct className when:** Single consistent style, no variations
```tsx
function Label({ className, ...props }) {
return <Primitive className={cn('single-style-classes', 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]`
- Always use `transition-colors` for hover states
- `transition-colors` for hover states

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

@@ -10,58 +10,47 @@ globs: ["apps/sim/**"]
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
5. **Performance by Default**: useMemo, useCallback, refs appropriately
## File Organization
## 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
│ └── sub-feature/ # Sub-feature with own components
├── hooks/ # Custom hooks
── feature.tsx # Main component
├── 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`, `TriggerPanel`)
- **Hooks**: camelCase with `use` prefix (`useWorkflowOperations`)
- **Files**: kebab-case matching export (`workflow-list.tsx`)
- **Stores**: kebab-case in stores/ (`sidebar/store.ts`)
- **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`)
## State Management
## Utils Rules
**useState**: UI-only concerns (dropdown open, hover, form inputs)
**Zustand**: Shared state, persistence, global app state
**useRef**: DOM refs, avoiding dependency issues, mutable non-reactive values
## Component Extraction
**Extract to separate file when:**
- Complex (50+ lines)
- Used across 2+ files
- Has own state/logic
**Keep inline when:**
- Simple (< 10 lines)
- Used in only 1 file
- Purely presentational
**Never import utilities from another component file.** Extract shared helpers to `lib/` or `utils/`.
## Utils Files
**Never create a `utils.ts` file for a single consumer.** Inline the logic directly in the consuming component.
**Create `utils.ts` when:**
- 2+ files import the same helper
**Prefer existing sources of truth:**
- Before duplicating logic, check if a centralized helper already exists (e.g., `lib/logs/get-trigger-options.ts`)
- Import from the source of truth rather than creating wrapper functions
**Location hierarchy:**
- `lib/` — App-wide utilities (auth, billing, core)
- `feature/utils.ts` — Feature-scoped utilities (used by 2+ components in the feature)
- Inline — Single-use helpers (define directly in the component)
- **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

@@ -6,59 +6,43 @@ globs: ["apps/sim/**/*.tsx"]
# Component Patterns
## Structure Order
```typescript
'use client' // Only if using hooks
// 1. Imports (external → internal → relative)
// 2. Constants at module level
// Imports (external → internal)
// Constants at module level
const CONFIG = { SPACING: 8 } as const
// 3. Props interface with TSDoc
// Props interface
interface ComponentProps {
/** Description */
requiredProp: string
optionalProp?: boolean
}
// 4. Component with TSDoc
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 computations
// g. useCallback handlers
// f. useMemo
// g. useCallback
// h. useEffect
// i. Return JSX
}
```
## Rules
1. Add `'use client'` when using React hooks
1. `'use client'` only when using React hooks
2. Always define props interface
3. TSDoc on component: description, @param, @returns
4. Extract constants with `as const`
5. Use Tailwind only, no inline styles
6. Semantic HTML (`aside`, `nav`, `article`)
7. Include ARIA attributes where appropriate
8. Optional chain callbacks: `onAction?.(id)`
3. Extract constants with `as const`
4. Semantic HTML (`aside`, `nav`, `article`)
5. Optional chain callbacks: `onAction?.(id)`
## Factory Pattern with Caching
## Component Extraction
When generating components for a specific signature (e.g., icons):
**Extract when:** 50+ lines, used in 2+ files, or has own state/logic
```typescript
const cache = new Map<string, React.ComponentType<{ className?: string }>>()
function getColorIcon(color: string) {
if (cache.has(color)) return cache.get(color)!
const Icon = ({ className }: { className?: string }) => (
<div className={cn(className, 'rounded-[3px]')} style={{ backgroundColor: color, width: 10, height: 10 }} />
)
Icon.displayName = `ColorIcon(${color})`
cache.set(color, Icon)
return Icon
}
```
**Keep inline when:** < 10 lines, single use, purely presentational

View File

@@ -6,21 +6,13 @@ globs: ["apps/sim/**/use-*.ts", "apps/sim/**/hooks/**/*.ts"]
# Hook Patterns
## Structure
```typescript
import { createLogger } from '@/lib/logs/console/logger'
const logger = createLogger('useFeatureName')
interface UseFeatureProps {
id: string
onSuccess?: (result: Result) => void
}
/**
* Hook description.
* @param props - Configuration
* @returns State and operations
*/
export function useFeature({ id, onSuccess }: UseFeatureProps) {
// 1. Refs for stable dependencies
const idRef = useRef(id)
@@ -29,7 +21,6 @@ export function useFeature({ id, onSuccess }: UseFeatureProps) {
// 2. State
const [data, setData] = useState<Data | null>(null)
const [isLoading, setIsLoading] = useState(false)
const [error, setError] = useState<Error | null>(null)
// 3. Sync refs
useEffect(() => {
@@ -37,32 +28,27 @@ export function useFeature({ id, onSuccess }: UseFeatureProps) {
onSuccessRef.current = onSuccess
}, [id, onSuccess])
// 4. Operations with useCallback
// 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)
} catch (err) {
setError(err as Error)
logger.error('Failed', { error: err })
} finally {
setIsLoading(false)
}
}, []) // Empty deps - using refs
}, [])
// 5. Return grouped by state/operations
return { data, isLoading, error, fetchData }
return { data, isLoading, fetchData }
}
```
## Rules
1. Single responsibility per hook
2. Props interface required
3. TSDoc required
4. Use logger, not console.log
5. Refs for stable callback dependencies
6. Wrap returned functions in useCallback
7. Always try/catch async operations
8. Track loading/error states
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

@@ -5,33 +5,57 @@ globs: ["apps/sim/**/*.ts", "apps/sim/**/*.tsx"]
# Import Patterns
## EMCN Components
Import from `@/components/emcn`, never from subpaths like `@/components/emcn/components/modal/modal`.
## Absolute Imports
**Exception**: CSS imports use actual file paths: `import '@/components/emcn/components/code/code.css'`
**Always use absolute imports.** Never use relative imports.
## Feature Components
Import from central folder indexes, not specific subfolders:
```typescript
// ✅ Correct
import { Dashboard, Sidebar } from '@/app/workspace/[workspaceId]/logs/components'
// ✓ Good
import { useWorkflowStore } from '@/stores/workflows/store'
import { Button } from '@/components/ui/button'
// ❌ Wrong
import { Dashboard } from '@/app/workspace/[workspaceId]/logs/components/dashboard'
// ✗ Bad
import { useWorkflowStore } from '../../../stores/workflows/store'
```
## Internal vs External
- **Cross-feature**: Absolute paths through central index
- **Within feature**: Relative paths (`./components/...`, `../utils`)
## 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. Feature imports from indexes
6. Relative imports
5. Stores (`@/stores/...`)
6. Feature imports
7. CSS imports
## Types
Use `type` keyword: `import type { WorkflowLog } from '...'`
## Type Imports
Use `type` keyword for type-only imports:
```typescript
import type { WorkflowLog } from '@/stores/logs/types'
```

View File

@@ -0,0 +1,207 @@
---
description: Adding new integrations (tools, blocks, triggers)
globs: ["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

@@ -0,0 +1,66 @@
---
description: React Query patterns for the Sim application
globs: ["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

@@ -5,53 +5,66 @@ globs: ["apps/sim/**/store.ts", "apps/sim/**/stores/**/*.ts"]
# Zustand Store Patterns
## Structure
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'
interface FeatureState {
// State
items: Item[]
activeId: string | null
// Actions
setItems: (items: Item[]) => void
addItem: (item: Item) => void
clearState: () => void
}
const createInitialState = () => ({
items: [],
activeId: null,
})
export const useFeatureStore = create<FeatureState>()(
persist(
(set) => ({
...createInitialState(),
setItems: (items) => set({ items }),
addItem: (item) => set((state) => ({
items: [...state.items, item],
})),
clearState: () => set(createInitialState()),
width: 300,
setWidth: (width) => set({ width }),
_hasHydrated: false,
setHasHydrated: (v) => set({ _hasHydrated: v }),
}),
{
name: 'feature-state',
partialize: (state) => ({ items: state.items }),
partialize: (state) => ({ width: state.width }),
onRehydrateStorage: () => (state) => state?.setHasHydrated(true),
}
)
)
```
## Rules
1. Interface includes state and actions
2. Extract config to module constants
3. TSDoc on store
4. Only persist what's needed
5. Immutable updates only - never mutate
6. Use `set((state) => ...)` when depending on previous state
7. Provide clear/reset actions
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

@@ -6,13 +6,14 @@ globs: ["apps/sim/**/*.tsx", "apps/sim/**/*.css"]
# Styling Rules
## Tailwind
1. **No inline styles** - Use Tailwind classes exclusively
2. **No duplicate dark classes** - Don't add `dark:` when value matches light mode
3. **Exact values** - Use design system values (`text-[14px]`, `h-[25px]`)
4. **Prefer px** - Use `px-[4px]` over `px-1`
5. **Transitions** - Add `transition-colors` for interactive states
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'
@@ -23,25 +24,17 @@ import { cn } from '@/lib/utils'
)} />
```
## CSS Variables for Dynamic Styles
## CSS Variables
For dynamic values (widths, heights) synced with stores:
```typescript
// In store setter
setSidebarWidth: (width) => {
set({ sidebarWidth: width })
// In store
setWidth: (width) => {
set({ width })
document.documentElement.style.setProperty('--sidebar-width', `${width}px`)
}
// In component
<aside style={{ width: 'var(--sidebar-width)' }} />
```
## Anti-Patterns
```typescript
// ❌ Bad
<div style={{ width: 200 }}>
<div className='text-[var(--text-primary)] dark:text-[var(--text-primary)]'>
// ✅ Good
<div className='w-[200px]'>
<div className='text-[var(--text-primary)]'>
```

View File

@@ -0,0 +1,60 @@
---
description: Testing patterns with Vitest
globs: ["apps/sim/**/*.test.ts", "apps/sim/**/*.test.tsx"]
---
# Testing Patterns
Use Vitest. Test files live next to source: `feature.ts` → `feature.test.ts`
## Structure
```typescript
/**
* Tests for [feature name]
*
* @vitest-environment node
*/
// 1. Mocks BEFORE imports
vi.mock('@sim/db', () => ({ db: { select: vi.fn() } }))
vi.mock('@sim/logger', () => loggerMock)
// 2. Imports AFTER mocks
import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest'
import { createSession, loggerMock } from '@sim/testing'
import { myFunction } from '@/lib/feature'
describe('myFunction', () => {
beforeEach(() => vi.clearAllMocks())
it('should do something', () => {
expect(myFunction()).toBe(expected)
})
it.concurrent('runs in parallel', () => { ... })
})
```
## @sim/testing Package
```typescript
// Factories - create test data
import { createBlock, createWorkflow, createSession } from '@sim/testing'
// Mocks - pre-configured mocks
import { loggerMock, databaseMock, fetchMock } from '@sim/testing'
// Builders - fluent API for complex objects
import { ExecutionBuilder, WorkflowBuilder } from '@sim/testing'
```
## Rules
1. `@vitest-environment node` directive at file top
2. **Mocks before imports** - `vi.mock()` calls must come first
3. Use `@sim/testing` factories over manual test data
4. `it.concurrent` for independent tests (faster)
5. `beforeEach(() => vi.clearAllMocks())` to reset state
6. Group related tests with nested `describe` blocks
7. Test file naming: `*.test.ts` (not `*.spec.ts`)

View File

@@ -6,19 +6,15 @@ globs: ["apps/sim/**/*.ts", "apps/sim/**/*.tsx"]
# TypeScript Rules
1. **No `any`** - Use proper types or `unknown` with type guards
2. **Props interface** - Always define, even for simple components
3. **Callback types** - Full signature with params and return type
4. **Generics** - Use for reusable components/hooks
5. **Const assertions** - `as const` for constant objects/arrays
6. **Ref types** - Explicit: `useRef<HTMLDivElement>(null)`
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
## Anti-Patterns
```typescript
// Bad
// Bad
const handleClick = (e: any) => {}
useEffect(() => { doSomething(prop) }, []) // Missing dep
// Good
// Good
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {}
useEffect(() => { doSomething(prop) }, [prop])
```

View File

@@ -23,16 +23,17 @@ jobs:
with:
node-version: latest
- name: Cache Bun dependencies
uses: actions/cache@v4
- name: Mount Bun cache (Sticky Disk)
uses: useblacksmith/stickydisk@v1
with:
path: |
~/.bun/install/cache
node_modules
**/node_modules
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-
key: ${{ github.repository }}-bun-cache
path: ~/.bun/install/cache
- name: Mount node_modules (Sticky Disk)
uses: useblacksmith/stickydisk@v1
with:
key: ${{ github.repository }}-node-modules
path: ./node_modules
- name: Install dependencies
run: bun install --frozen-lockfile

304
CLAUDE.md
View File

@@ -1,47 +1,295 @@
# Expert Programming Standards
# Sim Studio Development Guidelines
**You are tasked with implementing solutions that follow best practices. You MUST be accurate, elegant, and efficient as an expert programmer.**
You are a professional software engineer. All code must follow best practices: accurate, readable, clean, and efficient.
---
## Global Standards
# Role
- **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`
You are a professional software engineer. All code you write MUST follow best practices, ensuring accuracy, quality, readability, and cleanliness. You MUST make FOCUSED EDITS that are EFFICIENT and ELEGANT.
## Architecture
## Logs
### 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
ENSURE that you use the logger.info and logger.warn and logger.error instead of the console.log whenever you want to display logs.
### Root 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
```
## Comments
### 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`)
You must use TSDOC for comments. Do not use ==== for comments to separate sections. Do not leave any comments that are not TSDOC.
## Imports
## Global Styles
**Always use absolute imports.** Never use relative imports.
You should not update the global styles unless it is absolutely necessary. Keep all styling local to components and files.
```typescript
// ✓ Good
import { useWorkflowStore } from '@/stores/workflows/store'
## Bun
// ✗ Bad
import { useWorkflowStore } from '../../../stores/workflows/store'
```
Use bun and bunx not npm and npx.
Use barrel exports (`index.ts`) when a folder has 3+ exports. Do not re-export from non-barrel files; import directly from the source.
## Code Quality
### 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
- Write clean, maintainable code that follows the project's existing patterns
- Prefer composition over inheritance
- Keep functions small and focused on a single responsibility
- Use meaningful variable and function names
- Handle errors gracefully and provide useful error messages
- Write type-safe code with proper TypeScript types
Use `import type { X }` for type-only imports.
## TypeScript
1. No `any` - Use proper types or `unknown` with type guards
2. Always define props interface for components
3. `as const` for constant objects/arrays
4. Explicit ref types: `useRef<HTMLDivElement>(null)`
## Components
```typescript
'use client' // Only if using hooks
const CONFIG = { SPACING: 8 } as const
interface ComponentProps {
requiredProp: string
optionalProp?: boolean
}
export function Component({ requiredProp, optionalProp = false }: ComponentProps) {
// Order: refs → external hooks → store hooks → custom hooks → state → useMemo → useCallback → useEffect → return
}
```
Extract when: 50+ lines, used in 2+ files, or has own state/logic. Keep inline when: < 10 lines, single use, purely presentational.
## Hooks
```typescript
interface UseFeatureProps { id: string }
export function useFeature({ id }: UseFeatureProps) {
const idRef = useRef(id)
const [data, setData] = useState<Data | null>(null)
useEffect(() => { idRef.current = id }, [id])
const fetchData = useCallback(async () => { ... }, []) // Empty deps when using refs
return { data, fetchData }
}
```
## Zustand Stores
Stores live in `stores/`. Complex stores split into `store.ts` + `types.ts`.
```typescript
import { create } from 'zustand'
import { devtools } from 'zustand/middleware'
const initialState = { items: [] as Item[] }
export const useFeatureStore = create<FeatureState>()(
devtools(
(set, get) => ({
...initialState,
setItems: (items) => set({ items }),
reset: () => set(initialState),
}),
{ name: 'feature-store' }
)
)
```
Use `devtools` middleware. Use `persist` only when data should survive reload with `partialize` to persist only necessary state.
## React Query
All React Query hooks live in `hooks/queries/`.
```typescript
export const entityKeys = {
all: ['entity'] as const,
list: (workspaceId?: string) => [...entityKeys.all, 'list', workspaceId ?? ''] as const,
}
export function useEntityList(workspaceId?: string) {
return useQuery({
queryKey: entityKeys.list(workspaceId),
queryFn: () => fetchEntities(workspaceId as string),
enabled: Boolean(workspaceId),
staleTime: 60 * 1000,
placeholderData: keepPreviousData,
})
}
```
## Styling
Use Tailwind only, no inline styles. Use `cn()` from `@/lib/utils` for conditional classes.
```typescript
<div className={cn('base-classes', isActive && 'active-classes')} />
```
## EMCN Components
Import from `@/components/emcn`, never from subpaths (except CSS files). Use CVA when 2+ variants exist.
## Testing
- Write tests for new functionality when appropriate
- Ensure existing tests pass before completing work
- Follow the project's testing conventions
Use Vitest. Test files: `feature.ts``feature.test.ts`
## Performance
```typescript
/**
* @vitest-environment node
*/
- Consider performance implications of your code
- Avoid unnecessary re-renders in React components
- Use appropriate data structures and algorithms
- Profile and optimize when necessary
// Mocks BEFORE imports
vi.mock('@sim/db', () => ({ db: { select: vi.fn() } }))
// Imports AFTER mocks
import { describe, expect, it, vi } from 'vitest'
import { createSession, loggerMock } from '@sim/testing'
describe('feature', () => {
beforeEach(() => vi.clearAllMocks())
it.concurrent('runs in parallel', () => { ... })
})
```
Use `@sim/testing` factories over manual test data.
## Utils Rules
- Never create `utils.ts` for single consumer - inline it
- Create `utils.ts` when 2+ files need the same helper
- Check existing sources in `lib/` before duplicating
## Adding Integrations
New integrations require: **Tools****Block****Icon** → (optional) **Trigger**
Always look up the service's API docs first.
### 1. Tools (`tools/{service}/`)
```
tools/{service}/
├── index.ts # Barrel export
├── types.ts # Params/response types
└── {action}.ts # Tool implementation
```
**Tool structure:**
```typescript
export const serviceTool: ToolConfig<Params, Response> = {
id: 'service_action',
name: 'Service Action',
description: '...',
version: '1.0.0',
oauth: { required: true, provider: 'service' },
params: { /* ... */ },
request: { url: '/api/tools/service/action', method: 'POST', ... },
transformResponse: async (response) => { /* ... */ },
outputs: { /* ... */ },
}
```
Register in `tools/registry.ts`.
### 2. Block (`blocks/blocks/{service}.ts`)
```typescript
export const ServiceBlock: BlockConfig = {
type: 'service',
name: 'Service',
description: '...',
category: 'tools',
bgColor: '#hexcolor',
icon: ServiceIcon,
subBlocks: [ /* see SubBlock Properties */ ],
tools: { access: ['service_action'], config: { tool: (p) => `service_${p.operation}` } },
inputs: { /* ... */ },
outputs: { /* ... */ },
}
```
Register in `blocks/registry.ts` (alphabetically).
**SubBlock Properties:**
```typescript
{
id: 'field', title: 'Label', type: 'short-input', placeholder: '...',
required: true, // or condition object
condition: { field: 'op', value: 'send' }, // show/hide
dependsOn: ['credential'], // clear when dep changes
mode: 'basic', // 'basic' | 'advanced' | 'both' | 'trigger'
}
```
**condition examples:**
- `{ field: 'op', value: 'send' }` - show when op === 'send'
- `{ field: 'op', value: ['a','b'] }` - show when op is 'a' OR 'b'
- `{ field: 'op', value: 'x', not: true }` - show when op !== 'x'
- `{ field: 'op', value: 'x', not: true, and: { field: 'type', value: 'dm', not: true } }` - complex
**dependsOn:** `['field']` or `{ all: ['a'], any: ['b', 'c'] }`
### 3. Icon (`components/icons.tsx`)
```typescript
export function ServiceIcon(props: SVGProps<SVGSVGElement>) {
return <svg {...props}>/* SVG from brand assets */</svg>
}
```
### 4. Trigger (`triggers/{service}/`) - Optional
```
triggers/{service}/
├── index.ts # Barrel export
├── webhook.ts # Webhook handler
└── {event}.ts # Event-specific handlers
```
Register in `triggers/registry.ts`.
### Integration Checklist
- [ ] Look up API docs
- [ ] Create `tools/{service}/` with types and tools
- [ ] 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 and register triggers

View File

@@ -187,7 +187,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2025 Sim Studio, Inc.
Copyright 2026 Sim Studio, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

2
NOTICE
View File

@@ -1,4 +1,4 @@
Sim Studio
Copyright 2025 Sim Studio
Copyright 2026 Sim Studio
This product includes software developed for the Sim project.

File diff suppressed because one or more lines are too long

View File

@@ -42,6 +42,7 @@ import {
GoogleVaultIcon,
GrafanaIcon,
GrainIcon,
GreptileIcon,
HubspotIcon,
HuggingFaceIcon,
HunterIOIcon,
@@ -50,12 +51,14 @@ import {
IntercomIcon,
JinaAIIcon,
JiraIcon,
JiraServiceManagementIcon,
KalshiIcon,
LinearIcon,
LinkedInIcon,
LinkupIcon,
MailchimpIcon,
MailgunIcon,
MailServerIcon,
Mem0Icon,
MicrosoftExcelIcon,
MicrosoftOneDriveIcon,
@@ -158,14 +161,17 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
google_vault: GoogleVaultIcon,
grafana: GrafanaIcon,
grain: GrainIcon,
greptile: GreptileIcon,
hubspot: HubspotIcon,
huggingface: HuggingFaceIcon,
hunter: HunterIOIcon,
image_generator: ImageIcon,
imap: MailServerIcon,
incidentio: IncidentioIcon,
intercom: IntercomIcon,
jina: JinaAIIcon,
jira: JiraIcon,
jira_service_management: JiraServiceManagementIcon,
kalshi: KalshiIcon,
knowledge: PackageSearchIcon,
linear: LinearIcon,

View File

@@ -0,0 +1,63 @@
---
title: Tastaturkürzel
description: Meistern Sie die Workflow-Arbeitsfläche mit Tastaturkürzeln und Maussteuerung
---
import { Callout } from 'fumadocs-ui/components/callout'
Beschleunigen Sie die Erstellung Ihrer Workflows mit diesen Tastaturkürzeln und Maussteuerungen. Alle Tastenkombinationen funktionieren, wenn die Arbeitsfläche fokussiert ist (nicht beim Tippen in einem Eingabefeld).
<Callout type="info">
**Mod** bezieht sich auf `Cmd` unter macOS und `Ctrl` unter Windows/Linux.
</Callout>
## Arbeitsflächen-Steuerung
### Maussteuerung
| Aktion | Steuerung |
|--------|---------|
| Arbeitsfläche verschieben | Linksziehen auf leerer Fläche |
| Arbeitsfläche verschieben | Scrollen oder Trackpad |
| Mehrere Blöcke auswählen | Rechtsziehen zum Aufziehen eines Auswahlrahmens |
| Block ziehen | Linksziehen auf Block-Kopfzeile |
| Zur Auswahl hinzufügen | `Mod` + Klick auf Blöcke |
### Workflow-Aktionen
| Tastenkombination | Aktion |
|----------|--------|
| `Mod` + `Enter` | Workflow ausführen (oder abbrechen, falls aktiv) |
| `Mod` + `Z` | Rückgängig |
| `Mod` + `Shift` + `Z` | Wiederholen |
| `Mod` + `C` | Ausgewählte Blöcke kopieren |
| `Mod` + `V` | Blöcke einfügen |
| `Delete` oder `Backspace` | Ausgewählte Blöcke oder Verbindungen löschen |
| `Shift` + `L` | Arbeitsfläche automatisch anordnen |
## Panel-Navigation
Diese Tastenkombinationen wechseln zwischen den Panel-Tabs auf der rechten Seite der Arbeitsfläche.
| Tastenkombination | Aktion |
|----------|--------|
| `C` | Copilot-Tab fokussieren |
| `T` | Toolbar-Tab fokussieren |
| `E` | Editor-Tab fokussieren |
| `Mod` + `F` | Toolbar-Suche fokussieren |
## Globale Navigation
| Tastenkombination | Aktion |
|----------|--------|
| `Mod` + `K` | Suche öffnen |
| `Mod` + `Shift` + `A` | Neuen Agenten-Workflow hinzufügen |
| `Mod` + `Y` | Zu Vorlagen gehen |
| `Mod` + `L` | Zu Logs gehen |
## Dienstprogramm
| Tastenkombination | Aktion |
|----------|--------|
| `Mod` + `D` | Terminal-Konsole leeren |
| `Mod` + `E` | Benachrichtigungen löschen |

View File

@@ -0,0 +1,108 @@
---
title: Workflows als MCP bereitstellen
description: Stellen Sie Ihre Workflows als MCP-Tools für externe KI-Assistenten
und Anwendungen bereit
---
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
Stellen Sie Ihre Workflows als MCP-Tools bereit, um sie für externe KI-Assistenten wie Claude Desktop, Cursor und andere MCP-kompatible Clients zugänglich zu machen. Dies verwandelt Ihre Workflows in aufrufbare Tools, die von überall aus aufgerufen werden können.
## MCP-Server erstellen und verwalten
MCP-Server gruppieren Ihre Workflow-Tools zusammen. Erstellen und verwalten Sie sie in den Workspace-Einstellungen:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
</div>
1. Navigieren Sie zu **Einstellungen → MCP-Server**
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
5. Zeigen Sie alle zum Server hinzugefügten Tools an und verwalten Sie diese
## Einen Workflow als Tool hinzufügen
Sobald Ihr Workflow bereitgestellt ist, können Sie ihn als MCP-Tool verfügbar machen:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-deploy-tool.mp4" width={700} height={450} />
</div>
1. Öffnen Sie Ihren bereitgestellten Workflow
2. Klicken Sie auf **Bereitstellen** und wechseln Sie zum Tab **MCP**
3. Konfigurieren Sie den Tool-Namen und die Beschreibung
4. Fügen Sie Beschreibungen für jeden Parameter hinzu (hilft der KI, Eingaben zu verstehen)
5. Wählen Sie aus, zu welchen MCP-Servern es hinzugefügt werden soll
<Callout type="info">
Der Workflow muss bereitgestellt sein, bevor er als MCP-Tool hinzugefügt werden kann.
</Callout>
## Tool-Konfiguration
### Tool-Name
Verwenden Sie Kleinbuchstaben, Zahlen und Unterstriche. Der Name sollte beschreibend sein und den MCP-Namenskonventionen folgen (z. B. `search_documents`, `send_email`).
### Beschreibung
Schreiben Sie eine klare Beschreibung dessen, was das Tool tut. Dies hilft KI-Assistenten zu verstehen, wann das Tool verwendet werden soll.
### Parameter
Die Eingabeformatfelder deines Workflows werden zu Tool-Parametern. Füge jedem Parameter Beschreibungen hinzu, um KI-Assistenten zu helfen, korrekte Werte bereitzustellen.
## MCP-Clients verbinden
Verwende die Server-URL aus den Einstellungen, um externe Anwendungen zu verbinden:
### Claude Desktop
Füge dies zu deiner Claude Desktop-Konfiguration hinzu (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"my-sim-workflows": {
"command": "npx",
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
}
}
}
```
### Cursor
Füge die Server-URL in den MCP-Einstellungen von Cursor mit demselben mcp-remote-Muster hinzu.
<Callout type="warn">
Füge deinen API-Key-Header (`X-API-Key`) für authentifizierten Zugriff hinzu, wenn du mcp-remote oder andere HTTP-basierte MCP-Transporte verwendest.
</Callout>
## Server-Verwaltung
In der Server-Detailansicht unter **Einstellungen → MCP-Server** kannst du:
- **Tools anzeigen**: Alle Workflows sehen, die einem Server hinzugefügt wurden
- **URL kopieren**: Die Server-URL für MCP-Clients abrufen
- **Workflows hinzufügen**: Weitere bereitgestellte Workflows als Tools hinzufügen
- **Tools entfernen**: Workflows vom Server entfernen
- **Server löschen**: Den gesamten Server und alle seine Tools entfernen
## So funktioniert es
Wenn ein MCP-Client dein Tool aufruft:
1. Die Anfrage wird an deiner MCP-Server-URL empfangen
2. Sim validiert die Anfrage und ordnet Parameter den Workflow-Eingaben zu
3. Der bereitgestellte Workflow wird mit den angegebenen Eingaben ausgeführt
4. Die Ergebnisse werden an den MCP-Client zurückgegeben
Workflows werden mit derselben Bereitstellungsversion wie API-Aufrufe ausgeführt, was konsistentes Verhalten gewährleistet.
## Berechtigungsanforderungen
| Aktion | Erforderliche Berechtigung |
|--------|-------------------|
| MCP-Server erstellen | **Admin** |
| Workflows zu Servern hinzufügen | **Write** oder **Admin** |
| MCP-Server anzeigen | **Read**, **Write** oder **Admin** |
| MCP-Server löschen | **Admin** |

View File

@@ -1,8 +1,10 @@
---
title: MCP (Model Context Protocol)
title: MCP-Tools verwenden
description: Externe Tools und Dienste über das Model Context Protocol verbinden
---
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
Das Model Context Protocol ([MCP](https://modelcontextprotocol.com/)) ermöglicht es Ihnen, externe Tools und Dienste über ein standardisiertes Protokoll zu verbinden, wodurch Sie APIs und Dienste direkt in Ihre Workflows integrieren können. Mit MCP können Sie die Fähigkeiten von Sim erweitern, indem Sie benutzerdefinierte Integrationen hinzufügen, die nahtlos mit Ihren Agenten und Workflows zusammenarbeiten.
@@ -20,14 +22,8 @@ MCP ist ein offener Standard, der es KI-Assistenten ermöglicht, sich sicher mit
MCP-Server stellen Sammlungen von Tools bereit, die Ihre Agenten nutzen können. Konfigurieren Sie diese in den Workspace-Einstellungen:
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-1.png"
alt="Konfiguration eines MCP-Servers in den Einstellungen"
width={700}
height={450}
className="my-6"
/>
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/settings-mcp-tools.mp4" width={700} height={450} />
</div>
1. Navigieren Sie zu Ihren Workspace-Einstellungen
@@ -40,14 +36,18 @@ MCP-Server stellen Sammlungen von Tools bereit, die Ihre Agenten nutzen können.
Sie können MCP-Server auch direkt über die Symbolleiste in einem Agent-Block für eine schnelle Einrichtung konfigurieren.
</Callout>
## Verwendung von MCP-Tools in Agenten
### Tools aktualisieren
Sobald MCP-Server konfiguriert sind, werden ihre Tools innerhalb Ihrer Agent-Blöcke verfügbar:
Klicken Sie bei einem Server auf **Aktualisieren**, um die neuesten Tool-Schemas abzurufen und alle Agent-Blöcke, die diese Tools verwenden, automatisch mit den neuen Parameterdefinitionen zu aktualisieren.
## MCP-Tools in Agents verwenden
Sobald MCP-Server konfiguriert sind, werden ihre Tools in Ihren Agent-Blöcken verfügbar:
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-2.png"
alt="Verwendung eines MCP-Tools im Agent-Block"
alt="Using MCP Tool in Agent Block"
width={700}
height={450}
className="my-6"
@@ -55,25 +55,25 @@ Sobald MCP-Server konfiguriert sind, werden ihre Tools innerhalb Ihrer Agent-Bl
</div>
1. Öffnen Sie einen **Agent**-Block
2. Im Abschnitt **Tools** sehen Sie die verfügbaren MCP-Tools
2. Im Bereich **Tools** sehen Sie die verfügbaren MCP-Tools
3. Wählen Sie die Tools aus, die der Agent verwenden soll
4. Der Agent kann nun während der Ausführung auf diese Tools zugreifen
## Eigenständiger MCP-Tool-Block
Für eine genauere Kontrolle können Sie den dedizierten MCP-Tool-Block verwenden, um bestimmte MCP-Tools auszuführen:
Für eine präzisere Steuerung können Sie den dedizierten MCP-Tool-Block verwenden, um bestimmte MCP-Tools auszuführen:
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-3.png"
alt="Eigenständiger MCP-Tool-Block"
alt="Standalone MCP Tool Block"
width={700}
height={450}
className="my-6"
/>
</div>
Der MCP-Tool-Block ermöglicht es Ihnen:
Der MCP-Tool-Block ermöglicht Ihnen:
- Jedes konfigurierte MCP-Tool direkt auszuführen
- Spezifische Parameter an das Tool zu übergeben
- Die Ausgabe des Tools in nachfolgenden Workflow-Schritten zu verwenden
@@ -81,9 +81,9 @@ Der MCP-Tool-Block ermöglicht es Ihnen:
### Wann MCP-Tool vs. Agent verwenden
**Verwenden Sie einen Agenten mit MCP-Tools, wenn:**
- Sie möchten, dass die KI entscheidet, welche Tools zu verwenden sind
- Sie komplexe Überlegungen benötigen, wann und wie Tools eingesetzt werden sollen
**Verwenden Sie Agent mit MCP-Tools, wenn:**
- Sie möchten, dass die KI entscheidet, welche Tools verwendet werden
- Sie komplexes Reasoning darüber benötigen, wann und wie Tools verwendet werden
- Sie eine natürlichsprachliche Interaktion mit den Tools wünschen
**Verwenden Sie den MCP-Tool-Block, wenn:**
@@ -93,7 +93,7 @@ Der MCP-Tool-Block ermöglicht es Ihnen:
## Berechtigungsanforderungen
MCP-Funktionalität erfordert spezifische Workspace-Berechtigungen:
Die MCP-Funktionalität erfordert spezifische Workspace-Berechtigungen:
| Aktion | Erforderliche Berechtigung |
|--------|-------------------|
@@ -105,7 +105,7 @@ MCP-Funktionalität erfordert spezifische Workspace-Berechtigungen:
## Häufige Anwendungsfälle
### Datenbankintegration
Verbinden Sie sich mit Datenbanken, um Daten innerhalb Ihrer Workflows abzufragen, einzufügen oder zu aktualisieren.
Verbinden Sie sich mit Datenbanken, um Daten in Ihren Workflows abzufragen, einzufügen oder zu aktualisieren.
### API-Integrationen
Greifen Sie auf externe APIs und Webdienste zu, die keine integrierten Sim-Integrationen haben.
@@ -113,8 +113,8 @@ Greifen Sie auf externe APIs und Webdienste zu, die keine integrierten Sim-Integ
### Dateisystemzugriff
Lesen, schreiben und bearbeiten Sie Dateien auf lokalen oder entfernten Dateisystemen.
### Benutzerdefinierte Geschäftslogik
Führen Sie benutzerdefinierte Skripte oder Tools aus, die auf die Bedürfnisse Ihrer Organisation zugeschnitten sind.
### Individuelle Geschäftslogik
Führen Sie benutzerdefinierte Skripte oder Tools aus, die spezifisch für die Anforderungen Ihrer Organisation sind.
### Echtzeit-Datenzugriff
Rufen Sie Live-Daten von externen Systemen während der Workflow-Ausführung ab.
@@ -128,12 +128,12 @@ Rufen Sie Live-Daten von externen Systemen während der Workflow-Ausführung ab.
## Fehlerbehebung
### MCP-Server erscheint nicht
### MCP-Server wird nicht angezeigt
- Überprüfen Sie, ob die Serverkonfiguration korrekt ist
- Prüfen Sie, ob Sie die erforderlichen Berechtigungen haben
- Stellen Sie sicher, dass der MCP-Server läuft und zugänglich ist
- Prüfen Sie, ob Sie über die erforderlichen Berechtigungen verfügen
- Stellen Sie sicher, dass der MCP-Server läuft und erreichbar ist
### Fehler bei der Tool-Ausführung
### Tool-Ausführungsfehler
- Überprüfen Sie, ob die Tool-Parameter korrekt formatiert sind
- Prüfen Sie die MCP-Server-Logs auf Fehlermeldungen
- Stellen Sie sicher, dass die erforderliche Authentifizierung konfiguriert ist
@@ -141,4 +141,4 @@ Rufen Sie Live-Daten von externen Systemen während der Workflow-Ausführung ab.
### Berechtigungsfehler
- Bestätigen Sie Ihre Workspace-Berechtigungsstufe
- Prüfen Sie, ob der MCP-Server zusätzliche Authentifizierung erfordert
- Stellen Sie sicher, dass der Server für Ihren Workspace richtig konfiguriert ist
- Überprüfen Sie, ob der Server ordnungsgemäß für Ihren Workspace konfiguriert ist

View File

@@ -146,6 +146,32 @@ Extrahieren Sie strukturierte Daten aus vollständigen Webseiten mithilfe von na
| `success` | boolean | Ob der Extraktionsvorgang erfolgreich war |
| `data` | object | Extrahierte strukturierte Daten gemäß dem Schema oder der Eingabeaufforderung |
### `firecrawl_agent`
Autonomer Web-Datenextraktions-Agent. Sucht und sammelt Informationen basierend auf natürlichsprachlichen Anweisungen, ohne dass spezifische URLs erforderlich sind.
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `prompt` | string | Ja | Natürlichsprachliche Beschreibung der zu extrahierenden Daten \(max. 10.000 Zeichen\) |
| `urls` | json | Nein | Optionales Array von URLs, auf die sich der Agent konzentrieren soll |
| `schema` | json | Nein | JSON-Schema, das die Struktur der zu extrahierenden Daten definiert |
| `maxCredits` | number | Nein | Maximale Credits, die für diese Agent-Aufgabe verwendet werden sollen |
| `strictConstrainToURLs` | boolean | Nein | Wenn true, besucht der Agent nur URLs, die im urls-Array angegeben sind |
| `apiKey` | string | Ja | Firecrawl API-Schlüssel |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Ob die Agent-Operation erfolgreich war |
| `status` | string | Aktueller Status des Agent-Jobs \(processing, completed, failed\) |
| `data` | object | Vom Agent extrahierte Daten |
| `creditsUsed` | number | Anzahl der von dieser Agent-Aufgabe verbrauchten Credits |
| `expiresAt` | string | Zeitstempel, wann die Ergebnisse ablaufen \(24 Stunden\) |
| `sources` | object | Array der vom Agent verwendeten Quell-URLs |
## Hinweise
- Kategorie: `tools`

View File

@@ -0,0 +1,136 @@
---
title: Greptile
description: KI-gestützte Codebase-Suche und Fragen & Antworten
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="greptile"
color="#e5e5e5"
/>
{/* MANUAL-CONTENT-START:intro */}
[Greptile](https://greptile.com/) ist ein KI-gestütztes Entwicklertool zum Durchsuchen und Abfragen von Quellcode über ein oder mehrere Repositories hinweg. Greptile ermöglicht es Entwicklern, komplexe Fragen zur Codebase schnell in natürlicher Sprache zu beantworten, relevante Dateien oder Symbole zu finden und Einblicke in unbekannten oder Legacy-Code zu gewinnen.
Mit Greptile können Sie:
- **Komplexe Fragen zu Ihrer Codebase in natürlicher Sprache stellen**: Erhalten Sie KI-generierte Antworten zu Architektur, Verwendungsmustern oder spezifischen Implementierungen.
- **Relevanten Code, Dateien oder Funktionen sofort finden**: Suchen Sie mit Schlüsselwörtern oder natürlichsprachlichen Abfragen und springen Sie direkt zu passenden Zeilen, Dateien oder Codeblöcken.
- **Abhängigkeiten und Beziehungen verstehen**: Entdecken Sie, wo Funktionen aufgerufen werden, wie Module miteinander verbunden sind oder wo APIs in großen Codebasen verwendet werden.
- **Onboarding und Code-Exploration beschleunigen**: Arbeiten Sie sich schnell in neue Projekte ein oder debuggen Sie knifflige Probleme, ohne tiefgreifenden Vorkontext zu benötigen.
Die Sim Greptile-Integration ermöglicht es Ihren KI-Agenten:
- Private und öffentliche Repositories mithilfe der fortschrittlichen Sprachmodelle von Greptile abzufragen und zu durchsuchen.
- Kontextuell relevante Code-Snippets, Dateiverweise und Erklärungen abzurufen, um Code-Reviews, Dokumentation und Entwicklungsworkflows zu unterstützen.
- Automatisierungen in Sim-Workflows basierend auf Such-/Abfrageergebnissen auszulösen oder Code-Intelligenz direkt in Ihre Prozesse einzubetten.
Egal, ob Sie die Produktivität von Entwicklern beschleunigen, Dokumentation automatisieren oder das Verständnis Ihres Teams für eine komplexe Codebase verbessern möchten Greptile und Sim bieten nahtlosen Zugriff auf Code-Intelligenz und Suche, genau dort, wo Sie sie benötigen.
{/* MANUAL-CONTENT-END */}
## Nutzungsanleitung
Fragen Sie Codebasen mit natürlicher Sprache über Greptile ab und durchsuchen Sie sie. Erhalten Sie KI-generierte Antworten zu Ihrem Code, finden Sie relevante Dateien und verstehen Sie komplexe Codebasen.
## Tools
### `greptile_query`
Durchsuchen Sie Repositories in natürlicher Sprache und erhalten Sie Antworten mit relevanten Code-Referenzen. Greptile nutzt KI, um Ihre Codebasis zu verstehen und Fragen zu beantworten.
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `query` | string | Ja | Frage in natürlicher Sprache zur Codebasis |
| `repositories` | string | Ja | Kommagetrennte Liste von Repositories. Format: "github:branch:owner/repo" oder nur "owner/repo" \(Standard ist github:main\) |
| `sessionId` | string | Nein | Sitzungs-ID für Gesprächskontinuität |
| `genius` | boolean | Nein | Genius-Modus für gründlichere Analyse aktivieren \(langsamer, aber genauer\) |
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf Repositories |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `message` | string | KI-generierte Antwort auf die Anfrage |
| `sources` | array | Relevante Code-Referenzen, die die Antwort unterstützen |
### `greptile_search`
Durchsuchen Sie Repositories in natürlicher Sprache und erhalten Sie relevante Code-Referenzen ohne Generierung einer Antwort. Nützlich zum Auffinden spezifischer Code-Stellen.
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `query` | string | Ja | Suchanfrage in natürlicher Sprache zum Auffinden relevanten Codes |
| `repositories` | string | Ja | Kommagetrennte Liste von Repositories. Format: "github:branch:owner/repo" oder nur "owner/repo" \(Standard ist github:main\) |
| `sessionId` | string | Nein | Sitzungs-ID für Gesprächskontinuität |
| `genius` | boolean | Nein | Genius-Modus für gründlichere Suche aktivieren \(langsamer, aber genauer\) |
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf Repositories |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `sources` | array | Relevante Code-Referenzen, die zur Suchanfrage passen |
### `greptile_index_repo`
Übermitteln Sie ein Repository zur Indexierung durch Greptile. Die Indexierung muss abgeschlossen sein, bevor das Repository abgefragt werden kann. Kleine Repositories benötigen 3-5 Minuten, größere können über eine Stunde dauern.
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `remote` | string | Ja | Git-Remote-Typ: github oder gitlab |
| `repository` | string | Ja | Repository im Format owner/repo \(z. B. "facebook/react"\) |
| `branch` | string | Ja | Zu indexierender Branch \(z. B. "main" oder "master"\) |
| `reload` | boolean | Nein | Neuindexierung erzwingen, auch wenn bereits indexiert |
| `notify` | boolean | Nein | E-Mail-Benachrichtigung senden, wenn Indexierung abgeschlossen ist |
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf Repository |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `repositoryId` | string | Eindeutige Kennung für das indexierte Repository \(Format: remote:branch:owner/repo\) |
| `statusEndpoint` | string | URL-Endpunkt zur Überprüfung des Indexierungsstatus |
| `message` | string | Statusmeldung über den Indexierungsvorgang |
### `greptile_status`
Überprüfen Sie den Indexierungsstatus eines Repositories. Verwenden Sie dies, um zu verifizieren, ob ein Repository abfragebereit ist, oder um den Indexierungsfortschritt zu überwachen.
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `remote` | string | Ja | Git-Remote-Typ: github oder gitlab |
| `repository` | string | Ja | Repository im Format owner/repo \(z. B. "facebook/react"\) |
| `branch` | string | Ja | Branch-Name \(z. B. "main" oder "master"\) |
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf das Repository |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `repository` | string | Repository-Name \(owner/repo\) |
| `remote` | string | Git-Remote \(github/gitlab\) |
| `branch` | string | Branch-Name |
| `private` | boolean | Ob das Repository privat ist |
| `status` | string | Indexierungsstatus: submitted, cloning, processing, completed oder failed |
| `filesProcessed` | number | Anzahl der bisher verarbeiteten Dateien |
| `numFiles` | number | Gesamtanzahl der Dateien im Repository |
| `sampleQuestions` | array | Beispielfragen für das indexierte Repository |
| `sha` | string | Git-Commit-SHA der indexierten Version |
## Hinweise
- Kategorie: `tools`
- Typ: `greptile`

View File

@@ -0,0 +1,36 @@
---
title: IMAP-E-Mail
description: Workflows auslösen, wenn neue E-Mails über IMAP eintreffen
(funktioniert mit jedem E-Mail-Anbieter)
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="imap"
color="#6366F1"
/>
{/* MANUAL-CONTENT-START:intro */}
Der IMAP-E-Mail-Trigger ermöglicht es Ihren Sim-Workflows, automatisch zu starten, sobald eine neue E-Mail in einem Postfach empfangen wird, das das IMAP-Protokoll unterstützt. Dies funktioniert mit Gmail, Outlook, Yahoo und den meisten anderen E-Mail-Anbietern.
Mit dem IMAP-Trigger können Sie:
- **E-Mail-Verarbeitung automatisieren**: Starten Sie Workflows in Echtzeit, wenn neue Nachrichten in Ihrem Posteingang eintreffen.
- **Nach Absender, Betreff oder Ordner filtern**: Konfigurieren Sie Ihren Trigger so, dass er nur auf E-Mails reagiert, die bestimmte Bedingungen erfüllen.
- **Anhänge extrahieren und verarbeiten**: Laden Sie Dateianhänge automatisch herunter und verwenden Sie sie in Ihren automatisierten Abläufen.
- **E-Mail-Inhalte parsen und verwenden**: Greifen Sie auf Betreff, Absender, Empfänger, vollständigen Text und andere Metadaten in nachfolgenden Workflow-Schritten zu.
- **Mit jedem E-Mail-Anbieter integrieren**: Funktioniert mit jedem Dienst, der standardmäßigen IMAP-Zugriff bietet, ohne Vendor-Lock-in.
- **Bei ungelesenen, markierten oder benutzerdefinierten Kriterien auslösen**: Richten Sie erweiterte Filter für die Arten von E-Mails ein, die Ihre Workflows starten.
Mit Sim gibt Ihnen die IMAP-Integration die Möglichkeit, E-Mails in eine handlungsfähige Automatisierungsquelle zu verwandeln. Reagieren Sie auf Kundenanfragen, verarbeiten Sie Benachrichtigungen, starten Sie Daten-Pipelines und mehr direkt aus Ihrem E-Mail-Posteingang, ohne manuelles Eingreifen.
{/* MANUAL-CONTENT-END */}
## Nutzungsanleitung
Verbinden Sie sich über das IMAP-Protokoll mit jedem E-Mail-Server, um Workflows auszulösen, wenn neue E-Mails empfangen werden. Unterstützt Gmail, Outlook, Yahoo und jeden anderen IMAP-kompatiblen E-Mail-Anbieter.
## Hinweise
- Kategorie: `triggers`
- Typ: `imap`

View File

@@ -55,8 +55,7 @@ Erstellen Sie einen neuen Kontakt in Intercom mit E-Mail, external_id oder Rolle
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Erstellte Kontaktdaten |
| `contact` | object | Erstelltes Kontaktobjekt |
### `intercom_get_contact`
@@ -72,8 +71,7 @@ Einen einzelnen Kontakt anhand der ID von Intercom abrufen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Kontaktdaten |
| `contact` | object | Kontaktobjekt |
### `intercom_update_contact`
@@ -101,8 +99,7 @@ Einen bestehenden Kontakt in Intercom aktualisieren
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Aktualisierte Kontaktdaten |
| `contact` | object | Aktualisiertes Kontaktobjekt |
### `intercom_list_contacts`
@@ -119,8 +116,7 @@ Alle Kontakte von Intercom mit Paginierungsunterstützung auflisten
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Liste der Kontakte |
| `contacts` | array | Array von Kontaktobjekten |
### `intercom_search_contacts`
@@ -140,8 +136,7 @@ Suche nach Kontakten in Intercom mit einer Abfrage
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Suchergebnisse |
| `contacts` | array | Array von übereinstimmenden Kontaktobjekten |
### `intercom_delete_contact`
@@ -157,8 +152,9 @@ Einen Kontakt aus Intercom nach ID löschen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Löschergebnis |
| `id` | string | ID des gelöschten Kontakts |
| `deleted` | boolean | Ob der Kontakt gelöscht wurde |
| `metadata` | object | Metadaten der Operation |
### `intercom_create_company`
@@ -182,8 +178,7 @@ Ein Unternehmen in Intercom erstellen oder aktualisieren
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Erstellte oder aktualisierte Unternehmensdaten |
| `company` | object | Erstelltes oder aktualisiertes Unternehmensobjekt |
### `intercom_get_company`
@@ -199,8 +194,7 @@ Ein einzelnes Unternehmen anhand der ID von Intercom abrufen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Unternehmensdaten |
| `company` | object | Unternehmensobjekt |
### `intercom_list_companies`
@@ -218,8 +212,7 @@ Listet alle Unternehmen von Intercom mit Paginierungsunterstützung auf. Hinweis
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Liste der Unternehmen |
| `companies` | array | Array von Unternehmensobjekten |
### `intercom_get_conversation`
@@ -237,8 +230,7 @@ Eine einzelne Konversation anhand der ID von Intercom abrufen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Konversationsdaten |
| `conversation` | object | Konversationsobjekt |
### `intercom_list_conversations`
@@ -257,8 +249,7 @@ Alle Konversationen von Intercom mit Paginierungsunterstützung auflisten
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Liste der Konversationen |
| `conversations` | array | Array von Konversationsobjekten |
### `intercom_reply_conversation`
@@ -279,8 +270,7 @@ Als Administrator auf eine Konversation in Intercom antworten
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Aktualisierte Konversation mit Antwort |
| `conversation` | object | Aktualisiertes Konversationsobjekt |
### `intercom_search_conversations`
@@ -300,8 +290,7 @@ Nach Konversationen in Intercom mit einer Abfrage suchen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Suchergebnisse |
| `conversations` | array | Array von übereinstimmenden Konversationsobjekten |
### `intercom_create_ticket`
@@ -321,10 +310,9 @@ Ein neues Ticket in Intercom erstellen
#### Output
| Parameter | Type | Beschreibung |
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Erstellte Ticket-Daten |
| `ticket` | object | Erstelltes Ticket-Objekt |
### `intercom_get_ticket`
@@ -338,10 +326,9 @@ Ein einzelnes Ticket anhand der ID von Intercom abrufen
#### Output
| Parameter | Type | Beschreibung |
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Ticket-Daten |
| `ticket` | object | Ticket-Objekt |
### `intercom_create_message`
@@ -363,10 +350,9 @@ Eine neue vom Administrator initiierte Nachricht in Intercom erstellen und sende
#### Output
| Parameter | Type | Beschreibung |
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Erstellte Nachrichtendaten |
| `message` | object | Erstelltes Nachrichtenobjekt |
## Notizen

View File

@@ -0,0 +1,486 @@
---
title: Jira Service Management
description: Interagieren Sie mit Jira Service Management
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="jira_service_management"
color="#E0E0E0"
/>
## Nutzungsanweisungen
Integrieren Sie Jira Service Management für IT-Service-Management. Erstellen und verwalten Sie Service-Anfragen, bearbeiten Sie Kunden und Organisationen, verfolgen Sie SLAs und verwalten Sie Warteschlangen.
## Tools
### `jsm_get_service_desks`
Alle Service Desks aus Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `serviceDesks` | json | Array von Service Desks |
| `total` | number | Gesamtanzahl der Service Desks |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_get_request_types`
Anfragetypen für einen Service Desk in Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
| `serviceDeskId` | string | Ja | Service Desk ID, für die Anfragetypen abgerufen werden sollen |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `requestTypes` | json | Array von Anfragetypen |
| `total` | number | Gesamtanzahl der Anfragetypen |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_create_request`
Erstellen Sie eine neue Serviceanfrage in Jira Service Management
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
| `serviceDeskId` | string | Ja | Service-Desk-ID, in der die Anfrage erstellt werden soll |
| `requestTypeId` | string | Ja | Anfragetyp-ID für die neue Anfrage |
| `summary` | string | Ja | Zusammenfassung/Titel für die Serviceanfrage |
| `description` | string | Nein | Beschreibung für die Serviceanfrage |
| `raiseOnBehalfOf` | string | Nein | Konto-ID des Kunden, für den die Anfrage im Namen gestellt werden soll |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueId` | string | Erstellte Anfrage-Issue-ID |
| `issueKey` | string | Erstellter Anfrage-Issue-Key \(z. B. SD-123\) |
| `requestTypeId` | string | Anfragetyp-ID |
| `serviceDeskId` | string | Service-Desk-ID |
| `success` | boolean | Ob die Anfrage erfolgreich erstellt wurde |
| `url` | string | URL zur erstellten Anfrage |
### `jsm_get_request`
Eine einzelne Serviceanfrage aus Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
### `jsm_get_requests`
Mehrere Serviceanfragen aus Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
| `serviceDeskId` | string | Nein | Nach Service-Desk-ID filtern |
| `requestOwnership` | string | Nein | Nach Eigentümerschaft filtern: OWNED_REQUESTS, PARTICIPATED_REQUESTS, ORGANIZATION, ALL_REQUESTS |
| `requestStatus` | string | Nein | Nach Status filtern: OPEN, CLOSED, ALL |
| `searchTerm` | string | Nein | Suchbegriff zum Filtern von Anfragen |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `requests` | json | Array von Serviceanfragen |
| `total` | number | Gesamtanzahl der Anfragen |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_add_comment`
Einen Kommentar (öffentlich oder intern) zu einer Serviceanfrage in Jira Service Management hinzufügen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
| `body` | string | Ja | Kommentartext |
| `isPublic` | boolean | Ja | Ob der Kommentar öffentlich \(für Kunden sichtbar\) oder intern ist |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
| `commentId` | string | ID des erstellten Kommentars |
| `body` | string | Kommentartext |
| `isPublic` | boolean | Ob der Kommentar öffentlich ist |
| `success` | boolean | Ob der Kommentar erfolgreich hinzugefügt wurde |
### `jsm_get_comments`
Kommentare für eine Serviceanfrage in Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
| `isPublic` | boolean | Nein | Nur öffentliche Kommentare filtern |
| `internal` | boolean | Nein | Nur interne Kommentare filtern |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
| `comments` | json | Array von Kommentaren |
| `total` | number | Gesamtanzahl der Kommentare |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_get_customers`
Kunden für einen Service Desk in Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `serviceDeskId` | string | Ja | Service-Desk-ID, für die Kunden abgerufen werden sollen |
| `query` | string | Nein | Suchabfrage zum Filtern von Kunden |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `customers` | json | Array von Kunden |
| `total` | number | Gesamtanzahl der Kunden |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_add_customer`
Kunden zu einem Service Desk in Jira Service Management hinzufügen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `serviceDeskId` | string | Ja | Service-Desk-ID, zu der Kunden hinzugefügt werden sollen |
| `emails` | string | Ja | Kommagetrennte E-Mail-Adressen, die als Kunden hinzugefügt werden sollen |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `serviceDeskId` | string | Service-Desk-ID |
| `success` | boolean | Ob Kunden erfolgreich hinzugefügt wurden |
### `jsm_get_organizations`
Organisationen für einen Service Desk in Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `serviceDeskId` | string | Ja | Service-Desk-ID, für die Organisationen abgerufen werden sollen |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `organizations` | json | Array von Organisationen |
| `total` | number | Gesamtanzahl der Organisationen |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_create_organization`
Eine neue Organisation in Jira Service Management erstellen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
| `name` | string | Ja | Name der zu erstellenden Organisation |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `organizationId` | string | ID der erstellten Organisation |
| `name` | string | Name der erstellten Organisation |
| `success` | boolean | Ob die Operation erfolgreich war |
### `jsm_add_organization`
Eine Organisation zu einem Service Desk in Jira Service Management hinzufügen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
| `serviceDeskId` | string | Ja | Service Desk ID, zu der die Organisation hinzugefügt werden soll |
| `organizationId` | string | Ja | Organisations-ID, die zum Service Desk hinzugefügt werden soll |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `serviceDeskId` | string | Service Desk ID |
| `organizationId` | string | Hinzugefügte Organisations-ID |
| `success` | boolean | Ob die Operation erfolgreich war |
### `jsm_get_queues`
Warteschlangen für einen Service Desk in Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
| `serviceDeskId` | string | Ja | Service Desk ID, für die Warteschlangen abgerufen werden sollen |
| `includeCount` | boolean | Nein | Vorgangsanzahl für jede Warteschlange einbeziehen |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `queues` | json | Array von Warteschlangen |
| `total` | number | Gesamtanzahl der Warteschlangen |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_get_sla`
SLA-Informationen für eine Serviceanfrage in Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
| `slas` | json | Array mit SLA-Informationen |
| `total` | number | Gesamtanzahl der SLAs |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_get_transitions`
Verfügbare Übergänge für eine Serviceanfrage in Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
| `transitions` | json | Array mit verfügbaren Übergängen |
### `jsm_transition_request`
Eine Serviceanfrage in einen neuen Status in Jira Service Management überführen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
| `transitionId` | string | Ja | Anzuwendende Übergangs-ID |
| `comment` | string | Nein | Optionaler Kommentar, der während des Übergangs hinzugefügt werden kann |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueIdOrKey` | string | Issue-ID oder -Schlüssel |
| `transitionId` | string | Angewendete Übergangs-ID |
| `success` | boolean | Ob der Übergang erfolgreich war |
### `jsm_get_participants`
Teilnehmer für eine Anfrage in Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `issueIdOrKey` | string | Ja | Issue-ID oder -Schlüssel \(z. B. SD-123\) |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueIdOrKey` | string | Issue-ID oder -Schlüssel |
| `participants` | json | Array von Teilnehmern |
| `total` | number | Gesamtanzahl der Teilnehmer |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_add_participants`
Teilnehmer zu einer Anfrage in Jira Service Management hinzufügen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `issueIdOrKey` | string | Ja | Issue-ID oder -Schlüssel \(z. B. SD-123\) |
| `accountIds` | string | Ja | Durch Kommas getrennte Account-IDs, die als Teilnehmer hinzugefügt werden sollen |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
| `participants` | json | Array der hinzugefügten Teilnehmer |
| `success` | boolean | Ob die Operation erfolgreich war |
### `jsm_get_approvals`
Genehmigungen für eine Anfrage in Jira Service Management abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
| `approvals` | json | Array der Genehmigungen |
| `total` | number | Gesamtanzahl der Genehmigungen |
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
### `jsm_answer_approval`
Eine Genehmigungsanfrage in Jira Service Management genehmigen oder ablehnen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
| `approvalId` | string | Ja | Genehmigungs-ID zur Beantwortung |
| `decision` | string | Ja | Entscheidung: "approve" oder "decline" |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `issueIdOrKey` | string | Issue-ID oder -Schlüssel |
| `approvalId` | string | Genehmigungs-ID |
| `decision` | string | Getroffene Entscheidung \(genehmigen/ablehnen\) |
| `success` | boolean | Ob die Operation erfolgreich war |
## Hinweise
- Kategorie: `tools`
- Typ: `jira_service_management`

View File

@@ -70,8 +70,7 @@ Text-Datensätze in einen Pinecone-Index einfügen oder aktualisieren
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `statusText` | string | Status des Einfügevorgangs |
| `upsertedCount` | number | Anzahl der erfolgreich eingefügten Datensätze |
| `statusText` | string | Status der Upsert-Operation |
### `pinecone_search_text`

View File

@@ -266,10 +266,11 @@ Eine Datei in einen Supabase-Speicher-Bucket hochladen
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
| `bucket` | string | Ja | Der Name des Speicher-Buckets |
| `path` | string | Ja | Der Pfad, unter dem die Datei gespeichert wird \(z.B. "ordner/datei.jpg"\) |
| `fileName` | string | Ja | Der Name der Datei \(z.B. "dokument.pdf", "bild.jpg"\) |
| `path` | string | Nein | Optionaler Ordnerpfad \(z.B. "ordner/unterordner/"\) |
| `fileContent` | string | Ja | Der Dateiinhalt \(base64-kodiert für Binärdateien oder Klartext\) |
| `contentType` | string | Nein | MIME-Typ der Datei \(z.B. "image/jpeg", "text/plain"\) |
| `upsert` | boolean | Nein | Wenn true, überschreibt vorhandene Datei \(Standard: false\) |
| `upsert` | boolean | Nein | Wenn true, wird die vorhandene Datei überschrieben \(Standard: false\) |
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
#### Ausgabe

View File

@@ -129,15 +129,18 @@ Vollständige Details und Struktur eines bestimmten Formulars abrufen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `id` | string | Eindeutige Formular-ID |
| `id` | string | Eindeutige Formularkennung |
| `title` | string | Formulartitel |
| `type` | string | Formulartyp \(form, quiz, etc.\) |
| `settings` | object | Formulareinstellungen einschließlich Sprache, Fortschrittsbalken, etc. |
| `theme` | object | Theme-Referenz |
| `workspace` | object | Workspace-Referenz |
| `fields` | array | Array von Formularfeldern/Fragen |
| `welcome_screens` | array | Array von Begrüßungsbildschirmen |
| `thankyou_screens` | array | Array von Dankesbildschirmen |
| `welcome_screens` | array | Array von Willkommensbildschirmen \(leer, wenn keine konfiguriert\) |
| `thankyou_screens` | array | Array von Danke-Bildschirmen |
| `created_at` | string | Zeitstempel der Formularerstellung \(ISO-8601-Format\) |
| `last_updated_at` | string | Zeitstempel der letzten Formularaktualisierung \(ISO-8601-Format\) |
| `published_at` | string | Zeitstempel der Formularveröffentlichung \(ISO-8601-Format\) |
| `_links` | object | Links zu verwandten Ressourcen einschließlich öffentlicher Formular-URL |
### `typeform_create_form`
@@ -163,7 +166,12 @@ Ein neues Formular mit Feldern und Einstellungen erstellen
| `id` | string | Eindeutige Kennung des erstellten Formulars |
| `title` | string | Formulartitel |
| `type` | string | Formulartyp |
| `fields` | array | Array der erstellten Formularfelder |
| `settings` | object | Formulareinstellungsobjekt |
| `theme` | object | Theme-Referenz |
| `workspace` | object | Workspace-Referenz |
| `fields` | array | Array von erstellten Formularfeldern \(leer, wenn keine hinzugefügt\) |
| `welcome_screens` | array | Array von Willkommensbildschirmen \(leer, wenn keine konfiguriert\) |
| `thankyou_screens` | array | Array von Danke-Bildschirmen |
| `_links` | object | Links zu verwandten Ressourcen einschließlich öffentlicher Formular-URL |
### `typeform_update_form`
@@ -182,16 +190,7 @@ Ein bestehendes Formular mit JSON Patch-Operationen aktualisieren
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `id` | string | Eindeutige Kennung des aktualisierten Formulars |
| `title` | string | Formulartitel |
| `type` | string | Formulartyp |
| `settings` | object | Formulareinstellungen |
| `theme` | object | Theme-Referenz |
| `workspace` | object | Workspace-Referenz |
| `fields` | array | Array von Formularfeldern |
| `welcome_screens` | array | Array von Begrüßungsbildschirmen |
| `thankyou_screens` | array | Array von Dankesbildschirmen |
| `_links` | object | Links zu verwandten Ressourcen |
| `message` | string | Erfolgsbestätigungsnachricht |
### `typeform_delete_form`

View File

@@ -0,0 +1,64 @@
---
title: Keyboard Shortcuts
description: Master the workflow canvas with keyboard shortcuts and mouse controls
---
import { Callout } from 'fumadocs-ui/components/callout'
Speed up your workflow building with these keyboard shortcuts and mouse controls. All shortcuts work when the canvas is focused (not when typing in an input field).
<Callout type="info">
**Mod** refers to `Cmd` on macOS and `Ctrl` on Windows/Linux.
</Callout>
## Canvas Controls
### Mouse Controls
| Action | Control |
|--------|---------|
| Pan/move canvas | Left-drag on empty space |
| Pan/move canvas | Scroll or trackpad |
| Select multiple blocks | Right-drag to draw selection box |
| Drag block | Left-drag on block header |
| Add to selection | `Mod` + click on blocks |
### Workflow Actions
| Shortcut | Action |
|----------|--------|
| `Mod` + `Enter` | Run workflow (or cancel if running) |
| `Mod` + `Z` | Undo |
| `Mod` + `Shift` + `Z` | Redo |
| `Mod` + `C` | Copy selected blocks |
| `Mod` + `V` | Paste blocks |
| `Delete` or `Backspace` | Delete selected blocks or edges |
| `Shift` + `L` | Auto-layout canvas |
## Panel Navigation
These shortcuts switch between panel tabs on the right side of the canvas.
| Shortcut | Action |
|----------|--------|
| `C` | Focus Copilot tab |
| `T` | Focus Toolbar tab |
| `E` | Focus Editor tab |
| `Mod` + `F` | Focus Toolbar search |
## Global Navigation
| Shortcut | Action |
|----------|--------|
| `Mod` + `K` | Open search |
| `Mod` + `Shift` + `A` | Add new agent workflow |
| `Mod` + `Y` | Go to templates |
| `Mod` + `L` | Go to logs |
## Utility
| Shortcut | Action |
|----------|--------|
| `Mod` + `D` | Clear terminal console |
| `Mod` + `E` | Clear notifications |

View File

@@ -0,0 +1,108 @@
---
title: Deploy Workflows as MCP
description: Expose your workflows as MCP tools for external AI assistants and applications
---
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
Deploy your workflows as MCP tools to make them accessible to external AI assistants like Claude Desktop, Cursor, and other MCP-compatible clients. This turns your workflows into callable tools that can be invoked from anywhere.
## Creating and Managing MCP Servers
MCP servers group your workflow tools together. Create and manage them in workspace settings:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
</div>
1. Navigate to **Settings → MCP Servers**
2. Click **Create Server**
3. Enter a name and optional description
4. Copy the server URL for use in your MCP clients
5. View and manage all tools added to the server
## Adding a Workflow as a Tool
Once your workflow is deployed, you can expose it as an MCP tool:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-deploy-tool.mp4" width={700} height={450} />
</div>
1. Open your deployed workflow
2. Click **Deploy** and go to the **MCP** tab
3. Configure the tool name and description
4. Add descriptions for each parameter (helps AI understand inputs)
5. Select which MCP servers to add it to
<Callout type="info">
The workflow must be deployed before it can be added as an MCP tool.
</Callout>
## Tool Configuration
### Tool Name
Use lowercase letters, numbers, and underscores. The name should be descriptive and follow MCP naming conventions (e.g., `search_documents`, `send_email`).
### Description
Write a clear description of what the tool does. This helps AI assistants understand when to use the tool.
### Parameters
Your workflow's input format fields become tool parameters. Add descriptions to each parameter to help AI assistants provide correct values.
## Connecting MCP Clients
Use the server URL from settings to connect external applications:
### Claude Desktop
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"my-sim-workflows": {
"command": "npx",
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
}
}
}
```
### Cursor
Add the server URL in Cursor's MCP settings using the same mcp-remote pattern.
<Callout type="warn">
Include your API key header (`X-API-Key`) for authenticated access when using mcp-remote or other HTTP-based MCP transports.
</Callout>
## Server Management
From the server detail view in **Settings → MCP Servers**, you can:
- **View tools**: See all workflows added to a server
- **Copy URL**: Get the server URL for MCP clients
- **Add workflows**: Add more deployed workflows as tools
- **Remove tools**: Remove workflows from the server
- **Delete server**: Remove the entire server and all its tools
## How It Works
When an MCP client calls your tool:
1. The request is received at your MCP server URL
2. Sim validates the request and maps parameters to workflow inputs
3. The deployed workflow executes with the provided inputs
4. Results are returned to the MCP client
Workflows execute using the same deployment version as API calls, ensuring consistent behavior.
## Permission Requirements
| Action | Required Permission |
|--------|-------------------|
| Create MCP servers | **Admin** |
| Add workflows to servers | **Write** or **Admin** |
| View MCP servers | **Read**, **Write**, or **Admin** |
| Delete MCP servers | **Admin** |

View File

@@ -1,8 +1,10 @@
---
title: MCP (Model Context Protocol)
title: Using MCP Tools
description: Connect external tools and services using the Model Context Protocol
---
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
The Model Context Protocol ([MCP](https://modelcontextprotocol.com/)) allows you to connect external tools and services using a standardized protocol, enabling you to integrate APIs and services directly into your workflows. With MCP, you can extend Sim's capabilities by adding custom integrations that work seamlessly with your agents and workflows.
@@ -20,14 +22,8 @@ MCP is an open standard that enables AI assistants to securely connect to extern
MCP servers provide collections of tools that your agents can use. Configure them in workspace settings:
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-1.png"
alt="Configuring MCP Server in Settings"
width={700}
height={450}
className="my-6"
/>
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/settings-mcp-tools.mp4" width={700} height={450} />
</div>
1. Navigate to your workspace settings
@@ -40,6 +36,10 @@ MCP servers provide collections of tools that your agents can use. Configure the
You can also configure MCP servers directly from the toolbar in an Agent block for quick setup.
</Callout>
### Refresh Tools
Click **Refresh** on a server to fetch the latest tool schemas and automatically update any agent blocks using those tools with the new parameter definitions.
## Using MCP Tools in Agents
Once MCP servers are configured, their tools become available within your agent blocks:

View File

@@ -0,0 +1,5 @@
{
"title": "MCP",
"pages": ["index", "deploy-workflows"],
"defaultOpen": false
}

View File

@@ -14,7 +14,8 @@
"execution",
"permissions",
"sdks",
"self-hosting"
"self-hosting",
"./keyboard-shortcuts/index"
],
"defaultOpen": false
}

View File

@@ -149,6 +149,32 @@ Extract structured data from entire webpages using natural language prompts and
| `success` | boolean | Whether the extraction operation was successful |
| `data` | object | Extracted structured data according to the schema or prompt |
### `firecrawl_agent`
Autonomous web data extraction agent. Searches and gathers information based on natural language prompts without requiring specific URLs.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `prompt` | string | Yes | Natural language description of the data to extract \(max 10,000 characters\) |
| `urls` | json | No | Optional array of URLs to focus the agent on |
| `schema` | json | No | JSON Schema defining the structure of data to extract |
| `maxCredits` | number | No | Maximum credits to spend on this agent task |
| `strictConstrainToURLs` | boolean | No | If true, agent will only visit URLs provided in the urls array |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the agent operation was successful |
| `status` | string | Current status of the agent job \(processing, completed, failed\) |
| `data` | object | Extracted data from the agent |
| `creditsUsed` | number | Number of credits consumed by this agent task |
| `expiresAt` | string | Timestamp when the results expire \(24 hours\) |
| `sources` | object | Array of source URLs used by the agent |
## Notes

View File

@@ -0,0 +1,141 @@
---
title: Greptile
description: AI-powered codebase search and Q&A
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="greptile"
color="#e5e5e5"
/>
{/* MANUAL-CONTENT-START:intro */}
[Greptile](https://greptile.com/) is an AI-powered developer tool for searching and querying source code across one or more repositories. Greptile enables engineers to quickly answer complex codebase questions in natural language, locate relevant files or symbols, and gain insights into unfamiliar or legacy code.
With Greptile, you can:
- **Ask complex questions about your codebase in natural language**: Get AI-generated answers about architecture, usage patterns, or specific implementations.
- **Find relevant code, files, or functions instantly**: Search using keywords or natural language queries and jump right to matching lines, files, or code blocks.
- **Understand dependencies and relationships**: Uncover where functions are called, how modules are related, or where APIs are used across large codebases.
- **Accelerate onboarding and code exploration**: Quickly ramp up on new projects or debug tricky issues without needing deep prior context.
The Sim Greptile integration allows your AI agents to:
- Query and search private and public repositories using Greptiles advanced language models.
- Retrieve contextually relevant code snippets, file references, and explanations to support code review, documentation, and development workflows.
- Trigger automations in Sim workflows based on search/query results or embed code intelligence directly into your processes.
Whether youre trying to accelerate developer productivity, automate documentation, or supercharge your teams understanding of a complex codebase, Greptile and Sim provide seamless access to code intelligence and search—right where you need it.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Query and search codebases using natural language with Greptile. Get AI-generated answers about your code, find relevant files, and understand complex codebases.
## Tools
### `greptile_query`
Query repositories in natural language and get answers with relevant code references. Greptile uses AI to understand your codebase and answer questions.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `query` | string | Yes | Natural language question about the codebase |
| `repositories` | string | Yes | Comma-separated list of repositories. Format: "github:branch:owner/repo" or just "owner/repo" \(defaults to github:main\) |
| `sessionId` | string | No | Session ID for conversation continuity |
| `genius` | boolean | No | Enable genius mode for more thorough analysis \(slower but more accurate\) |
| `apiKey` | string | Yes | Greptile API key |
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `message` | string | AI-generated answer to the query |
| `sources` | array | Relevant code references that support the answer |
### `greptile_search`
Search repositories in natural language and get relevant code references without generating an answer. Useful for finding specific code locations.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `query` | string | Yes | Natural language search query to find relevant code |
| `repositories` | string | Yes | Comma-separated list of repositories. Format: "github:branch:owner/repo" or just "owner/repo" \(defaults to github:main\) |
| `sessionId` | string | No | Session ID for conversation continuity |
| `genius` | boolean | No | Enable genius mode for more thorough search \(slower but more accurate\) |
| `apiKey` | string | Yes | Greptile API key |
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sources` | array | Relevant code references matching the search query |
### `greptile_index_repo`
Submit a repository to be indexed by Greptile. Indexing must complete before the repository can be queried. Small repos take 3-5 minutes, larger ones can take over an hour.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `remote` | string | Yes | Git remote type: github or gitlab |
| `repository` | string | Yes | Repository in owner/repo format \(e.g., "facebook/react"\) |
| `branch` | string | Yes | Branch to index \(e.g., "main" or "master"\) |
| `reload` | boolean | No | Force re-indexing even if already indexed |
| `notify` | boolean | No | Send email notification when indexing completes |
| `apiKey` | string | Yes | Greptile API key |
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `repositoryId` | string | Unique identifier for the indexed repository \(format: remote:branch:owner/repo\) |
| `statusEndpoint` | string | URL endpoint to check indexing status |
| `message` | string | Status message about the indexing operation |
### `greptile_status`
Check the indexing status of a repository. Use this to verify if a repository is ready to be queried or to monitor indexing progress.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `remote` | string | Yes | Git remote type: github or gitlab |
| `repository` | string | Yes | Repository in owner/repo format \(e.g., "facebook/react"\) |
| `branch` | string | Yes | Branch name \(e.g., "main" or "master"\) |
| `apiKey` | string | Yes | Greptile API key |
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `repository` | string | Repository name \(owner/repo\) |
| `remote` | string | Git remote \(github/gitlab\) |
| `branch` | string | Branch name |
| `private` | boolean | Whether the repository is private |
| `status` | string | Indexing status: submitted, cloning, processing, completed, or failed |
| `filesProcessed` | number | Number of files processed so far |
| `numFiles` | number | Total number of files in the repository |
| `sampleQuestions` | array | Sample questions for the indexed repository |
| `sha` | string | Git commit SHA of the indexed version |
## Notes
- Category: `tools`
- Type: `greptile`

View File

@@ -0,0 +1,40 @@
---
title: IMAP Email
description: Trigger workflows when new emails arrive via IMAP (works with any email provider)
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="imap"
color="#6366F1"
/>
{/* MANUAL-CONTENT-START:intro */}
The IMAP Email trigger allows your Sim workflows to start automatically whenever a new email is received in any mailbox that supports the IMAP protocol. This works with Gmail, Outlook, Yahoo, and most other email providers.
With the IMAP trigger, you can:
- **Automate email processing**: Start workflows in real time when new messages arrive in your inbox.
- **Filter by sender, subject, or folder**: Configure your trigger to react only to emails that match certain conditions.
- **Extract and process attachments**: Automatically download and use file attachments in your automated flows.
- **Parse and use email content**: Access the subject, sender, recipients, full body, and other metadata in downstream workflow steps.
- **Integrate with any email provider**: Works with any service that provides standard IMAP access, without vendor lock-in.
- **Trigger on unread, flagged, or custom criteria**: Set up advanced filters for the kinds of emails that start your workflows.
With Sim, the IMAP integration gives you the power to turn email into an actionable source of automation. Respond to customer inquiries, process notifications, kick off data pipelines, and more—directly from your email inbox, with no manual intervention.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Connect to any email server via IMAP protocol to trigger workflows when new emails are received. Supports Gmail, Outlook, Yahoo, and any other IMAP-compatible email provider.
## Notes
- Category: `triggers`
- Type: `imap`

View File

@@ -58,8 +58,7 @@ Create a new contact in Intercom with email, external_id, or role
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Created contact data |
| `contact` | object | Created contact object |
### `intercom_get_contact`
@@ -75,8 +74,7 @@ Get a single contact by ID from Intercom
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Contact data |
| `contact` | object | Contact object |
### `intercom_update_contact`
@@ -104,8 +102,7 @@ Update an existing contact in Intercom
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Updated contact data |
| `contact` | object | Updated contact object |
### `intercom_list_contacts`
@@ -122,8 +119,7 @@ List all contacts from Intercom with pagination support
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | List of contacts |
| `contacts` | array | Array of contact objects |
### `intercom_search_contacts`
@@ -143,8 +139,7 @@ Search for contacts in Intercom using a query
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Search results |
| `contacts` | array | Array of matching contact objects |
### `intercom_delete_contact`
@@ -160,8 +155,9 @@ Delete a contact from Intercom by ID
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Deletion result |
| `id` | string | ID of deleted contact |
| `deleted` | boolean | Whether the contact was deleted |
| `metadata` | object | Operation metadata |
### `intercom_create_company`
@@ -185,8 +181,7 @@ Create or update a company in Intercom
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Created or updated company data |
| `company` | object | Created or updated company object |
### `intercom_get_company`
@@ -202,8 +197,7 @@ Retrieve a single company by ID from Intercom
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Company data |
| `company` | object | Company object |
### `intercom_list_companies`
@@ -221,8 +215,7 @@ List all companies from Intercom with pagination support. Note: This endpoint ha
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | List of companies |
| `companies` | array | Array of company objects |
### `intercom_get_conversation`
@@ -240,8 +233,7 @@ Retrieve a single conversation by ID from Intercom
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Conversation data |
| `conversation` | object | Conversation object |
### `intercom_list_conversations`
@@ -260,8 +252,7 @@ List all conversations from Intercom with pagination support
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | List of conversations |
| `conversations` | array | Array of conversation objects |
### `intercom_reply_conversation`
@@ -282,8 +273,7 @@ Reply to a conversation as an admin in Intercom
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Updated conversation with reply |
| `conversation` | object | Updated conversation object |
### `intercom_search_conversations`
@@ -303,8 +293,7 @@ Search for conversations in Intercom using a query
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Search results |
| `conversations` | array | Array of matching conversation objects |
### `intercom_create_ticket`
@@ -326,8 +315,7 @@ Create a new ticket in Intercom
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Created ticket data |
| `ticket` | object | Created ticket object |
### `intercom_get_ticket`
@@ -343,8 +331,7 @@ Retrieve a single ticket by ID from Intercom
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Ticket data |
| `ticket` | object | Ticket object |
### `intercom_create_message`
@@ -368,8 +355,7 @@ Create and send a new admin-initiated message in Intercom
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Created message data |
| `message` | object | Created message object |

View File

@@ -0,0 +1,490 @@
---
title: Jira Service Management
description: Interact with Jira Service Management
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="jira_service_management"
color="#E0E0E0"
/>
## 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.
## Tools
### `jsm_get_service_desks`
Get all service desks from Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `serviceDesks` | json | Array of service desks |
| `total` | number | Total number of service desks |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_get_request_types`
Get request types for a service desk in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `serviceDeskId` | string | Yes | Service Desk ID to get request types for |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `requestTypes` | json | Array of request types |
| `total` | number | Total number of request types |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_create_request`
Create a new service request in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `serviceDeskId` | string | Yes | Service Desk ID to create the request in |
| `requestTypeId` | string | Yes | Request Type ID for the new request |
| `summary` | string | Yes | Summary/title for the service request |
| `description` | string | No | Description for the service request |
| `raiseOnBehalfOf` | string | No | Account ID of customer to raise request on behalf of |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueId` | string | Created request issue ID |
| `issueKey` | string | Created request issue key \(e.g., SD-123\) |
| `requestTypeId` | string | Request type ID |
| `serviceDeskId` | string | Service desk ID |
| `success` | boolean | Whether the request was created successfully |
| `url` | string | URL to the created request |
### `jsm_get_request`
Get a single service request from Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
### `jsm_get_requests`
Get multiple service requests from Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `serviceDeskId` | string | No | Filter by service desk ID |
| `requestOwnership` | string | No | Filter by ownership: OWNED_REQUESTS, PARTICIPATED_REQUESTS, ORGANIZATION, ALL_REQUESTS |
| `requestStatus` | string | No | Filter by status: OPEN, CLOSED, ALL |
| `searchTerm` | string | No | Search term to filter requests |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `requests` | json | Array of service requests |
| `total` | number | Total number of requests |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_add_comment`
Add a comment (public or internal) to a service request in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
| `body` | string | Yes | Comment body text |
| `isPublic` | boolean | Yes | Whether the comment is public \(visible to customer\) or internal |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueIdOrKey` | string | Issue ID or key |
| `commentId` | string | Created comment ID |
| `body` | string | Comment body text |
| `isPublic` | boolean | Whether the comment is public |
| `success` | boolean | Whether the comment was added successfully |
### `jsm_get_comments`
Get comments for a service request in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
| `isPublic` | boolean | No | Filter to only public comments |
| `internal` | boolean | No | Filter to only internal comments |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueIdOrKey` | string | Issue ID or key |
| `comments` | json | Array of comments |
| `total` | number | Total number of comments |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_get_customers`
Get customers for a service desk in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `serviceDeskId` | string | Yes | Service Desk ID to get customers for |
| `query` | string | No | Search query to filter customers |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `customers` | json | Array of customers |
| `total` | number | Total number of customers |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_add_customer`
Add customers to a service desk in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `serviceDeskId` | string | Yes | Service Desk ID to add customers to |
| `emails` | string | Yes | Comma-separated email addresses to add as customers |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `serviceDeskId` | string | Service desk ID |
| `success` | boolean | Whether customers were added successfully |
### `jsm_get_organizations`
Get organizations for a service desk in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `serviceDeskId` | string | Yes | Service Desk ID to get organizations for |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `organizations` | json | Array of organizations |
| `total` | number | Total number of organizations |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_create_organization`
Create a new organization in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `name` | string | Yes | Name of the organization to create |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `organizationId` | string | ID of the created organization |
| `name` | string | Name of the created organization |
| `success` | boolean | Whether the operation succeeded |
### `jsm_add_organization`
Add an organization to a service desk in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `serviceDeskId` | string | Yes | Service Desk ID to add the organization to |
| `organizationId` | string | Yes | Organization ID to add to the service desk |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `serviceDeskId` | string | Service Desk ID |
| `organizationId` | string | Organization ID added |
| `success` | boolean | Whether the operation succeeded |
### `jsm_get_queues`
Get queues for a service desk in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `serviceDeskId` | string | Yes | Service Desk ID to get queues for |
| `includeCount` | boolean | No | Include issue count for each queue |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `queues` | json | Array of queues |
| `total` | number | Total number of queues |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_get_sla`
Get SLA information for a service request in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueIdOrKey` | string | Issue ID or key |
| `slas` | json | Array of SLA information |
| `total` | number | Total number of SLAs |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_get_transitions`
Get available transitions for a service request in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueIdOrKey` | string | Issue ID or key |
| `transitions` | json | Array of available transitions |
### `jsm_transition_request`
Transition a service request to a new status in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
| `transitionId` | string | Yes | Transition ID to apply |
| `comment` | string | No | Optional comment to add during transition |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueIdOrKey` | string | Issue ID or key |
| `transitionId` | string | Applied transition ID |
| `success` | boolean | Whether the transition was successful |
### `jsm_get_participants`
Get participants for a request in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueIdOrKey` | string | Issue ID or key |
| `participants` | json | Array of participants |
| `total` | number | Total number of participants |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_add_participants`
Add participants to a request in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
| `accountIds` | string | Yes | Comma-separated account IDs to add as participants |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueIdOrKey` | string | Issue ID or key |
| `participants` | json | Array of added participants |
| `success` | boolean | Whether the operation succeeded |
### `jsm_get_approvals`
Get approvals for a request in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
| `start` | number | No | Start index for pagination \(default: 0\) |
| `limit` | number | No | Maximum results to return \(default: 50\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueIdOrKey` | string | Issue ID or key |
| `approvals` | json | Array of approvals |
| `total` | number | Total number of approvals |
| `isLastPage` | boolean | Whether this is the last page |
### `jsm_answer_approval`
Approve or decline an approval request in Jira Service Management
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `cloudId` | string | No | Jira Cloud ID for the instance |
| `issueIdOrKey` | string | Yes | Issue ID or key \(e.g., SD-123\) |
| `approvalId` | string | Yes | Approval ID to answer |
| `decision` | string | Yes | Decision: "approve" or "decline" |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `issueIdOrKey` | string | Issue ID or key |
| `approvalId` | string | Approval ID |
| `decision` | string | Decision made \(approve/decline\) |
| `success` | boolean | Whether the operation succeeded |
## Notes
- Category: `tools`
- Type: `jira_service_management`

View File

@@ -37,14 +37,17 @@
"google_vault",
"grafana",
"grain",
"greptile",
"hubspot",
"huggingface",
"hunter",
"image_generator",
"imap",
"incidentio",
"intercom",
"jina",
"jira",
"jira_service_management",
"kalshi",
"knowledge",
"linear",

View File

@@ -74,7 +74,6 @@ Insert or update text records in a Pinecone index
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `statusText` | string | Status of the upsert operation |
| `upsertedCount` | number | Number of records successfully upserted |
### `pinecone_search_text`

View File

@@ -269,7 +269,8 @@ Upload a file to a Supabase storage bucket
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `bucket` | string | Yes | The name of the storage bucket |
| `path` | string | Yes | The path where the file will be stored \(e.g., "folder/file.jpg"\) |
| `fileName` | string | Yes | The name of the file \(e.g., "document.pdf", "image.jpg"\) |
| `path` | string | No | Optional folder path \(e.g., "folder/subfolder/"\) |
| `fileContent` | string | Yes | The file content \(base64 encoded for binary files, or plain text\) |
| `contentType` | string | No | MIME type of the file \(e.g., "image/jpeg", "text/plain"\) |
| `upsert` | boolean | No | If true, overwrites existing file \(default: false\) |

View File

@@ -139,8 +139,11 @@ Retrieve complete details and structure of a specific form
| `theme` | object | Theme reference |
| `workspace` | object | Workspace reference |
| `fields` | array | Array of form fields/questions |
| `welcome_screens` | array | Array of welcome screens |
| `welcome_screens` | array | Array of welcome screens \(empty if none configured\) |
| `thankyou_screens` | array | Array of thank you screens |
| `created_at` | string | Form creation timestamp \(ISO 8601 format\) |
| `last_updated_at` | string | Form last update timestamp \(ISO 8601 format\) |
| `published_at` | string | Form publication timestamp \(ISO 8601 format\) |
| `_links` | object | Related resource links including public form URL |
### `typeform_create_form`
@@ -166,7 +169,12 @@ Create a new form with fields and settings
| `id` | string | Created form unique identifier |
| `title` | string | Form title |
| `type` | string | Form type |
| `fields` | array | Array of created form fields |
| `settings` | object | Form settings object |
| `theme` | object | Theme reference |
| `workspace` | object | Workspace reference |
| `fields` | array | Array of created form fields \(empty if none added\) |
| `welcome_screens` | array | Array of welcome screens \(empty if none configured\) |
| `thankyou_screens` | array | Array of thank you screens |
| `_links` | object | Related resource links including public form URL |
### `typeform_update_form`
@@ -185,16 +193,7 @@ Update an existing form using JSON Patch operations
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Updated form unique identifier |
| `title` | string | Form title |
| `type` | string | Form type |
| `settings` | object | Form settings |
| `theme` | object | Theme reference |
| `workspace` | object | Workspace reference |
| `fields` | array | Array of form fields |
| `welcome_screens` | array | Array of welcome screens |
| `thankyou_screens` | array | Array of thank you screens |
| `_links` | object | Related resource links |
| `message` | string | Success confirmation message |
### `typeform_delete_form`

View File

@@ -0,0 +1,64 @@
---
title: Atajos de teclado
description: Domina el lienzo de flujo de trabajo con atajos de teclado y
controles del ratón
---
import { Callout } from 'fumadocs-ui/components/callout'
Acelera la creación de tus flujos de trabajo con estos atajos de teclado y controles del ratón. Todos los atajos funcionan cuando el lienzo está enfocado (no cuando estás escribiendo en un campo de entrada).
<Callout type="info">
**Mod** se refiere a `Cmd` en macOS y `Ctrl` en Windows/Linux.
</Callout>
## Controles del lienzo
### Controles del ratón
| Acción | Control |
|--------|---------|
| Desplazar/mover lienzo | Arrastrar con botón izquierdo en espacio vacío |
| Desplazar/mover lienzo | Desplazamiento o trackpad |
| Seleccionar múltiples bloques | Arrastrar con botón derecho para dibujar cuadro de selección |
| Arrastrar bloque | Arrastrar con botón izquierdo en encabezado del bloque |
| Añadir a la selección | `Mod` + clic en bloques |
### Acciones de flujo de trabajo
| Atajo | Acción |
|----------|--------|
| `Mod` + `Enter` | Ejecutar flujo de trabajo (o cancelar si está en ejecución) |
| `Mod` + `Z` | Deshacer |
| `Mod` + `Shift` + `Z` | Rehacer |
| `Mod` + `C` | Copiar bloques seleccionados |
| `Mod` + `V` | Pegar bloques |
| `Delete` o `Backspace` | Eliminar bloques o conexiones seleccionados |
| `Shift` + `L` | Diseño automático del lienzo |
## Navegación de paneles
Estos atajos cambian entre las pestañas del panel en el lado derecho del lienzo.
| Atajo | Acción |
|----------|--------|
| `C` | Enfocar pestaña Copilot |
| `T` | Enfocar pestaña Barra de herramientas |
| `E` | Enfocar pestaña Editor |
| `Mod` + `F` | Enfocar búsqueda de Barra de herramientas |
## Navegación global
| Atajo | Acción |
|----------|--------|
| `Mod` + `K` | Abrir búsqueda |
| `Mod` + `Shift` + `A` | Añadir nuevo flujo de trabajo de agente |
| `Mod` + `Y` | Ir a plantillas |
| `Mod` + `L` | Ir a registros |
## Utilidad
| Atajo | Acción |
|----------|--------|
| `Mod` + `D` | Limpiar consola del terminal |
| `Mod` + `E` | Limpiar notificaciones |

View File

@@ -0,0 +1,108 @@
---
title: Implementar flujos de trabajo como MCP
description: Expone tus flujos de trabajo como herramientas MCP para asistentes
de IA externos y aplicaciones
---
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
Implementa tus flujos de trabajo como herramientas MCP para hacerlos accesibles a asistentes de IA externos como Claude Desktop, Cursor y otros clientes compatibles con MCP. Esto convierte tus flujos de trabajo en herramientas invocables que pueden ser llamadas desde cualquier lugar.
## Crear y gestionar servidores MCP
Los servidores MCP agrupan tus herramientas de flujo de trabajo. Créalos y gestiόnalos en la configuración del espacio de trabajo:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
</div>
1. Navega a **Configuración → Servidores MCP**
2. Haz clic en **Crear servidor**
3. Introduce un nombre y una descripción opcional
4. Copia la URL del servidor para usarla en tus clientes MCP
5. Visualiza y gestiona todas las herramientas añadidas al servidor
## Añadir un flujo de trabajo como herramienta
Una vez que tu flujo de trabajo esté implementado, puedes exponerlo como una herramienta MCP:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-deploy-tool.mp4" width={700} height={450} />
</div>
1. Abre tu flujo de trabajo implementado
2. Haz clic en **Implementar** y ve a la pestaña **MCP**
3. Configura el nombre y la descripción de la herramienta
4. Añade descripciones para cada parámetro (ayuda a la IA a entender las entradas)
5. Selecciona a qué servidores MCP añadirla
<Callout type="info">
El flujo de trabajo debe estar implementado antes de poder añadirse como herramienta MCP.
</Callout>
## Configuración de la herramienta
### Nombre de la herramienta
Usa letras minúsculas, números y guiones bajos. El nombre debe ser descriptivo y seguir las convenciones de nomenclatura de MCP (por ejemplo, `search_documents`, `send_email`).
### Descripción
Escribe una descripción clara de lo que hace la herramienta. Esto ayuda a los asistentes de IA a entender cuándo usar la herramienta.
### Parámetros
Los campos de formato de entrada de tu flujo de trabajo se convierten en parámetros de herramienta. Añade descripciones a cada parámetro para ayudar a los asistentes de IA a proporcionar valores correctos.
## Conectar clientes MCP
Usa la URL del servidor desde la configuración para conectar aplicaciones externas:
### Claude Desktop
Añade a tu configuración de Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"my-sim-workflows": {
"command": "npx",
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
}
}
}
```
### Cursor
Añade la URL del servidor en la configuración MCP de Cursor usando el mismo patrón mcp-remote.
<Callout type="warn">
Incluye tu encabezado de clave API (`X-API-Key`) para acceso autenticado al usar mcp-remote u otros transportes MCP basados en HTTP.
</Callout>
## Gestión del servidor
Desde la vista de detalle del servidor en **Configuración → Servidores MCP**, puedes:
- **Ver herramientas**: consulta todos los flujos de trabajo añadidos a un servidor
- **Copiar URL**: obtén la URL del servidor para clientes MCP
- **Añadir flujos de trabajo**: añade más flujos de trabajo desplegados como herramientas
- **Eliminar herramientas**: elimina flujos de trabajo del servidor
- **Eliminar servidor**: elimina el servidor completo y todas sus herramientas
## Cómo funciona
Cuando un cliente MCP llama a tu herramienta:
1. La solicitud se recibe en la URL de tu servidor MCP
2. Sim valida la solicitud y mapea los parámetros a las entradas del flujo de trabajo
3. El flujo de trabajo desplegado se ejecuta con las entradas proporcionadas
4. Los resultados se devuelven al cliente MCP
Los flujos de trabajo se ejecutan usando la misma versión de despliegue que las llamadas API, garantizando un comportamiento consistente.
## Requisitos de permisos
| Acción | Permiso requerido |
|--------|-------------------|
| Crear servidores MCP | **Admin** |
| Añadir flujos de trabajo a servidores | **Write** o **Admin** |
| Ver servidores MCP | **Read**, **Write** o **Admin** |
| Eliminar servidores MCP | **Admin** |

View File

@@ -1,8 +1,10 @@
---
title: MCP (Protocolo de Contexto de Modelo)
title: Uso de herramientas MCP
description: Conecta herramientas y servicios externos usando el Model Context Protocol
---
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
El Protocolo de Contexto de Modelo ([MCP](https://modelcontextprotocol.com/)) te permite conectar herramientas y servicios externos utilizando un protocolo estandarizado, permitiéndote integrar APIs y servicios directamente en tus flujos de trabajo. Con MCP, puedes ampliar las capacidades de Sim añadiendo integraciones personalizadas que funcionan perfectamente con tus agentes y flujos de trabajo.
@@ -20,14 +22,8 @@ MCP es un estándar abierto que permite a los asistentes de IA conectarse de for
Los servidores MCP proporcionan colecciones de herramientas que tus agentes pueden utilizar. Configúralos en los ajustes del espacio de trabajo:
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-1.png"
alt="Configuración del servidor MCP en Ajustes"
width={700}
height={450}
className="my-6"
/>
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/settings-mcp-tools.mp4" width={700} height={450} />
</div>
1. Navega a los ajustes de tu espacio de trabajo
@@ -40,14 +36,18 @@ Los servidores MCP proporcionan colecciones de herramientas que tus agentes pued
También puedes configurar servidores MCP directamente desde la barra de herramientas en un bloque de Agente para una configuración rápida.
</Callout>
### Actualizar herramientas
Haz clic en **Actualizar** en un servidor para obtener los esquemas de herramientas más recientes y actualizar automáticamente cualquier bloque de agente que use esas herramientas con las nuevas definiciones de parámetros.
## Uso de herramientas MCP en agentes
Una vez que los servidores MCP están configurados, sus herramientas estarán disponibles dentro de tus bloques de agente:
Una vez configurados los servidores MCP, sus herramientas están disponibles dentro de tus bloques de agente:
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-2.png"
alt="Uso de herramienta MCP en bloque de Agente"
alt="Uso de herramienta MCP en bloque de agente"
width={700}
height={450}
className="my-6"
@@ -61,7 +61,7 @@ Una vez que los servidores MCP están configurados, sus herramientas estarán di
## Bloque de herramienta MCP independiente
Para un control más preciso, puedes usar el bloque dedicado de Herramienta MCP para ejecutar herramientas MCP específicas:
Para un control más granular, puedes usar el bloque de herramienta MCP dedicado para ejecutar herramientas MCP específicas:
<div className="flex justify-center">
<Image
@@ -73,23 +73,23 @@ Para un control más preciso, puedes usar el bloque dedicado de Herramienta MCP
/>
</div>
El bloque de Herramienta MCP te permite:
El bloque de herramienta MCP te permite:
- Ejecutar cualquier herramienta MCP configurada directamente
- Pasar parámetros específicos a la herramienta
- Usar la salida de la herramienta en pasos posteriores del flujo de trabajo
- Encadenar múltiples herramientas MCP
### Cuándo usar Herramienta MCP vs Agente
### Cuándo usar herramienta MCP vs. agente
**Usa Agente con herramientas MCP cuando:**
**Usa agente con herramientas MCP cuando:**
- Quieres que la IA decida qué herramientas usar
- Necesitas un razonamiento complejo sobre cuándo y cómo usar las herramientas
- Deseas una interacción en lenguaje natural con las herramientas
- Necesitas razonamiento complejo sobre cuándo y cómo usar las herramientas
- Quieres interacción en lenguaje natural con las herramientas
**Usa el bloque Herramienta MCP cuando:**
- Necesites una ejecución determinista de herramientas
- Quieras ejecutar una herramienta específica con parámetros conocidos
- Estés construyendo flujos de trabajo estructurados con pasos predecibles
- Necesitas una ejecución determinista de herramientas
- Quieres ejecutar una herramienta específica con parámetros conocidos
- Estás construyendo flujos de trabajo estructurados con pasos predecibles
## Requisitos de permisos
@@ -99,22 +99,22 @@ La funcionalidad MCP requiere permisos específicos del espacio de trabajo:
|--------|-------------------|
| Configurar servidores MCP en ajustes | **Admin** |
| Usar herramientas MCP en agentes | **Write** o **Admin** |
| Ver herramientas MCP disponibles | **Read**, **Write**, o **Admin** |
| Ver herramientas MCP disponibles | **Read**, **Write** o **Admin** |
| Ejecutar bloques de Herramienta MCP | **Write** o **Admin** |
## Casos de uso comunes
### Integración con bases de datos
Conéctate a bases de datos para consultar, insertar o actualizar datos dentro de tus flujos de trabajo.
Conecta con bases de datos para consultar, insertar o actualizar datos dentro de tus flujos de trabajo.
### Integraciones de API
Accede a APIs externas y servicios web que no tienen integraciones incorporadas en Sim.
Accede a API externas y servicios web que no tienen integraciones integradas en Sim.
### Acceso al sistema de archivos
Lee, escribe y manipula archivos en sistemas de archivos locales o remotos.
### Lógica de negocio personalizada
Ejecuta scripts o herramientas personalizadas específicas para las necesidades de tu organización.
Ejecuta scripts o herramientas personalizadas específicas de las necesidades de tu organización.
### Acceso a datos en tiempo real
Obtén datos en vivo de sistemas externos durante la ejecución del flujo de trabajo.
@@ -122,23 +122,23 @@ Obtén datos en vivo de sistemas externos durante la ejecución del flujo de tra
## Consideraciones de seguridad
- Los servidores MCP se ejecutan con los permisos del usuario que los configuró
- Verifica siempre las fuentes del servidor MCP antes de la instalación
- Siempre verifica las fuentes de los servidores MCP antes de la instalación
- Usa variables de entorno para datos de configuración sensibles
- Revisa las capacidades del servidor MCP antes de conceder acceso a los agentes
- Revisa las capacidades del servidor MCP antes de otorgar acceso a los agentes
## Solución de problemas
### El servidor MCP no aparece
- Verifica que la configuración del servidor sea correcta
- Comprueba que tienes los permisos necesarios
- Asegúrate de que el servidor MCP esté en funcionamiento y sea accesible
- Comprueba que tienes los permisos requeridos
- Asegúrate de que el servidor MCP esté en ejecución y accesible
### Fallos en la ejecución de herramientas
- Verifica que los parámetros de la herramienta estén correctamente formateados
- Revisa los registros del servidor MCP para ver mensajes de error
- Revisa los registros del servidor MCP para mensajes de error
- Asegúrate de que la autenticación requerida esté configurada
### Errores de permisos
- Confirma tu nivel de permisos en el espacio de trabajo
- Comprueba si el servidor MCP requiere autenticación adicional
- Verifica que el servidor esté configurado correctamente para tu espacio de trabajo
- Confirma tu nivel de permisos del espacio de trabajo
- Verifica si el servidor MCP requiere autenticación adicional
- Comprueba que el servidor esté configurado correctamente para tu espacio de trabajo

View File

@@ -146,6 +146,32 @@ Extrae datos estructurados de páginas web completas utilizando instrucciones en
| `success` | boolean | Si la operación de extracción fue exitosa |
| `data` | object | Datos estructurados extraídos según el esquema o indicación |
### `firecrawl_agent`
Agente autónomo de extracción de datos web. Busca y recopila información basándose en instrucciones en lenguaje natural sin requerir URLs específicas.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `prompt` | string | Sí | Descripción en lenguaje natural de los datos a extraer (máx. 10.000 caracteres) |
| `urls` | json | No | Array opcional de URLs en las que enfocar al agente |
| `schema` | json | No | Esquema JSON que define la estructura de los datos a extraer |
| `maxCredits` | number | No | Créditos máximos a gastar en esta tarea del agente |
| `strictConstrainToURLs` | boolean | No | Si es true, el agente solo visitará las URLs proporcionadas en el array urls |
| `apiKey` | string | Sí | Clave API de Firecrawl |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Si la operación del agente fue exitosa |
| `status` | string | Estado actual del trabajo del agente (processing, completed, failed) |
| `data` | object | Datos extraídos por el agente |
| `creditsUsed` | number | Número de créditos consumidos por esta tarea del agente |
| `expiresAt` | string | Marca de tiempo de cuándo expiran los resultados (24 horas) |
| `sources` | object | Array de URLs fuente utilizadas por el agente |
## Notas
- Categoría: `tools`

View File

@@ -0,0 +1,136 @@
---
title: Greptile
description: Búsqueda de código base y preguntas y respuestas con IA
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="greptile"
color="#e5e5e5"
/>
{/* MANUAL-CONTENT-START:intro */}
[Greptile](https://greptile.com/) es una herramienta de desarrollo impulsada por IA para buscar y consultar código fuente en uno o más repositorios. Greptile permite a los ingenieros responder rápidamente preguntas complejas sobre el código base en lenguaje natural, localizar archivos o símbolos relevantes y obtener información sobre código desconocido o heredado.
Con Greptile, puedes:
- **Hacer preguntas complejas sobre tu código base en lenguaje natural**: Obtén respuestas generadas por IA sobre arquitectura, patrones de uso o implementaciones específicas.
- **Encontrar código, archivos o funciones relevantes al instante**: Busca usando palabras clave o consultas en lenguaje natural y ve directamente a las líneas, archivos o bloques de código coincidentes.
- **Comprender dependencias y relaciones**: Descubre dónde se llaman las funciones, cómo se relacionan los módulos o dónde se usan las API en grandes bases de código.
- **Acelerar la incorporación y exploración de código**: Ponte al día rápidamente en nuevos proyectos o depura problemas complicados sin necesitar un contexto previo profundo.
La integración de Sim Greptile permite a tus agentes de IA:
- Consultar y buscar repositorios privados y públicos usando los modelos de lenguaje avanzados de Greptile.
- Recuperar fragmentos de código contextualmente relevantes, referencias de archivos y explicaciones para apoyar la revisión de código, documentación y flujos de trabajo de desarrollo.
- Activar automatizaciones en flujos de trabajo de Sim basadas en resultados de búsqueda/consulta o integrar inteligencia de código directamente en tus procesos.
Ya sea que estés tratando de acelerar la productividad del desarrollador, automatizar la documentación o potenciar la comprensión de tu equipo sobre un código base complejo, Greptile y Sim proporcionan acceso fluido a la inteligencia y búsqueda de código, justo donde lo necesitas.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Consulta y busca en bases de código usando lenguaje natural con Greptile. Obtén respuestas generadas por IA sobre tu código, encuentra archivos relevantes y comprende bases de código complejas.
## Herramientas
### `greptile_query`
Consulta repositorios en lenguaje natural y obtén respuestas con referencias de código relevantes. Greptile utiliza IA para comprender tu código base y responder preguntas.
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `query` | string | Sí | Pregunta en lenguaje natural sobre el código base |
| `repositories` | string | Sí | Lista de repositorios separados por comas. Formato: "github:branch:owner/repo" o simplemente "owner/repo" \(por defecto github:main\) |
| `sessionId` | string | No | ID de sesión para continuidad de la conversación |
| `genius` | boolean | No | Activar modo genius para un análisis más exhaustivo \(más lento pero más preciso\) |
| `apiKey` | string | Sí | Clave API de Greptile |
| `githubToken` | string | Sí | Token de acceso personal de GitHub con acceso de lectura al repositorio |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `message` | string | Respuesta generada por IA a la consulta |
| `sources` | array | Referencias de código relevantes que respaldan la respuesta |
### `greptile_search`
Busca en repositorios en lenguaje natural y obtén referencias de código relevantes sin generar una respuesta. Útil para encontrar ubicaciones específicas de código.
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `query` | string | Sí | Consulta de búsqueda en lenguaje natural para encontrar código relevante |
| `repositories` | string | Sí | Lista de repositorios separados por comas. Formato: "github:branch:owner/repo" o simplemente "owner/repo" \(por defecto github:main\) |
| `sessionId` | string | No | ID de sesión para continuidad de la conversación |
| `genius` | boolean | No | Activar modo genius para una búsqueda más exhaustiva \(más lento pero más preciso\) |
| `apiKey` | string | Sí | Clave API de Greptile |
| `githubToken` | string | Sí | Token de acceso personal de GitHub con acceso de lectura al repositorio |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `sources` | array | Referencias de código relevantes que coinciden con la consulta de búsqueda |
### `greptile_index_repo`
Envía un repositorio para ser indexado por Greptile. La indexación debe completarse antes de que el repositorio pueda ser consultado. Los repositorios pequeños tardan de 3 a 5 minutos, los más grandes pueden tardar más de una hora.
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `remote` | string | Sí | Tipo de remoto Git: github o gitlab |
| `repository` | string | Sí | Repositorio en formato propietario/repo \(ej., "facebook/react"\) |
| `branch` | string | Sí | Rama a indexar \(ej., "main" o "master"\) |
| `reload` | boolean | No | Forzar re-indexación incluso si ya está indexado |
| `notify` | boolean | No | Enviar notificación por correo electrónico cuando se complete la indexación |
| `apiKey` | string | Sí | Clave API de Greptile |
| `githubToken` | string | Sí | Token de acceso personal de GitHub con acceso de lectura al repositorio |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `repositoryId` | string | Identificador único para el repositorio indexado \(formato: remoto:rama:propietario/repo\) |
| `statusEndpoint` | string | URL del endpoint para verificar el estado de indexación |
| `message` | string | Mensaje de estado sobre la operación de indexación |
### `greptile_status`
Verifica el estado de indexación de un repositorio. Usa esto para verificar si un repositorio está listo para ser consultado o para monitorear el progreso de indexación.
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `remote` | string | Sí | Tipo de remoto Git: github o gitlab |
| `repository` | string | Sí | Repositorio en formato propietario/repo \(ej., "facebook/react"\) |
| `branch` | string | Sí | Nombre de la rama \(ej., "main" o "master"\) |
| `apiKey` | string | Sí | Clave API de Greptile |
| `githubToken` | string | Sí | Token de acceso personal de GitHub con acceso de lectura al repositorio |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `repository` | string | Nombre del repositorio \(propietario/repo\) |
| `remote` | string | Remoto Git \(github/gitlab\) |
| `branch` | string | Nombre de la rama |
| `private` | boolean | Si el repositorio es privado |
| `status` | string | Estado de indexación: submitted, cloning, processing, completed o failed |
| `filesProcessed` | number | Número de archivos procesados hasta el momento |
| `numFiles` | number | Número total de archivos en el repositorio |
| `sampleQuestions` | array | Preguntas de ejemplo para el repositorio indexado |
| `sha` | string | SHA del commit Git de la versión indexada |
## Notas
- Categoría: `tools`
- Tipo: `greptile`

View File

@@ -0,0 +1,36 @@
---
title: Correo electrónico IMAP
description: Activa flujos de trabajo cuando lleguen nuevos correos electrónicos
a través de IMAP (funciona con cualquier proveedor de correo electrónico)
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="imap"
color="#6366F1"
/>
{/* MANUAL-CONTENT-START:intro */}
El activador de correo electrónico IMAP permite que tus flujos de trabajo de Sim se inicien automáticamente cada vez que se reciba un nuevo correo electrónico en cualquier buzón que admita el protocolo IMAP. Esto funciona con Gmail, Outlook, Yahoo y la mayoría de los demás proveedores de correo electrónico.
Con el activador IMAP, puedes:
- **Automatizar el procesamiento de correos electrónicos**: inicia flujos de trabajo en tiempo real cuando lleguen nuevos mensajes a tu bandeja de entrada.
- **Filtrar por remitente, asunto o carpeta**: configura tu activador para que reaccione solo a los correos electrónicos que cumplan ciertas condiciones.
- **Extraer y procesar archivos adjuntos**: descarga y utiliza automáticamente archivos adjuntos en tus flujos automatizados.
- **Analizar y utilizar el contenido del correo electrónico**: accede al asunto, remitente, destinatarios, cuerpo completo y otros metadatos en los pasos posteriores del flujo de trabajo.
- **Integrar con cualquier proveedor de correo electrónico**: funciona con cualquier servicio que proporcione acceso IMAP estándar, sin dependencia de proveedores.
- **Activar según criterios de no leído, marcado o personalizados**: configura filtros avanzados para los tipos de correos electrónicos que inician tus flujos de trabajo.
Con Sim, la integración IMAP te brinda el poder de convertir el correo electrónico en una fuente de automatización procesable. Responde a consultas de clientes, procesa notificaciones, inicia pipelines de datos y más, directamente desde tu bandeja de entrada de correo electrónico, sin intervención manual.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Conéctate a cualquier servidor de correo electrónico a través del protocolo IMAP para activar flujos de trabajo cuando se reciban nuevos correos electrónicos. Compatible con Gmail, Outlook, Yahoo y cualquier otro proveedor de correo electrónico compatible con IMAP.
## Notas
- Categoría: `triggers`
- Tipo: `imap`

View File

@@ -55,8 +55,7 @@ Crear un nuevo contacto en Intercom con email, external_id o rol
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos del contacto creado |
| `contact` | object | Objeto de contacto creado |
### `intercom_get_contact`
@@ -72,8 +71,7 @@ Obtener un solo contacto por ID desde Intercom
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos del contacto |
| `contact` | object | Objeto de contacto |
### `intercom_update_contact`
@@ -101,8 +99,7 @@ Actualizar un contacto existente en Intercom
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos del contacto actualizado |
| `contact` | object | Objeto de contacto actualizado |
### `intercom_list_contacts`
@@ -119,8 +116,7 @@ Listar todos los contactos de Intercom con soporte de paginación
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Lista de contactos |
| `contacts` | array | Array de objetos de contacto |
### `intercom_search_contacts`
@@ -140,8 +136,7 @@ Buscar contactos en Intercom usando una consulta
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Resultados de la búsqueda |
| `contacts` | array | Array de objetos de contacto coincidentes |
### `intercom_delete_contact`
@@ -157,8 +152,9 @@ Eliminar un contacto de Intercom por ID
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Resultado de la eliminación |
| `id` | string | ID del contacto eliminado |
| `deleted` | boolean | Si el contacto fue eliminado |
| `metadata` | object | Metadatos de la operación |
### `intercom_create_company`
@@ -182,8 +178,7 @@ Crear o actualizar una empresa en Intercom
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos de la empresa creada o actualizada |
| `company` | object | Objeto de empresa creado o actualizado |
### `intercom_get_company`
@@ -199,8 +194,7 @@ Recuperar una única empresa por ID desde Intercom
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos de la empresa |
| `company` | object | Objeto de empresa |
### `intercom_list_companies`
@@ -218,8 +212,7 @@ Lista todas las empresas de Intercom con soporte de paginación. Nota: Este endp
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Lista de empresas |
| `companies` | array | Array de objetos de empresa |
### `intercom_get_conversation`
@@ -237,8 +230,7 @@ Recuperar una sola conversación por ID desde Intercom
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos de la conversación |
| `conversation` | object | Objeto de conversación |
### `intercom_list_conversations`
@@ -257,8 +249,7 @@ Listar todas las conversaciones de Intercom con soporte de paginación
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Lista de conversaciones |
| `conversations` | array | Array de objetos de conversación |
### `intercom_reply_conversation`
@@ -279,8 +270,7 @@ Responder a una conversación como administrador en Intercom
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Conversación actualizada con respuesta |
| `conversation` | object | Objeto de conversación actualizado |
### `intercom_search_conversations`
@@ -300,8 +290,7 @@ Buscar conversaciones en Intercom usando una consulta
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Resultados de la búsqueda |
| `conversations` | array | Array de objetos de conversación coincidentes |
### `intercom_create_ticket`
@@ -323,8 +312,7 @@ Crear un nuevo ticket en Intercom
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos del ticket creado |
| `ticket` | object | Objeto de ticket creado |
### `intercom_get_ticket`
@@ -340,8 +328,7 @@ Recuperar un solo ticket por ID desde Intercom
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos del ticket |
| `ticket` | object | Objeto de ticket |
### `intercom_create_message`
@@ -365,8 +352,7 @@ Crear y enviar un nuevo mensaje iniciado por el administrador en Intercom
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos del mensaje creado |
| `message` | object | Objeto de mensaje creado |
## Notas

View File

@@ -0,0 +1,486 @@
---
title: Jira Service Management
description: Interactúa con Jira Service Management
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="jira_service_management"
color="#E0E0E0"
/>
## Instrucciones de uso
Integra con Jira Service Management para la gestión de servicios de TI. Crea y gestiona solicitudes de servicio, maneja clientes y organizaciones, realiza seguimiento de SLA y administra colas.
## Herramientas
### `jsm_get_service_desks`
Obtiene todos los service desks de Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `start` | number | No | Índice de inicio para paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `serviceDesks` | json | Array de service desks |
| `total` | number | Número total de service desks |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_get_request_types`
Obtiene los tipos de solicitud para un service desk en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `serviceDeskId` | string | Sí | ID del service desk para obtener tipos de solicitud |
| `start` | number | No | Índice de inicio para paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `requestTypes` | json | Array de tipos de solicitud |
| `total` | number | Número total de tipos de solicitud |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_create_request`
Crear una nueva solicitud de servicio en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `serviceDeskId` | string | Sí | ID del Service Desk en el que crear la solicitud |
| `requestTypeId` | string | Sí | ID del tipo de solicitud para la nueva solicitud |
| `summary` | string | Sí | Resumen/título para la solicitud de servicio |
| `description` | string | No | Descripción para la solicitud de servicio |
| `raiseOnBehalfOf` | string | No | ID de cuenta del cliente para crear la solicitud en su nombre |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueId` | string | ID de la incidencia de solicitud creada |
| `issueKey` | string | Clave de la incidencia de solicitud creada \(p. ej., SD-123\) |
| `requestTypeId` | string | ID del tipo de solicitud |
| `serviceDeskId` | string | ID del service desk |
| `success` | boolean | Si la solicitud se creó correctamente |
| `url` | string | URL de la solicitud creada |
### `jsm_get_request`
Obtener una única solicitud de servicio de Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(p. ej., SD-123\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
### `jsm_get_requests`
Obtener múltiples solicitudes de servicio de Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `serviceDeskId` | string | No | Filtrar por ID de service desk |
| `requestOwnership` | string | No | Filtrar por propiedad: OWNED_REQUESTS, PARTICIPATED_REQUESTS, ORGANIZATION, ALL_REQUESTS |
| `requestStatus` | string | No | Filtrar por estado: OPEN, CLOSED, ALL |
| `searchTerm` | string | No | Término de búsqueda para filtrar solicitudes |
| `start` | number | No | Índice de inicio para paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `requests` | json | Array de solicitudes de servicio |
| `total` | number | Número total de solicitudes |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_add_comment`
Añadir un comentario (público o interno) a una solicitud de servicio en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(ej., SD-123\) |
| `body` | string | Sí | Texto del cuerpo del comentario |
| `isPublic` | boolean | Sí | Si el comentario es público \(visible para el cliente\) o interno |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueIdOrKey` | string | ID o clave de la incidencia |
| `commentId` | string | ID del comentario creado |
| `body` | string | Texto del cuerpo del comentario |
| `isPublic` | boolean | Si el comentario es público |
| `success` | boolean | Si el comentario se añadió correctamente |
### `jsm_get_comments`
Obtener comentarios de una solicitud de servicio en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(ej., SD-123\) |
| `isPublic` | boolean | No | Filtrar solo comentarios públicos |
| `internal` | boolean | No | Filtrar solo comentarios internos |
| `start` | number | No | Índice de inicio para la paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueIdOrKey` | string | ID o clave del issue |
| `comments` | json | Array de comentarios |
| `total` | number | Número total de comentarios |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_get_customers`
Obtener clientes para un service desk en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `serviceDeskId` | string | Sí | ID del service desk para obtener clientes |
| `query` | string | No | Consulta de búsqueda para filtrar clientes |
| `start` | number | No | Índice de inicio para paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `customers` | json | Array de clientes |
| `total` | number | Número total de clientes |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_add_customer`
Añadir clientes a un service desk en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `serviceDeskId` | string | Sí | ID del Service Desk al que añadir clientes |
| `emails` | string | Sí | Direcciones de correo electrónico separadas por comas para añadir como clientes |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `serviceDeskId` | string | ID del service desk |
| `success` | boolean | Si los clientes se añadieron correctamente |
### `jsm_get_organizations`
Obtener organizaciones de un service desk en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `serviceDeskId` | string | Sí | ID del Service Desk del que obtener organizaciones |
| `start` | number | No | Índice de inicio para paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `organizations` | json | Array de organizaciones |
| `total` | number | Número total de organizaciones |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_create_organization`
Crear una nueva organización en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `name` | string | Sí | Nombre de la organización a crear |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `organizationId` | string | ID de la organización creada |
| `name` | string | Nombre de la organización creada |
| `success` | boolean | Si la operación tuvo éxito |
### `jsm_add_organization`
Añadir una organización a un service desk en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `serviceDeskId` | string | Sí | ID del service desk al que añadir la organización |
| `organizationId` | string | Sí | ID de la organización a añadir al service desk |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `serviceDeskId` | string | ID del service desk |
| `organizationId` | string | ID de la organización añadida |
| `success` | boolean | Si la operación tuvo éxito |
### `jsm_get_queues`
Obtener colas para un service desk en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `serviceDeskId` | string | Sí | ID del service desk para obtener colas |
| `includeCount` | boolean | No | Incluir recuento de incidencias para cada cola |
| `start` | number | No | Índice de inicio para paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `queues` | json | Array de colas |
| `total` | number | Número total de colas |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_get_sla`
Obtener información de SLA para una solicitud de servicio en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(ej., SD-123\) |
| `start` | number | No | Índice de inicio para paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueIdOrKey` | string | ID o clave de la incidencia |
| `slas` | json | Array de información de SLA |
| `total` | number | Número total de SLA |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_get_transitions`
Obtener las transiciones disponibles para una solicitud de servicio en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(p. ej., SD-123\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueIdOrKey` | string | ID o clave de la incidencia |
| `transitions` | json | Array de transiciones disponibles |
### `jsm_transition_request`
Transicionar una solicitud de servicio a un nuevo estado en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(p. ej., SD-123\) |
| `transitionId` | string | Sí | ID de transición a aplicar |
| `comment` | string | No | Comentario opcional para añadir durante la transición |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueIdOrKey` | string | ID o clave de la incidencia |
| `transitionId` | string | ID de transición aplicada |
| `success` | boolean | Si la transición fue exitosa |
### `jsm_get_participants`
Obtener participantes de una solicitud en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(p. ej., SD-123\) |
| `start` | number | No | Índice de inicio para paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueIdOrKey` | string | ID o clave de la incidencia |
| `participants` | json | Array de participantes |
| `total` | number | Número total de participantes |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_add_participants`
Agregar participantes a una solicitud en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(p. ej., SD-123\) |
| `accountIds` | string | Sí | IDs de cuenta separados por comas para agregar como participantes |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueIdOrKey` | string | ID o clave de la incidencia |
| `participants` | json | Array de participantes añadidos |
| `success` | boolean | Si la operación tuvo éxito |
### `jsm_get_approvals`
Obtener aprobaciones para una solicitud en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(p. ej., SD-123\) |
| `start` | number | No | Índice de inicio para la paginación \(predeterminado: 0\) |
| `limit` | number | No | Máximo de resultados a devolver \(predeterminado: 50\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueIdOrKey` | string | ID o clave de la incidencia |
| `approvals` | json | Array de aprobaciones |
| `total` | number | Número total de aprobaciones |
| `isLastPage` | boolean | Si esta es la última página |
### `jsm_answer_approval`
Aprobar o rechazar una solicitud de aprobación en Jira Service Management
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia |
| `issueIdOrKey` | string | Sí | ID o clave de la incidencia \(p. ej., SD-123\) |
| `approvalId` | string | Sí | ID de aprobación a responder |
| `decision` | string | Sí | Decisión: "approve" o "decline" |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `issueIdOrKey` | string | ID o clave de la incidencia |
| `approvalId` | string | ID de aprobación |
| `decision` | string | Decisión tomada \(aprobar/rechazar\) |
| `success` | boolean | Si la operación tuvo éxito |
## Notas
- Categoría: `tools`
- Tipo: `jira_service_management`

View File

@@ -70,8 +70,7 @@ Insertar o actualizar registros de texto en un índice de Pinecone
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `statusText` | string | Estado de la operación de inserción |
| `upsertedCount` | number | Número de registros insertados correctamente |
| `statusText` | string | Estado de la operación de upsert |
### `pinecone_search_text`

View File

@@ -266,7 +266,8 @@ Subir un archivo a un bucket de almacenamiento de Supabase
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `bucket` | string | Sí | El nombre del bucket de almacenamiento |
| `path` | string | Sí | La ruta donde se almacenará el archivo \(p. ej., "carpeta/archivo.jpg"\) |
| `fileName` | string | Sí | El nombre del archivo \(p. ej., "documento.pdf", "imagen.jpg"\) |
| `path` | string | No | Ruta de carpeta opcional \(p. ej., "carpeta/subcarpeta/"\) |
| `fileContent` | string | Sí | El contenido del archivo \(codificado en base64 para archivos binarios, o texto plano\) |
| `contentType` | string | No | Tipo MIME del archivo \(p. ej., "image/jpeg", "text/plain"\) |
| `upsert` | boolean | No | Si es verdadero, sobrescribe el archivo existente \(predeterminado: false\) |

View File

@@ -136,9 +136,12 @@ Recuperar detalles completos y estructura de un formulario específico
| `theme` | object | Referencia del tema |
| `workspace` | object | Referencia del espacio de trabajo |
| `fields` | array | Array de campos/preguntas del formulario |
| `welcome_screens` | array | Array de pantallas de bienvenida |
| `welcome_screens` | array | Array de pantallas de bienvenida \(vacío si no hay ninguna configurada\) |
| `thankyou_screens` | array | Array de pantallas de agradecimiento |
| `_links` | object | Enlaces a recursos relacionados incluyendo URL pública del formulario |
| `created_at` | string | Marca de tiempo de creación del formulario \(formato ISO 8601\) |
| `last_updated_at` | string | Marca de tiempo de última actualización del formulario \(formato ISO 8601\) |
| `published_at` | string | Marca de tiempo de publicación del formulario \(formato ISO 8601\) |
| `_links` | object | Enlaces de recursos relacionados incluyendo URL pública del formulario |
### `typeform_create_form`
@@ -163,8 +166,13 @@ Crear un nuevo formulario con campos y configuraciones
| `id` | string | Identificador único del formulario creado |
| `title` | string | Título del formulario |
| `type` | string | Tipo de formulario |
| `fields` | array | Array de campos del formulario creado |
| `_links` | object | Enlaces a recursos relacionados incluyendo URL pública del formulario |
| `settings` | object | Objeto de configuración del formulario |
| `theme` | object | Referencia del tema |
| `workspace` | object | Referencia del espacio de trabajo |
| `fields` | array | Array de campos del formulario creados \(vacío si no se agregó ninguno\) |
| `welcome_screens` | array | Array de pantallas de bienvenida \(vacío si no hay ninguna configurada\) |
| `thankyou_screens` | array | Array de pantallas de agradecimiento |
| `_links` | object | Enlaces de recursos relacionados incluyendo URL pública del formulario |
### `typeform_update_form`
@@ -182,16 +190,7 @@ Actualizar un formulario existente usando operaciones JSON Patch
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `id` | string | Identificador único del formulario actualizado |
| `title` | string | Título del formulario |
| `type` | string | Tipo de formulario |
| `settings` | object | Configuración del formulario |
| `theme` | object | Referencia del tema |
| `workspace` | object | Referencia del espacio de trabajo |
| `fields` | array | Array de campos del formulario |
| `welcome_screens` | array | Array de pantallas de bienvenida |
| `thankyou_screens` | array | Array de pantallas de agradecimiento |
| `_links` | object | Enlaces a recursos relacionados |
| `message` | string | Mensaje de confirmación de éxito |
### `typeform_delete_form`

View File

@@ -0,0 +1,64 @@
---
title: Raccourcis clavier
description: Maîtrisez le canevas de workflow avec les raccourcis clavier et les
contrôles de souris
---
import { Callout } from 'fumadocs-ui/components/callout'
Accélérez la création de vos workflows avec ces raccourcis clavier et contrôles de souris. Tous les raccourcis fonctionnent lorsque le canevas est actif (pas lors de la saisie dans un champ de texte).
<Callout type="info">
**Mod** fait référence à `Cmd` sur macOS et `Ctrl` sur Windows/Linux.
</Callout>
## Contrôles du canevas
### Contrôles de la souris
| Action | Contrôle |
|--------|---------|
| Déplacer le canevas | Glisser-gauche sur un espace vide |
| Déplacer le canevas | Molette ou trackpad |
| Sélectionner plusieurs blocs | Glisser-droit pour tracer une zone de sélection |
| Déplacer un bloc | Glisser-gauche sur l'en-tête du bloc |
| Ajouter à la sélection | `Mod` + clic sur les blocs |
### Actions de workflow
| Raccourci | Action |
|----------|--------|
| `Mod` + `Enter` | Exécuter le workflow (ou annuler si en cours) |
| `Mod` + `Z` | Annuler |
| `Mod` + `Shift` + `Z` | Rétablir |
| `Mod` + `C` | Copier les blocs sélectionnés |
| `Mod` + `V` | Coller les blocs |
| `Delete` ou `Backspace` | Supprimer les blocs ou connexions sélectionnés |
| `Shift` + `L` | Disposition automatique du canevas |
## Navigation dans les panneaux
Ces raccourcis permettent de basculer entre les onglets du panneau sur le côté droit du canevas.
| Raccourci | Action |
|----------|--------|
| `C` | Activer l'onglet Copilot |
| `T` | Activer l'onglet Barre d'outils |
| `E` | Activer l'onglet Éditeur |
| `Mod` + `F` | Activer la recherche dans la barre d'outils |
## Navigation globale
| Raccourci | Action |
|----------|--------|
| `Mod` + `K` | Ouvrir la recherche |
| `Mod` + `Shift` + `A` | Ajouter un nouveau workflow d'agent |
| `Mod` + `Y` | Aller aux modèles |
| `Mod` + `L` | Aller aux journaux |
## Utilitaire
| Raccourci | Action |
|----------|--------|
| `Mod` + `D` | Effacer la console du terminal |
| `Mod` + `E` | Effacer les notifications |

View File

@@ -0,0 +1,108 @@
---
title: Déployer des workflows en tant que MCP
description: Exposez vos workflows en tant qu'outils MCP pour les assistants IA
externes et les applications
---
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
Déployez vos workflows en tant qu'outils MCP pour les rendre accessibles aux assistants IA externes comme Claude Desktop, Cursor et autres clients compatibles MCP. Cela transforme vos workflows en outils appelables qui peuvent être invoqués depuis n'importe où.
## Créer et gérer des serveurs MCP
Les serveurs MCP regroupent vos outils de workflow. Créez-les et gérez-les dans les paramètres de l'espace de travail :
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
</div>
1. Accédez à **Paramètres → Serveurs MCP**
2. Cliquez sur **Créer un serveur**
3. Saisissez un nom et une description facultative
4. Copiez l'URL du serveur pour l'utiliser dans vos clients MCP
5. Consultez et gérez tous les outils ajoutés au serveur
## Ajouter un workflow en tant qu'outil
Une fois votre workflow déployé, vous pouvez l'exposer en tant qu'outil MCP :
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-deploy-tool.mp4" width={700} height={450} />
</div>
1. Ouvrez votre workflow déployé
2. Cliquez sur **Déployer** et accédez à l'onglet **MCP**
3. Configurez le nom et la description de l'outil
4. Ajoutez des descriptions pour chaque paramètre (aide l'IA à comprendre les entrées)
5. Sélectionnez les serveurs MCP auxquels l'ajouter
<Callout type="info">
Le workflow doit être déployé avant de pouvoir être ajouté en tant qu'outil MCP.
</Callout>
## Configuration de l'outil
### Nom de l'outil
Utilisez des lettres minuscules, des chiffres et des traits de soulignement. Le nom doit être descriptif et suivre les conventions de nommage MCP (par exemple, `search_documents`, `send_email`).
### Description
Rédigez une description claire de ce que fait l'outil. Cela aide les assistants IA à comprendre quand utiliser l'outil.
### Paramètres
Les champs du format d'entrée de votre workflow deviennent des paramètres d'outil. Ajoutez des descriptions à chaque paramètre pour aider les assistants IA à fournir les valeurs correctes.
## Connexion des clients MCP
Utilisez l'URL du serveur depuis les paramètres pour connecter des applications externes :
### Claude Desktop
Ajoutez à votre configuration Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json`) :
```json
{
"mcpServers": {
"my-sim-workflows": {
"command": "npx",
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
}
}
}
```
### Cursor
Ajoutez l'URL du serveur dans les paramètres MCP de Cursor en utilisant le même modèle mcp-remote.
<Callout type="warn">
Incluez votre en-tête de clé API (`X-API-Key`) pour un accès authentifié lors de l'utilisation de mcp-remote ou d'autres transports MCP basés sur HTTP.
</Callout>
## Gestion du serveur
Depuis la vue détaillée du serveur dans **Paramètres → Serveurs MCP**, vous pouvez :
- **Voir les outils** : voir tous les workflows ajoutés à un serveur
- **Copier l'URL** : obtenir l'URL du serveur pour les clients MCP
- **Ajouter des workflows** : ajouter d'autres workflows déployés comme outils
- **Supprimer des outils** : retirer des workflows du serveur
- **Supprimer le serveur** : supprimer l'intégralité du serveur et tous ses outils
## Comment ça fonctionne
Lorsqu'un client MCP appelle votre outil :
1. La requête est reçue à l'URL de votre serveur MCP
2. Sim valide la requête et mappe les paramètres aux entrées du workflow
3. Le workflow déployé s'exécute avec les entrées fournies
4. Les résultats sont renvoyés au client MCP
Les workflows s'exécutent en utilisant la même version de déploiement que les appels API, garantissant un comportement cohérent.
## Exigences de permission
| Action | Permission requise |
|--------|-------------------|
| Créer des serveurs MCP | **Admin** |
| Ajouter des workflows aux serveurs | **Write** ou **Admin** |
| Voir les serveurs MCP | **Read**, **Write** ou **Admin** |
| Supprimer des serveurs MCP | **Admin** |

View File

@@ -1,8 +1,11 @@
---
title: MCP (Model Context Protocol)
title: Utiliser les outils MCP
description: Connectez des outils et services externes en utilisant le Model
Context Protocol
---
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
Le Model Context Protocol ([MCP](https://modelcontextprotocol.com/)) vous permet de connecter des outils et services externes en utilisant un protocole standardisé, vous permettant d'intégrer des API et des services directement dans vos flux de travail. Avec MCP, vous pouvez étendre les capacités de Sim en ajoutant des intégrations personnalisées qui fonctionnent parfaitement avec vos agents et flux de travail.
@@ -20,14 +23,8 @@ MCP est une norme ouverte qui permet aux assistants IA de se connecter de maniè
Les serveurs MCP fournissent des collections d'outils que vos agents peuvent utiliser. Configurez-les dans les paramètres de l'espace de travail :
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-1.png"
alt="Configuration du serveur MCP dans les paramètres"
width={700}
height={450}
className="my-6"
/>
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/settings-mcp-tools.mp4" width={700} height={450} />
</div>
1. Accédez aux paramètres de votre espace de travail
@@ -40,14 +37,18 @@ Les serveurs MCP fournissent des collections d'outils que vos agents peuvent uti
Vous pouvez également configurer les serveurs MCP directement depuis la barre d'outils d'un bloc Agent pour une configuration rapide.
</Callout>
## Utilisation des outils MCP dans les agents
### Actualiser les outils
Une fois les serveurs MCP configurés, leurs outils deviennent disponibles dans vos blocs d'agents :
Cliquez sur **Actualiser** sur un serveur pour récupérer les derniers schémas d'outils et mettre à jour automatiquement tous les blocs d'agent utilisant ces outils avec les nouvelles définitions de paramètres.
## Utiliser les outils MCP dans les agents
Une fois les serveurs MCP configurés, leurs outils deviennent disponibles dans vos blocs d'agent :
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-2.png"
alt="Utilisation d'un outil MCP dans un bloc Agent"
alt="Utilisation de l'outil MCP dans un bloc d'agent"
width={700}
height={450}
className="my-6"
@@ -61,7 +62,7 @@ Une fois les serveurs MCP configurés, leurs outils deviennent disponibles dans
## Bloc d'outil MCP autonome
Pour un contrôle plus précis, vous pouvez utiliser le bloc dédié d'outil MCP pour exécuter des outils MCP spécifiques :
Pour un contrôle plus précis, vous pouvez utiliser le bloc d'outil MCP dédié pour exécuter des outils MCP spécifiques :
<div className="flex justify-center">
<Image
@@ -76,52 +77,52 @@ Pour un contrôle plus précis, vous pouvez utiliser le bloc dédié d'outil MCP
Le bloc d'outil MCP vous permet de :
- Exécuter directement n'importe quel outil MCP configuré
- Transmettre des paramètres spécifiques à l'outil
- Utiliser la sortie de l'outil dans les étapes suivantes du flux de travail
- Enchaîner plusieurs outils MCP
- Utiliser la sortie de l'outil dans les étapes suivantes du workflow
- Enchaîner plusieurs outils MCP ensemble
### Quand utiliser l'outil MCP vs l'agent
### Quand utiliser l'outil MCP ou l'agent
**Utilisez l'agent avec les outils MCP quand :**
**Utilisez l'agent avec les outils MCP lorsque :**
- Vous voulez que l'IA décide quels outils utiliser
- Vous avez besoin d'un raisonnement complexe sur quand et comment utiliser les outils
- Vous souhaitez une interaction en langage naturel avec les outils
**Utilisez le bloc Outil MCP quand :**
- Vous avez besoin d'une exécution déterministe d'outils
- Vous souhaitez exécuter un outil spécifique avec des paramètres connus
- Vous construisez des flux de travail structurés avec des étapes prévisibles
**Utilisez le bloc outil MCP quand :**
- Vous avez besoin d'une exécution d'outil déterministe
- Vous voulez exécuter un outil spécifique avec des paramètres connus
- Vous construisez des workflows structurés avec des étapes prévisibles
## Exigences en matière d'autorisations
## Exigences de permission
Les fonctionnalités MCP nécessitent des autorisations spécifiques pour l'espace de travail :
La fonctionnalité MCP nécessite des permissions d'espace de travail spécifiques :
| Action | Autorisation requise |
| Action | Permission requise |
|--------|-------------------|
| Configurer les serveurs MCP dans les paramètres | **Admin** |
| Utiliser les outils MCP dans les agents | **Écriture** ou **Admin** |
| Voir les outils MCP disponibles | **Lecture**, **Écriture**, ou **Admin** |
| Exécuter des blocs d'Outil MCP | **Écriture** ou **Admin** |
| Voir les outils MCP disponibles | **Lecture**, **Écriture** ou **Admin** |
| Exécuter les blocs outil MCP | **Écriture** ou **Admin** |
## Cas d'utilisation courants
## Cas d'usage courants
### Intégration de bases de données
Connectez-vous aux bases de données pour interroger, insérer ou mettre à jour des données dans vos flux de travail.
### Intégration de base de données
Connectez-vous aux bases de données pour interroger, insérer ou mettre à jour des données dans vos workflows.
### Intégrations API
Accédez à des API externes et des services web qui n'ont pas d'intégrations Sim intégrées.
### Intégrations d'API
Accédez aux API externes et services web qui n'ont pas d'intégrations Sim intégrées.
### Accès au système de fichiers
Lisez, écrivez et manipulez des fichiers sur des systèmes de fichiers locaux ou distants.
### Logique métier personnalisée
Exécutez des scripts ou des outils personnalisés spécifiques aux besoins de votre organisation.
Exécutez des scripts ou outils personnalisés spécifiques aux besoins de votre organisation.
### Accès aux données en temps réel
Récupérez des données en direct à partir de systèmes externes pendant l'exécution du flux de travail.
Récupérez des données en direct depuis des systèmes externes pendant l'exécution du workflow.
## Considérations de sécurité
- Les serveurs MCP s'exécutent avec les autorisations de l'utilisateur qui les a configurés
- Les serveurs MCP s'exécutent avec les permissions de l'utilisateur qui les a configurés
- Vérifiez toujours les sources des serveurs MCP avant l'installation
- Utilisez des variables d'environnement pour les données de configuration sensibles
- Examinez les capacités du serveur MCP avant d'accorder l'accès aux agents
@@ -130,10 +131,10 @@ Récupérez des données en direct à partir de systèmes externes pendant l'ex
### Le serveur MCP n'apparaît pas
- Vérifiez que la configuration du serveur est correcte
- Vérifiez que vous disposez des autorisations requises
- Vérifiez que vous avez les permissions requises
- Assurez-vous que le serveur MCP est en cours d'exécution et accessible
### Échecs d'exécution d'outils
### Échecs d'exécution d'outil
- Vérifiez que les paramètres de l'outil sont correctement formatés
- Consultez les journaux du serveur MCP pour les messages d'erreur
- Assurez-vous que l'authentification requise est configurée

View File

@@ -146,6 +146,32 @@ Extrayez des données structurées de pages web entières à l'aide d'instructio
| `success` | boolean | Indique si l'opération d'extraction a réussi |
| `data` | object | Données structurées extraites selon le schéma ou l'invite |
### `firecrawl_agent`
Agent autonome d'extraction de données web. Recherche et collecte des informations basées sur des instructions en langage naturel sans nécessiter d'URLs spécifiques.
#### Entrée
| Paramètre | Type | Obligatoire | Description |
| --------- | ---- | ----------- | ----------- |
| `prompt` | string | Oui | Description en langage naturel des données à extraire (max 10 000 caractères) |
| `urls` | json | Non | Tableau optionnel d'URLs sur lesquelles concentrer l'agent |
| `schema` | json | Non | Schéma JSON définissant la structure des données à extraire |
| `maxCredits` | number | Non | Nombre maximum de crédits à dépenser pour cette tâche d'agent |
| `strictConstrainToURLs` | boolean | Non | Si true, l'agent visitera uniquement les URLs fournies dans le tableau urls |
| `apiKey` | string | Oui | Clé API Firecrawl |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Indique si l'opération de l'agent a réussi |
| `status` | string | Statut actuel de la tâche de l'agent (processing, completed, failed) |
| `data` | object | Données extraites par l'agent |
| `creditsUsed` | number | Nombre de crédits consommés par cette tâche d'agent |
| `expiresAt` | string | Horodatage d'expiration des résultats (24 heures) |
| `sources` | object | Tableau des URLs sources utilisées par l'agent |
## Remarques
- Catégorie : `tools`

View File

@@ -0,0 +1,136 @@
---
title: Greptile
description: Recherche de base de code et questions-réponses alimentées par l'IA
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="greptile"
color="#e5e5e5"
/>
{/* MANUAL-CONTENT-START:intro */}
[Greptile](https://greptile.com/) est un outil de développement alimenté par l'IA pour rechercher et interroger le code source dans un ou plusieurs dépôts. Greptile permet aux ingénieurs de répondre rapidement à des questions complexes sur la base de code en langage naturel, de localiser des fichiers ou symboles pertinents et d'obtenir des informations sur du code inconnu ou hérité.
Avec Greptile, vous pouvez :
- **Poser des questions complexes sur votre base de code en langage naturel** : obtenez des réponses générées par l'IA sur l'architecture, les modèles d'utilisation ou des implémentations spécifiques.
- **Trouver instantanément du code, des fichiers ou des fonctions pertinents** : recherchez à l'aide de mots-clés ou de requêtes en langage naturel et accédez directement aux lignes, fichiers ou blocs de code correspondants.
- **Comprendre les dépendances et les relations** : découvrez où les fonctions sont appelées, comment les modules sont liés ou où les API sont utilisées dans de grandes bases de code.
- **Accélérer l'intégration et l'exploration du code** : montez rapidement en compétence sur de nouveaux projets ou déboguez des problèmes complexes sans avoir besoin d'un contexte préalable approfondi.
L'intégration Sim Greptile permet à vos agents IA de :
- Interroger et rechercher des dépôts privés et publics en utilisant les modèles de langage avancés de Greptile.
- Récupérer des extraits de code contextuellement pertinents, des références de fichiers et des explications pour soutenir la revue de code, la documentation et les flux de travail de développement.
- Déclencher des automatisations dans les workflows Sim en fonction des résultats de recherche/requête ou intégrer l'intelligence du code directement dans vos processus.
Que vous cherchiez à accélérer la productivité des développeurs, à automatiser la documentation ou à renforcer la compréhension de votre équipe d'une base de code complexe, Greptile et Sim offrent un accès transparent à l'intelligence et à la recherche de code, exactement là où vous en avez besoin.
{/* MANUAL-CONTENT-END */}
## Instructions d'utilisation
Interrogez et recherchez des bases de code en langage naturel avec Greptile. Obtenez des réponses générées par l'IA sur votre code, trouvez des fichiers pertinents et comprenez des bases de code complexes.
## Outils
### `greptile_query`
Interrogez les dépôts en langage naturel et obtenez des réponses avec des références de code pertinentes. Greptile utilise l'IA pour comprendre votre base de code et répondre aux questions.
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `query` | string | Oui | Question en langage naturel sur la base de code |
| `repositories` | string | Oui | Liste de dépôts séparés par des virgules. Format : "github:branch:owner/repo" ou simplement "owner/repo" \(par défaut github:main\) |
| `sessionId` | string | Non | ID de session pour la continuité de la conversation |
| `genius` | boolean | Non | Activer le mode genius pour une analyse plus approfondie \(plus lent mais plus précis\) |
| `apiKey` | string | Oui | Clé API Greptile |
| `githubToken` | string | Oui | Jeton d'accès personnel GitHub avec accès en lecture au dépôt |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `message` | string | Réponse générée par l'IA à la requête |
| `sources` | array | Références de code pertinentes qui appuient la réponse |
### `greptile_search`
Recherchez dans les dépôts en langage naturel et obtenez des références de code pertinentes sans générer de réponse. Utile pour trouver des emplacements de code spécifiques.
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `query` | string | Oui | Requête de recherche en langage naturel pour trouver du code pertinent |
| `repositories` | string | Oui | Liste de dépôts séparés par des virgules. Format : "github:branch:owner/repo" ou simplement "owner/repo" \(par défaut github:main\) |
| `sessionId` | string | Non | ID de session pour la continuité de la conversation |
| `genius` | boolean | Non | Activer le mode genius pour une recherche plus approfondie \(plus lent mais plus précis\) |
| `apiKey` | string | Oui | Clé API Greptile |
| `githubToken` | string | Oui | Jeton d'accès personnel GitHub avec accès en lecture au dépôt |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `sources` | array | Références de code pertinentes correspondant à la requête de recherche |
### `greptile_index_repo`
Soumettre un dépôt pour qu'il soit indexé par Greptile. L'indexation doit être terminée avant que le dépôt puisse être interrogé. Les petits dépôts prennent 3 à 5 minutes, les plus grands peuvent prendre plus d'une heure.
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `remote` | string | Oui | Type de dépôt distant : github ou gitlab |
| `repository` | string | Oui | Dépôt au format propriétaire/dépôt \(par exemple, "facebook/react"\) |
| `branch` | string | Oui | Branche à indexer \(par exemple, "main" ou "master"\) |
| `reload` | boolean | Non | Forcer la réindexation même si déjà indexé |
| `notify` | boolean | Non | Envoyer une notification par e-mail lorsque l'indexation est terminée |
| `apiKey` | string | Oui | Clé API Greptile |
| `githubToken` | string | Oui | Jeton d'accès personnel GitHub avec accès en lecture au dépôt |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `repositoryId` | string | Identifiant unique du dépôt indexé \(format : distant:branche:propriétaire/dépôt\) |
| `statusEndpoint` | string | Point de terminaison URL pour vérifier l'état de l'indexation |
| `message` | string | Message d'état concernant l'opération d'indexation |
### `greptile_status`
Vérifier l'état d'indexation d'un dépôt. Utilisez ceci pour vérifier si un dépôt est prêt à être interrogé ou pour surveiller la progression de l'indexation.
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `remote` | string | Oui | Type de dépôt distant Git : github ou gitlab |
| `repository` | string | Oui | Dépôt au format propriétaire/dépôt \(par ex., "facebook/react"\) |
| `branch` | string | Oui | Nom de la branche \(par ex., "main" ou "master"\) |
| `apiKey` | string | Oui | Clé API Greptile |
| `githubToken` | string | Oui | Jeton d'accès personnel GitHub avec accès en lecture au dépôt |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `repository` | string | Nom du dépôt \(propriétaire/dépôt\) |
| `remote` | string | Dépôt distant Git \(github/gitlab\) |
| `branch` | string | Nom de la branche |
| `private` | boolean | Indique si le dépôt est privé |
| `status` | string | Statut d'indexation : submitted, cloning, processing, completed ou failed |
| `filesProcessed` | number | Nombre de fichiers traités jusqu'à présent |
| `numFiles` | number | Nombre total de fichiers dans le dépôt |
| `sampleQuestions` | array | Exemples de questions pour le dépôt indexé |
| `sha` | string | SHA du commit Git de la version indexée |
## Remarques
- Catégorie : `tools`
- Type : `greptile`

View File

@@ -0,0 +1,36 @@
---
title: Email IMAP
description: Déclenchez des workflows lorsque de nouveaux emails arrivent via
IMAP (fonctionne avec n'importe quel fournisseur d'email)
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="imap"
color="#6366F1"
/>
{/* MANUAL-CONTENT-START:intro */}
Le déclencheur Email IMAP permet à vos workflows Sim de démarrer automatiquement dès qu'un nouvel email est reçu dans n'importe quelle boîte mail prenant en charge le protocole IMAP. Cela fonctionne avec Gmail, Outlook, Yahoo et la plupart des autres fournisseurs d'email.
Avec le déclencheur IMAP, vous pouvez :
- **Automatiser le traitement des emails** : démarrez des workflows en temps réel lorsque de nouveaux messages arrivent dans votre boîte de réception.
- **Filtrer par expéditeur, objet ou dossier** : configurez votre déclencheur pour réagir uniquement aux emails correspondant à certaines conditions.
- **Extraire et traiter les pièces jointes** : téléchargez et utilisez automatiquement les fichiers joints dans vos flux automatisés.
- **Analyser et utiliser le contenu des emails** : accédez à l'objet, l'expéditeur, les destinataires, le corps complet et d'autres métadonnées dans les étapes suivantes du workflow.
- **Intégrer avec n'importe quel fournisseur d'email** : fonctionne avec tout service offrant un accès IMAP standard, sans dépendance à un fournisseur.
- **Déclencher sur non lu, marqué ou critères personnalisés** : configurez des filtres avancés pour les types d'emails qui démarrent vos workflows.
Avec Sim, l'intégration IMAP vous donne le pouvoir de transformer l'email en une source d'automatisation exploitable. Répondez aux demandes clients, traitez les notifications, lancez des pipelines de données et plus encore, directement depuis votre boîte de réception email, sans intervention manuelle.
{/* MANUAL-CONTENT-END */}
## Instructions d'utilisation
Connectez-vous à n'importe quel serveur email via le protocole IMAP pour déclencher des workflows lorsque de nouveaux emails sont reçus. Prend en charge Gmail, Outlook, Yahoo et tout autre fournisseur d'email compatible IMAP.
## Remarques
- Catégorie : `triggers`
- Type : `imap`

View File

@@ -56,8 +56,7 @@ Créer un nouveau contact dans Intercom avec email, external_id ou role
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Données du contact créé |
| `contact` | object | Objet contact créé |
### `intercom_get_contact`
@@ -73,8 +72,7 @@ Obtenir un seul contact par ID depuis Intercom
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Données du contact |
| `contact` | object | Objet contact |
### `intercom_update_contact`
@@ -102,8 +100,7 @@ Mettre à jour un contact existant dans Intercom
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Données du contact mises à jour |
| `contact` | object | Objet contact mis à jour |
### `intercom_list_contacts`
@@ -120,8 +117,7 @@ Lister tous les contacts d'Intercom avec prise en charge de la pagination
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | booléen | Statut de réussite de l'opération |
| `output` | objet | Liste des contacts |
| `contacts` | array | Tableau d'objets contact |
### `intercom_search_contacts`
@@ -141,8 +137,7 @@ Rechercher des contacts dans Intercom à l'aide d'une requête
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | booléen | Statut de réussite de l'opération |
| `output` | objet | Résultats de la recherche |
| `contacts` | array | Tableau d'objets contact correspondants |
### `intercom_delete_contact`
@@ -158,8 +153,9 @@ Supprimer un contact d'Intercom par ID
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | booléen | Statut de réussite de l'opération |
| `output` | objet | Résultat de la suppression |
| `id` | string | ID du contact supprimé |
| `deleted` | boolean | Indique si le contact a été supprimé |
| `metadata` | object | Métadonnées de l'opération |
### `intercom_create_company`
@@ -183,8 +179,7 @@ Créer ou mettre à jour une entreprise dans Intercom
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | booléen | Statut de réussite de l'opération |
| `output` | objet | Données de l'entreprise créée ou mise à jour |
| `company` | object | Objet entreprise cé ou mis à jour |
### `intercom_get_company`
@@ -200,8 +195,7 @@ Récupérer une seule entreprise par ID depuis Intercom
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | booléen | Statut de réussite de l'opération |
| `output` | objet | Données de l'entreprise |
| `company` | object | Objet entreprise |
### `intercom_list_companies`
@@ -219,8 +213,7 @@ Liste toutes les entreprises d'Intercom avec prise en charge de la pagination. R
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Liste des entreprises |
| `companies` | array | Tableau d'objets entreprise |
### `intercom_get_conversation`
@@ -238,8 +231,7 @@ Récupérer une seule conversation par ID depuis Intercom
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Données de la conversation |
| `conversation` | object | Objet conversation |
### `intercom_list_conversations`
@@ -258,8 +250,7 @@ Lister toutes les conversations depuis Intercom avec prise en charge de la pagin
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Liste des conversations |
| `conversations` | array | Tableau d'objets conversation |
### `intercom_reply_conversation`
@@ -280,8 +271,7 @@ Répondre à une conversation en tant qu'administrateur dans Intercom
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Conversation mise à jour avec la réponse |
| `conversation` | object | Objet conversation mis à jour |
### `intercom_search_conversations`
@@ -301,8 +291,7 @@ Rechercher des conversations dans Intercom à l'aide d'une requête
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Résultats de la recherche |
| `conversations` | array | Tableau d'objets conversation correspondants |
### `intercom_create_ticket`
@@ -324,8 +313,7 @@ Créer un nouveau ticket dans Intercom
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Données du ticket créé |
| `ticket` | object | Objet ticket créé |
### `intercom_get_ticket`
@@ -341,8 +329,7 @@ Récupérer un ticket unique par ID depuis Intercom
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Données du ticket |
| `ticket` | object | Objet ticket |
### `intercom_create_message`
@@ -366,8 +353,7 @@ Créer et envoyer un nouveau message initié par l'administrateur dans Intercom
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Statut de réussite de l'opération |
| `output` | object | Données du message créé |
| `message` | object | Objet message créé |
## Notes

View File

@@ -0,0 +1,486 @@
---
title: Jira Service Management
description: Interagir avec Jira Service Management
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="jira_service_management"
color="#E0E0E0"
/>
## Instructions d'utilisation
Intégrez-vous avec Jira Service Management pour la gestion des services informatiques. Créez et gérez des demandes de service, traitez les clients et les organisations, suivez les SLA et gérez les files d'attente.
## Outils
### `jsm_get_service_desks`
Obtenir tous les centres de services depuis Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `start` | number | Non | Index de départ pour la pagination \(par défaut : 0\) |
| `limit` | number | Non | Nombre maximum de résultats à retourner \(par défaut : 50\) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `serviceDesks` | json | Tableau des centres de services |
| `total` | number | Nombre total de centres de services |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_get_request_types`
Obtenir les types de demandes pour un centre de services dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `serviceDeskId` | string | Oui | ID du centre de services pour lequel obtenir les types de demandes |
| `start` | number | Non | Index de départ pour la pagination \(par défaut : 0\) |
| `limit` | number | Non | Nombre maximum de résultats à retourner \(par défaut : 50\) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `requestTypes` | json | Tableau des types de demande |
| `total` | number | Nombre total de types de demande |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_create_request`
Créer une nouvelle demande de service dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `serviceDeskId` | string | Oui | ID du Service Desk dans lequel créer la demande |
| `requestTypeId` | string | Oui | ID du type de demande pour la nouvelle demande |
| `summary` | string | Oui | Résumé/titre de la demande de service |
| `description` | string | Non | Description de la demande de service |
| `raiseOnBehalfOf` | string | Non | ID de compte du client pour lequel créer la demande |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueId` | string | ID du ticket de demande créé |
| `issueKey` | string | Clé du ticket de demande créé \(par exemple, SD-123\) |
| `requestTypeId` | string | ID du type de demande |
| `serviceDeskId` | string | ID du Service Desk |
| `success` | boolean | Indique si la demande a été créée avec succès |
| `url` | string | URL vers la demande créée |
### `jsm_get_request`
Obtenir une seule demande de service depuis Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket \(par exemple, SD-123\) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
### `jsm_get_requests`
Obtenir plusieurs demandes de service depuis Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `serviceDeskId` | string | Non | Filtrer par ID de service desk |
| `requestOwnership` | string | Non | Filtrer par propriété : OWNED_REQUESTS, PARTICIPATED_REQUESTS, ORGANIZATION, ALL_REQUESTS |
| `requestStatus` | string | Non | Filtrer par statut : OPEN, CLOSED, ALL |
| `searchTerm` | string | Non | Terme de recherche pour filtrer les demandes |
| `start` | number | Non | Index de départ pour la pagination \(par défaut : 0\) |
| `limit` | number | Non | Nombre maximum de résultats à retourner \(par défaut : 50\) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `requests` | json | Tableau des demandes de service |
| `total` | number | Nombre total de demandes |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_add_comment`
Ajouter un commentaire (public ou interne) à une demande de service dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket \(par exemple, SD-123\) |
| `body` | string | Oui | Texte du corps du commentaire |
| `isPublic` | boolean | Oui | Indique si le commentaire est public \(visible par le client\) ou interne |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueIdOrKey` | string | ID ou clé du ticket |
| `commentId` | string | ID du commentaire créé |
| `body` | string | Texte du corps du commentaire |
| `isPublic` | boolean | Indique si le commentaire est public |
| `success` | boolean | Indique si le commentaire a été ajouté avec succès |
### `jsm_get_comments`
Obtenir les commentaires d'une demande de service dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket \(par exemple, SD-123\) |
| `isPublic` | boolean | Non | Filtrer uniquement les commentaires publics |
| `internal` | boolean | Non | Filtrer uniquement les commentaires internes |
| `start` | number | Non | Index de départ pour la pagination \(par défaut : 0\) |
| `limit` | number | Non | Nombre maximum de résultats à retourner \(par défaut : 50\) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueIdOrKey` | string | ID ou clé du ticket |
| `comments` | json | Tableau des commentaires |
| `total` | number | Nombre total de commentaires |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_get_customers`
Obtenir les clients d'un service desk dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Jira Cloud de l'instance |
| `serviceDeskId` | string | Oui | ID du service desk pour lequel obtenir les clients |
| `query` | string | Non | Requête de recherche pour filtrer les clients |
| `start` | number | Non | Index de départ pour la pagination \(par défaut : 0\) |
| `limit` | number | Non | Nombre maximum de résultats à retourner \(par défaut : 50\) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `customers` | json | Tableau des clients |
| `total` | number | Nombre total de clients |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_add_customer`
Ajouter des clients à un service desk dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `serviceDeskId` | string | Oui | ID du Service Desk auquel ajouter des clients |
| `emails` | string | Oui | Adresses e-mail séparées par des virgules à ajouter comme clients |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `serviceDeskId` | string | ID du Service Desk |
| `success` | boolean | Indique si les clients ont été ajoutés avec succès |
### `jsm_get_organizations`
Obtenir les organisations d'un Service Desk dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `serviceDeskId` | string | Oui | ID du Service Desk pour lequel obtenir les organisations |
| `start` | number | Non | Index de départ pour la pagination \(par défaut : 0\) |
| `limit` | number | Non | Nombre maximum de résultats à retourner \(par défaut : 50\) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `organizations` | json | Tableau des organisations |
| `total` | number | Nombre total d'organisations |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_create_organization`
Créer une nouvelle organisation dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `name` | string | Oui | Nom de l'organisation à créer |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `organizationId` | string | ID de l'organisation créée |
| `name` | string | Nom de l'organisation créée |
| `success` | boolean | Indique si l'opération a réussi |
### `jsm_add_organization`
Ajouter une organisation à un service desk dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `serviceDeskId` | string | Oui | ID du service desk auquel ajouter l'organisation |
| `organizationId` | string | Oui | ID de l'organisation à ajouter au service desk |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `serviceDeskId` | string | ID du service desk |
| `organizationId` | string | ID de l'organisation ajoutée |
| `success` | boolean | Indique si l'opération a réussi |
### `jsm_get_queues`
Obtenir les files d'attente pour un service desk dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira (par ex., votreentreprise.atlassian.net) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `serviceDeskId` | string | Oui | ID du service desk pour lequel obtenir les files d'attente |
| `includeCount` | boolean | Non | Inclure le nombre de tickets pour chaque file d'attente |
| `start` | number | Non | Index de départ pour la pagination (par défaut : 0) |
| `limit` | number | Non | Nombre maximum de résultats à retourner (par défaut : 50) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `queues` | json | Tableau des files d'attente |
| `total` | number | Nombre total de files d'attente |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_get_sla`
Obtenir les informations SLA pour une demande de service dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira (par ex., votreentreprise.atlassian.net) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket (par ex., SD-123) |
| `start` | number | Non | Index de départ pour la pagination (par défaut : 0) |
| `limit` | number | Non | Nombre maximum de résultats à retourner (par défaut : 50) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueIdOrKey` | string | ID ou clé du ticket |
| `slas` | json | Tableau des informations SLA |
| `total` | number | Nombre total de SLA |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_get_transitions`
Obtenir les transitions disponibles pour une demande de service dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira (par exemple, votreentreprise.atlassian.net) |
| `cloudId` | string | Non | ID Jira Cloud de l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket (par exemple, SD-123) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueIdOrKey` | string | ID ou clé du ticket |
| `transitions` | json | Tableau des transitions disponibles |
### `jsm_transition_request`
Faire passer une demande de service à un nouveau statut dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira (par exemple, votreentreprise.atlassian.net) |
| `cloudId` | string | Non | ID Jira Cloud de l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket (par exemple, SD-123) |
| `transitionId` | string | Oui | ID de la transition à appliquer |
| `comment` | string | Non | Commentaire optionnel à ajouter lors de la transition |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueIdOrKey` | string | ID ou clé du ticket |
| `transitionId` | string | ID de la transition appliquée |
| `success` | boolean | Indique si la transition a réussi |
### `jsm_get_participants`
Obtenir les participants d'une demande dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira de l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket \(par exemple, SD-123\) |
| `start` | number | Non | Index de départ pour la pagination \(par défaut : 0\) |
| `limit` | number | Non | Nombre maximum de résultats à retourner \(par défaut : 50\) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueIdOrKey` | string | ID ou clé du ticket |
| `participants` | json | Tableau des participants |
| `total` | number | Nombre total de participants |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_add_participants`
Ajouter des participants à une demande dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira \(par exemple, votreentreprise.atlassian.net\) |
| `cloudId` | string | Non | ID Cloud Jira de l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket \(par exemple, SD-123\) |
| `accountIds` | string | Oui | ID de comptes séparés par des virgules à ajouter comme participants |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueIdOrKey` | string | ID ou clé du ticket |
| `participants` | json | Tableau des participants ajoutés |
| `success` | boolean | Indique si l'opération a réussi |
### `jsm_get_approvals`
Obtenir les approbations pour une demande dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira (par exemple, votreentreprise.atlassian.net) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket (par exemple, SD-123) |
| `start` | number | Non | Index de départ pour la pagination (par défaut : 0) |
| `limit` | number | Non | Nombre maximum de résultats à retourner (par défaut : 50) |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueIdOrKey` | string | ID ou clé du ticket |
| `approvals` | json | Tableau des approbations |
| `total` | number | Nombre total d'approbations |
| `isLastPage` | boolean | Indique s'il s'agit de la dernière page |
### `jsm_answer_approval`
Approuver ou refuser une demande d'approbation dans Jira Service Management
#### Entrée
| Paramètre | Type | Requis | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Oui | Votre domaine Jira (par exemple, votreentreprise.atlassian.net) |
| `cloudId` | string | Non | ID Cloud Jira pour l'instance |
| `issueIdOrKey` | string | Oui | ID ou clé du ticket (par exemple, SD-123) |
| `approvalId` | string | Oui | ID de l'approbation à traiter |
| `decision` | string | Oui | Décision : "approve" ou "decline" |
#### Sortie
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Horodatage de l'opération |
| `issueIdOrKey` | string | ID ou clé du ticket |
| `approvalId` | string | ID d'approbation |
| `decision` | string | Décision prise \(approuver/refuser\) |
| `success` | boolean | Indique si l'opération a réussi |
## Remarques
- Catégorie : `tools`
- Type : `jira_service_management`

View File

@@ -70,8 +70,7 @@ Insérer ou mettre à jour des enregistrements textuels dans un index Pinecone
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `statusText` | chaîne | Statut de l'opération d'insertion |
| `upsertedCount` | nombre | Nombre d'enregistrements insérés avec succès |
| `statusText` | string | Statut de l'opération d'insertion ou de mise à jour |
### `pinecone_search_text`

View File

@@ -266,7 +266,8 @@ Téléverser un fichier vers un bucket de stockage Supabase
| --------- | ---- | ----------- | ----------- |
| `projectId` | string | Oui | L'ID de votre projet Supabase \(ex. : jdrkgepadsdopsntdlom\) |
| `bucket` | string | Oui | Le nom du bucket de stockage |
| `path` | string | Oui | Le chemin où le fichier sera stocké \(ex. : "dossier/fichier.jpg"\) |
| `fileName` | string | Oui | Le nom du fichier \(ex. : "document.pdf", "image.jpg"\) |
| `path` | string | Non | Chemin de dossier optionnel \(ex. : "dossier/sousdossier/"\) |
| `fileContent` | string | Oui | Le contenu du fichier \(encodé en base64 pour les fichiers binaires, ou texte brut\) |
| `contentType` | string | Non | Type MIME du fichier \(ex. : "image/jpeg", "text/plain"\) |
| `upsert` | boolean | Non | Si vrai, écrase le fichier existant \(par défaut : false\) |

View File

@@ -132,13 +132,16 @@ Récupérer les détails complets et la structure d'un formulaire spécifique
| `id` | chaîne | Identifiant unique du formulaire |
| `title` | chaîne | Titre du formulaire |
| `type` | chaîne | Type de formulaire \(form, quiz, etc.\) |
| `settings` | objet | Paramètres du formulaire incluant langue, barre de progression, etc. |
| `settings` | objet | Paramètres du formulaire incluant la langue, la barre de progression, etc. |
| `theme` | objet | Référence du thème |
| `workspace` | objet | Référence de l'espace de travail |
| `fields` | tableau | Tableau des champs/questions du formulaire |
| `welcome_screens` | tableau | Tableau des écrans d'accueil |
| `welcome_screens` | tableau | Tableau des écrans d'accueil \(vide si aucun n'est configuré\) |
| `thankyou_screens` | tableau | Tableau des écrans de remerciement |
| `_links` | objet | Liens vers les ressources associées, y compris l'URL publique du formulaire |
| `created_at` | chaîne | Horodatage de création du formulaire \(format ISO 8601\) |
| `last_updated_at` | chaîne | Horodatage de dernière mise à jour du formulaire \(format ISO 8601\) |
| `published_at` | chaîne | Horodatage de publication du formulaire \(format ISO 8601\) |
| `_links` | objet | Liens vers les ressources associées incluant l'URL publique du formulaire |
### `typeform_create_form`
@@ -163,8 +166,13 @@ Créer un nouveau formulaire avec champs et paramètres
| `id` | chaîne | Identifiant unique du formulaire créé |
| `title` | chaîne | Titre du formulaire |
| `type` | chaîne | Type de formulaire |
| `fields` | tableau | Tableau des champs du formulaire créé |
| `_links` | objet | Liens vers les ressources associées, y compris l'URL publique du formulaire |
| `settings` | objet | Objet de paramètres du formulaire |
| `theme` | objet | Référence du thème |
| `workspace` | objet | Référence de l'espace de travail |
| `fields` | tableau | Tableau des champs du formulaire créés \(vide si aucun n'a été ajouté\) |
| `welcome_screens` | tableau | Tableau des écrans d'accueil \(vide si aucun n'est configuré\) |
| `thankyou_screens` | tableau | Tableau des écrans de remerciement |
| `_links` | objet | Liens vers les ressources associées incluant l'URL publique du formulaire |
### `typeform_update_form`
@@ -182,16 +190,7 @@ Mettre à jour un formulaire existant à l'aide d'opérations JSON Patch
| Paramètre | Type | Description |
| --------- | ---- | ----------- |
| `id` | chaîne | Identifiant unique du formulaire mis à jour |
| `title` | chaîne | Titre du formulaire |
| `type` | chaîne | Type de formulaire |
| `settings` | objet | Paramètres du formulaire |
| `theme` | objet | Référence du thème |
| `workspace` | objet | Référence de l'espace de travail |
| `fields` | tableau | Tableau des champs du formulaire |
| `welcome_screens` | tableau | Tableau des écrans d'accueil |
| `thankyou_screens` | tableau | Tableau des écrans de remerciement |
| `_links` | objet | Liens vers les ressources associées |
| `message` | chaîne | Message de confirmation de succès |
### `typeform_delete_form`

View File

@@ -0,0 +1,63 @@
---
title: キーボードショートカット
description: キーボードショートカットとマウス操作でワークフローキャンバスをマスターしましょう
---
import { Callout } from 'fumadocs-ui/components/callout'
これらのキーボードショートカットとマウス操作でワークフロー構築を高速化できます。すべてのショートカットは、キャンバスにフォーカスがある時に機能します(入力フィールドに入力中は機能しません)。
<Callout type="info">
**Mod**はmacOSでは`Cmd`、Windows/Linuxでは`Ctrl`を指します。
</Callout>
## キャンバス操作
### マウス操作
| 操作 | 操作方法 |
|--------|---------|
| キャンバスの移動 | 空白部分を左ドラッグ |
| キャンバスの移動 | スクロールまたはトラックパッド |
| 複数ブロックの選択 | 右ドラッグで選択ボックスを描画 |
| ブロックのドラッグ | ブロックヘッダーを左ドラッグ |
| 選択に追加 | `Mod` + ブロックをクリック |
### ワークフロー操作
| ショートカット | 操作 |
|----------|--------|
| `Mod` + `Enter` | ワークフローを実行(実行中の場合はキャンセル) |
| `Mod` + `Z` | 元に戻す |
| `Mod` + `Shift` + `Z` | やり直す |
| `Mod` + `C` | 選択したブロックをコピー |
| `Mod` + `V` | ブロックを貼り付け |
| `Delete`または`Backspace` | 選択したブロックまたはエッジを削除 |
| `Shift` + `L` | キャンバスを自動レイアウト |
## パネルナビゲーション
これらのショートカットは、キャンバス右側のパネルタブを切り替えます。
| ショートカット | 操作 |
|----------|--------|
| `C` | Copilotタブにフォーカス |
| `T` | Toolbarタブにフォーカス |
| `E` | Editorタブにフォーカス |
| `Mod` + `F` | Toolbar検索にフォーカス |
## グローバルナビゲーション
| ショートカット | 操作 |
|----------|--------|
| `Mod` + `K` | 検索を開く |
| `Mod` + `Shift` + `A` | 新しいエージェントワークフローを追加 |
| `Mod` + `Y` | テンプレートに移動 |
| `Mod` + `L` | ログに移動 |
## ユーティリティ
| ショートカット | アクション |
|----------|--------|
| `Mod` + `D` | ターミナルコンソールをクリア |
| `Mod` + `E` | 通知をクリア |

View File

@@ -0,0 +1,107 @@
---
title: ワークフローをMCPとしてデプロイ
description: 外部のAIアシスタントやアプリケーション向けに、ワークフローをMCPツールとして公開
---
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
ワークフローをMCPツールとしてデプロイすることで、Claude Desktop、Cursor、その他のMCP互換クライアントなどの外部AIアシスタントからアクセス可能になります。これにより、ワークフローがどこからでも呼び出せる呼び出し可能なツールに変わります。
## MCPサーバーの作成と管理
MCPサーバーは、ワークフローツールをまとめてグループ化します。ワークスペース設定で作成と管理を行います。
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
</div>
1. **設定 → MCPサーバー**に移動
2. **サーバーを作成**をクリック
3. 名前と説明(任意)を入力
4. MCPクライアントで使用するためにサーバーURLをコピー
5. サーバーに追加されたすべてのツールを表示・管理
## ワークフローをツールとして追加
ワークフローがデプロイされたら、MCPツールとして公開できます。
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-deploy-tool.mp4" width={700} height={450} />
</div>
1. デプロイ済みのワークフローを開く
2. **デプロイ**をクリックし、**MCP**タブに移動
3. ツール名と説明を設定
4. 各パラメータの説明を追加(AIが入力を理解するのに役立ちます)
5. 追加先のMCPサーバーを選択
<Callout type="info">
ワークフローをMCPツールとして追加する前に、デプロイしておく必要があります。
</Callout>
## ツールの設定
### ツール名
小文字、数字、アンダースコアを使用します。名前は説明的で、MCPの命名規則に従う必要があります(例: `search_documents`、`send_email`)。
### 説明
ツールが何をするのかを明確に説明します。これにより、AIアシスタントがツールをいつ使用すべきかを理解できます。
### パラメータ
ワークフローの入力形式フィールドがツールパラメータになります。AIアシスタントが正しい値を提供できるよう、各パラメータに説明を追加してください。
## MCPクライアントの接続
設定から取得したサーバーURLを使用して外部アプリケーションを接続します:
### Claude Desktop
Claude Desktopの設定ファイル(`~/Library/Application Support/Claude/claude_desktop_config.json`)に追加してください:
```json
{
"mcpServers": {
"my-sim-workflows": {
"command": "npx",
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
}
}
}
```
### Cursor
同じmcp-remoteパターンを使用して、CursorのMCP設定にサーバーURLを追加してください。
<Callout type="warn">
mcp-remoteまたは他のHTTPベースのMCPトランスポートを使用する際は、認証アクセスのためにAPIキーヘッダー(`X-API-Key`)を含めてください。
</Callout>
## サーバー管理
**設定 → MCPサーバー**のサーバー詳細ビューから、以下の操作が可能です:
- **ツールを表示**: サーバーに追加されたすべてのワークフローを確認
- **URLをコピー**: MCPクライアント用のサーバーURLを取得
- **ワークフローを追加**: デプロイ済みワークフローをツールとして追加
- **ツールを削除**: サーバーからワークフローを削除
- **サーバーを削除**: サーバー全体とすべてのツールを削除
## 仕組み
MCPクライアントがツールを呼び出すと:
1. MCPサーバーURLでリクエストを受信
2. Simがリクエストを検証し、パラメータをワークフロー入力にマッピング
3. 提供された入力でデプロイ済みワークフローを実行
4. 結果をMCPクライアントに返却
ワークフローはAPI呼び出しと同じデプロイバージョンを使用して実行されるため、一貫した動作が保証されます。
## 必要な権限
| アクション | 必要な権限 |
|--------|-------------------|
| MCPサーバーを作成 | **管理者** |
| サーバーにワークフローを追加 | **書き込み**または**管理者** |
| MCPサーバーを表示 | **読み取り**、**書き込み**、または**管理者** |
| MCPサーバーを削除 | **管理者** |

View File

@@ -1,8 +1,10 @@
---
title: MCP(モデルコンテキストプロトコル)
title: MCPツールの使用
description: Model Context Protocolを使用して外部ツールとサービスを接続
---
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
モデルコンテキストプロトコル([MCP](https://modelcontextprotocol.com/)を使用すると、標準化されたプロトコルを使用して外部ツールやサービスを接続し、APIやサービスをワークフローに直接統合することができます。MCPを使用することで、エージェントやワークフローとシームレスに連携するカスタム統合機能を追加して、Simの機能を拡張できます。
@@ -20,14 +22,8 @@ MCPは、AIアシスタントが外部データソースやツールに安全に
MCPサーバーはエージェントが使用できるツールのコレクションを提供します。ワークスペース設定で構成してください
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-1.png"
alt="設定でのMCPサーバーの構成"
width={700}
height={450}
className="my-6"
/>
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/settings-mcp-tools.mp4" width={700} height={450} />
</div>
1. ワークスペース設定に移動します
@@ -40,9 +36,13 @@ MCPサーバーはエージェントが使用できるツールのコレクシ
エージェントブロックのツールバーから直接MCPサーバーを構成することもできますクイックセットアップ
</Callout>
### ツールの更新
サーバーの**更新**をクリックすると、最新のツールスキーマを取得し、それらのツールを使用しているエージェントブロックを新しいパラメータ定義で自動的に更新します。
## エージェントでのMCPツールの使用
MCPサーバーが構成されると、そのツールエージェントブロック内で利用可能になります:
MCPサーバーが設定されると、そのツールエージェントブロック内で利用可能になります:
<div className="flex justify-center">
<Image
@@ -54,14 +54,14 @@ MCPサーバーが構成されると、そのツールはエージェントブ
/>
</div>
1. **エージェント**ブロックを開きます
1. **エージェント**ブロックを開
2. **ツール**セクションで、利用可能なMCPツールが表示されます
3. エージェントに使用させたいツールを選択します
4. これでエージェントは実行中にこれらのツールにアクセスできるようになります
3. エージェントに使用させたいツールを選択
4. エージェントは実行中にこれらのツールにアクセスできるようになります
## スタンドアロンMCPツールブロック
より細かい制御のために、特定のMCPツールを実行するための専用MCPツールブロックを使用できます:
より細かい制御が必要な場合は、専用のMCPツールブロックを使用して特定のMCPツールを実行できます:
<div className="flex justify-center">
<Image
@@ -73,18 +73,18 @@ MCPサーバーが構成されると、そのツールはエージェントブ
/>
</div>
MCPツールブロックでは以下のことが可能です:
- 構成済みのMCPツールを直接実行する
MCPツールブロックではのことができます:
- 設定済みのMCPツールを直接実行
- ツールに特定のパラメータを渡す
- ツールの出力を後続のワークフローステップで使用する
- ツールの出力を後続のワークフローステップで使用
- 複数のMCPツールを連鎖させる
### MCPツールとエージェントの使い分け
**エージェントとMCPツールを使用する場合:**
- AIにどのツールを使用するか決定させたい場合
- ツールをいつどのように使用するかについて複雑な推論が必要な場合
- ツールと自然言語でのやり取りが必要な場合
**MCPツールを使用したエージェントを使用する場合:**
- AIにどのツールを使用するか決定させたい
- ツールをいつどのように使用するかについて複雑な推論が必要
- ツールと自然言語による対話が必要
**MCPツールブロックを使用する場合**
- 決定論的なツール実行が必要な場合
@@ -97,34 +97,34 @@ MCP機能には特定のワークスペース権限が必要です
| アクション | 必要な権限 |
|--------|-------------------|
| 設定でMCPサーバーを構成する | **管理者** |
| エージェントでMCPツールを使用する | **書き込み** または **管理者** |
| 利用可能なMCPツールを表示する | **読み取り**、**書き込み**、または **管理者** |
| MCPツールブロックを実行する | **書き込み** または **管理者** |
| 設定でMCPサーバーを構成 | **管理者** |
| エージェントでMCPツールを使用 | **書き込み**または**管理者** |
| 利用可能なMCPツールを表示 | **読み取り**、**書き込み**、または**管理者** |
| MCPツールブロックを実行 | **書き込み**または**管理者** |
## 一般的なユースケース
## 一般的な使用例
### データベース統合
ワークフロー内でデータのクエリ、挿入、更新を行うためにデータベースに接続します。
データベースに接続して、ワークフロー内でデータのクエリ、挿入、更新を行ます。
### API統合
組み込みのSim統合がない外部APIやWebサービスにアクセスします。
Simに組み込まれていない外部APIやWebサービスにアクセスします。
### ファイルシステムアクセス
ローカルまたはリモートファイルシステム上のファイルの読み取り、書き込み、操作を行います。
ローカルまたはリモートファイルシステム上のファイルの読み取り、書き込み、操作を行います。
### カスタムビジネスロジック
組織のニーズに特化したカスタムスクリプトやツールを実行します。
組織固有のニーズに合わせたカスタムスクリプトやツールを実行します。
### リアルタイムデータアクセス
ワークフロー実行中に外部システムからライブデータを取得します。
## セキュリティに関する考慮事項
- MCPサーバーは構成したユーザーの権限で実行されます
- MCPサーバーは、それを構成したユーザーの権限で実行されます
- インストール前に必ずMCPサーバーのソースを確認してください
- 機密性の高い構成データには環境変数を使用してください
- エージェントにアクセス権を付与する前にMCPサーバーの機能を確認してください
- エージェントにアクセスを許可する前にMCPサーバーの機能を確認してください
## トラブルシューティング
@@ -139,6 +139,6 @@ MCP機能には特定のワークスペース権限が必要です
- 必要な認証が構成されていることを確認してください
### 権限エラー
- ワークスペースの権限レベルを確認する
- MCPサーバーが追加認証を必要としているか確認する
- サーバーがワークスペースに適切に構成されているか確認する
- ワークスペースの権限レベルを確認してください
- MCPサーバーが追加認証を必要としているか確認してください
- サーバーがワークスペースに対して適切に設定されているか確認してください

View File

@@ -146,7 +146,33 @@ Firecrawlを使用してウェブ上の情報を検索します
| `success` | boolean | 抽出操作が成功したかどうか |
| `data` | object | スキーマまたはプロンプトに従って抽出された構造化データ |
## 注意事項
### `firecrawl_agent`
- カテゴリー: `tools`
- タイプ: `firecrawl`
自律型ウェブデータ抽出エージェント。特定のURLを必要とせず、自然言語プロンプトに基づいて情報を検索・収集します。
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `prompt` | string | はい | 抽出するデータの自然言語による説明最大10,000文字 |
| `urls` | json | いいえ | エージェントが焦点を当てるURLの配列オプション |
| `schema` | json | いいえ | 抽出するデータの構造を定義するJSONスキーマ |
| `maxCredits` | number | いいえ | このエージェントタスクに使用する最大クレジット数 |
| `strictConstrainToURLs` | boolean | いいえ | trueの場合、エージェントはurls配列で提供されたURLのみを訪問します |
| `apiKey` | string | はい | Firecrawl APIキー |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | エージェント操作が成功したかどうか |
| `status` | string | エージェントジョブの現在のステータスprocessing、completed、failed |
| `data` | object | エージェントから抽出されたデータ |
| `creditsUsed` | number | このエージェントタスクで消費されたクレジット数 |
| `expiresAt` | string | 結果の有効期限のタイムスタンプ24時間 |
| `sources` | object | エージェントが使用したソースURLの配列 |
## 注記
- カテゴリ:`tools`
- タイプ:`firecrawl`

View File

@@ -0,0 +1,136 @@
---
title: Greptile
description: AI搭載のコードベース検索とQ&A
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="greptile"
color="#e5e5e5"
/>
{/* MANUAL-CONTENT-START:intro */}
[Greptile](https://greptile.com/)は、1つまたは複数のリポジトリにわたってソースコードを検索およびクエリするためのAI搭載開発者ツールです。Greptileを使用すると、エンジニアは自然言語で複雑なコードベースの質問に素早く回答し、関連するファイルやシンボルを見つけ、馴染みのないコードやレガシーコードについての洞察を得ることができます。
Greptileでできること:
- **自然言語でコードベースについて複雑な質問をする**: アーキテクチャ、使用パターン、または特定の実装についてAIが生成した回答を取得します。
- **関連するコード、ファイル、または関数を即座に見つける**: キーワードまたは自然言語クエリを使用して検索し、一致する行、ファイル、またはコードブロックに直接ジャンプします。
- **依存関係と関連性を理解する**: 大規模なコードベース全体で、関数がどこで呼び出されているか、モジュールがどのように関連しているか、またはAPIがどこで使用されているかを明らかにします。
- **オンボーディングとコード探索を加速する**: 深い事前知識がなくても、新しいプロジェクトを素早く立ち上げたり、厄介な問題をデバッグしたりできます。
Sim Greptile統合により、AIエージェントは次のことが可能になります:
- Greptileの高度な言語モデルを使用して、プライベートおよびパブリックリポジトリをクエリおよび検索します。
- コンテキストに関連するコードスニペット、ファイル参照、および説明を取得して、コードレビュー、ドキュメント、および開発ワークフローをサポートします。
- 検索/クエリ結果に基づいてSimワークフローで自動化をトリガーするか、コードインテリジェンスをプロセスに直接埋め込みます。
開発者の生産性を加速したり、ドキュメントを自動化したり、複雑なコードベースに対するチームの理解を強化したりする場合でも、GreptileとSimは、必要な場所でコードインテリジェンスと検索へのシームレスなアクセスを提供します。
{/* MANUAL-CONTENT-END */}
## 使用方法
Greptileを使用して自然言語でコードベースをクエリおよび検索します。コードについてAIが生成した回答を取得し、関連するファイルを見つけ、複雑なコードベースを理解します。
## ツール
### `greptile_query`
自然言語でリポジトリを検索し、関連するコード参照とともに回答を取得します。Greptileは、AIを使用してコードベースを理解し、質問に答えます。
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `query` | string | はい | コードベースに関する自然言語の質問 |
| `repositories` | string | はい | カンマ区切りのリポジトリリスト。形式:「github:branch:owner/repo」または「owner/repo」のみ(デフォルトはgithub:main) |
| `sessionId` | string | いいえ | 会話の継続性を保つためのセッションID |
| `genius` | boolean | いいえ | より徹底的な分析のためのジーニアスモードを有効化(遅いがより正確) |
| `apiKey` | string | はい | Greptile APIキー |
| `githubToken` | string | はい | リポジトリ読み取りアクセス権を持つGitHub個人アクセストークン |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `message` | string | クエリに対するAI生成の回答 |
| `sources` | array | 回答を裏付ける関連コード参照 |
### `greptile_search`
自然言語でリポジトリを検索し、回答を生成せずに関連するコード参照を取得します。特定のコードの場所を見つけるのに便利です。
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `query` | string | はい | 関連するコードを見つけるための自然言語検索クエリ |
| `repositories` | string | はい | カンマ区切りのリポジトリリスト。形式:「github:branch:owner/repo」または「owner/repo」のみ(デフォルトはgithub:main) |
| `sessionId` | string | いいえ | 会話の継続性を保つためのセッションID |
| `genius` | boolean | いいえ | より徹底的な検索のためのジーニアスモードを有効化(遅いがより正確) |
| `apiKey` | string | はい | Greptile APIキー |
| `githubToken` | string | はい | リポジトリ読み取りアクセス権を持つGitHub個人アクセストークン |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `sources` | array | 検索クエリに一致する関連コード参照 |
### `greptile_index_repo`
Greptileでインデックス化するリポジトリを送信します。リポジトリをクエリする前に、インデックス化を完了する必要があります。小規模なリポジトリは3〜5分、大規模なものは1時間以上かかる場合があります。
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `remote` | string | はい | Gitリモートタイプ: githubまたはgitlab |
| `repository` | string | はい | owner/repo形式のリポジトリ例:「facebook/react」 |
| `branch` | string | はい | インデックス化するブランチ(例:「main」または「master」 |
| `reload` | boolean | いいえ | すでにインデックス化されている場合でも強制的に再インデックス化 |
| `notify` | boolean | いいえ | インデックス化完了時にメール通知を送信 |
| `apiKey` | string | はい | Greptile APIキー |
| `githubToken` | string | はい | リポジトリ読み取りアクセス権を持つGitHub Personal Access Token |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `repositoryId` | string | インデックス化されたリポジトリの一意の識別子(形式: remote:branch:owner/repo |
| `statusEndpoint` | string | インデックス化ステータスを確認するためのURLエンドポイント |
| `message` | string | インデックス化操作に関するステータスメッセージ |
### `greptile_status`
リポジトリのインデックス化ステータスを確認します。リポジトリがクエリ可能な状態かどうかを確認したり、インデックス化の進行状況を監視したりするために使用します。
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `remote` | string | はい | Gitリモートタイプ: githubまたはgitlab |
| `repository` | string | はい | owner/repo形式のリポジトリ \(例: "facebook/react"\) |
| `branch` | string | はい | ブランチ名 \(例: "main"または"master"\) |
| `apiKey` | string | はい | Greptile APIキー |
| `githubToken` | string | はい | リポジトリ読み取りアクセス権を持つGitHub Personal Access Token |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `repository` | string | リポジトリ名 \(owner/repo\) |
| `remote` | string | Gitリモート \(github/gitlab\) |
| `branch` | string | ブランチ名 |
| `private` | boolean | リポジトリがプライベートかどうか |
| `status` | string | インデックス作成ステータス: submitted、cloning、processing、completed、またはfailed |
| `filesProcessed` | number | これまでに処理されたファイル数 |
| `numFiles` | number | リポジトリ内のファイルの総数 |
| `sampleQuestions` | array | インデックス化されたリポジトリのサンプル質問 |
| `sha` | string | インデックス化されたバージョンのGitコミットSHA |
## 注記
- カテゴリ: `tools`
- タイプ: `greptile`

View File

@@ -0,0 +1,35 @@
---
title: IMAPメール
description: IMAP経由で新しいメールが届いたときにワークフローをトリガーすべてのメールプロバイダーで動作
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="imap"
color="#6366F1"
/>
{/* MANUAL-CONTENT-START:intro */}
IMAPメールトリガーを使用すると、IMAPプロトコルをサポートする任意のメールボックスで新しいメールを受信したときに、Simワークフローを自動的に開始できます。Gmail、Outlook、Yahoo、その他ほとんどのメールプロバイダーで動作します。
IMAPトリガーでできること
- **メール処理の自動化**:受信トレイに新しいメッセージが届いたときにリアルタイムでワークフローを開始します。
- **送信者、件名、フォルダーでフィルタリング**:特定の条件に一致するメールにのみ反応するようにトリガーを設定します。
- **添付ファイルの抽出と処理**:自動化フローでファイル添付を自動的にダウンロードして使用します。
- **メールコンテンツの解析と使用**:件名、送信者、受信者、本文全体、その他のメタデータに、ワークフローの後続ステップでアクセスします。
- **あらゆるメールプロバイダーとの統合**ベンダーロックインなしで、標準のIMAPアクセスを提供する任意のサービスで動作します。
- **未読、フラグ付き、カスタム条件でトリガー**:ワークフローを開始するメールの種類に対して高度なフィルターを設定します。
Simを使用すると、IMAP統合により、メールを実行可能な自動化ソースに変える力が得られます。顧客からの問い合わせへの対応、通知の処理、データパイプラインの開始など、手動操作なしで、メール受信トレイから直接実行できます。
{/* MANUAL-CONTENT-END */}
## 使用方法
IMAPプロトコル経由で任意のメールサーバーに接続し、新しいメールを受信したときにワークフローをトリガーします。Gmail、Outlook、Yahoo、その他のIMAP互換メールプロバイダーをサポートします。
## 注意事項
- カテゴリ: `triggers`
- タイプ: `imap`

View File

@@ -55,8 +55,7 @@ Intercomをワークフローに統合します。連絡先の作成、取得、
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作の成功ステータス |
| `output` | object | 作成された連絡先データ |
| `contact` | object | 作成された連絡先オブジェクト |
### `intercom_get_contact`
@@ -72,8 +71,7 @@ IDからIntercomの単一の連絡先を取得する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 連絡先データ |
| `contact` | object | 連絡先オブジェクト |
### `intercom_update_contact`
@@ -101,8 +99,7 @@ Intercomの既存の連絡先を更新する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 更新された連絡先データ |
| `contact` | object | 更新された連絡先オブジェクト |
### `intercom_list_contacts`
@@ -119,8 +116,7 @@ Intercomの既存の連絡先を更新する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 連絡先リスト |
| `contacts` | array | 連絡先オブジェクトの配列 |
### `intercom_search_contacts`
@@ -140,8 +136,7 @@ Intercomの既存の連絡先を更新する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 検索結果 |
| `contacts` | array | 一致する連絡先オブジェクトの配列 |
### `intercom_delete_contact`
@@ -157,8 +152,9 @@ IDでIntercomから連絡先を削除する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 削除結果 |
| `id` | string | 削除された連絡先のID |
| `deleted` | boolean | 連絡先が削除されたかどうか |
| `metadata` | object | 操作メタデータ |
### `intercom_create_company`
@@ -182,8 +178,7 @@ Intercomで企業を作成または更新する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作の成功ステータス |
| `output` | object | 作成または更新された企業データ |
| `company` | object | 作成または更新された企業オブジェクト |
### `intercom_get_company`
@@ -199,8 +194,7 @@ IDによってIntercomから単一の企業を取得する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作の成功ステータス |
| `output` | object | 企業データ |
| `company` | object | 企業オブジェクト |
### `intercom_list_companies`
@@ -218,8 +212,7 @@ IDによってIntercomから単一の企業を取得する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 企業のリスト |
| `companies` | array | 企業オブジェクトの配列 |
### `intercom_get_conversation`
@@ -237,8 +230,7 @@ IDによりIntercomから単一の会話を取得
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 会話データ |
| `conversation` | object | 会話オブジェクト |
### `intercom_list_conversations`
@@ -257,8 +249,7 @@ IDによりIntercomから単一の会話を取得
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 会話のリスト |
| `conversations` | array | 会話オブジェクトの配列 |
### `intercom_reply_conversation`
@@ -279,8 +270,7 @@ IDによりIntercomから単一の会話を取得
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 返信を含む更新された会話 |
| `conversation` | object | 更新された会話オブジェクト |
### `intercom_search_conversations`
@@ -300,8 +290,7 @@ IDによりIntercomから単一の会話を取得
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | 検索結果 |
| `conversations` | array | 一致する会話オブジェクトの配列 |
### `intercom_create_ticket`
@@ -323,8 +312,7 @@ Intercomで新しいチケットを作成する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 作成功ステータス |
| `output` | object | 作成されたチケットデータ |
| `ticket` | object | 作成されたチケットオブジェクト |
### `intercom_get_ticket`
@@ -340,8 +328,7 @@ IDによりIntercomから単一のチケットを取得する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功ステータス |
| `output` | object | チケットデータ |
| `ticket` | object | チケットオブジェクト |
### `intercom_create_message`
@@ -365,8 +352,7 @@ Intercomで管理者が開始した新しいメッセージを作成して送信
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `success` | boolean | 作成功ステータス |
| `output` | object | 作成されたメッセージデータ |
| `message` | object | 作成されたメッセージオブジェクト |
## メモ

View File

@@ -0,0 +1,486 @@
---
title: Jira Service Management
description: Jira Service Managementと連携する
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="jira_service_management"
color="#E0E0E0"
/>
## 使用方法
ITサービス管理のためにJira Service Managementと統合します。サービスリクエストの作成と管理、顧客と組織の処理、SLAの追跡、キューの管理を行います。
## ツール
### `jsm_get_service_desks`
Jira Service Managementからすべてのサービスデスクを取得する
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `start` | number | いいえ | ページネーションの開始インデックスデフォルト0 |
| `limit` | number | いいえ | 返す最大結果数デフォルト50 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `serviceDesks` | json | サービスデスクの配列 |
| `total` | number | サービスデスクの総数 |
| `isLastPage` | boolean | これが最後のページかどうか |
### `jsm_get_request_types`
Jira Service Managementのサービスデスクのリクエストタイプを取得する
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `serviceDeskId` | string | はい | リクエストタイプを取得するサービスデスクID |
| `start` | number | いいえ | ページネーションの開始インデックスデフォルト0 |
| `limit` | number | いいえ | 返す最大結果数デフォルト50 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `requestTypes` | json | リクエストタイプの配列 |
| `total` | number | リクエストタイプの総数 |
| `isLastPage` | boolean | これが最後のページかどうか |
### `jsm_create_request`
Jira Service Managementで新しいサービスリクエストを作成
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `serviceDeskId` | string | はい | リクエストを作成するサービスデスクID |
| `requestTypeId` | string | はい | 新しいリクエストのリクエストタイプID |
| `summary` | string | はい | サービスリクエストの概要/タイトル |
| `description` | string | いいえ | サービスリクエストの説明 |
| `raiseOnBehalfOf` | string | いいえ | 代理でリクエストを作成する顧客のアカウントID |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueId` | string | 作成されたリクエストの課題ID |
| `issueKey` | string | 作成されたリクエストの課題キーSD-123 |
| `requestTypeId` | string | リクエストタイプID |
| `serviceDeskId` | string | サービスデスクID |
| `success` | boolean | リクエストが正常に作成されたかどうか |
| `url` | string | 作成されたリクエストのURL |
### `jsm_get_request`
Jira Service Managementから単一のサービスリクエストを取得
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキーSD-123 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
### `jsm_get_requests`
Jira Service Managementから複数のサービスリクエストを取得
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `serviceDeskId` | string | いいえ | サービスデスクIDでフィルタ |
| `requestOwnership` | string | いいえ | 所有権でフィルタOWNED_REQUESTS、PARTICIPATED_REQUESTS、ORGANIZATION、ALL_REQUESTS |
| `requestStatus` | string | いいえ | ステータスでフィルタOPEN、CLOSED、ALL |
| `searchTerm` | string | いいえ | リクエストをフィルタする検索語 |
| `start` | number | いいえ | ページネーションの開始インデックスデフォルト0 |
| `limit` | number | いいえ | 返す最大結果数デフォルト50 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `requests` | json | サービスリクエストの配列 |
| `total` | number | リクエストの総数 |
| `isLastPage` | boolean | これが最後のページかどうか |
### `jsm_add_comment`
Jira Service Managementのサービスリクエストにコメント公開または内部を追加する
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキーSD-123 |
| `body` | string | はい | コメント本文 |
| `isPublic` | boolean | はい | コメントが公開(顧客に表示)か内部かを指定 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueIdOrKey` | string | 課題IDまたはキー |
| `commentId` | string | 作成されたコメントID |
| `body` | string | コメント本文 |
| `isPublic` | boolean | コメントが公開かどうか |
| `success` | boolean | コメントが正常に追加されたかどうか |
### `jsm_get_comments`
Jira Service Managementのサービスリクエストのコメントを取得する
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキーSD-123 |
| `isPublic` | boolean | いいえ | 公開コメントのみにフィルタ |
| `internal` | boolean | いいえ | 内部コメントのみにフィルタ |
| `start` | number | いいえ | ページネーションの開始インデックスデフォルト0 |
| `limit` | number | いいえ | 返す最大結果数デフォルト50 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueIdOrKey` | string | 課題IDまたはキー |
| `comments` | json | コメントの配列 |
| `total` | number | コメントの総数 |
| `isLastPage` | boolean | 最後のページかどうか |
### `jsm_get_customers`
Jira Service Managementのサービスデスクの顧客を取得
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメイン例: yourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `serviceDeskId` | string | はい | 顧客を取得するサービスデスクID |
| `query` | string | いいえ | 顧客をフィルタリングする検索クエリ |
| `start` | number | いいえ | ページネーションの開始インデックス(デフォルト: 0 |
| `limit` | number | いいえ | 返す最大結果数(デフォルト: 50 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `customers` | json | 顧客の配列 |
| `total` | number | 顧客の総数 |
| `isLastPage` | boolean | 最後のページかどうか |
### `jsm_add_customer`
Jira Service Managementのサービスデスクに顧客を追加
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `serviceDeskId` | string | はい | 顧客を追加するサービスデスクID |
| `emails` | string | はい | 顧客として追加するメールアドレス(カンマ区切り) |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `serviceDeskId` | string | サービスデスクID |
| `success` | boolean | 顧客が正常に追加されたかどうか |
### `jsm_get_organizations`
Jira Service Managementのサービスデスクの組織を取得
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `serviceDeskId` | string | はい | 組織を取得するサービスデスクID |
| `start` | number | いいえ | ページネーションの開始インデックスデフォルト0 |
| `limit` | number | いいえ | 返す最大結果数デフォルト50 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `organizations` | json | 組織の配列 |
| `total` | number | 組織の総数 |
| `isLastPage` | boolean | これが最後のページかどうか |
### `jsm_create_organization`
Jira Service Managementで新しい組織を作成する
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメイン例: yourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `name` | string | はい | 作成する組織の名前 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `organizationId` | string | 作成された組織のID |
| `name` | string | 作成された組織の名前 |
| `success` | boolean | 操作が成功したかどうか |
### `jsm_add_organization`
Jira Service Managementのサービスデスクに組織を追加する
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメイン例: yourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `serviceDeskId` | string | はい | 組織を追加するサービスデスクID |
| `organizationId` | string | はい | サービスデスクに追加する組織ID |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `serviceDeskId` | string | サービスデスクID |
| `organizationId` | string | 追加された組織ID |
| `success` | boolean | 操作が成功したかどうか |
### `jsm_get_queues`
Jira Service Managementでサービスデスクのキューを取得
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `serviceDeskId` | string | はい | キューを取得するサービスデスクID |
| `includeCount` | boolean | いいえ | 各キューの課題数を含める |
| `start` | number | いいえ | ページネーションの開始インデックスデフォルト0 |
| `limit` | number | いいえ | 返す最大結果数デフォルト50 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `queues` | json | キューの配列 |
| `total` | number | キューの総数 |
| `isLastPage` | boolean | これが最後のページかどうか |
### `jsm_get_sla`
Jira Service ManagementでサービスリクエストのSLA情報を取得
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキーSD-123 |
| `start` | number | いいえ | ページネーションの開始インデックスデフォルト0 |
| `limit` | number | いいえ | 返す最大結果数デフォルト50 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueIdOrKey` | string | 課題IDまたはキー |
| `slas` | json | SLA情報の配列 |
| `total` | number | SLAの総数 |
| `isLastPage` | boolean | 最後のページかどうか |
### `jsm_get_transitions`
Jira Service Managementのサービスリクエストで利用可能なトランジションを取得
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメイン(例: yourcompany.atlassian.net) |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキー(例: SD-123) |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueIdOrKey` | string | 課題IDまたはキー |
| `transitions` | json | 利用可能なトランジションの配列 |
### `jsm_transition_request`
Jira Service Managementでサービスリクエストを新しいステータスにトランジション
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメイン(例: yourcompany.atlassian.net) |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキー(例: SD-123) |
| `transitionId` | string | はい | 適用するトランジションID |
| `comment` | string | いいえ | トランジション時に追加するオプションのコメント |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueIdOrKey` | string | 課題IDまたはキー |
| `transitionId` | string | 適用されたトランジションID |
| `success` | boolean | トランジションが成功したかどうか |
### `jsm_get_participants`
Jira Service Managementのリクエストの参加者を取得
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメイン(例: yourcompany.atlassian.net) |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキー(例: SD-123) |
| `start` | number | いいえ | ページネーションの開始インデックス(デフォルト: 0) |
| `limit` | number | いいえ | 返す最大結果数(デフォルト: 50) |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueIdOrKey` | string | 課題IDまたはキー |
| `participants` | json | 参加者の配列 |
| `total` | number | 参加者の総数 |
| `isLastPage` | boolean | これが最後のページかどうか |
### `jsm_add_participants`
Jira Service Managementのリクエストに参加者を追加
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメイン(例: yourcompany.atlassian.net) |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキー(例: SD-123) |
| `accountIds` | string | はい | 参加者として追加するアカウントIDのカンマ区切りリスト |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueIdOrKey` | string | 課題IDまたはキー |
| `participants` | json | 追加された参加者の配列 |
| `success` | boolean | 操作が成功したかどうか |
### `jsm_get_approvals`
Jira Service Managementでリクエストの承認を取得
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキーSD-123 |
| `start` | number | いいえ | ページネーションの開始インデックスデフォルト0 |
| `limit` | number | いいえ | 返す最大結果数デフォルト50 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueIdOrKey` | string | 課題IDまたはキー |
| `approvals` | json | 承認の配列 |
| `total` | number | 承認の総数 |
| `isLastPage` | boolean | これが最後のページかどうか |
### `jsm_answer_approval`
Jira Service Managementで承認リクエストを承認または却下
#### 入力
| パラメータ | 型 | 必須 | 説明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | はい | Jiraドメインyourcompany.atlassian.net |
| `cloudId` | string | いいえ | インスタンスのJira Cloud ID |
| `issueIdOrKey` | string | はい | 課題IDまたはキーSD-123 |
| `approvalId` | string | はい | 回答する承認ID |
| `decision` | string | はい | 決定「approve」または「decline」 |
#### 出力
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作のタイムスタンプ |
| `issueIdOrKey` | string | 課題IDまたはキー |
| `approvalId` | string | 承認ID |
| `decision` | string | 決定内容(承認/却下) |
| `success` | boolean | 操作が成功したかどうか |
## 注意事項
- カテゴリ: `tools`
- タイプ: `jira_service_management`

View File

@@ -71,7 +71,6 @@ Pineconeインデックスにテキストレコードを挿入または更新す
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `statusText` | string | アップサート操作のステータス |
| `upsertedCount` | number | 正常にアップサートされたレコードの数 |
### `pinecone_search_text`

View File

@@ -266,10 +266,11 @@ Supabaseストレージバケットにファイルをアップロードする
| --------- | ---- | -------- | ----------- |
| `projectId` | string | はい | あなたのSupabaseプロジェクトIDjdrkgepadsdopsntdlom |
| `bucket` | string | はい | ストレージバケットの名前 |
| `path` | string | はい | ファイルが保存されるパス(例:"folder/file.jpg" |
| `fileName` | string | はい | ファイルの名前(例:"document.pdf"、"image.jpg" |
| `path` | string | いいえ | オプションのフォルダパス(例:"folder/subfolder/" |
| `fileContent` | string | はい | ファイルの内容バイナリファイルの場合はbase64エンコード、またはプレーンテキスト |
| `contentType` | string | いいえ | ファイルのMIMEタイプ"image/jpeg"、"text/plain" |
| `upsert` | boolean | いいえ | trueの場合、既存のファイルを上書きするデフォルトfalse |
| `upsert` | boolean | いいえ | trueの場合、既存のファイルを上書きデフォルトfalse |
| `apiKey` | string | はい | あなたのSupabaseサービスロールシークレットキー |
#### 出力

View File

@@ -129,15 +129,18 @@ Typeformアカウント内のすべてのフォームのリストを取得する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `id` | string | フォームの一意識別子 |
| `id` | string | フォームの一意識別子 |
| `title` | string | フォームのタイトル |
| `type` | string | フォームのタイプform、quizなど |
| `settings` | object | 言語、プログレスバーなどを含むフォーム設定 |
| `theme` | object | テーマ参照 |
| `workspace` | object | ワークスペース参照 |
| `fields` | array | フォームフィールド/質問の配列 |
| `welcome_screens` | array | ウェルカム画面の配列 |
| `welcome_screens` | array | ウェルカム画面の配列(設定されていない場合は空) |
| `thankyou_screens` | array | サンキュー画面の配列 |
| `created_at` | string | フォーム作成タイムスタンプISO 8601形式 |
| `last_updated_at` | string | フォーム最終更新タイムスタンプISO 8601形式 |
| `published_at` | string | フォーム公開タイムスタンプISO 8601形式 |
| `_links` | object | 公開フォームURLを含む関連リソースリンク |
### `typeform_create_form`
@@ -160,10 +163,15 @@ Typeformアカウント内のすべてのフォームのリストを取得する
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `id` | string | 作成されたフォームの一意識別子 |
| `id` | string | 作成されたフォームの一意識別子 |
| `title` | string | フォームのタイトル |
| `type` | string | フォームのタイプ |
| `fields` | array | 作成されたフォームフィールドの配列 |
| `settings` | object | フォーム設定オブジェクト |
| `theme` | object | テーマ参照 |
| `workspace` | object | ワークスペース参照 |
| `fields` | array | 作成されたフォームフィールドの配列(追加されていない場合は空) |
| `welcome_screens` | array | ウェルカム画面の配列(設定されていない場合は空) |
| `thankyou_screens` | array | サンキュー画面の配列 |
| `_links` | object | 公開フォームURLを含む関連リソースリンク |
### `typeform_update_form`
@@ -182,16 +190,7 @@ JSON Patchオペレーションを使用して既存のフォームを更新す
| パラメータ | 型 | 説明 |
| --------- | ---- | ----------- |
| `id` | string | 更新されたフォームの一意の識別子 |
| `title` | string | フォームのタイトル |
| `type` | string | フォームのタイプ |
| `settings` | object | フォーム設定 |
| `theme` | object | テーマ参照 |
| `workspace` | object | ワークスペース参照 |
| `fields` | array | フォームフィールドの配列 |
| `welcome_screens` | array | ウェルカム画面の配列 |
| `thankyou_screens` | array | サンクスページの配列 |
| `_links` | object | 関連リソースリンク |
| `message` | string | 成功確認メッセージ |
### `typeform_delete_form`

View File

@@ -0,0 +1,63 @@
---
title: 键盘快捷键
description: 通过键盘快捷键和鼠标操作,掌控工作流画布
---
import { Callout } from 'fumadocs-ui/components/callout'
使用这些键盘快捷键和鼠标操作,可以加快你的工作流构建速度。所有快捷键仅在画布聚焦时有效(在输入框中输入时无效)。
<Callout type="info">
**Mod** 指的是在 macOS 上为 `Cmd`,在 Windows/Linux 上为 `Ctrl`。
</Callout>
## 画布操作
### 鼠标操作
| 操作 | 控制方式 |
|--------|---------|
| 平移/移动画布 | 在空白处左键拖动 |
| 平移/移动画布 | 滚轮或触控板 |
| 多选区块 | 右键拖动绘制选择框 |
| 拖动区块 | 在区块标题处左键拖动 |
| 添加到选择 | `Mod` + 点击区块 |
### 工作流操作
| 快捷键 | 操作 |
|----------|--------|
| `Mod` + `Enter` | 运行工作流(如正在运行则取消) |
| `Mod` + `Z` | 撤销 |
| `Mod` + `Shift` + `Z` | 重做 |
| `Mod` + `C` | 复制所选区块 |
| `Mod` + `V` | 粘贴区块 |
| `Delete` 或 `Backspace` | 删除所选区块或连线 |
| `Shift` + `L` | 自动布局画布 |
## 面板导航
这些快捷键可在画布右侧的面板标签页之间切换。
| 快捷键 | 操作 |
|----------|--------|
| `C` | 聚焦 Copilot 标签页 |
| `T` | 聚焦 Toolbar 标签页 |
| `E` | 聚焦 Editor 标签页 |
| `Mod` + `F` | 聚焦 Toolbar 搜索 |
## 全局导航
| 快捷键 | 操作 |
|----------|--------|
| `Mod` + `K` | 打开搜索 |
| `Mod` + `Shift` + `A` | 新建 Agent 工作流 |
| `Mod` + `Y` | 跳转到模板 |
| `Mod` + `L` | 跳转到日志 |
## 实用工具
| 快捷键 | 操作 |
|----------|--------|
| `Mod` + `D` | 清除终端控制台 |
| `Mod` + `E` | 清除通知 |

View File

@@ -0,0 +1,107 @@
---
title: 将工作流部署为 MCP
description: 将您的工作流公开为 MCP 工具,供外部 AI 助手和应用程序使用
---
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
将您的工作流部署为 MCP 工具,使其可供外部 AI 助手(如 Claude Desktop、Cursor 以及其他兼容 MCP 的客户端)访问。这会让您的工作流变成可随时调用的工具。
## 创建和管理 MCP 服务器
MCP 服务器用于将您的工作流工具进行分组。您可以在工作区设置中创建和管理这些服务器:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
</div>
1. 进入 **设置 → MCP 服务器**
2. 点击 **创建服务器**
3. 输入名称和可选描述
4. 复制服务器 URL 以在您的 MCP 客户端中使用
5. 查看并管理已添加到服务器的所有工具
## 添加工作流为工具
当您的工作流部署完成后,可以将其公开为 MCP 工具:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/mcp-deploy-tool.mp4" width={700} height={450} />
</div>
1. 打开已部署的工作流
2. 点击 **部署** 并进入 **MCP** 标签页
3. 配置工具名称和描述
4. 为每个参数添加描述(帮助 AI 理解输入)
5. 选择要添加到的 MCP 服务器
<Callout type="info">
工作流必须先部署,才能添加为 MCP 工具。
</Callout>
## 工具配置
### 工具名称
请使用小写字母、数字和下划线。名称应具有描述性,并遵循 MCP 命名规范(如 `search_documents`、`send_email`)。
### 描述
请清晰描述该工具的功能。这有助于 AI 助手理解何时使用该工具。
### 参数
您的工作流输入格式字段会变成工具参数。为每个参数添加描述,有助于 AI 助手提供正确的值。
## 连接 MCP 客户端
使用设置中的服务器 URL 连接外部应用程序:
### Claude Desktop
将以下内容添加到您的 Claude Desktop 配置中(`~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"my-sim-workflows": {
"command": "npx",
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
}
}
}
```
### Cursor
在 Cursor 的 MCP 设置中,使用相同的 mcp-remote 格式添加服务器 URL。
<Callout type="warn">
使用 mcp-remote 或其他基于 HTTP 的 MCP 传输方式时,请包含 API key header`X-API-Key`)以进行身份验证访问。
</Callout>
## 服务器管理
在 **设置 → MCP 服务器** 的服务器详情视图中,您可以:
- **查看工具**:查看添加到服务器的所有工作流
- **复制 URL**:获取 MCP 客户端的服务器 URL
- **添加工作流**:将更多已部署的工作流添加为工具
- **移除工具**:从服务器中移除工作流
- **删除服务器**:移除整个服务器及其所有工具
## 工作原理
当 MCP 客户端调用您的工具时:
1. 请求会发送到您的 MCP 服务器 URL
2. Sim 验证请求并将参数映射到工作流输入
3. 已部署的工作流会使用提供的输入执行
4. 结果返回给 MCP 客户端
工作流执行时使用与 API 调用相同的部署版本,确保行为一致。
## 权限要求
| 操作 | 所需权限 |
|--------|-------------------|
| 创建 MCP 服务器 | **Admin** |
| 向服务器添加工作流 | **Write** 或 **Admin** |
| 查看 MCP 服务器 | **Read**、**Write** 或 **Admin** |
| 删除 MCP 服务器 | **Admin** |

View File

@@ -1,8 +1,10 @@
---
title: MCP模型上下文协议
title: 使用 MCP 工具
description: 通过 Model Context Protocol 连接外部工具和服务
---
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
模型上下文协议([MCP](https://modelcontextprotocol.com/))允许您使用标准化协议连接外部工具和服务,从而将 API 和服务直接集成到您的工作流程中。通过 MCP您可以通过添加自定义集成来扩展 Sim 的功能,使其与您的代理和工作流程无缝协作。
@@ -20,14 +22,8 @@ MCP 是一项开放标准,使 AI 助手能够安全地连接到外部数据源
MCP 服务器提供工具集合,供您的代理使用。您可以在工作区设置中进行配置:
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-1.png"
alt="在设置中配置 MCP 服务器"
width={700}
height={450}
className="my-6"
/>
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp/settings-mcp-tools.mp4" width={700} height={450} />
</div>
1. 进入您的工作区设置
@@ -40,56 +36,60 @@ MCP 服务器提供工具集合,供您的代理使用。您可以在工作区
您还可以直接从代理模块的工具栏中配置 MCP 服务器,以便快速设置。
</Callout>
## 在代理中使用 MCP 工具
### 刷新工具
一旦配置了 MCP 服务器,其工具将在您的代理模块中可用:
点击服务器上的 **刷新**,即可获取最新的工具 schema并自动用新的参数定义更新所有使用这些工具的 agent 模块。
## 在 Agent 中使用 MCP 工具
配置好 MCP 服务器后,其工具会在你的 agent 模块中可用:
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-2.png"
alt="在代理模块中使用 MCP 工具"
alt="在 Agent 模块中使用 MCP 工具"
width={700}
height={450}
className="my-6"
/>
</div>
1. 打开一个 **代理** 模块
2. 在 **工具** 部分,您将看到可用的 MCP 工具
3. 选择希望代理使用的工具
4. 代理现在可以在执行过程中访问这些工具
1. 打开一个 **Agent** 模块
2. 在 **工具** 部分,你会看到可用的 MCP 工具
3. 选择希望 agent 使用的工具
4. agent 在执行时即可访问这些工具
## 独立 MCP 工具模块
## 独立 MCP 工具模块
为了更精细的控制,可以使用专用的 MCP 工具模块来执行特定的 MCP 工具:
如需更细致的控制,可以使用专用的 MCP 工具模块来执行特定的 MCP 工具:
<div className="flex justify-center">
<Image
src="/static/blocks/mcp-3.png"
alt="独立 MCP 工具模块"
alt="独立 MCP 工具模块"
width={700}
height={450}
className="my-6"
/>
</div>
MCP 工具模块允许您
- 直接执行任已配置的 MCP 工具
MCP 工具模块可以让你
- 直接执行任已配置的 MCP 工具
- 向工具传递特定参数
- 在后续工作流步骤中使用工具输出
- 多个 MCP 工具串联在一起
- 在后续工作流步骤中使用工具输出
- 串联多个 MCP 工具
### 何时使用 MCP 工具与代理
### 何时使用 MCP 工具模块与 Agent
**在以下情况下使用带有 MCP 工具的代理**
- 希望 AI 决定使用哪些工具
- 需要复杂推理来决定何时及如何使用工具
- 希望与工具进行自然语言交互
**当你需要以下场景时,使用 Agent 搭配 MCP 工具:**
- 希望 AI 决定使用哪些工具
- 需要复杂推理来判断何时及如何使用工具
- 希望通过自然语言与工具交互
**在以下情况下使用 MCP 工具块:**
- 需要确定性的工具执行
- 您希望使用已知参数执行特定工具
- 正在构建具有可预测步骤的结构化工作流
- 需要确定性的工具执行
- 你想用已知参数执行特定工具
- 正在构建具有可预测步骤的结构化工作流
## 权限要求
@@ -97,48 +97,48 @@ MCP 功能需要特定的工作区权限:
| 操作 | 所需权限 |
|--------|-------------------|
| 在设置中配置 MCP 服务器 | **管理员** |
| 在代理中使用 MCP 工具 | **写入** 或 **管理员** |
| 查看可用的 MCP 工具 | **读取**、**写入** 或 **管理员** |
| 执行 MCP 工具块 | **写入** 或 **管理员** |
| 在设置中配置 MCP 服务器 | **Admin** |
| 在代理中使用 MCP 工具 | **Write** 或 **Admin** |
| 查看可用的 MCP 工具 | **Read**、**Write** 或 **Admin** |
| 执行 MCP 工具块 | **Write** 或 **Admin** |
## 常见使用场景
## 常见用例
### 数据库集成
连接数据库以在工作流中查询、插入或更新数据。
在你的工作流中连接数据库以查询、插入或更新数据。
### API 集成
访问没有内置 Sim 集成的外部 API 和 Web 服务。
### 文件系统访问
读取、写入和操作本地或远程文件系统上文件。
本地或远程文件系统上读取、写入和操作文件。
### 自定义业务逻辑
执行特定于您组织需求的自定义脚本或工具。
执行针对你组织需求的自定义脚本或工具。
### 实时数据访问
在工作流执行期间从外部系统获取实时数据。
## 安全注意事项
- MCP 服务器以配置它的用户权限运行
- 安装前始终验证 MCP 服务器来源
- 对敏感配置数据,请使用环境变量
- 在授予代理访问权限前,审查 MCP 服务器功能
- MCP 服务器以配置它的用户权限运行
- 安装前务必验证 MCP 服务器来源
- 对敏感配置信息使用环境变量
- 在授予代理访问权限前,审查 MCP 服务器功能
## 故障排
## 故障排
### MCP 服务器未显示
- 验证服务器配置是否正确
- 检查是否有所需权限
- 检查是否有所需权限
- 确保 MCP 服务器正在运行且可访问
### 工具执行失败
- 验证工具参数格式是否正确
- 检查 MCP 服务器日志中的错误
- 检查 MCP 服务器日志中的错误
- 确保已配置所需的身份验证
### 权限错误
- 确认的工作区权限级别
- 检查 MCP 服务器是否需要额外的身份验
- 验证服务器是否已为的工作区正确配置
- 确认的工作区权限级别
- 检查 MCP 服务器是否需要额外
- 验证服务器是否已为的工作区正确配置

View File

@@ -146,7 +146,33 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| `success` | boolean | 提取操作是否成功 |
| `data` | object | 根据模式或提示提取的结构化数据 |
## 注意
### `firecrawl_agent`
- 类别:`tools`
自主网页数据提取代理。根据自然语言提示进行搜索和信息收集,无需指定具体 URL。
#### 输入
| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `prompt` | string | 是 | 要提取数据的自然语言描述(最多 10,000 个字符) |
| `urls` | json | 否 | 可选的 URL 数组,用于聚焦代理任务 |
| `schema` | json | 否 | 定义要提取数据结构的 JSON 架构 |
| `maxCredits` | number | 否 | 此代理任务可消耗的最大积分数 |
| `strictConstrainToURLs` | boolean | 否 | 若为 true代理仅访问 urls 数组中提供的 URL |
| `apiKey` | string | 是 | Firecrawl API 密钥 |
#### 输出
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 代理操作是否成功 |
| `status` | string | 代理任务的当前状态processing、completed、failed |
| `data` | object | 代理提取的数据 |
| `creditsUsed` | number | 此代理任务消耗的积分数 |
| `expiresAt` | string | 结果过期的时间戳24 小时) |
| `sources` | object | 代理使用的来源 URL 数组 |
## 说明
- 分类:`tools`
- 类型:`firecrawl`

View File

@@ -0,0 +1,136 @@
---
title: Greptile
description: AI 驱动的代码库搜索与问答
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="greptile"
color="#e5e5e5"
/>
{/* MANUAL-CONTENT-START:intro */}
[Greptile](https://greptile.com/) 是一款 AI 驱动的开发者工具可用于在一个或多个代码仓库中搜索和查询源代码。Greptile 让工程师能够用自然语言快速解答复杂的代码库问题,定位相关文件或符号,并深入了解陌生或遗留代码。
使用 Greptile您可以
- **用自然语言就代码库提出复杂问题**:获取关于架构、使用模式或具体实现的 AI 生成答案。
- **即时查找相关代码、文件或函数**:通过关键词或自然语言查询搜索,直接跳转到匹配的行、文件或代码块。
- **理解依赖关系和关联**:发现函数被调用的位置、模块之间的关系,或 API 在大型代码库中的使用情况。
- **加速入职和代码探索**:快速上手新项目,或在无需深厚背景知识的情况下排查棘手问题。
Sim Greptile 集成让您的 AI 代理能够:
- 利用 Greptile 的先进语言模型查询和搜索私有及公共仓库。
- 获取与上下文相关的代码片段、文件引用和解释,支持代码评审、文档编写和开发流程。
- 根据搜索/查询结果在 Sim 工作流中触发自动化,或将代码智能直接嵌入您的流程。
无论您是想提升开发效率、自动化文档还是增强团队对复杂代码库的理解Greptile 与 Sim 都能为您无缝提供代码智能与搜索服务——就在您需要的地方。
{/* MANUAL-CONTENT-END */}
## 使用说明
使用 Greptile 通过自然语言查询和搜索代码库。获取 AI 生成的代码解答,查找相关文件,理解复杂代码库。
## 工具
### `greptile_query`
使用自然语言查询代码仓库并获得带有相关代码引用的答案。Greptile 利用 AI 理解您的代码库并回答问题。
#### 输入
| 参数 | 类型 | 必填 | 描述 |
| --------- | ---- | -------- | ----------- |
| `query` | string | 是 | 关于代码库的自然语言问题 |
| `repositories` | string | 是 | 以逗号分隔的仓库列表。格式:"github:branch:owner/repo" 或 "owner/repo"(默认为 github:main |
| `sessionId` | string | 否 | 用于会话连续性的会话 ID |
| `genius` | boolean | 否 | 启用 genius 模式以进行更深入的分析(速度较慢但更准确) |
| `apiKey` | string | 是 | Greptile API 密钥 |
| `githubToken` | string | 是 | 具有仓库读取权限的 GitHub 个人访问令牌 |
#### 输出
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `message` | string | AI 生成的查询答案 |
| `sources` | array | 支持答案的相关代码引用 |
### `greptile_search`
使用自然语言搜索代码仓库,获取相关代码引用而不生成答案。适用于查找特定代码位置。
#### 输入
| 参数 | 类型 | 必填 | 描述 |
| --------- | ---- | -------- | ----------- |
| `query` | string | 是 | 用于查找相关代码的自然语言搜索查询 |
| `repositories` | string | 是 | 以逗号分隔的仓库列表。格式:"github:branch:owner/repo" 或 "owner/repo"(默认为 github:main |
| `sessionId` | string | 否 | 用于会话连续性的会话 ID |
| `genius` | boolean | 否 | 启用 genius 模式以进行更深入的搜索(速度较慢但更准确) |
| `apiKey` | string | 是 | Greptile API 密钥 |
| `githubToken` | string | 是 | 具有仓库读取权限的 GitHub 个人访问令牌 |
#### 输出
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `sources` | array | 与搜索查询匹配的相关代码引用 |
### `greptile_index_repo`
提交一个仓库以供 Greptile 索引。索引完成后才能对仓库进行查询。小型仓库大约需要 3-5 分钟,大型仓库可能需要一个小时以上。
#### 输入
| 参数 | 类型 | 必填 | 描述 |
| --------- | ---- | ------ | ----------- |
| `remote` | string | 是 | Git 远程类型github 或 gitlab |
| `repository` | string | 是 | 以 owner/repo 格式填写的仓库(例如,"facebook/react" |
| `branch` | string | 是 | 要索引的分支(例如,"main" 或 "master" |
| `reload` | boolean | 否 | 即使已被索引也强制重新索引 |
| `notify` | boolean | 否 | 索引完成后发送邮件通知 |
| `apiKey` | string | 是 | Greptile API 密钥 |
| `githubToken` | string | 是 | 具有仓库读取权限的 GitHub 个人访问令牌 |
#### 输出
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `repositoryId` | string | 已索引仓库的唯一标识符格式remote:branch:owner/repo |
| `statusEndpoint` | string | 用于检查索引状态的 URL 端点 |
| `message` | string | 关于索引操作的状态信息 |
### `greptile_status`
检查仓库的索引状态。可用于验证仓库是否已准备好被查询,或监控索引进度。
#### 输入
| 参数 | 类型 | 必填 | 描述 |
| --------- | ---- | -------- | ----------- |
| `remote` | string | 是 | Git 远程类型github 或 gitlab |
| `repository` | string | 是 | 仓库,格式为 owner/repo例如"facebook/react" |
| `branch` | string | 是 | 分支名称(例如,"main" 或 "master" |
| `apiKey` | string | 是 | Greptile API 密钥 |
| `githubToken` | string | 是 | 具有仓库读取权限的 GitHub 个人访问令牌 |
#### 输出
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `repository` | string | 仓库名称owner/repo |
| `remote` | string | Git 远程github/gitlab |
| `branch` | string | 分支名称 |
| `private` | boolean | 仓库是否为私有 |
| `status` | string | 索引状态submitted、cloning、processing、completed 或 failed |
| `filesProcessed` | number | 已处理的文件数 |
| `numFiles` | number | 仓库中的文件总数 |
| `sampleQuestions` | array | 已索引仓库的示例问题 |
| `sha` | string | 已索引版本的 Git 提交 SHA |
## 备注
- 分类:`tools`
- 类型:`greptile`

View File

@@ -0,0 +1,35 @@
---
title: IMAP 邮件
description: 当通过 IMAP 收到新邮件时触发工作流(适用于任何邮箱服务商)
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="imap"
color="#6366F1"
/>
{/* MANUAL-CONTENT-START:intro */}
IMAP 邮件触发器可以让你的 Sim 工作流在任何支持 IMAP 协议的邮箱收到新邮件时自动启动。适用于 Gmail、Outlook、Yahoo 及大多数其他邮箱服务商。
使用 IMAP 触发器,你可以:
- **自动化邮件处理**:当新邮件到达收件箱时,实时启动工作流。
- **按发件人、主题或文件夹筛选**:配置触发器,仅对符合特定条件的邮件做出响应。
- **提取并处理附件**:自动下载并在自动化流程中使用邮件附件。
- **解析并利用邮件内容**:在后续工作流步骤中访问主题、发件人、收件人、正文及其他元数据。
- **与任意邮箱服务集成**:支持所有提供标准 IMAP 访问的服务,无需受限于特定厂商。
- **按未读、标记或自定义条件触发**:为启动工作流的邮件设置高级筛选条件。
借助 SimIMAP 集成让你能够将邮件变为可操作的自动化来源。无需人工干预,即可直接从邮箱收件箱响应客户咨询、处理通知、启动数据流程等。
{/* MANUAL-CONTENT-END */}
## 使用说明
通过 IMAP 协议连接任意邮件服务器,在收到新邮件时触发工作流。支持 Gmail、Outlook、Yahoo 及所有兼容 IMAP 的邮箱服务商。
## 注意事项
- 分类:`triggers`
- 类型:`imap`

View File

@@ -55,8 +55,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 创建的联系人数据 |
| `contact` | object | 创建的联系人对象 |
### `intercom_get_contact`
@@ -72,8 +71,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 联系人数据 |
| `contact` | object | 联系人对象 |
### `intercom_update_contact`
@@ -101,8 +99,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 更新后的联系人数据 |
| `contact` | object | 更新后的联系人对象 |
### `intercom_list_contacts`
@@ -119,8 +116,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 联系人列表 |
| `contacts` | array | 联系人对象数组 |
### `intercom_search_contacts`
@@ -140,8 +136,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 搜索结果 |
| `contacts` | array | 匹配的联系人对象数组 |
### `intercom_delete_contact`
@@ -157,8 +152,9 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 删除结果 |
| `id` | string | 已删除联系人的 ID |
| `deleted` | boolean | 联系人是否已被删除 |
| `metadata` | object | 操作元数据 |
### `intercom_create_company`
@@ -182,8 +178,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 创建或更新的公司数据 |
| `company` | object | 新建或更新的公司对象 |
### `intercom_get_company`
@@ -199,8 +194,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 公司数据 |
| `company` | object | 公司对象 |
### `intercom_list_companies`
@@ -218,8 +212,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | 布尔值 | 操作成功状态 |
| `output` | 对象 | 公司列表 |
| `companies` | array | 公司对象数组 |
### `intercom_get_conversation`
@@ -237,8 +230,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | 布尔值 | 操作成功状态 |
| `output` | 对象 | 会话数据 |
| `conversation` | object | 会话对象 |
### `intercom_list_conversations`
@@ -257,8 +249,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | 布尔值 | 操作成功状态 |
| `output` | 对象 | 会话列表 |
| `conversations` | array | 会话对象数组 |
### `intercom_reply_conversation`
@@ -279,8 +270,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 包含回复的更新对话 |
| `conversation` | object | 更新后的会话对象 |
### `intercom_search_conversations`
@@ -300,8 +290,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 搜索结果 |
| `conversations` | array | 匹配的会话对象数组 |
### `intercom_create_ticket`
@@ -323,8 +312,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 创建的工单数据 |
| `ticket` | object | 创建的工单对象 |
### `intercom_get_ticket`
@@ -340,8 +328,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 工单数据 |
| `ticket` | object | 工单对象 |
### `intercom_create_message`
@@ -365,8 +352,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `success` | boolean | 操作成功状态 |
| `output` | object | 创建的消息数据 |
| `message` | object | 创建的消息对象 |
## 注意事项

View File

@@ -0,0 +1,486 @@
---
title: Jira Service Management
description: 与 Jira Service Management 互动
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="jira_service_management"
color="#E0E0E0"
/>
## 使用说明
集成 Jira Service Management 以进行 IT 服务管理。可创建和管理服务请求,处理客户和组织,跟踪 SLA并管理队列。
## 工具
### `jsm_get_service_desks`
获取 Jira Service Management 中的所有服务台
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 你的 Jira 域名例如yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `start` | number | 否 | 分页起始索引默认值0 |
| `limit` | number | 否 | 返回的最大结果数默认值50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `serviceDesks` | json | 服务台数组 |
| `total` | number | 服务台总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_get_request_types`
获取 Jira Service Management 中某个服务台的请求类型
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 你的 Jira 域名例如yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `serviceDeskId` | string | 是 | 要获取请求类型的服务台 ID |
| `start` | number | 否 | 分页起始索引默认值0 |
| `limit` | number | 否 | 返回的最大结果数默认值50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `requestTypes` | json | 请求类型的数组 |
| `total` | number | 请求类型的总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_create_request`
在 Jira Service Management 中创建新的服务请求
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | ------ | ----------- |
| `domain` | string | 是 | 你的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `serviceDeskId` | string | 是 | 要创建请求的服务台 ID |
| `requestTypeId` | string | 是 | 新请求的请求类型 ID |
| `summary` | string | 是 | 服务请求的摘要/标题 |
| `description` | string | 否 | 服务请求的描述 |
| `raiseOnBehalfOf` | string | 否 | 代表客户提交请求的账户 ID |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueId` | string | 创建的请求问题 ID |
| `issueKey` | string | 创建的请求问题键(例如 SD-123 |
| `requestTypeId` | string | 请求类型 ID |
| `serviceDeskId` | string | 服务台 ID |
| `success` | boolean | 请求是否创建成功 |
| `url` | string | 创建的请求的 URL |
### `jsm_get_request`
从 Jira Service Management 获取单个服务请求
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或键(例如 SD-123 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
### `jsm_get_requests`
从 Jira Service Management 获取多个服务请求
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `serviceDeskId` | string | 否 | 按服务台 ID 过滤 |
| `requestOwnership` | string | 否 | 按所有权过滤: OWNED_REQUESTS 、 PARTICIPATED_REQUESTS 、 ORGANIZATION 、 ALL_REQUESTS |
| `requestStatus` | string | 否 | 按状态过滤: OPEN 、 CLOSED 、 ALL |
| `searchTerm` | string | 否 | 用于筛选请求的搜索词 |
| `start` | number | 否 | 分页起始索引(默认值: 0 |
| `limit` | number | 否 | 返回的最大结果数(默认值: 50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `requests` | json | 服务请求数组 |
| `total` | number | 请求总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_add_comment`
在 Jira Service Management 中为服务请求添加评论(公开或内部)
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或关键字(例如 SD-123 |
| `body` | string | 是 | 评论正文内容 |
| `isPublic` | boolean | 是 | 评论是公开(对客户可见)还是内部 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueIdOrKey` | string | 问题 ID 或关键字 |
| `commentId` | string | 创建的评论 ID |
| `body` | string | 评论正文内容 |
| `isPublic` | boolean | 评论是否为公开 |
| `success` | boolean | 评论是否添加成功 |
### `jsm_get_comments`
获取 Jira Service Management 中服务请求的评论
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或关键字(例如 SD-123 |
| `isPublic` | boolean | 否 | 仅筛选公开评论 |
| `internal` | boolean | 否 | 仅筛选内部评论 |
| `start` | number | 否 | 分页起始索引默认值0 |
| `limit` | number | 否 | 返回的最大结果数默认值50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueIdOrKey` | string | 问题 ID 或键值 |
| `comments` | json | 评论数组 |
| `total` | number | 评论总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_get_customers`
获取 Jira Service Management 服务台的客户
#### 输入
| 参数 | 类型 | 是否必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 你的 Jira 域名例如yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `serviceDeskId` | string | 是 | 要获取客户的服务台 ID |
| `query` | string | 否 | 用于筛选客户的搜索查询 |
| `start` | number | 否 | 分页的起始索引默认值0 |
| `limit` | number | 否 | 返回的最大结果数默认值50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `customers` | json | 客户数组 |
| `total` | number | 客户总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_add_customer`
向 Jira Service Management 服务台添加客户
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `serviceDeskId` | string | 是 | 要添加客户的服务台 ID |
| `emails` | string | 是 | 以逗号分隔的要添加为客户的邮箱地址 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `serviceDeskId` | string | 服务台 ID |
| `success` | boolean | 是否成功添加了客户 |
### `jsm_get_organizations`
获取 Jira Service Management 服务台的组织
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `serviceDeskId` | string | 是 | 要获取组织的服务台 ID |
| `start` | number | 否 | 分页起始索引默认值0 |
| `limit` | number | 否 | 返回的最大结果数默认值50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `organizations` | json | 组织数组 |
| `total` | number | 组织总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_create_organization`
在 Jira Service Management 中创建一个新组织
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `name` | string | 是 | 要创建的组织名称 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `organizationId` | string | 已创建组织的 ID |
| `name` | string | 已创建组织的名称 |
| `success` | boolean | 操作是否成功 |
### `jsm_add_organization`
在 Jira Service Management 中将组织添加到服务台
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `serviceDeskId` | string | 是 | 要添加组织的服务台 ID |
| `organizationId` | string | 是 | 要添加到服务台的组织 ID |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `serviceDeskId` | string | 服务台 ID |
| `organizationId` | string | 已添加的组织 ID |
| `success` | boolean | 操作是否成功 |
### `jsm_get_queues`
获取 Jira Service Management 中服务台的队列
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名例如yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `serviceDeskId` | string | 是 | 要获取队列的服务台 ID |
| `includeCount` | boolean | 否 | 是否包含每个队列的问题数量 |
| `start` | number | 否 | 分页的起始索引默认值0 |
| `limit` | number | 否 | 返回的最大结果数默认值50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `queues` | json | 队列数组 |
| `total` | number | 队列总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_get_sla`
获取 Jira Service Management 中服务请求的 SLA 信息
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名例如yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或关键字例如SD-123 |
| `start` | number | 否 | 分页的起始索引默认值0 |
| `limit` | number | 否 | 返回的最大结果数默认值50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueIdOrKey` | string | 问题 ID 或键值 |
| `slas` | json | SLA 信息数组 |
| `total` | number | SLA 总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_get_transitions`
获取 Jira Service Management 中服务请求的可用流转
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名例如yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或键值例如SD-123 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueIdOrKey` | string | 问题 ID 或键值 |
| `transitions` | json | 可用流转的数组 |
### `jsm_transition_request`
将服务请求流转到 Jira Service Management 中的新状态
#### 输入
| 参数 | 类型 | 必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 您的 Jira 域名例如yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或键值例如SD-123 |
| `transitionId` | string | 是 | 要应用的流转 ID |
| `comment` | string | 否 | 流转时可选的备注 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueIdOrKey` | string | 问题 ID 或键值 |
| `transitionId` | string | 已应用的转换 ID |
| `success` | boolean | 转换是否成功 |
### `jsm_get_participants`
获取 Jira Service Management 请求的参与者
#### 输入
| 参数 | 类型 | 是否必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 你的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或键值(例如 SD-123 |
| `start` | number | 否 | 分页起始索引默认值0 |
| `limit` | number | 否 | 返回的最大结果数默认值50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueIdOrKey` | string | 问题 ID 或键值 |
| `participants` | json | 参与者数组 |
| `total` | number | 参与者总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_add_participants`
为 Jira Service Management 请求添加参与者
#### 输入
| 参数 | 类型 | 是否必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 你的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或键值(例如 SD-123 |
| `accountIds` | string | 是 | 以逗号分隔的要添加为参与者的账户 ID
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueIdOrKey` | string | 问题 ID 或键值 |
| `participants` | json | 新增参与者数组 |
| `success` | boolean | 操作是否成功 |
### `jsm_get_approvals`
在 Jira Service Management 中获取请求的审批信息
#### 输入
| 参数 | 类型 | 是否必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 你的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或键值(例如 SD-123 |
| `start` | number | 否 | 分页起始索引默认值0 |
| `limit` | number | 否 | 返回的最大结果数默认值50 |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueIdOrKey` | string | 问题 ID 或键值 |
| `approvals` | json | 审批数组 |
| `total` | number | 审批总数 |
| `isLastPage` | boolean | 是否为最后一页 |
### `jsm_answer_approval`
在 Jira Service Management 中批准或拒绝审批请求
#### 输入
| 参数 | 类型 | 是否必填 | 说明 |
| --------- | ---- | -------- | ----------- |
| `domain` | string | 是 | 你的 Jira 域名(例如 yourcompany.atlassian.net |
| `cloudId` | string | 否 | 实例的 Jira Cloud ID |
| `issueIdOrKey` | string | 是 | 问题 ID 或键值(例如 SD-123 |
| `approvalId` | string | 是 | 需要答复的审批 ID |
| `decision` | string | 是 | 决策“approve” 或 “decline” |
#### 输出
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `ts` | string | 操作的时间戳 |
| `issueIdOrKey` | string | 问题 ID 或 key |
| `approvalId` | string | 审批 ID |
| `decision` | string | 做出的决定approve/decline |
| `success` | boolean | 操作是否成功 |
## 备注
- 分类:`tools`
- 类型:`jira_service_management`

View File

@@ -68,10 +68,9 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
#### 输出
| 参数 | 类型 | 描述 |
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------- |
| `statusText` | string | 插入操作的状态 |
| `upsertedCount` | number | 成功插入的记录数量 |
| `statusText` | string | upsert 操作的状态 |
### `pinecone_search_text`

View File

@@ -266,10 +266,11 @@ Sim 的 Supabase 集成使您能够轻松地将代理工作流连接到您的 Su
| --------- | ---- | -------- | ----------- |
| `projectId` | string | 是 | 您的 Supabase 项目 ID \(例如jdrkgepadsdopsntdlom\) |
| `bucket` | string | 是 | 存储桶的名称 |
| `path` | string | 是 | 文件将存储的路径 \(例如:"folder/file.jpg"\) |
| `fileContent` | string | | 文件内容 \(二进制文件为 base64 编码,或纯文本\) |
| `contentType` | string | | 文件的 MIME 类型 \(例如:"image/jpeg", "text/plain"\) |
| `upsert` | boolean | 否 | 如果为 true则覆盖现有文件 \(默认值false\) |
| `fileName` | string | 是 | 文件 \(例如:"document.pdf""image.jpg"\) |
| `path` | string | | 可选的文件夹路径 \(例如:"folder/subfolder/"\) |
| `fileContent` | string | | 文件内容(对于二进制文件为 base64 编码,或为纯文本)|
| `contentType` | string | 否 | 文件的 MIME 类型 \(例如:"image/jpeg""text/plain"\) |
| `upsert` | boolean | 否 | 如果为 true则覆盖已存在的文件默认值false|
| `apiKey` | string | 是 | 您的 Supabase 服务角色密钥 |
#### 输出

View File

@@ -131,14 +131,17 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| --------- | ---- | ----------- |
| `id` | string | 表单唯一标识符 |
| `title` | string | 表单标题 |
| `type` | string | 表单类型 \(form, quiz 等\) |
| `type` | string | 表单类型 \(formquiz 等\) |
| `settings` | object | 表单设置,包括语言、进度条等 |
| `theme` | object | 主题引用 |
| `workspace` | object | 工作区引用 |
| `fields` | array | 表单字段/问题数组 |
| `welcome_screens` | array | 欢迎页数组 |
| `thankyou_screens` | array | 感谢页数组 |
| `_links` | object | 包括公共表单 URL 在内的相关资源链接 |
| `welcome_screens` | array | 欢迎页数组(如未配置则为空) |
| `thankyou_screens` | array | 感谢页数组 |
| `created_at` | string | 表单创建时间戳ISO 8601 格式) |
| `last_updated_at` | string | 表单最后更新时间戳ISO 8601 格式) |
| `published_at` | string | 表单发布时间戳ISO 8601 格式) |
| `_links` | object | 相关资源链接,包括公开表单 URL |
### `typeform_create_form`
@@ -160,11 +163,16 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `id` | string | 创建表单唯一标识符 |
| `id` | string | 创建表单唯一标识符 |
| `title` | string | 表单标题 |
| `type` | string | 表单类型 |
| `fields` | array | 创建的表单字段数组 |
| `_links` | object | 包括公共表单 URL 在内的相关资源链接 |
| `settings` | object | 表单设置对象 |
| `theme` | object | 主题引用 |
| `workspace` | object | 工作区引用 |
| `fields` | array | 已创建表单字段数组(如未添加则为空) |
| `welcome_screens` | array | 欢迎页数组(如未配置则为空) |
| `thankyou_screens` | array | 感谢页数组 |
| `_links` | object | 相关资源链接,包括公开表单 URL |
### `typeform_update_form`
@@ -182,16 +190,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `id` | string | 更新的表单唯一标识符 |
| `title` | string | 表单标题 |
| `type` | string | 表单类型 |
| `settings` | object | 表单设置 |
| `theme` | object | 主题引用 |
| `workspace` | object | 工作区引用 |
| `fields` | array | 表单字段数组 |
| `welcome_screens` | array | 欢迎屏幕数组 |
| `thankyou_screens` | array | 感谢屏幕数组 |
| `_links` | object | 相关资源链接 |
| `message` | string | 成功确认消息 |
### `typeform_delete_form`

View File

@@ -503,19 +503,19 @@ checksums:
content/35: 371d0e46b4bd2c23f559b8bc112f6955
content/36: 4c6a3b159dfff0106b67269130253eba
content/37: bcadfc362b69078beee0088e5936c98b
content/38: 21cc925781120afc2c4568f74ed8191a
content/38: e30b26e62abc96c1ff0694762584501d
content/39: 5de052cae5ada1f845f7257ba431ebd1
content/40: 1a36fc873771b68a67d95a2130487aec
content/41: 371d0e46b4bd2c23f559b8bc112f6955
content/42: b000bca7bd6658d4b5d21e6c7787d05e
content/43: bcadfc362b69078beee0088e5936c98b
content/44: 448922b8585b0b4599e7023c80faa449
content/44: 186da1feb6a6565956c7ea7707b388ad
content/45: 776f62636d112cbd27d5064a40e29ec9
content/46: f512a5096a1d5a4e4a0afd762152b714
content/47: 371d0e46b4bd2c23f559b8bc112f6955
content/48: 06de592289fb5f4dff42f451ebf9658a
content/49: bcadfc362b69078beee0088e5936c98b
content/50: d242a9680311743714a60bf1941ef9ac
content/50: b36b602337a0a9be8720b50ed3f949d5
content/51: a4cfd36d36633eee441423283d4d5fb3
content/52: 85ea23183709f33902aec778c7cb62b0
content/53: 371d0e46b4bd2c23f559b8bc112f6955
@@ -760,7 +760,7 @@ checksums:
content/71: 64c89ec9ca2719c58cfed42033a52217
content/72: ec97af83ea30e033d7b1b4ada910c03e
content/73: 371d0e46b4bd2c23f559b8bc112f6955
content/74: b6f54fba68782b589ee4dfa0aebf7adb
content/74: a3dc735b07499600ffd588b1279eea42
content/75: bcadfc362b69078beee0088e5936c98b
content/76: 64d66a993e96e5544d28bc75a2d0c6d6
content/77: 0295e0cd05bbf86d6d79400d787759f5
@@ -1279,7 +1279,7 @@ checksums:
content/17: 371d0e46b4bd2c23f559b8bc112f6955
content/18: 11e0f62da7bc51d4c9a94d2c60dd06ce
content/19: bcadfc362b69078beee0088e5936c98b
content/20: d1fa8dd2b26e182a3a02bc996ad7dd0b
content/20: d78f8e8d74ba810e10dfbebd4423764f
content/21: b72dd04e96d85431c18c28de8a6b00d7
content/22: 147ca5082380639c3168a44122a67192
content/23: 371d0e46b4bd2c23f559b8bc112f6955
@@ -3483,8 +3483,14 @@ checksums:
content/38: 3e7b1f581c8ef51fb3d9b6ecff47deb4
content/39: bcadfc362b69078beee0088e5936c98b
content/40: 07994574571bcaeb3b86ce92c46d0527
content/41: b3f310d5ef115bea5a8b75bf25d7ea9a
content/42: dc809f5be4a108f769310dd8290c0db4
content/41: 5aba0f448543bbd7559573fed02724b2
content/42: f0cdbc370d80551a27c44588ae689f9d
content/43: 371d0e46b4bd2c23f559b8bc112f6955
content/44: 81b12b0196aa94b6f80686641125ea3a
content/45: bcadfc362b69078beee0088e5936c98b
content/46: 326cbcf1d379181f7f53c6a9ffb271f1
content/47: b3f310d5ef115bea5a8b75bf25d7ea9a
content/48: dc809f5be4a108f769310dd8290c0db4
bda76150deadd23f7803a15b39c4db66:
meta/title: 1255b55897f2be1443d3bb8c30cd9795
meta/description: 1e7574b6666c662c08e7e256a9fceb4d
@@ -4327,43 +4333,46 @@ checksums:
content/42: 824d6c95976aa25ee803b3591fb6f551
content/43: 864966620e19c8746d8180efdbdd9ae2
d73ad89134a95ad7e09fa05b910065aa:
meta/title: f313501a9bef9974d92f1d62b42fdb93
content/0: 0d95e6a3f94bfb96c6dc0d0784c08ea4
meta/title: 9c04618798e86e654d5079fe8de64db1
meta/description: 4da9477901d9df3c9450ba039d75dd37
content/0: 0d1f255ba4a6e466a883628166c021ea
content/1: 1f65550d1e29bd4153aff03620240d9a
content/2: d5b2535caa6733200d5bfe237593ce3c
content/3: b712a1e4dd21fd6b0e930199354adcc3
content/4: ca67b9905e9e11c157e61b0ab389538f
content/5: 6eee8c607e72b6c444d7b3ef07244f20
content/6: 747991e0e80e306dce1061ef7802db2a
content/7: 704a7a653c2dc25f6695a6744ca751d3
content/7: 430153eacb29c66026cf71944df7be20
content/8: 5950966e19939b7a3a320d56ee4a674c
content/9: 159cf7a6d62e64b0c5db27e73b8c1ff5
content/10: 5bcbd52289426d30d910b18bd3906752
content/11: eea4f7ee41a1df57efbc383261657577
content/12: 228fb76870c6a4f77ede7ee70b9e88ae
content/13: 220fe4f7ae4350eb17a45ca7824f1588
content/14: 8c8337d290379b6e1ed445e9be94a9d1
content/15: 5d31ac96fab4fe61b0c50b04d3c5334d
content/16: b6daf5b4a671686abe262dc86e1a8455
content/17: 80c0384b94d64548d753f8029c2bba7f
content/18: 606502329e2f62e12f33e39a640ceb10
content/19: b57cfd7d01cf1ce7566d9adfd7629e93
content/20: 3beb1b867645797faddd37a84bcb6277
content/21: 47eb215a0fc230dc651b7bc05ab25ed0
content/22: 175a21923c1df473224c54959ecbdb57
content/23: 8305e779bb6f866f2e2998c374bc8af0
content/24: a6b82eda019a997e4cb55f4461d0ae16
content/25: ce8fdb26d2fcbd3f47f1032077622719
content/26: 97855f8f10fd385774bc2dde42f96540
content/27: 06cd80699da60d9bcce09ee32c0136fc
content/28: ebaa0614d49146e17b04fb3be190209f
content/29: 14d09c6d97ba08f6e7ea6be3ed854cad
content/30: 90fb56f9810d8f8803f19be7907bee90
content/31: fbf5d3ade971a3e039c715962db85ea9
content/32: 623d40dc1cfdd82c4d805d6b02471c75
content/33: 03c45c32e80d7d8875d339a0640f2f63
content/34: 3d01b1e7080fee49ffb40b179873b676
content/35: 81dcc5343377a51a32fe8d23fc172808
content/10: a723187777f9a848d4daa563e9dcbe17
content/11: b1c5f14e5290bcbbf5d590361ee7c053
content/12: 5bcbd52289426d30d910b18bd3906752
content/13: eea4f7ee41a1df57efbc383261657577
content/14: 228fb76870c6a4f77ede7ee70b9e88ae
content/15: 220fe4f7ae4350eb17a45ca7824f1588
content/16: 8c8337d290379b6e1ed445e9be94a9d1
content/17: 5d31ac96fab4fe61b0c50b04d3c5334d
content/18: b6daf5b4a671686abe262dc86e1a8455
content/19: 80c0384b94d64548d753f8029c2bba7f
content/20: 606502329e2f62e12f33e39a640ceb10
content/21: b57cfd7d01cf1ce7566d9adfd7629e93
content/22: 3beb1b867645797faddd37a84bcb6277
content/23: 47eb215a0fc230dc651b7bc05ab25ed0
content/24: 175a21923c1df473224c54959ecbdb57
content/25: 8305e779bb6f866f2e2998c374bc8af0
content/26: a6b82eda019a997e4cb55f4461d0ae16
content/27: ce8fdb26d2fcbd3f47f1032077622719
content/28: 97855f8f10fd385774bc2dde42f96540
content/29: 06cd80699da60d9bcce09ee32c0136fc
content/30: ebaa0614d49146e17b04fb3be190209f
content/31: 14d09c6d97ba08f6e7ea6be3ed854cad
content/32: 90fb56f9810d8f8803f19be7907bee90
content/33: fbf5d3ade971a3e039c715962db85ea9
content/34: 623d40dc1cfdd82c4d805d6b02471c75
content/35: 03c45c32e80d7d8875d339a0640f2f63
content/36: 3d01b1e7080fee49ffb40b179873b676
content/37: 81dcc5343377a51a32fe8d23fc172808
936c6450f0e3755fffa26ec3d3bd1b54:
meta/title: 2e89ff9f9632dacf671ce83787447240
content/0: 7e581dbf3e581d503ac94f7fb7938b1f
@@ -47166,97 +47175,97 @@ checksums:
content/11: 371d0e46b4bd2c23f559b8bc112f6955
content/12: a71a30e9f91c10daf481ea8f542e91f6
content/13: bcadfc362b69078beee0088e5936c98b
content/14: 59c08999f9c404330ebd8f8a7d21e1a1
content/14: d3278442dbea313782edd4793be28197
content/15: 49d191d312481589419c68a5506b0d71
content/16: dddb93e063541bfb5d72b6c506d3cb7f
content/17: 371d0e46b4bd2c23f559b8bc112f6955
content/18: e93f2b44f05dd87c82fe9557cd677eeb
content/19: bcadfc362b69078beee0088e5936c98b
content/20: b74416361f94e71f2a94139711a5dd21
content/20: 5079238d0092205bb1ca4ec32b8f3d97
content/21: 2e70c0a22a98675a13b493b9761ff92f
content/22: 107f6e51a1e896ee4d18f8ed4f82c50f
content/23: 371d0e46b4bd2c23f559b8bc112f6955
content/24: e506fbf4b80deecb3b44b29b8dc3438b
content/25: bcadfc362b69078beee0088e5936c98b
content/26: a9096a341b00ce4f4891daaca2586d1c
content/26: 4d1f3216d2694b7409792e34a6f181e0
content/27: 934a0124aa2118682b2b17fa258ff06a
content/28: aa318cc874d5936ce1f3bf9710da2a44
content/29: 371d0e46b4bd2c23f559b8bc112f6955
content/30: 660ce6e5a45abe1940974f7d818a6ee7
content/31: bcadfc362b69078beee0088e5936c98b
content/32: 551c2f007a7035ba0d48374081b02eb1
content/32: 5e9da15383417721362c8d33b0a12fb8
content/33: 1a1e332b525e86f7fd92f9da1ac0096c
content/34: 00098e1591c0f80ef6287d934d391409
content/35: 371d0e46b4bd2c23f559b8bc112f6955
content/36: e52688ff2fa61ce71026f33930e1ec86
content/37: bcadfc362b69078beee0088e5936c98b
content/38: d84fb23e5dfc9d41a177acd7dfb28e72
content/38: ac15076b8e6cac4bf3a106ea32de661d
content/39: 17be090a79154f557bc96f940c687aea
content/40: bb2f63774f45f14201d5c0c110458a90
content/41: 371d0e46b4bd2c23f559b8bc112f6955
content/42: 36afb2b0539e33ff83427a91fc5ba57b
content/43: bcadfc362b69078beee0088e5936c98b
content/44: 45d8bfeced635336cacc9d4a8d08dbca
content/44: 1da7a9f86cda2b24d0e1ffd5ae167272
content/45: c76943404f9c8d34a85e6315359ed0c4
content/46: b5e111e430aa1c929fb07d5844bf65eb
content/47: 371d0e46b4bd2c23f559b8bc112f6955
content/48: 6692edffddc28d3c64974ded23d1def2
content/49: bcadfc362b69078beee0088e5936c98b
content/50: dbc08cce26f9565e719891bbbf4632a9
content/50: e7e86e6f7734e9af89b5724ac674ff2c
content/51: d0ce65f5420745c45ab42b7edd135bf4
content/52: 4a3de8fb6c97898fcfa3800d149cd4e0
content/53: 371d0e46b4bd2c23f559b8bc112f6955
content/54: d16a985c206a21f4ffb1bbcdc0300c85
content/55: bcadfc362b69078beee0088e5936c98b
content/56: a7e001e39652db8eeb4d32968bda102b
content/56: a64e62cd3f79c43f9411af221e24aa9f
content/57: 440f2732ad006bee8cccc975fdbf673a
content/58: 7a7048c54763b0109643f37e583381ce
content/59: 371d0e46b4bd2c23f559b8bc112f6955
content/60: 11ad0a529a7fcc5892ae811cde6894f6
content/61: bcadfc362b69078beee0088e5936c98b
content/62: c7055d8ce044e49929d4f005a28d7c0a
content/62: d3c54294a5180fda87c23e23d4ad17eb
content/63: 2d7bad4340c1bc6a28e836e180e26c00
content/64: 576dbecf29644e7abf59d25ffda5728c
content/65: 371d0e46b4bd2c23f559b8bc112f6955
content/66: 59015900ce6b64caff0784491ec59ff9
content/67: bcadfc362b69078beee0088e5936c98b
content/68: 2f225a893086726db6b6a994cc8a5e3c
content/68: 5e12d96ca701a7a8182558a4d070aed2
content/69: 63cbf703cf33e0fee06f12fb23184352
content/70: dae1fda5ec57e1b598a7e2596007a775
content/71: 371d0e46b4bd2c23f559b8bc112f6955
content/72: 757f42df5247f2e6684ab32888d30e11
content/73: bcadfc362b69078beee0088e5936c98b
content/74: 380f805a5118dd4957f4fcce41e01b86
content/74: 46f9b95601bc643ba6175c2a0115df19
content/75: 935f1a713d05f32d3d826434a7e715ee
content/76: e505d8f656fb6e3b65a98cb73d744598
content/77: 371d0e46b4bd2c23f559b8bc112f6955
content/78: 2e77859b0f2c89186fc6a2d51287ea47
content/79: bcadfc362b69078beee0088e5936c98b
content/80: 22bd99d5b844817b808b9d0d3baddac4
content/80: b312d1e8bce1418da88cd9812096db20
content/81: e959b48af94a559e9c46cbd7653d2dd2
content/82: 5e3c04c5a9fabfceb7fcc00215f93bf9
content/83: 371d0e46b4bd2c23f559b8bc112f6955
content/84: a92b2a22061ee6fd453af32e0155f5aa
content/85: bcadfc362b69078beee0088e5936c98b
content/86: d84fb23e5dfc9d41a177acd7dfb28e72
content/86: a735b1d909700cdf6d07c1a94330a1c6
content/87: c886f11a0852010b90a1032b97118920
content/88: c60c832c08f9e1ff5f91565bf4ba549e
content/89: 371d0e46b4bd2c23f559b8bc112f6955
content/90: 1545794f4e8e696db96c3b660de684ec
content/91: bcadfc362b69078beee0088e5936c98b
content/92: 573530e346d195727862b03b380f40fc
content/92: 098eb544fe99ee061a081a1f2ef0e7c6
content/93: 3d31dedf076ec23547189a3eb5fe04c4
content/94: a261b9a2ef7724e4171487ef2435f259
content/95: 371d0e46b4bd2c23f559b8bc112f6955
content/96: bef786efecaaad82a34b861f37cde78f
content/97: bcadfc362b69078beee0088e5936c98b
content/98: 1b166ea32dff5f8de92b256fe48200d7
content/98: 317256505991a755bbb6d3870b778f4a
content/99: e1a03f917ad8b0a1ebec9a601aa3eede
content/100: 3aa857b8f85da07ee2d87e65c95b76d0
content/101: 371d0e46b4bd2c23f559b8bc112f6955
content/102: cc49a24c087d08717866a162cc47776c
content/103: bcadfc362b69078beee0088e5936c98b
content/104: c6d621ee3cdc66de2c20b70a39aafe12
content/104: 283b701d5bd6125f277a7f0ab3b4a7fe
content/105: b3f310d5ef115bea5a8b75bf25d7ea9a
content/106: 9d45ccf1c14d61412169be8f8510a960
9ed109808041fe9022eed66e1feedfdd:
@@ -49954,3 +49963,237 @@ checksums:
content/11: 972721b310d5e3e6e08ec33dc9630f62
content/12: b3f310d5ef115bea5a8b75bf25d7ea9a
content/13: 06a9cbcec05366fe1c873c90c36b4f44
cde6c2ec1df03f206847ed139f21f2d6:
meta/title: d625514dc93a2c27c439aa3f05ef6825
meta/description: ba29063c3aa33a2bd7afe5837c7fdb9e
content/0: 1b031fb0c62c46b177aeed5c3d3f8f80
content/1: 38ab553787a3ea3d2cda30851aedc0ad
content/2: ad8cbe2b67d463500c7df82249a43130
content/3: 68e7aba40d1cd92f4a42ae47e959647c
content/4: 9a605b0b546c260c6274c6090d6f3581
content/5: b0072e1727b0b3aa280be0f214373362
content/6: f23d61d0b583ae7e014fad11cd88d650
content/7: 711f36e27a659049cf42b8678e67156c
content/8: 821e6394b0a953e2b0842b04ae8f3105
content/9: 954eb151461a8567f7c8132661927740
content/10: 9c8aa3f09c9b2bd50ea4cdff3598ea4e
content/11: 7a7984f05e34660cc71f06c220198e31
content/12: dae004748239e77e2532d74494a10d7e
content/13: 371d0e46b4bd2c23f559b8bc112f6955
content/14: 436dadcd195dd06d65d306d054d855a1
content/15: bcadfc362b69078beee0088e5936c98b
content/16: 8ed05ca8d0bb1d22992af58adba9e363
content/17: 0c04ebd8a688a9658529c0dbeb9e91da
content/18: eef5d898e4cd4c4fa684f6f30b5bff63
content/19: 371d0e46b4bd2c23f559b8bc112f6955
content/20: 447485a51605776e0801a7e6b3e57d69
content/21: bcadfc362b69078beee0088e5936c98b
content/22: 9eb1ac86dbadc526a2a97d4d49f5398a
content/23: 5b7448ffa97b9b0f7c92ce378d90d814
content/24: c9b99feb41660b7dfca04fe4cfb5c674
content/25: 371d0e46b4bd2c23f559b8bc112f6955
content/26: 0ce6d9d41e298509e192e4dd0fc654c6
content/27: bcadfc362b69078beee0088e5936c98b
content/28: 97fd7cc117408e1f7a076724a8bcbddf
content/29: c2e4dd92b12a214c7021ab345acb28c6
content/30: de9c09e2e23cfe69029a739ed7a51d83
content/31: 371d0e46b4bd2c23f559b8bc112f6955
content/32: a664478ba3bc1ebecaaebc39fe0d54ec
content/33: bcadfc362b69078beee0088e5936c98b
content/34: 492b7c5af2dd4be062ee7af19778566a
content/35: b3f310d5ef115bea5a8b75bf25d7ea9a
content/36: 1305f85599a560b30c009091311a8dd0
f2beb64780f07155f616b02c172915c6:
meta/title: 41848121188bc58a7408e2aff659cd34
meta/description: 3d61074bd3acd724d95305b4d7d798bf
content/0: 1b031fb0c62c46b177aeed5c3d3f8f80
content/1: 83ed540b35d2677d62ac9b033da7d19c
content/2: 821e6394b0a953e2b0842b04ae8f3105
content/3: 418dd7b6606b262ad61dfc2ef4cbbb4c
content/4: 9c8aa3f09c9b2bd50ea4cdff3598ea4e
content/5: f45769b9935e467387f9d6b68603f25e
content/6: 8538751b324dd23fcc266ba0188d0130
content/7: 371d0e46b4bd2c23f559b8bc112f6955
content/8: 94412648539ad87efa73bcbab074c988
content/9: bcadfc362b69078beee0088e5936c98b
content/10: a89c7807e429bb51dd48aa4d2622d0dd
content/11: b6d0f2ea216b0007e3c3517a3fa50f1f
content/12: 45d60212632f9731ddb5cdb827a515ce
content/13: 371d0e46b4bd2c23f559b8bc112f6955
content/14: 0d20d22c2c79f1cd78472a3ef7da95bf
content/15: bcadfc362b69078beee0088e5936c98b
content/16: bccb2c91f666ad27d903f036a75b151e
content/17: d2ab825fd4503dbb095177db458d0ff6
content/18: f88ad4a7c154ebf76395c29a9955ab94
content/19: 371d0e46b4bd2c23f559b8bc112f6955
content/20: 7cb6471ac338ca8c1423461eb28a057c
content/21: bcadfc362b69078beee0088e5936c98b
content/22: 8e5505de3c0649f0a9fd2881a040e409
content/23: 1d5cf68c4490f3c5cabb2504eecddb5b
content/24: 34d6df7a1bf901b2207a52db746a50f2
content/25: 371d0e46b4bd2c23f559b8bc112f6955
content/26: 862891a65f07cf068ddbaf046b991f9a
content/27: bcadfc362b69078beee0088e5936c98b
content/28: 528e47881ef5db3c680d46e80e55f2d6
content/29: bc4cb64a528959a7374e1b402f122dfc
content/30: 77e2592a86dc0ca50e4db95d808be140
content/31: 371d0e46b4bd2c23f559b8bc112f6955
content/32: dea2761ea8687fa90bd2d0fcef2fda0d
content/33: bcadfc362b69078beee0088e5936c98b
content/34: a617913c5160e5e3ce253e2c7ca82dc5
content/35: 33708ed18682a449e15de7f9b576d5f4
content/36: a2f0f91ad5d9e03fd823ed21373b379b
content/37: 371d0e46b4bd2c23f559b8bc112f6955
content/38: ec6f414795d5257cb7eb66c5018533b2
content/39: bcadfc362b69078beee0088e5936c98b
content/40: 5e5a3cd4cbc4ee48f0a67c3664258fb2
content/41: a78519a6d0969da4eb60984f1c50de03
content/42: 1da9ef7f65dba2f4f0d2b1aa9ddb0ccc
content/43: 371d0e46b4bd2c23f559b8bc112f6955
content/44: 31c757a9587fae5c97f938d711e7887b
content/45: bcadfc362b69078beee0088e5936c98b
content/46: d95ba48f24360d807d155a6f8a5bb0be
content/47: 3debe47c548eabd98c556240e9d1d573
content/48: 0a55d3ddc8c8edfdf1f372f77ad5e231
content/49: 371d0e46b4bd2c23f559b8bc112f6955
content/50: 7cf573d553835bd8e716190488602db4
content/51: bcadfc362b69078beee0088e5936c98b
content/52: bf998d73f67b41c2d9a52bc6a2245179
content/53: 47b1f90d885890f4a9f7d2eb1e4a1eb2
content/54: 3a0804975c50bb33b204c133ae4c4da2
content/55: 371d0e46b4bd2c23f559b8bc112f6955
content/56: 67238743859f40058d7e4328c6bd072f
content/57: bcadfc362b69078beee0088e5936c98b
content/58: 9e71ffac1d3e6fa23250d1bca33fdd50
content/59: ef72212f9c155dcdf3a98bc4a369ee09
content/60: 3fce53203dda68c2d1f9dc901a44b747
content/61: 371d0e46b4bd2c23f559b8bc112f6955
content/62: 2815e96f98e47e7f7e5b16f68197f084
content/63: bcadfc362b69078beee0088e5936c98b
content/64: 65890385f788ca17597ce661951fa756
content/65: 8228362e54f2a2434467447d7d8075fa
content/66: fe2846cd82fcd2515d3c7ad83b50141b
content/67: 371d0e46b4bd2c23f559b8bc112f6955
content/68: b7afc8fa3b22ea9327e336f50b82a27c
content/69: bcadfc362b69078beee0088e5936c98b
content/70: 0337e5d7f0bad113be176419350a41b6
content/71: bb403ace5373d843beffe220c9a8d618
content/72: 35a991daf9336e6bba2bd8818dd66594
content/73: 371d0e46b4bd2c23f559b8bc112f6955
content/74: 13644af4a2d5aea5061e9945e91f5a4f
content/75: bcadfc362b69078beee0088e5936c98b
content/76: f3871a9f36a24d642b6de144d605197a
content/77: e301551365a6f7fade24239df33463cd
content/78: 46100cc58e4f8c1a4c742c1a5e970d0d
content/79: 371d0e46b4bd2c23f559b8bc112f6955
content/80: 15e6d6b333eb6a7937028fb886a77e7c
content/81: bcadfc362b69078beee0088e5936c98b
content/82: 644cb1bcde4e6f1e786b609e74ce43f3
content/83: ae715f7048477268f09b33335cf4be93
content/84: be625f1454ab49d0eeedb8c2525d8fee
content/85: 371d0e46b4bd2c23f559b8bc112f6955
content/86: b4143bf400f52a970c236796fdf9fd03
content/87: bcadfc362b69078beee0088e5936c98b
content/88: 24af8db55301ef64e8d1bcb53b0a5131
content/89: 1d3e6443f80e5a643ff2a4a59544e727
content/90: 89dca3d2312aadf8b5cc015e0c84e3eb
content/91: 371d0e46b4bd2c23f559b8bc112f6955
content/92: 862891a65f07cf068ddbaf046b991f9a
content/93: bcadfc362b69078beee0088e5936c98b
content/94: c365464e4cdae303e61cfc38e35887a0
content/95: 0afd6c6ee3ecf06afeea0aaa22b19d8e
content/96: d78424fb20ea8b940186b2e0ef0fac55
content/97: 371d0e46b4bd2c23f559b8bc112f6955
content/98: 4fba9291868e706f90871cdfe0bd2dd7
content/99: bcadfc362b69078beee0088e5936c98b
content/100: dbd4a81d93749c9c9265b64aff763d93
content/101: 1b209b190d6de2af90453ddf6952f480
content/102: cec7894f0f14602581914ad3a173ce43
content/103: 371d0e46b4bd2c23f559b8bc112f6955
content/104: b4143bf400f52a970c236796fdf9fd03
content/105: bcadfc362b69078beee0088e5936c98b
content/106: 83e0edf0ff07b297aab822804e185af7
content/107: 99e6993e88f7da71bf8e63db3bf2d07f
content/108: aefc3699ebb31a0046c6480586e66b5b
content/109: 371d0e46b4bd2c23f559b8bc112f6955
content/110: 0d8f09023861380195cba39d5c78ddc5
content/111: bcadfc362b69078beee0088e5936c98b
content/112: 94455a7b04b702657ae1e68207d70bb9
content/113: 95dc72e389fd1b9a8db155882437a5ef
content/114: cadf3a887a76a7a268eb8292d26c8cfd
content/115: 371d0e46b4bd2c23f559b8bc112f6955
content/116: b4143bf400f52a970c236796fdf9fd03
content/117: bcadfc362b69078beee0088e5936c98b
content/118: c034d82e3afd5eb98e52b6d46db211f8
content/119: a5634cdb8889310cdb3d308a2352e150
content/120: 8349f804b5bc2a5580197e4fd848270e
content/121: 371d0e46b4bd2c23f559b8bc112f6955
content/122: d9576628d658089f122e5fafb200c34c
content/123: bcadfc362b69078beee0088e5936c98b
content/124: 7be2eecb48d34398e118f223e7947adc
content/125: b3f310d5ef115bea5a8b75bf25d7ea9a
content/126: b6825d890bccce15d748ceb727d30104
f3ceca041234b3c5122b03bc11e4d1c1:
meta/title: 960685e215a11e2b38285dff5b0dde47
meta/description: 671e4d9e7ed6dd8b7774dcd4cfbecade
content/0: 833213d7266febc5d9ac218725cfb057
content/1: 10dedb2b36131c07ec48f97ece922c8c
content/2: b082096b0c871b2a40418e479af6f158
content/3: 9c94aa34f44540b0632931a8244a6488
content/4: 14f33e16b5a98e4dbdda2a27aa0d7afb
content/5: d7b36732970b7649dd1aa1f1d0a34e74
content/6: f554f833467a6dae5391372fc41dad53
content/7: 9cdb9189ecfcc4a6f567d3fd5fe342f0
content/8: 9a107692cb52c284c1cb022b516d700b
content/9: 07a013a9b263ab0ae4458db97065bdcd
content/10: 9310a48f3e485c5709563f1b825eb32d
content/11: 8a2c3d1a1a30e3614ada44b88478cc0c
content/12: defcb9a4ec64b567f45c3669c214763f
content/13: 4f3202eff0734a7398445d8c54f9e3ad
content/14: afcee4eacb27fb678e159c512d114c2d
content/15: 4ecff63a3571ef6f519a2448931451c2
content/16: 880b1c60228a0b56c5eb62dac87792df
content/17: d3f79ae3be3fe3ca4df5bd59be6b404c
content/18: 028eb92d4776faeb029995cee976bfc4
content/19: a618fcff50c4856113428639359a922b
content/20: 5fd3a6d2dcd8aa18dbf0b784acaa271c
content/21: d118656dd565c4c22f3c0c3a7c7f3bee
content/22: f49b9be78f1e7a569e290acc1365d417
content/23: 0a70ebe6eb4c543c3810977ed46b69b0
content/24: ad8638a3473c909dbcb1e1d9f4f26381
content/25: 95343a9f81cd050d3713988c677c750f
content/26: d4f846a591ac7fdedaba281b44d50ae3
content/27: 764eb0e5d025b68f772d45adb7608349
content/28: 47eb215a0fc230dc651b7bc05ab25ed0
content/29: bf5c6bf1e75c5c5e3a0a5dd1314cb41e
ed03212dda9fce53ddf623d1c4587006:
meta/title: ef00d7494b69def6841620bd6554d040
meta/description: 4b66a56c6ccc3c7e630dfc45eb8bfdf8
content/0: 232be69c8f3053a40f695f9c9dcb3f2e
content/1: 0628b1e7f70de9f2b5dff99452111de9
content/2: fa4a0821069063d96727598f379fb619
content/3: a3825edbe4c255e7370624d27b734399
content/4: 5be2f96951187cdbf39ed7d879322cef
content/5: 4940f2e763be1990113195e4667ff49a
content/6: 27c579ade1a1be3e514d880388c58c2b
content/7: 125beef2eb1e60a492faa9dc03fca0b4
content/8: 62d5214cb3e3ec863bd5b6d74e0df126
content/9: 421b088722ccb029a93a2388cf47d9b3
content/10: e9ddc04f492fea4fb96bfd7fcd3eb84a
content/11: be8e3a9794f70b9c03373db88ffc43ce
content/12: 3a322eee25c8bd5d81e7ae92f4239300
content/13: a82eb7d47a82c3289a00ccf27a860685
content/14: 26b9713de1a21d662c198154b673fd7d
b92b25e42e07ea0c1acc84c25f897c03:
meta/title: b578e5df9a37263d79d61eea1550b381
meta/description: a3ac2f556f8a1d72eee5058799e45b4f
content/0: 1b031fb0c62c46b177aeed5c3d3f8f80
content/1: 03b3a9b927648526481589ec2205aed1
content/2: ad3b7957de2e6e94935420692f41912b
content/3: b5d66b7cc95f747232f3c39e71e58125
content/4: a97fd9d5ca27813be7aa04fc9162ec5d
content/5: 47006103fb87648dd28524557c946bd0
content/6: 821e6394b0a953e2b0842b04ae8f3105
content/7: 7b29d23aec8fda839f3934c5fc71c6d3
content/8: b3f310d5ef115bea5a8b75bf25d7ea9a
content/9: 79ecd09a7bedc128285814d8b439ed40

View File

@@ -29,6 +29,7 @@
"tailwind-merge": "^3.0.2"
},
"devDependencies": {
"@sim/tsconfig": "workspace:*",
"@tailwindcss/postcss": "^4.0.12",
"@types/mdx": "^2.0.13",
"@types/node": "^22.14.1",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 KiB

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 KiB

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 155 KiB

View File

@@ -1,29 +1,11 @@
{
"extends": "@sim/tsconfig/nextjs.json",
"compilerOptions": {
"baseUrl": ".",
"target": "ESNext",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react-jsx",
"incremental": true,
"paths": {
"@/.source/*": ["./.source/*"],
"@/*": ["./*"]
},
"plugins": [
{
"name": "next"
}
]
}
},
"include": [
"next-env.d.ts",

View File

@@ -9,6 +9,7 @@ type AuthBackgroundProps = {
export default function AuthBackground({ className, children }: AuthBackgroundProps) {
return (
<div className={cn('relative min-h-screen w-full overflow-hidden', className)}>
<div className='-z-50 pointer-events-none fixed inset-0 bg-white' />
<AuthBackgroundSVG />
<div className='relative z-20'>{children}</div>
</div>

View File

@@ -1,6 +1,7 @@
'use client'
import { useEffect, useState } from 'react'
import { createLogger } from '@sim/logger'
import { ArrowRight, ChevronRight, Eye, EyeOff } from 'lucide-react'
import Link from 'next/link'
import { useRouter, useSearchParams } from 'next/navigation'
@@ -18,7 +19,6 @@ import { client } from '@/lib/auth/auth-client'
import { getEnv, isFalsy, isTruthy } from '@/lib/core/config/env'
import { cn } from '@/lib/core/utils/cn'
import { getBaseUrl } from '@/lib/core/utils/urls'
import { createLogger } from '@/lib/logs/console/logger'
import { quickValidateEmail } from '@/lib/messaging/email/validation'
import { inter } from '@/app/_styles/fonts/inter/inter'
import { soehne } from '@/app/_styles/fonts/soehne/soehne'

View File

@@ -1,9 +1,9 @@
'use client'
import { Suspense, useEffect, useState } from 'react'
import { createLogger } from '@sim/logger'
import Link from 'next/link'
import { useRouter, useSearchParams } from 'next/navigation'
import { createLogger } from '@/lib/logs/console/logger'
import { inter } from '@/app/_styles/fonts/inter/inter'
import { soehne } from '@/app/_styles/fonts/soehne/soehne'
import { SetNewPasswordForm } from '@/app/(auth)/reset-password/reset-password-form'

View File

@@ -1,6 +1,7 @@
'use client'
import { Suspense, useEffect, useState } from 'react'
import { createLogger } from '@sim/logger'
import { ArrowRight, ChevronRight, Eye, EyeOff } from 'lucide-react'
import Link from 'next/link'
import { useRouter, useSearchParams } from 'next/navigation'
@@ -10,7 +11,6 @@ import { Label } from '@/components/ui/label'
import { client, useSession } from '@/lib/auth/auth-client'
import { getEnv, isFalsy, isTruthy } from '@/lib/core/config/env'
import { cn } from '@/lib/core/utils/cn'
import { createLogger } from '@/lib/logs/console/logger'
import { quickValidateEmail } from '@/lib/messaging/email/validation'
import { inter } from '@/app/_styles/fonts/inter/inter'
import { soehne } from '@/app/_styles/fonts/soehne/soehne'

View File

@@ -1,6 +1,7 @@
'use client'
import { useEffect, useState } from 'react'
import { createLogger } from '@sim/logger'
import Link from 'next/link'
import { useRouter, useSearchParams } from 'next/navigation'
import { Button } from '@/components/ui/button'
@@ -9,7 +10,6 @@ import { Label } from '@/components/ui/label'
import { client } from '@/lib/auth/auth-client'
import { env, isFalsy } from '@/lib/core/config/env'
import { cn } from '@/lib/core/utils/cn'
import { createLogger } from '@/lib/logs/console/logger'
import { quickValidateEmail } from '@/lib/messaging/email/validation'
import { inter } from '@/app/_styles/fonts/inter/inter'
import { soehne } from '@/app/_styles/fonts/soehne/soehne'

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