Compare commits

...

255 Commits

Author SHA1 Message Date
Waleed
585f5e365b v0.5.50: import improvements, ui upgrades, kb styling and performance improvements 2026-01-05 00:35:55 -08:00
Waleed
0977ed228f improvement(kb): add configurable concurrency to chunks processing, sped up 22x for large docs (#2681) 2026-01-05 00:29:31 -08:00
Waleed
ed6b9c0c4a fix(kb): fix styling inconsistencies, add rename capability for documents, added search preview (#2680) 2026-01-04 23:47:54 -08:00
Adam Gough
86bcdcf0d3 fix(grain): save before deploying workflow (#2678)
* save before deployment fix

* moved to helper

* removed comment
2026-01-04 12:41:33 -08:00
Vikhyath Mondreti
ac942416de fix(kalshi): remove synthetically constructed outputs (#2677)
* fix(kalshi): remove synthetically constructed outputs

* fix api interface
2026-01-03 17:40:55 -08:00
Emir Karabeg
195e0e8e3f feat(popover): sections; improvement: tooltip, popover; fix(notifications): loading content (#2676) 2026-01-03 16:51:24 -08:00
Siddharth Ganesan
1673ef98ac fix(variables): fix variables block parsing error for json (#2675) 2026-01-03 14:42:39 -08:00
Siddharth Ganesan
356b473dc3 fix(import): fix missing blocks in import if undefined keys exist (#2674) 2026-01-03 14:37:59 -08:00
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
b7f6bab282 feat(tests): added testing package, overhauled tests (#2586)
* feat(tests): added testing package, overhauled tests

* fix build
2025-12-25 16:06:47 -08:00
Waleed
61e7213425 feat(i18n): update translations (#2585)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-25 13:33:14 -08:00
Waleed
3201abab56 improvement(schedules): use tanstack query to fetch schedule data, cleanup ui on schedule info component (#2584)
* improvement(schedules): use tanstack query to fetch schedule data, cleanup ui on schedule info component

* update trigger-save UI, increase auto disable to 100 consecutive from 10

* updated docs

* consolidate consts
2025-12-25 12:09:58 -08:00
Waleed
d79696beae feat(docs): added vector search (#2583)
* feat(docs): added vector search

* ack comments
2025-12-25 11:00:57 -08:00
Waleed
f604ca39a5 feat(chat-otp): added db fallback for chat otp (#2582)
* feat(chat-otp): added db fallback for chat otp

* ack PR comments
2025-12-25 09:37:20 -08:00
Waleed
26ec12599f improvement(byok): updated styling for byok page (#2581) 2025-12-25 08:36:55 -08:00
Waleed
97372533ec feat(i18n): update translations (#2578) 2025-12-24 23:37:35 -08:00
Vikhyath Mondreti
66766a9d81 improvement(byok): remove web search block exa (#2579)
* remove exa from byok

* improvement(byok): remove web search block exa

* fix autolayout

* fix type
2025-12-24 19:26:48 -08:00
Vikhyath Mondreti
47a259b428 feat(byok): byok for hosted model capabilities (#2574)
* feat(byok): byok for hosted model capabilities

* fix type

* add ignore lint

* accidentally added feature flags

* centralize byok fetch for LLM calls

* remove feature flags ts

* fix tests

* update docs
2025-12-24 18:20:54 -08:00
Waleed
40a6bf5c8c improvement(variables): update workflows to use deployed variables, not local ones to align with the rest of the canvas components (#2577)
* improvement(variables): update workflows to use deployed variables, not local ones to align with the rest of the canvas components

* update change detection to ignore trigger id since it is runtime metadata and not actually required to be redeployed
2025-12-24 17:40:23 -08:00
Waleed
da7eca9590 fix(change-detection): move change detection logic to client-side to prevent unnecessary API calls, consolidate utils (#2576)
* fix(change-detection): move change detection logic to client-side to prevent unnecessary API calls, consolidate utils

* added tests

* ack PR comments

* added isPublished to API response
2025-12-24 17:16:35 -08:00
Waleed
92b2e34d25 feat(autolayout): add fitToView on autolayout and reduce horizontal spacing between blocks (#2575)
* feat(autolayout): add fitToView on autolayout and reduce horizontal spacing between blocks

* remove additional yaml code
2025-12-24 16:19:29 -08:00
Vikhyath Mondreti
77521a3a57 fix(cancel-workflow-exec): move cancellation tracking for multi-task envs to redis (#2573)
* fix(cancel-workflow-exec): move cancellation tracking for multi-task envs to redis

* cleanup cancellation keys after execution
2025-12-24 11:51:09 -08:00
Waleed
cb8b9c547a fix(router): update router to handle azure creds the same way the agent block does (#2572)
* fix(router): update router to handle azure creds the same way the agent block does

* cleanup
2025-12-24 10:22:47 -08:00
Vikhyath Mondreti
b1cd8d151d fix(executor): workflow abort has to send abort signal to route for correct state update (#2571) 2025-12-24 02:50:58 -08:00
Waleed
1145f5c043 fix(shortcut): fixed global keyboard commands provider to follow latest ref pattern (#2569)
* fix(shortcut): fixed global commands provider to follow best practices

* cleanup

* ack PR comment
2025-12-24 00:25:15 -08:00
Waleed
b304233062 v0.5.43: export logs, circleback, grain, vertex, code hygiene, schedule improvements 2025-12-23 19:19:18 -08:00
Waleed
3a50ce4d99 feat(i18n): update translations (#2568)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-23 19:03:43 -08:00
Waleed
810d2089cf feat(schedules): remove save button for schedules, couple schedule deployment with workflow deployment (#2566)
* feat(schedules): remove save button for schedules, couple schedule deployment with workflow deployment

* added tests

* ack PR comments

* update turborepo

* cleanup, edge cases

* ack PR comment
2025-12-23 18:53:40 -08:00
Vikhyath Mondreti
8c89507247 improvement(logs): state machine of workflow execution (#2560)
* improvement(logs): state machine of workflow execution

* cleanup more code

* fallback consistency

* fix labels

* backfill in migration correctly

* make streaming stop in chat window correctly
2025-12-23 18:27:19 -08:00
Vikhyath Mondreti
169dd4a503 fix(grafana): tool outputs (#2565)
* fix(grafana): list annotations outputs

* fix more grafana tools
2025-12-23 17:23:12 -08:00
Vikhyath Mondreti
dc4e5d3bdc fix(dropbox): access type param pass through to get refresh token (#2564) 2025-12-23 16:32:58 -08:00
Emir Karabeg
31de55cbdf feat(ux): add expandFolder to auto expand folders on nested folder creation (#2562)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2025-12-23 16:27:00 -08:00
Waleed
eaca49037d fix(ui): remove css transition on popover and dropdown items to avoid flicker (#2563) 2025-12-23 15:46:27 -08:00
Waleed
2d26c0cb32 feat(i18n): update translations (#2561)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-23 15:42:54 -08:00
Waleed
cdf3d759b9 fix(jina): removed conditionally included outputs from jina (#2559)
* fix(jina): removed conditionally included outputs from jina

* ack PR comments
2025-12-23 15:20:10 -08:00
Vikhyath Mondreti
bf8fbebe22 improvement(code-quality): centralize regex checks, normalization (#2554)
* improvement(code-quality): centralize regex checks, normalization

* simplify resolution

* fix(copilot): don't allow duplicate name blocks

* centralize uuid check
2025-12-23 15:12:04 -08:00
Waleed
b23299dae4 feat(i18n): update translations (#2558)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-23 14:54:44 -08:00
Waleed
6c8f1a81c1 feat(tools): added grain and circleback (#2557)
* feat(tools): added grain and circleback

* oauth to pat and tool fix

* updated docs

* remove remaining oauth references

* cleanup

---------

Co-authored-by: aadamgough <adam@sim.ai>
2025-12-23 14:34:12 -08:00
Waleed
2c36926a4e fix(perplexity): remove deprecated perplexity sonar reasoning model (#2556) 2025-12-23 13:24:18 -08:00
Waleed
89c1085950 improvement(vertex): added vertex to all LLM-based blocks, fixed refresh (#2555)
* improvement(vertex): added vertex to all LLM-based blocks, fixed refresh

* fix build
2025-12-23 13:11:56 -08:00
Waleed
4e09c389e8 improvement(usage): update usage limit in realtime, standardize token output object across providers (#2553)
* improvement(usage-limit): update usage in real time, fix token output object

* updated tokenBreakdown to tokens, standardized input/output/total token object type across providers

* update remaining references

* ack PR comment

* remove singleton query client instance from hooks, leave only in zustand
2025-12-23 13:04:47 -08:00
Vikhyath Mondreti
641ac58017 fix(frozen-canvas): need to fetch the deployment version correctly (#2552) 2025-12-23 11:37:07 -08:00
Waleed
6c1e4ff7d6 improvement(oauth): remove unused scope hints (#2551)
* improvement(oauth): remove unused scope hints

* improvement(oauth): remove scopeHints and extraneous oauth provider data

* cleanup
2025-12-23 11:26:49 -08:00
Waleed
40e30a11e9 improvement(logs): update logs export route to respect filters (#2550) 2025-12-23 10:23:27 -08:00
Vikhyath Mondreti
57e4b49bd6 v0.5.42: fix memory migration 2025-12-23 01:24:54 -08:00
Vikhyath Mondreti
d1ebad912e fix memory migration (#2548) 2025-12-23 01:19:29 -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
621f9a40c7 improvement(landing): free usage limit (#2547) 2025-12-23 00:07:13 -08:00
Siddharth Ganesan
3100daa346 feat(copilot): add tools to access block outputs and upstream references (#2546)
* Add copilot references tools

* Minor fixes

* Omit vars field in block outputs when id is provided
2025-12-23 00:06:24 -08:00
Priyanshu Solanki
c252e885af improvement(logs): fixed logs for parallel and loop execution flow (#2468)
* fixed logs for parallel and loop execution flow

* Fix array check for collection

* fixed for empty loop and paralle blocks and showing input on dashboard

* extracted utility functions

* fixed the refrencing errors and making sure it propogates to the console

* fix parallel

* fix tests'

---------

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>
2025-12-23 00:02:02 -08:00
Waleed
b0748c82f9 fix(search): removed full text param from built-in search, anthropic provider streaming fix (#2542)
* fix(search): removed full text param from built-in search, anthropic provider streaming fix

* rewrite gemini provider with official sdk + add thinking capability

* vertex gemini consolidation

* never silently use different model

* pass oauth client through the googleAuthOptions param directly

* make server side provider registry

* remove comments

* take oauth selector below model selector

---------

Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
2025-12-22 23:57:11 -08:00
Waleed
f5245f3eca fix(billing): add line items for wand (#2543)
* fix(billing): add line items for wand

* ack pr comment
2025-12-22 23:06:14 -08:00
Waleed
f2ef5f0811 feat(i18n): update translations (#2541)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-22 21:17:01 -08:00
Waleed
37443a7b77 improvement(kb): improve chunkers, respect user-specified chunk configurations, added tests (#2539)
* improvement(kb): improve chunkers, respect user-specified chunk configurations, added tests

* ack PR commnets

* updated docs

* cleanup
2025-12-22 20:47:29 -08:00
lif
e0d96e2126 fix(oauth): add User-Agent header to Reddit token refresh (#2517)
Reddit API requires User-Agent header for all requests including OAuth
token refresh. Without it, requests fail with 403 error after the
initial token expires.

Fixes #1822
2025-12-22 20:09:38 -08:00
Waleed
827dd0466f feat(i18n): update translations (#2538)
Co-authored-by: icecrasher321 <icecrasher321@users.noreply.github.com>
2025-12-22 20:09:03 -08:00
Vikhyath Mondreti
ccd92b9054 improvement(block-metadata): remove references to yaml syntax in best practices (#2537) 2025-12-22 20:07:29 -08:00
Vikhyath Mondreti
6af291ca9f improvement(pricing): increase free user limit to 20 usd (#2536)
* improvement(pricing): increase free user limit to 20 usd

* make gemini pricing accurate

* generate migration for db constant

* update docs

* test notif data
2025-12-22 19:51:22 -08:00
Vikhyath Mondreti
be9ab4c833 fix(dashboard): flash based on loading check (#2535) 2025-12-22 18:49:41 -08:00
Emir Karabeg
ab3a3d12fe improvement(logs): dashboard/logs optimizations and improvements (#2414)
* improvement(logs): dashboard/logs optimizations and improvements

* improvement: addressed comments

* improvement: loading

* cleanup

* ack PR comments

* cleanup more

---------

Co-authored-by: waleed <walif6@gmail.com>
2025-12-22 16:44:10 -08:00
Waleed
e01d4cb990 feat(i18n): update translations (#2530)
Co-authored-by: icecrasher321 <icecrasher321@users.noreply.github.com>
2025-12-22 16:11:59 -08:00
Vikhyath Mondreti
8c2c49eb14 fix(models): memory fixes, provider code typing, cost calculation cleanup (#2515)
* improvement(memory): should not be block scoped

* cleanup provider code

* update other providers

* cleanup fallback code

* remove flaky test

* fix memory

* move streaming fix to right level

* cleanup streaming server

* make memories workspace scoped

* update docs

* fix dedup logic

* fix streaming parsing issue for multiple onStream calls for same block

* fix(provieders): support parallel agent tool calls, consolidate utils

* address greptile comments

* remove all comments

* fixed openrouter response format handling, groq & cerebras response formats

* removed duplicate type

---------

Co-authored-by: waleed <walif6@gmail.com>
2025-12-22 15:59:53 -08:00
Waleed
086982c7a3 improvement(docs): update og image (#2529) 2025-12-22 13:16:39 -08:00
Waleed
2b7807a7de feat(i18n): update translations (#2526)
* feat(i18n): update translations

* fixed build

---------

Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-22 11:20:42 -08:00
Waleed
2d4a660246 feat(intercom): added additional params to intercom tools (#2523) 2025-12-22 10:24:49 -08:00
Siddharth Ganesan
e981b1dc1b improvement(copilot): improve copilot metadata processing and tool output memory (#2516) 2025-12-21 23:24:55 -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
Adam Gough
58fcb4ed80 fix(jira): added uuid (#2513)
* added uuid param

* revmoed comment

* fixed naming
2025-12-21 22:04:05 -08:00
Vikhyath Mondreti
e4d211c2f0 improvement(supabase): allow non-public schemas (#2511) 2025-12-21 21:20:36 -08:00
Waleed
0f4ec962ad v0.5.39: notion, workflow variables fixes 2025-12-20 20:44:00 -08:00
Waleed
f21eaf1f10 fix(vars): add socket persistence when variable names are changed, update variable name normalization to match block name normalization, added space constraint on envvar names (#2508)
* fix(vars): add socket persistence when variable names are changed, update variable name normalization to match block name normalization, added space constraint on envvar names

* removed redundant queueing, removed unused immediate flag from sockets ops

* ack PR comments
2025-12-20 20:35:28 -08:00
Waleed
942da8815d fix(notion): remove hyphenation of incoming page ID's (#2507) 2025-12-20 19:35:44 -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
214632604d feat(settings): added snap to grid slider to settings (#2504)
* feat(settings): added snap to grid slider to settings

* ack PR comments

* ack PR comment
2025-12-20 16:54:40 -08:00
Vikhyath Mondreti
1ddbac1d2e fix(code): cmd-z after refocus should not clear subblock (#2503) 2025-12-20 16:26:30 -08:00
Waleed
35a57bfad4 feat(audit): added audit log for billing line items (#2500)
* feat(audit): added audit log for billing line items

* remove migration

* reran migrations after resolving merge conflict

* ack PR comment
2025-12-20 14:10:01 -08:00
Waleed
f8678b179a fix(migrations): remove duplicate indexes (#2501) 2025-12-20 13:55:26 -08:00
Siddharth Ganesan
0ebb45b2db feat(copilot): show inline prompt to increase usage limit or upgrade plan (#2465)
* Add limit v1

* fix ui for copilot upgrade limit inline

* open settings modal

* Upgrade plan button

* Remove comments

* Ishosted check

* Fix hardcoded bumps

---------

Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com>
Co-authored-by: Waleed <walif6@gmail.com>
Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
2025-12-20 13:46:06 -08:00
Waleed
6247f421bc improvement(queries): add workspaceId to execution logs, added missing indexes based on query insights (#2471)
* improvement(queries): added missing indexes

* add workspaceId to execution logs

* remove migration to prep merge

* regen migration

---------

Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
2025-12-20 13:33:10 -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
Waleed
6385d82b85 improvement(ui): updated kb tag component to match existing table (#2498)
* improvement(ui): updated kb tag component to match existing table

* fix selection

* fix more ui

---------

Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
2025-12-19 22:26:24 -08:00
Waleed
f91beb324e fix(condition): fixed deactivated edges when if and else if conditions connected to same destination block, added 100+ unit tests (#2497) 2025-12-19 21:12:49 -08:00
Priyanshu Solanki
4f69b171f2 feat(kb): Adding support for more tags to the KB (#2433)
* creating boolean, number and date tags with different equality matchings

* feat: add UI for tag field types with filter operators

- Update base-tags-modal with field type selector dropdown
- Update document-tags-modal with different input types per fieldType
- Update knowledge-tag-filters with operator dropdown and type-specific inputs
- Update search routes to support all tag slot types
- Update hook to use AllTagSlot type

* feat: add field type support to document-tag-entry component

- Add dropdown with all field types (Text, Number, Date, Boolean)
- Render different value inputs based on field type
- Update slot counting to include all field types (28 total)

* fix: resolve MAX_TAG_SLOTS error and z-index dropdown issue

- Replace MAX_TAG_SLOTS with totalSlots in document-tag-entry
- Add z-index to SelectContent in base-tags-modal for proper layering

* fix: handle non-text columns in getTagUsage query

- Only apply empty string check for text columns (tag1-tag7)
- Numeric/date/boolean columns only check IS NOT NULL
- Cast values to text for consistent output

* refactor: use EMCN components for KB UI

- Replace @/components/ui imports with @/components/emcn
- Use Combobox instead of Select for dropdowns
- Use EMCN Switch, Button, Input, Label components
- Remove unsupported 'size' prop from EMCN Button

* fix: layout for delete button next to date picker

- Change delete button from absolute to inline positioning
- Add proper column width (w-10) for delete button
- Add empty header cell for delete column
- Apply fix to both document-tag-entry and knowledge-tag-filters

* fix: clear value when switching tag field type

- Reset value to empty when changing type (e.g., boolean to text)
- Reset value when tag name changes and type differs
- Prevents 'true'/'false' from sticking in text inputs

* feat: add full support for number/date/boolean tag filtering in KB search

- Copy all tag types (number, date, boolean) from document to embedding records
- Update processDocumentTags to handle all field types with proper type conversion
- Add number/date/boolean columns to document queries in checkDocumentWriteAccess
- Update chunk creation to inherit all tag types from parent document
- Add getSearchResultFields helper for consistent query result selection
- Support structured filters with operators (eq, gt, lt, between, etc.)
- Fix search queries to include all 28 tag fields in results

* fixing tags import issue

* fix rm file

* reduced number to 3 and date to 2

* fixing lint

* fixed the prop size issue

* increased number from 3 to 5 and boolean from 7 to 2

* fixed number the sql stuff

* progress

* fix document tag and kb tag modals

* update datepicker emcn component

* fix ui

* progress on KB block tags UI

* fix issues with date filters

* fix execution parsing of types for KB tags

* remove migration before merge

* regen migrations

* fix tests and types

* address greptile comments

* fix more greptile comments

* fix filtering logic for multiple of same row

* fix tests

---------

Co-authored-by: priyanshu.solanki <priyanshu.solanki@saviynt.com>
Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
2025-12-19 21:00:35 -08:00
Waleed
a1a189f328 fix(condition): remove dead code from condition handler, defer resolution to function execute tool like the function block (#2496) 2025-12-19 20:18:42 -08:00
Waleed
7dc48510dc fix(tool-input): allow multiple instances of workflow block or kb tools as agent tools (#2495)
* fix(tool-input): allow multiple instances of workflow block or kb tools as agent tools

* ack PR comments
2025-12-19 19:19:42 -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
93fe68785e fix(subflow): prevent auto-connect across subflow edges with keyboard shortcut block additions, make positioning for auto-drop smarter (#2489)
* fix(subflow): prevent auto-connect across subflow edges with keyboard shortcut block additions, make positioning for auto-drop smarter

* stronger typing
2025-12-19 18:31:29 -08:00
Vikhyath Mondreti
50c1c6775b fix(logs): always capture cost, logging size failures (#2487)
* fix(logs): truncate strings in tracespans crashing insertion

* add depth check to not crash

* custom serialization to not break tracepsans

* log costs even in log creation failure

* code cleanup?

* fix typing

* remove null bytes

* increase char limit

* reduce char limit
2025-12-19 17:39:18 -08:00
Waleed
df5f823d1c fix(autofill): add dummy inputs to prevent browser autofill for various fields, prevent having 0 workflows in workspace (#2482)
* fix(autofill): add dummy inputs to prevent browser autofill for various fields, prevent having 0 workflows in workspace

* cleanup

* ack PR comments

* fix failing test
2025-12-19 15:29:01 -08:00
Waleed
094f87fa1f fix(edges): prevent autoconnect outgoing edges from response block (#2479) 2025-12-19 13:19:53 -08:00
Waleed
65efa039da fix(redaction): consolidate redaction utils, apply them to inputs and outputs before persisting logs (#2478)
* fix(redaction): consolidate redaction utils, apply them to inputs and outputs before persisting logs

* added testing utils
2025-12-19 13:17:51 -08:00
Waleed
6b15a50311 improvement(ui): updated subscription and team settings modals to emcn (#2477) 2025-12-19 11:41:47 -08:00
Waleed
65787d7cc3 fix(api-keys): remove billed account check during api key generation (#2476) 2025-12-19 11:33:00 -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
Waleed
656a6b8abd fix(sanitization): added more input sanitization to tool routes (#2475)
* fix(sanitization): added more input sanitization to tool routes

* ack PR comments
2025-12-19 01:27:20 -08:00
Waleed
889b44c90a improvement(db): added missing indexes for common access patterns (#2473) 2025-12-19 00:46:10 -08:00
Waleed
3a33ec929f fix(authentication): added auth checks for various routes, mysql and postgres query validation, csp improvements (#2472) 2025-12-19 00:44:52 -08:00
Waleed
24356d99ec fix(unsubscribe): add one-click unsubscribe (#2467)
* fix(unsubscribe): add one-click unsubscribe

* ack Pr comments
2025-12-18 21:16:24 -08:00
Waleed
6de1c04517 feat(i18n): update translations (#2470) 2025-12-18 21:01:51 -08:00
Adam Gough
38be2b76c4 fix(slack): respect message limit, remove duplicate canonical representations (#2469)
* fix(slack): respect message limit, remove duplicate canonical representations

* removed comment

* updated docs script

---------

Co-authored-by: aadamgough <adam@sim.ai>
2025-12-18 20:37:14 -08:00
Waleed
a2f14cab54 feat(og): add opengraph images for templates, blogs, and updated existing opengraph image for all other pages (#2466)
* feat(og): add opengraph images for templates, blogs, and updated existing opengraph image for all other pages

* added to workspace templates page as well

* ack PR comments
2025-12-18 19:15:06 -08:00
Priyanshu Solanki
474762d6fb improvement(hitl): show resume url in tag dropdown within hitl block (#2464)
* fixed the human in the loop url resolution:

* greptilecomments

* greptilecomments

---------

Co-authored-by: Pbonmars-20031006@users.noreply.github.com
2025-12-18 19:43:37 -07:00
Waleed
0005c3e465 feat(i18n): update translations (#2463)
Co-authored-by: aadamgough <aadamgough@users.noreply.github.com>
2025-12-18 18:18:31 -08:00
Adam Gough
fc40b4f7af fix(tools): improved slack output ux and jira params (#2462)
* fixed slack output

* updated jira

* removed comment

* change team uuid
2025-12-18 17:56:10 -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
Priyanshu Solanki
2a7f51a2f6 adding clamps for subflow drag and drops of blocks (#2460)
Co-authored-by: priyanshu.solanki <priyanshu.solanki@saviynt.com>
2025-12-18 16:57:58 -07:00
Waleed
90c3c43607 fix(blog): add back unoptimized tag, fix styling (#2461) 2025-12-18 15:55:47 -08:00
Siddharth Ganesan
83d813a7cc improvement(copilot): add edge handle validation to copilot edit workflow (#2448)
* Add edge handle validation

* Clean

* Fix lint

* Fix empty target handle
2025-12-18 15:40:00 -08:00
Vikhyath Mondreti
811c736705 fix failing lint from os contributor (#2459) 2025-12-18 15:03:31 -08:00
Vikhyath Mondreti
c6757311af Merge branch 'main' into staging 2025-12-18 14:58:48 -08:00
div
b5b12ba2d1 fix(teams): webhook notifications crash (#2426)
* fix(docs): clarify working directory for drizzle migration (#2375)

* fix(landing): prevent url encoding for spaces for footer links (#2376)

* fix: handle empty body.value in Teams webhook notification parser (#2425)

* Update directory path for migration command

---------

Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com>
Co-authored-by: Waleed <walif6@gmail.com>
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
Co-authored-by: icecrasher321 <icecrasher321@users.noreply.github.com>
Co-authored-by: Siddharth Ganesan <33737564+Sg312@users.noreply.github.com>
Co-authored-by: mosa <mosaxiv@gmail.com>
Co-authored-by: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com>
Co-authored-by: Adam Gough <77861281+aadamgough@users.noreply.github.com>
Co-authored-by: Shivam <shivamprajapati035@gmail.com>
Co-authored-by: Gaurav Chadha <65453826+Chadha93@users.noreply.github.com>
Co-authored-by: root <root@Delta.localdomain>
2025-12-18 14:57:27 -08:00
Waleed
0d30676e34 fix(blog): revert back to using next image tags in blog (#2458) 2025-12-18 13:51:58 -08:00
Waleed
36bdccb449 fix(ui): fixed visibility issue on reset passowrd page (#2456) 2025-12-18 13:24:32 -08:00
Waleed
f45730a89e improvement(helm): added SSO and cloud storage variables to helm charts (#2454)
* improvement(helm): added SSO and cloud storage variables to helm charts

* consolidated sf types
2025-12-18 13:12:21 -08:00
Vikhyath Mondreti
04cd837e9c fix(notifs): inactivity polling filters, consolidate trigger types, minor consistency issue with filter parsing (#2452)
* fix(notifs-slac): display name for account

* fix inactivity polling check

* consolidate trigger types

* remove redundant defaults

* fix
2025-12-18 12:49:58 -08:00
Waleed
c23130a26e Revert "fix(salesforce): updated to more flexible oauth that allows production, developer, and custom domain salesforce orgs (#2441) (#2444)" (#2453)
This reverts commit 9da19e84b7.
2025-12-18 12:46:24 -08:00
Priyanshu Solanki
7575cd6f27 Merge pull request #2451 from simstudioai/improvement/SIM-514-useWebhookUrl-conditioning
improvement(useWebhookUrl): GET api/webhook is called when useWebhookUrl:true
2025-12-18 13:31:06 -07:00
priyanshu.solanki
fbde64f0b0 fixing lint errors 2025-12-18 13:04:25 -07:00
Waleed
25f7ed20f6 feat(docs): added 404 page for the docs (#2450)
* feat(docs): added 404 page for the docs

* added metadata
2025-12-18 11:46:42 -08:00
priyanshu.solanki
261aa3d72d fixing a react component: 2025-12-18 12:39:47 -07:00
Waleed
9da19e84b7 fix(salesforce): updated to more flexible oauth that allows production, developer, and custom domain salesforce orgs (#2441) (#2444)
* fix(oauth): updated oauth providers that had unstable reference IDs leading to duplicate oauth records (#2441)

* fix(oauth): updated oauth providers that had unstable reference IDs leading to duplicate oauth records

* ack PR comments

* ack PR comments

* cleanup salesforce refresh logic

* ack more PR comments
2025-12-18 11:39:28 -08:00
priyanshu.solanki
e83afc0a62 fixing the useWbehookManangement call to only call the loadwebhookorgenerateurl function when the useWebhookurl flag is true 2025-12-18 12:31:18 -07:00
Vikhyath Mondreti
1720fa8749 feat(compare-schema): ci check to make sure schema.ts never goes out of sync with migrations (#2449)
* feat(compare-schema): ci check to make sure schema.ts never goes out of sync with migrations

* test out of sync [do not merge]

* Revert "test out of sync [do not merge]"

This reverts commit 9771f66b84.
2025-12-18 11:25:19 -08:00
Waleed
f3ad7750af fix(auth): added same-origin validation to forget password route, added confirmation for disable auth FF (#2447)
* fix(auth): added same-origin validation to forget password route, added confirmation for disable auth FF

* ack PR comments
2025-12-18 11:07:25 -08:00
Vikhyath Mondreti
78b7643e65 fix(condition): async execution isolated vm error (#2446)
* fix(condition): async execution isolated vm error

* fix tests
2025-12-18 11:02:01 -08:00
Siddharth Ganesan
7ef1150383 fix(workflow-state, copilot): prevent copilot from setting undefined state, fix order of operations for copilot edit workflow, add sleep tool (#2440)
* Fix copilot ooo

* Add copilot sleep tool

* Fix lint
2025-12-18 09:57:01 -08:00
Waleed
67cfb21d08 v0.5.34: servicenow, code cleanup, prevent cyclic edge connections, custom tool fixes 2025-12-17 23:39:10 -08:00
Waleed
a337af92bc fix(custom-tools): added missing _toolSchema to internal param set for agents calling custom tools (#2445) 2025-12-17 23:38:36 -08:00
Waleed
b4a99779eb feat(i18n): update translations (#2443)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-17 20:55:06 -08:00
Waleed
471cb4747c fix(oauth): updated oauth providers that had unstable reference IDs leading to duplicate oauth records (#2441)
* fix(oauth): updated oauth providers that had unstable reference IDs leading to duplicate oauth records

* ack PR comments
2025-12-17 20:45:38 -08:00
Priyanshu Solanki
491bd783b5 fix(servicenow): update servicenow block to use basic auth instead of oauth (#2435)
* fix adding client ID and secret fields to supprot ouath

* revert servicenow to use basic auth instead of oauth

* fix failing tests

---------

Co-authored-by: priyanshu.solanki <priyanshu.solanki@saviynt.com>
Co-authored-by: waleed <walif6@gmail.com>
2025-12-17 20:41:46 -08:00
Waleed
5516fa39c3 fix(graph): prevent cyclic dependencies in graph following ReactFlow examples (#2439)
* fix(graph): prevent cyclic dependencies in graph following ReactFlow examples

* ack PR comment
2025-12-17 19:13:39 -08:00
Waleed
21fa92bc41 feat(i18n): update translations (#2438)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-17 18:01:43 -08:00
Vikhyath Mondreti
26ca37328a fix(conditions): make outputs correct (#2437) 2025-12-17 17:15:16 -08:00
Waleed
731997f768 fix(envvars): cleanup unused envvars (#2436)
* fix(envvars): cleanup unused envvars

* removed unused react-google-drive-picker dep
2025-12-17 17:13:01 -08:00
Waleed
1d6975db49 v0.5.33: loops, chat fixes, subflow resizing refactor, terminal updates 2025-12-17 15:45:39 -08:00
Waleed
c4a6d11cc0 fix(condition): used isolated vms for condition block RCE (#2432)
* fix(condition): used isolated vms for condition block RCE

* ack PR comment

* one more

* remove inputForm from sched, update loop condition to also use isolated vm

* hide servicenow
2025-12-17 15:29:25 -08:00
Waleed
7b5405e968 feat(vertex): added vertex to list of supported providers (#2430)
* feat(vertex): added vertex to list of supported providers

* added utils files for each provider, consolidated gemini utils, added dynamic verbosity and reasoning fetcher
2025-12-17 14:57:58 -08:00
Vikhyath Mondreti
1ae3b47f5c fix(inactivity-poll): need to respect level and trigger filters (#2431) 2025-12-17 14:50:33 -08:00
Waleed
3120a785df fix(terminal): fix text wrap for errors and messages with long strings (#2429) 2025-12-17 13:42:43 -08:00
Vikhyath Mondreti
8775e76c32 improvement(subflow): resize vertical height estimate (#2428)
* improvement(node-dims): share constants for node padding

* fix vertical height estimation
2025-12-17 12:07:57 -08:00
Vikhyath Mondreti
9a6c68789d fix(subflow): resizing live update 2025-12-17 11:49:24 -08:00
Waleed
08bc1125bd fix(cmd-k): when navigating to current workspace/workflow, close modal instead of navigating (#2420)
* fix(cmd-k): when navigating to current workspace, close modal instead of navigating

* ack PR comment
2025-12-17 10:21:35 -08:00
Waleed
f4f74da1dc feat(i18n): update translations (#2421)
Co-authored-by: icecrasher321 <icecrasher321@users.noreply.github.com>
2025-12-17 10:21:15 -08:00
Vikhyath Mondreti
de330d80f5 improvement(mcp): restructure mcp tools caching/fetching info to improve UX (#2416)
* feat(mcp): improve cache practice

* restructure mcps fetching, caching, UX indicators

* fix schema

* styling improvements

* fix tooltips and render issue

* fix loading sequence + add redis

---------

Co-authored-by: waleed <walif6@gmail.com>
2025-12-16 21:23:18 -08:00
Emir Karabeg
b7228d57f7 feat(service-now): added service now block (#2404)
* feat(service-now): added service now block

* fix: bun lock

* improvement: fixed @trigger.dev/sdk imports and removal of sentry blocks

* improvement: fixed @trigger.dev/sdk import

* improvement: fixed @trigger.dev/sdk import

* fix(servicenow): save accessTokenExpiresAt on initial OAuth account creation

* docs(servicenow): add ServiceNow tool documentation and icon mapping

* fixing bun lint issues

* fixing username/password fields

* fixing test file for refreshaccesstoken to support instance uri

* removing basic auth and fixing undo-redo/store.ts

* removed import set api code, changed CRUD operations to CRUD_record and added wand configuration to help users to generate JSON Arrays

---------

Co-authored-by: priyanshu.solanki <priyanshu.solanki@saviynt.com>
2025-12-16 21:16:09 -08:00
Waleed
dcbeca1abe fix(subflow): fix json stringification in subflow collections (#2419)
* fix(subflow): fix json stringification in subflow collections

* cleanup
2025-12-16 20:47:58 -08:00
Waleed
27ea333974 fix(chat): fix stale closure in workflow runner for chat (#2418) 2025-12-16 19:59:02 -08:00
Waleed
9861d3a0ac improvement(helm): added more to helm charts, remove instance selector for various cloud providers (#2412)
* improvement(helm): added more to helm charts, remove instance selector for various cloud providers

* ack PR comment
2025-12-16 18:24:00 -08:00
Waleed
fdbf8be79b fix(logs-search): restored support for log search queries (#2417) 2025-12-16 18:18:46 -08:00
Adam Gough
6f4f4e22f0 fix(loop): increased max loop iterations to 1000 (#2413) 2025-12-16 16:08:56 -08:00
Waleed
837aabca5e v0.5.32: google sheets fix, schedule input format 2025-12-16 15:41:04 -08:00
Vikhyath Mondreti
f7d2c9667f fix(serializer): condition check should check if any condition are met (#2410)
* fix(serializer): condition check should check if any condition are met

* remove comments

* remove more comments
2025-12-16 14:36:40 -08:00
Waleed
29befbc5f6 feat(schedule): add input form to schedule (#2405)
* feat(schedule): add input form to schedule

* change placeholder
2025-12-16 11:23:57 -08:00
Vikhyath Mondreti
f9cfca92bf v0.5.31: add zod as direct dep 2025-12-15 20:40:02 -08:00
Vikhyath Mondreti
9cf8aaee1b fix(sockets): add zod as direct sockets server dep (#2397)
* fix(sockets): add zod as direct sockets server dep

* fix bun lock
2025-12-15 20:25:40 -08:00
Waleed
25afacb25e v0.5.30: vllm fixes, permissions fixes, isolated vms for code execution, tool fixes 2025-12-15 19:38:01 -08:00
Emir Karabeg
0e6a1315d0 improvement: workflow loading, sidebar scrolling (#2322)
* improvement: workflow loading, sidebar scrolling

* further optimizations

* remove redundant perms calls

* remove redundant api calls

* use displayNodes local state to make dragging smooth even in larger workflows

* improvement(logs): trace span output styling

* fix(s-modal): sidebar overflow scrolling

* fix(footer): guardrails link

* improvement(loading): spinner

* refactor(training-modal): changed file name

* improvement(spinner): optimize spinner in background

---------

Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
2025-12-15 19:21:21 -08:00
Waleed
f0dc8e81d9 fix(build): downgrade nextjs from canary to 16.0.9 (#2394) 2025-12-15 19:00:52 -08:00
Waleed
ab30d37020 feat(i18n): update translations (#2395)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-15 18:45:19 -08:00
Waleed
12d42e29ac fix(docs): regen docs (#2393) 2025-12-15 18:30:48 -08:00
Waleed
a5b7148375 fix(node): use node subprocess explicitly (#2391)
* fix(node): use node subprocess explicitly

* add explicit documentation

* fixed build
2025-12-15 18:18:26 -08:00
Adam Gough
57e6a0b621 fixed jira output (#2392) 2025-12-15 18:16:50 -08:00
Waleed
b72e111e22 fix(vm): use node child process for RCE (#2389)
* fix(vm): use node child process for RCE

* ack PR comments

* cleanup oprhaned processes

* cleaned up

* ack pr comment

* fix path

* use spawn instead of fork

* acked PR comments
2025-12-15 17:52:19 -08:00
Vikhyath Mondreti
300aaa5368 feat(slack): ability to have DM channels as destination for slack tools (#2388)
* feat(slack): tool to allow dms

* don't make new tool but separate out destination

* add log for message limit

* consolidate slack selector code

* add scopes correctly

* fix zod validation

* update message logs

* add console logs

* fix

* remove from tools where feature not needed

* add correct condition

* fix type

* fix cond eval logic
2025-12-15 17:39:53 -08:00
Waleed
bdcc42e566 fix(permissions): add client-side hints to prevent read-only users from creating workflows or folders (#2390) 2025-12-15 17:14:33 -08:00
Waleed
a45bb1bf3b fix(rce): add 'isolate' to list of trusted deps, fixed custom tools environment resolution (#2387)
* fix(rce): add isolate to list of trusted deps

* updated error enchancer in RCE

* fixed

* fix build

* fix failing test

* fix build

* fix build

* remove extraneous comment
2025-12-15 15:24:11 -08:00
Waleed
3a5363ac54 feat(i18n): update translations (#2386)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-15 14:23:29 -08:00
Waleed
17b2e58c32 improvement(rce): updated rce to use isolate pkg for RCE (#2385)
* improvement(rce): updated rce to use isolate pkg for RCE

* lazy load isolate instance

* update zoom docs
2025-12-15 13:26:39 -08:00
Vikhyath Mondreti
8d38c2f15e fix(wand): should not be able to use wand ui without write/admin perms (#2384) 2025-12-15 13:17:05 -08:00
Waleed
9762bbc451 fix(wand): validate session before allowing access to wand generation (#2383)
* fix(wand): validate session before allowing access to wand generation

* ack PR comment

* ack PR comments
2025-12-15 12:20:45 -08:00
Vikhyath Mondreti
e43afc8b6c fix(subscription): incomplete team subscription race condition (#2381) 2025-12-15 11:36:08 -08:00
Gaurav Chadha
fcf52ac4d5 fix(landing): prevent url encoding for spaces for footer links (#2376) 2025-12-15 10:59:12 -08:00
Shivam
842200bcf2 fix(docs): clarify working directory for drizzle migration (#2375) 2025-12-15 10:58:27 -08:00
Waleed
6009a7359f fix(vllm): remove requirement for api key for vllm (#2380) 2025-12-15 10:48:48 -08:00
Waleed
0acd86023c fix(blog): use unoptimized tag for image assets (#2374) 2025-12-14 23:16:09 -08:00
Waleed
a0fb889644 v0.5.29: chat voice mode, opengraph for docs, option to disable auth 2025-12-13 19:50:06 -08:00
Waleed
431f206930 fix(tools): add validation for ids in tool routes (#2371) 2025-12-13 19:40:33 -08:00
Waleed
7443e28054 feat(i18n): update translations (#2370)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-13 19:26:31 -08:00
Waleed
c962e3b398 feat(webflow): added collection, item, & site selectors for webflow (#2368)
* feat(webflow): added collection, item, & site selectors for webflow

* ack PR comments

* ack PR comments
2025-12-13 19:14:33 -08:00
Waleed
d5b95cbd33 fix(organizations): move organization better-auth client to conditionally be included based on FF (#2367)
* fix(organizations): move organization better-auth client to conditionally be included based on FF

* ack PR comment
2025-12-13 19:06:12 -08:00
Waleed
0fb084b9e4 fix(subflows): prevent cross-boundary connections on autoconnect drop between subflow blocks and regular blocks (#2366) 2025-12-13 17:38:59 -08:00
Waleed
95b9ca4670 feat(registration): allow self-hosted users to disable registration altogether (#2365)
* feat(registration): allow self-hosted users to disable registration altogether

* updated tests

* fix build
2025-12-13 17:34:53 -08:00
Vikhyath Mondreti
746ff68a2e fix(sub-deletion): subscription deletion handling for pro vs team/enterprise (#2364)
* fix(subscription): deletion should sync pro limits back to free

* consolidate duplicate code
2025-12-13 16:10:47 -08:00
Waleed
75a5b43252 feat(og): update og image (#2362) 2025-12-13 15:52:13 -08:00
Vikhyath Mondreti
8d0e50fd0d improvement(admin-routes): cleanup code that could accidentally desync stripe and DB (#2363)
* remove non-functional admin route

* stripe updates cleanup
2025-12-13 15:11:14 -08:00
Waleed
f7d1b06d75 feat(docs): add opengraph to docs for dynamic link preview (#2360) 2025-12-13 13:51:43 -08:00
Vikhyath Mondreti
73940ab390 fix(deployed-chat): voice mode (#2358)
* fix(deployed-chat): voice mode

* remove redundant check

* consolidate query

* invalidate session on password change + race condition fix
2025-12-13 12:31:03 -08:00
Vikhyath Mondreti
f111dac020 improvement(autolayout): reduce horizontal spacing (#2357) 2025-12-13 11:06:42 -08:00
Waleed
690be530c8 chore(icons): update spotify icon (#2356) 2025-12-13 02:11:42 -08:00
Waleed
4edb3be52d fix(spotify): added missing human readable scopes to oauth required modal (#2355) 2025-12-12 21:09:12 -08:00
2131 changed files with 210532 additions and 44151 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
@@ -48,6 +49,19 @@ jobs:
ENCRYPTION_KEY: '7cf672e460e430c1fba707575c2b0e2ad5a99dddf9b7b7e3b5646e630861db1c' # dummy key for CI only
run: bun run test
- name: Check schema and migrations are in sync
working-directory: packages/db
run: |
bunx drizzle-kit generate --config=./drizzle.config.ts
if [ -n "$(git status --porcelain ./migrations)" ]; then
echo "❌ Schema and migrations are out of sync!"
echo "Run 'cd packages/db && bunx drizzle-kit generate' and commit the new migrations."
git status --porcelain ./migrations
git diff ./migrations
exit 1
fi
echo "✅ Schema and migrations are in sync"
- name: Build application
env:
NODE_OPTIONS: '--no-warnings'

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.

View File

@@ -130,6 +130,7 @@ When running with Docker, use `host.docker.internal` if vLLM is on your host mac
**Requirements:**
- [Bun](https://bun.sh/) runtime
- [Node.js](https://nodejs.org/) v20+ (required for sandboxed code execution)
- PostgreSQL 12+ with [pgvector extension](https://github.com/pgvector/pgvector) (required for AI embeddings)
**Note:** Sim uses vector embeddings for AI features like knowledge bases and semantic search, which requires the `pgvector` PostgreSQL extension.
@@ -187,6 +188,7 @@ DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
Then run the migrations:
```bash
cd packages/db # Required so drizzle picks correct .env file
bunx drizzle-kit migrate --config=./drizzle.config.ts
```

View File

@@ -1,3 +1,4 @@
import type React from 'react'
import { findNeighbour } from 'fumadocs-core/page-tree'
import defaultMdxComponents from 'fumadocs-ui/mdx'
import { DocsBody, DocsDescription, DocsPage, DocsTitle } from 'fumadocs-ui/page'
@@ -10,14 +11,15 @@ import { LLMCopyButton } from '@/components/page-actions'
import { StructuredData } from '@/components/structured-data'
import { CodeBlock } from '@/components/ui/code-block'
import { Heading } from '@/components/ui/heading'
import { source } from '@/lib/source'
import { type PageData, source } from '@/lib/source'
export default async function Page(props: { params: Promise<{ slug?: string[]; lang: string }> }) {
const params = await props.params
const page = source.getPage(params.slug, params.lang)
if (!page) notFound()
const MDX = page.data.body
const data = page.data as PageData
const MDX = data.body
const baseUrl = 'https://docs.sim.ai'
const pageTreeRecord = source.pageTree as Record<string, any>
@@ -51,7 +53,7 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
if (index === urlParts.length - 1) {
breadcrumbs.push({
name: page.data.title,
name: data.title,
url: `${baseUrl}${page.url}`,
})
} else {
@@ -168,15 +170,15 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
return (
<>
<StructuredData
title={page.data.title}
description={page.data.description || ''}
title={data.title}
description={data.description || ''}
url={`${baseUrl}${page.url}`}
lang={params.lang}
breadcrumb={breadcrumbs}
/>
<DocsPage
toc={page.data.toc}
full={page.data.full}
toc={data.toc}
full={data.full}
breadcrumb={{
enabled: false,
}}
@@ -207,20 +209,32 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
</div>
<PageNavigationArrows previous={neighbours?.previous} next={neighbours?.next} />
</div>
<DocsTitle>{page.data.title}</DocsTitle>
<DocsDescription>{page.data.description}</DocsDescription>
<DocsTitle>{data.title}</DocsTitle>
<DocsDescription>{data.description}</DocsDescription>
</div>
<DocsBody>
<MDX
components={{
...defaultMdxComponents,
CodeBlock,
h1: (props) => <Heading as='h1' {...props} />,
h2: (props) => <Heading as='h2' {...props} />,
h3: (props) => <Heading as='h3' {...props} />,
h4: (props) => <Heading as='h4' {...props} />,
h5: (props) => <Heading as='h5' {...props} />,
h6: (props) => <Heading as='h6' {...props} />,
h1: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
<Heading as='h1' {...props} />
),
h2: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
<Heading as='h2' {...props} />
),
h3: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
<Heading as='h3' {...props} />
),
h4: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
<Heading as='h4' {...props} />
),
h5: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
<Heading as='h5' {...props} />
),
h6: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
<Heading as='h6' {...props} />
),
}}
/>
</DocsBody>
@@ -240,13 +254,16 @@ export async function generateMetadata(props: {
const page = source.getPage(params.slug, params.lang)
if (!page) notFound()
const data = page.data as PageData
const baseUrl = 'https://docs.sim.ai'
const fullUrl = `${baseUrl}${page.url}`
const ogImageUrl = `${baseUrl}/api/og?title=${encodeURIComponent(data.title)}`
return {
title: page.data.title,
title: data.title,
description:
page.data.description || 'Sim visual workflow builder for AI applications documentation',
data.description || 'Sim visual workflow builder for AI applications documentation',
keywords: [
'AI workflow builder',
'visual workflow editor',
@@ -255,16 +272,16 @@ export async function generateMetadata(props: {
'AI agents',
'no-code AI',
'drag and drop workflows',
page.data.title?.toLowerCase().split(' '),
data.title?.toLowerCase().split(' '),
]
.flat()
.filter(Boolean),
authors: [{ name: 'Sim Team' }],
category: 'Developer Tools',
openGraph: {
title: page.data.title,
title: data.title,
description:
page.data.description || 'Sim visual workflow builder for AI applications documentation',
data.description || 'Sim visual workflow builder for AI applications documentation',
url: fullUrl,
siteName: 'Sim Documentation',
type: 'article',
@@ -272,12 +289,23 @@ export async function generateMetadata(props: {
alternateLocale: ['en', 'es', 'fr', 'de', 'ja', 'zh']
.filter((lang) => lang !== params.lang)
.map((lang) => (lang === 'en' ? 'en_US' : `${lang}_${lang.toUpperCase()}`)),
images: [
{
url: ogImageUrl,
width: 1200,
height: 630,
alt: data.title,
},
],
},
twitter: {
card: 'summary',
title: page.data.title,
card: 'summary_large_image',
title: data.title,
description:
page.data.description || 'Sim visual workflow builder for AI applications documentation',
data.description || 'Sim visual workflow builder for AI applications documentation',
images: [ogImageUrl],
creator: '@simdotai',
site: '@simdotai',
},
robots: {
index: true,

View File

@@ -0,0 +1,23 @@
import { DocsBody, DocsPage } from 'fumadocs-ui/page'
export const metadata = {
title: 'Page Not Found',
}
export default function NotFound() {
return (
<DocsPage>
<DocsBody>
<div className='flex min-h-[60vh] flex-col items-center justify-center text-center'>
<h1 className='mb-4 bg-gradient-to-b from-[#8357FF] to-[#6F3DFA] bg-clip-text font-bold text-8xl text-transparent'>
404
</h1>
<h2 className='mb-2 font-semibold text-2xl text-foreground'>Page Not Found</h2>
<p className='text-muted-foreground'>
The page you're looking for doesn't exist or has been moved.
</p>
</div>
</DocsBody>
</DocsPage>
)
}

View File

@@ -0,0 +1,152 @@
import { ImageResponse } from 'next/og'
import type { NextRequest } from 'next/server'
export const runtime = 'edge'
const TITLE_FONT_SIZE = {
large: 64,
medium: 56,
small: 48,
} as const
function getTitleFontSize(title: string): number {
if (title.length > 45) return TITLE_FONT_SIZE.small
if (title.length > 30) return TITLE_FONT_SIZE.medium
return TITLE_FONT_SIZE.large
}
/**
* Loads a Google Font dynamically by fetching the CSS and extracting the font URL.
*/
async function loadGoogleFont(font: string, weights: string, text: string): Promise<ArrayBuffer> {
const url = `https://fonts.googleapis.com/css2?family=${font}:wght@${weights}&text=${encodeURIComponent(text)}`
const css = await (await fetch(url)).text()
const resource = css.match(/src: url\((.+)\) format\('(opentype|truetype)'\)/)
if (resource) {
const response = await fetch(resource[1])
if (response.status === 200) {
return await response.arrayBuffer()
}
}
throw new Error('Failed to load font data')
}
/**
* Generates dynamic Open Graph images for documentation pages.
*/
export async function GET(request: NextRequest) {
const { searchParams } = new URL(request.url)
const title = searchParams.get('title') || 'Documentation'
const baseUrl = new URL(request.url).origin
const allText = `${title}docs.sim.ai`
const fontData = await loadGoogleFont('Geist', '400;500;600', allText)
return new ImageResponse(
<div
style={{
height: '100%',
width: '100%',
display: 'flex',
flexDirection: 'column',
background: '#0c0c0c',
position: 'relative',
fontFamily: 'Geist',
}}
>
{/* Base gradient layer - subtle purple tint across the entire image */}
<div
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
background:
'radial-gradient(ellipse 150% 100% at 50% 100%, rgba(88, 28, 135, 0.15) 0%, rgba(88, 28, 135, 0.08) 25%, rgba(88, 28, 135, 0.03) 50%, transparent 80%)',
display: 'flex',
}}
/>
{/* Secondary glow - adds depth without harsh edges */}
<div
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
background:
'radial-gradient(ellipse 100% 80% at 80% 90%, rgba(112, 31, 252, 0.12) 0%, rgba(112, 31, 252, 0.04) 40%, transparent 70%)',
display: 'flex',
}}
/>
{/* Top darkening - creates natural vignette */}
<div
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
background:
'linear-gradient(180deg, rgba(0, 0, 0, 0.3) 0%, transparent 40%, transparent 100%)',
display: 'flex',
}}
/>
{/* Content */}
<div
style={{
display: 'flex',
flexDirection: 'column',
padding: '56px 72px',
height: '100%',
justifyContent: 'space-between',
}}
>
{/* Logo */}
<img src={`${baseUrl}/static/logo.png`} alt='sim' height={32} />
{/* Title */}
<span
style={{
fontSize: getTitleFontSize(title),
fontWeight: 600,
color: '#ffffff',
lineHeight: 1.1,
letterSpacing: '-0.02em',
}}
>
{title}
</span>
{/* Footer */}
<span
style={{
fontSize: 20,
fontWeight: 500,
color: '#71717a',
}}
>
docs.sim.ai
</span>
</div>
</div>,
{
width: 1200,
height: 630,
fonts: [
{
name: 'Geist',
data: fontData,
style: 'normal',
},
],
}
)
}

View File

@@ -1,16 +1,126 @@
import { createFromSource } from 'fumadocs-core/search/server'
import { source } from '@/lib/source'
import { sql } from 'drizzle-orm'
import { type NextRequest, NextResponse } from 'next/server'
import { db, docsEmbeddings } from '@/lib/db'
import { generateSearchEmbedding } from '@/lib/embeddings'
export const revalidate = 3600 // Revalidate every hour
export const runtime = 'nodejs'
export const revalidate = 0
export const { GET } = createFromSource(source, {
localeMap: {
en: { language: 'english' },
es: { language: 'spanish' },
fr: { language: 'french' },
de: { language: 'german' },
// ja and zh are not supported by the stemmer library, so we'll skip language config for them
ja: {},
zh: {},
},
})
/**
* Hybrid search API endpoint
* - English: Vector embeddings + keyword search
* - Other languages: Keyword search only
*/
export async function GET(request: NextRequest) {
try {
const searchParams = request.nextUrl.searchParams
const query = searchParams.get('query') || searchParams.get('q') || ''
const locale = searchParams.get('locale') || 'en'
const limit = Number.parseInt(searchParams.get('limit') || '10', 10)
if (!query || query.trim().length === 0) {
return NextResponse.json([])
}
const candidateLimit = limit * 3
const similarityThreshold = 0.6
const localeMap: Record<string, string> = {
en: 'english',
es: 'spanish',
fr: 'french',
de: 'german',
ja: 'simple', // PostgreSQL doesn't have Japanese support, use simple
zh: 'simple', // PostgreSQL doesn't have Chinese support, use simple
}
const tsConfig = localeMap[locale] || 'simple'
const useVectorSearch = locale === 'en'
let vectorResults: Array<{
chunkId: string
chunkText: string
sourceDocument: string
sourceLink: string
headerText: string
headerLevel: number
similarity: number
searchType: string
}> = []
if (useVectorSearch) {
const queryEmbedding = await generateSearchEmbedding(query)
vectorResults = await db
.select({
chunkId: docsEmbeddings.chunkId,
chunkText: docsEmbeddings.chunkText,
sourceDocument: docsEmbeddings.sourceDocument,
sourceLink: docsEmbeddings.sourceLink,
headerText: docsEmbeddings.headerText,
headerLevel: docsEmbeddings.headerLevel,
similarity: sql<number>`1 - (${docsEmbeddings.embedding} <=> ${JSON.stringify(queryEmbedding)}::vector)`,
searchType: sql<string>`'vector'`,
})
.from(docsEmbeddings)
.where(
sql`1 - (${docsEmbeddings.embedding} <=> ${JSON.stringify(queryEmbedding)}::vector) >= ${similarityThreshold}`
)
.orderBy(sql`${docsEmbeddings.embedding} <=> ${JSON.stringify(queryEmbedding)}::vector`)
.limit(candidateLimit)
}
const keywordResults = await db
.select({
chunkId: docsEmbeddings.chunkId,
chunkText: docsEmbeddings.chunkText,
sourceDocument: docsEmbeddings.sourceDocument,
sourceLink: docsEmbeddings.sourceLink,
headerText: docsEmbeddings.headerText,
headerLevel: docsEmbeddings.headerLevel,
similarity: sql<number>`ts_rank(${docsEmbeddings.chunkTextTsv}, plainto_tsquery(${tsConfig}, ${query}))`,
searchType: sql<string>`'keyword'`,
})
.from(docsEmbeddings)
.where(sql`${docsEmbeddings.chunkTextTsv} @@ plainto_tsquery(${tsConfig}, ${query})`)
.orderBy(
sql`ts_rank(${docsEmbeddings.chunkTextTsv}, plainto_tsquery(${tsConfig}, ${query})) DESC`
)
.limit(candidateLimit)
const seenIds = new Set<string>()
const mergedResults = []
for (let i = 0; i < Math.max(vectorResults.length, keywordResults.length); i++) {
if (i < vectorResults.length && !seenIds.has(vectorResults[i].chunkId)) {
mergedResults.push(vectorResults[i])
seenIds.add(vectorResults[i].chunkId)
}
if (i < keywordResults.length && !seenIds.has(keywordResults[i].chunkId)) {
mergedResults.push(keywordResults[i])
seenIds.add(keywordResults[i].chunkId)
}
}
const filteredResults = mergedResults.slice(0, limit)
const searchResults = filteredResults.map((result) => {
const title = result.headerText || result.sourceDocument.replace('.mdx', '')
const pathParts = result.sourceDocument
.replace('.mdx', '')
.split('/')
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
return {
id: result.chunkId,
type: 'page' as const,
url: result.sourceLink,
content: title,
breadcrumbs: pathParts,
}
})
return NextResponse.json(searchResults)
} catch (error) {
console.error('Semantic search error:', error)
return NextResponse.json([])
}
}

View File

@@ -56,6 +56,14 @@ export const metadata = {
title: 'Sim Documentation - Visual Workflow Builder for AI Applications',
description:
'Comprehensive documentation for Sim - the visual workflow builder for AI applications. Create powerful AI agents, automation workflows, and data processing pipelines.',
images: [
{
url: 'https://docs.sim.ai/api/og?title=Sim%20Documentation',
width: 1200,
height: 630,
alt: 'Sim Documentation',
},
],
},
twitter: {
card: 'summary_large_image',
@@ -64,7 +72,7 @@ export const metadata = {
'Comprehensive documentation for Sim - the visual workflow builder for AI applications.',
creator: '@simdotai',
site: '@simdotai',
images: ['/og-image.png'],
images: ['https://docs.sim.ai/api/og?title=Sim%20Documentation'],
},
robots: {
index: true,

View File

@@ -6,7 +6,10 @@ import { source } from '@/lib/source'
export const revalidate = false
export async function GET(_req: NextRequest, { params }: { params: Promise<{ slug?: string[] }> }) {
export async function GET(
_request: NextRequest,
{ params }: { params: Promise<{ slug?: string[] }> }
) {
const { slug } = await params
let lang: (typeof i18n.languages)[number] = i18n.defaultLanguage

File diff suppressed because one or more lines are too long

View File

@@ -13,6 +13,7 @@ import {
BrainIcon,
BrowserUseIcon,
CalendlyIcon,
CirclebackIcon,
ClayIcon,
ConfluenceIcon,
CursorIcon,
@@ -40,6 +41,8 @@ import {
GoogleSlidesIcon,
GoogleVaultIcon,
GrafanaIcon,
GrainIcon,
GreptileIcon,
HubspotIcon,
HuggingFaceIcon,
HunterIOIcon,
@@ -48,12 +51,14 @@ import {
IntercomIcon,
JinaAIIcon,
JiraIcon,
JiraServiceManagementIcon,
KalshiIcon,
LinearIcon,
LinkedInIcon,
LinkupIcon,
MailchimpIcon,
MailgunIcon,
MailServerIcon,
Mem0Icon,
MicrosoftExcelIcon,
MicrosoftOneDriveIcon,
@@ -85,6 +90,7 @@ import {
SendgridIcon,
SentryIcon,
SerperIcon,
ServiceNowIcon,
SftpIcon,
ShopifyIcon,
SlackIcon,
@@ -119,116 +125,122 @@ import {
type IconComponent = ComponentType<SVGProps<SVGSVGElement>>
export const blockTypeToIconMap: Record<string, IconComponent> = {
calendly: CalendlyIcon,
mailchimp: MailchimpIcon,
postgresql: PostgresIcon,
twilio_voice: TwilioIcon,
elasticsearch: ElasticsearchIcon,
rds: RDSIcon,
translate: TranslateIcon,
dynamodb: DynamoDBIcon,
wordpress: WordpressIcon,
tavily: TavilyIcon,
zendesk: ZendeskIcon,
youtube: YouTubeIcon,
supabase: SupabaseIcon,
vision: EyeIcon,
zoom: ZoomIcon,
confluence: ConfluenceIcon,
arxiv: ArxivIcon,
webflow: WebflowIcon,
pinecone: PineconeIcon,
apollo: ApolloIcon,
whatsapp: WhatsAppIcon,
typeform: TypeformIcon,
qdrant: QdrantIcon,
shopify: ShopifyIcon,
asana: AsanaIcon,
sqs: SQSIcon,
apify: ApifyIcon,
memory: BrainIcon,
gitlab: GitLabIcon,
polymarket: PolymarketIcon,
serper: SerperIcon,
linear: LinearIcon,
exa: ExaAIIcon,
telegram: TelegramIcon,
salesforce: SalesforceIcon,
hubspot: HubspotIcon,
hunter: HunterIOIcon,
linkup: LinkupIcon,
mongodb: MongoDBIcon,
airtable: AirtableIcon,
discord: DiscordIcon,
ahrefs: AhrefsIcon,
neo4j: Neo4jIcon,
tts: TTSIcon,
jina: JinaAIIcon,
google_docs: GoogleDocsIcon,
perplexity: PerplexityIcon,
google_search: GoogleIcon,
x: xIcon,
kalshi: KalshiIcon,
google_calendar: GoogleCalendarIcon,
zep: ZepIcon,
posthog: PosthogIcon,
grafana: GrafanaIcon,
google_slides: GoogleSlidesIcon,
microsoft_planner: MicrosoftPlannerIcon,
thinking: BrainIcon,
pipedrive: PipedriveIcon,
airtable: AirtableIcon,
apify: ApifyIcon,
apollo: ApolloIcon,
arxiv: ArxivIcon,
asana: AsanaIcon,
browser_use: BrowserUseIcon,
calendly: CalendlyIcon,
circleback: CirclebackIcon,
clay: ClayIcon,
confluence: ConfluenceIcon,
cursor: CursorIcon,
datadog: DatadogIcon,
discord: DiscordIcon,
dropbox: DropboxIcon,
stagehand: StagehandIcon,
google_forms: GoogleFormsIcon,
duckduckgo: DuckDuckGoIcon,
dynamodb: DynamoDBIcon,
elasticsearch: ElasticsearchIcon,
elevenlabs: ElevenLabsIcon,
exa: ExaAIIcon,
file: DocumentIcon,
mistral_parse: MistralIcon,
firecrawl: FirecrawlIcon,
github: GithubIcon,
gitlab: GitLabIcon,
gmail: GmailIcon,
google_calendar: GoogleCalendarIcon,
google_docs: GoogleDocsIcon,
google_drive: GoogleDriveIcon,
google_forms: GoogleFormsIcon,
google_groups: GoogleGroupsIcon,
google_search: GoogleIcon,
google_sheets: GoogleSheetsIcon,
google_slides: GoogleSlidesIcon,
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,
linkedin: LinkedInIcon,
linkup: LinkupIcon,
mailchimp: MailchimpIcon,
mailgun: MailgunIcon,
mem0: Mem0Icon,
memory: BrainIcon,
microsoft_excel: MicrosoftExcelIcon,
microsoft_planner: MicrosoftPlannerIcon,
microsoft_teams: MicrosoftTeamsIcon,
mistral_parse: MistralIcon,
mongodb: MongoDBIcon,
mysql: MySQLIcon,
neo4j: Neo4jIcon,
notion: NotionIcon,
onedrive: MicrosoftOneDriveIcon,
openai: OpenAIIcon,
outlook: OutlookIcon,
incidentio: IncidentioIcon,
onedrive: MicrosoftOneDriveIcon,
resend: ResendIcon,
google_vault: GoogleVaultIcon,
sharepoint: MicrosoftSharepointIcon,
huggingface: HuggingFaceIcon,
sendgrid: SendgridIcon,
video_generator: VideoIcon,
smtp: SmtpIcon,
google_groups: GoogleGroupsIcon,
mailgun: MailgunIcon,
clay: ClayIcon,
jira: JiraIcon,
search: SearchIcon,
linkedin: LinkedInIcon,
wealthbox: WealthboxIcon,
notion: NotionIcon,
elevenlabs: ElevenLabsIcon,
microsoft_teams: MicrosoftTeamsIcon,
github: GithubIcon,
sftp: SftpIcon,
ssh: SshIcon,
google_drive: GoogleDriveIcon,
sentry: SentryIcon,
reddit: RedditIcon,
parallel_ai: ParallelIcon,
spotify: SpotifyIcon,
stripe: StripeIcon,
perplexity: PerplexityIcon,
pinecone: PineconeIcon,
pipedrive: PipedriveIcon,
polymarket: PolymarketIcon,
postgresql: PostgresIcon,
posthog: PosthogIcon,
qdrant: QdrantIcon,
rds: RDSIcon,
reddit: RedditIcon,
resend: ResendIcon,
s3: S3Icon,
trello: TrelloIcon,
mem0: Mem0Icon,
knowledge: PackageSearchIcon,
intercom: IntercomIcon,
twilio_sms: TwilioIcon,
duckduckgo: DuckDuckGoIcon,
salesforce: SalesforceIcon,
search: SearchIcon,
sendgrid: SendgridIcon,
sentry: SentryIcon,
serper: SerperIcon,
servicenow: ServiceNowIcon,
sftp: SftpIcon,
sharepoint: MicrosoftSharepointIcon,
shopify: ShopifyIcon,
slack: SlackIcon,
datadog: DatadogIcon,
microsoft_excel: MicrosoftExcelIcon,
image_generator: ImageIcon,
google_sheets: GoogleSheetsIcon,
wikipedia: WikipediaIcon,
cursor: CursorIcon,
firecrawl: FirecrawlIcon,
mysql: MySQLIcon,
browser_use: BrowserUseIcon,
smtp: SmtpIcon,
spotify: SpotifyIcon,
sqs: SQSIcon,
ssh: SshIcon,
stagehand: StagehandIcon,
stripe: StripeIcon,
stt: STTIcon,
supabase: SupabaseIcon,
tavily: TavilyIcon,
telegram: TelegramIcon,
thinking: BrainIcon,
translate: TranslateIcon,
trello: TrelloIcon,
tts: TTSIcon,
twilio_sms: TwilioIcon,
twilio_voice: TwilioIcon,
typeform: TypeformIcon,
video_generator: VideoIcon,
vision: EyeIcon,
wealthbox: WealthboxIcon,
webflow: WebflowIcon,
whatsapp: WhatsAppIcon,
wikipedia: WikipediaIcon,
wordpress: WordpressIcon,
x: xIcon,
youtube: YouTubeIcon,
zendesk: ZendeskIcon,
zep: ZepIcon,
zoom: ZoomIcon,
}

View File

@@ -111,26 +111,24 @@ Verschiedene Blocktypen erzeugen unterschiedliche Ausgabestrukturen. Hier ist, w
```json
{
"content": "Original content passed through",
"conditionResult": true,
"selectedPath": {
"blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
"blockType": "agent",
"blockTitle": "Follow-up Agent"
},
"selectedConditionId": "condition-1"
"selectedOption": "condition-1"
}
```
### Ausgabefelder des Condition-Blocks
- **content**: Der ursprüngliche, durchgeleitete Inhalt
- **conditionResult**: Boolesches Ergebnis der Bedingungsauswertung
- **selectedPath**: Informationen über den ausgewählten Pfad
- **blockId**: ID des nächsten Blocks im ausgewählten Pfad
- **blockType**: Typ des nächsten Blocks
- **blockTitle**: Titel des nächsten Blocks
- **selectedConditionId**: ID der ausgewählten Bedingung
- **selectedOption**: ID der ausgewählten Bedingung
</Tab>
<Tab>

View File

@@ -49,40 +49,40 @@ Die Modellaufschlüsselung zeigt:
<Tabs items={['Hosted Models', 'Bring Your Own API Key']}>
<Tab>
**Gehostete Modelle** - Sim stellt API-Schlüssel mit einem 2,5-fachen Preismultiplikator bereit:
**Gehostete Modelle** - Sim stellt API-Schlüssel mit einem 2-fachen Preismultiplikator bereit:
**OpenAI**
| Modell | Basispreis (Eingabe/Ausgabe) | Gehosteter Preis (Eingabe/Ausgabe) |
|-------|---------------------------|----------------------------|
| GPT-5.1 | $1,25 / $10,00 | $3,13 / $25,00 |
| GPT-5 | $1,25 / $10,00 | $3,13 / $25,00 |
| GPT-5 Mini | $0,25 / $2,00 | $0,63 / $5,00 |
| GPT-5 Nano | $0,05 / $0,40 | $0,13 / $1,00 |
| GPT-4o | $2,50 / $10,00 | $6,25 / $25,00 |
| GPT-4.1 | $2,00 / $8,00 | $5,00 / $20,00 |
| GPT-4.1 Mini | $0,40 / $1,60 | $1,00 / $4,00 |
| GPT-4.1 Nano | $0,10 / $0,40 | $0,25 / $1,00 |
| o1 | $15,00 / $60,00 | $37,50 / $150,00 |
| o3 | $2,00 / $8,00 | $5,00 / $20,00 |
| o4 Mini | $1,10 / $4,40 | $2,75 / $11,00 |
| GPT-5.1 | 1,25 $ / 10,00 $ | 2,50 $ / 20,00 $ |
| GPT-5 | 1,25 $ / 10,00 $ | 2,50 $ / 20,00 $ |
| GPT-5 Mini | 0,25 $ / 2,00 $ | 0,50 $ / 4,00 $ |
| GPT-5 Nano | 0,05 $ / 0,40 $ | 0,10 $ / 0,80 $ |
| GPT-4o | 2,50 $ / 10,00 $ | 5,00 $ / 20,00 $ |
| GPT-4.1 | 2,00 $ / 8,00 $ | 4,00 $ / 16,00 $ |
| GPT-4.1 Mini | 0,40 $ / 1,60 $ | 0,80 $ / 3,20 $ |
| GPT-4.1 Nano | 0,10 $ / 0,40 $ | 0,20 $ / 0,80 $ |
| o1 | 15,00 $ / 60,00 $ | 30,00 $ / 120,00 $ |
| o3 | 2,00 $ / 8,00 $ | 4,00 $ / 16,00 $ |
| o4 Mini | 1,10 $ / 4,40 $ | 2,20 $ / 8,80 $ |
**Anthropic**
| Modell | Basispreis (Eingabe/Ausgabe) | Gehosteter Preis (Eingabe/Ausgabe) |
|-------|---------------------------|----------------------------|
| Claude Opus 4.5 | $5,00 / $25,00 | $12,50 / $62,50 |
| Claude Opus 4.1 | $15,00 / $75,00 | $37,50 / $187,50 |
| Claude Sonnet 4.5 | $3,00 / $15,00 | $7,50 / $37,50 |
| Claude Sonnet 4.0 | $3,00 / $15,00 | $7,50 / $37,50 |
| Claude Haiku 4.5 | $1,00 / $5,00 | $2,50 / $12,50 |
| Claude Opus 4.5 | 5,00 $ / 25,00 $ | 10,00 $ / 50,00 $ |
| Claude Opus 4.1 | 15,00 $ / 75,00 $ | 30,00 $ / 150,00 $ |
| Claude Sonnet 4.5 | 3,00 $ / 15,00 $ | 6,00 $ / 30,00 $ |
| Claude Sonnet 4.0 | 3,00 $ / 15,00 $ | 6,00 $ / 30,00 $ |
| Claude Haiku 4.5 | 1,00 $ / 5,00 $ | 2,00 $ / 10,00 $ |
**Google**
| Modell | Basispreis (Eingabe/Ausgabe) | Gehosteter Preis (Eingabe/Ausgabe) |
|-------|---------------------------|----------------------------|
| Gemini 3 Pro Preview | $2,00 / $12,00 | $5,00 / $30,00 |
| Gemini 2.5 Pro | $0,15 / $0,60 | $0,38 / $1,50 |
| Gemini 2.5 Flash | $0,15 / $0,60 | $0,38 / $1,50 |
| Gemini 3 Pro Preview | 2,00 $ / 12,00 $ | 4,00 $ / 24,00 $ |
| Gemini 2.5 Pro | 1,25 $ / 10,00 $ | 2,50 $ / 20,00 $ |
| Gemini 2.5 Flash | 0,30 $ / 2,50 $ | 0,60 $ / 5,00 $ |
*Der 2,5-fache Multiplikator deckt Infrastruktur- und API-Verwaltungskosten ab.*
*Der 2x-Multiplikator deckt Infrastruktur- und API-Verwaltungskosten ab.*
</Tab>
<Tab>
@@ -105,28 +105,32 @@ Die Modellaufschlüsselung zeigt:
Die angezeigten Preise entsprechen den Tarifen vom 10. September 2025. Überprüfen Sie die Dokumentation der Anbieter für aktuelle Preise.
</Callout>
## Bring Your Own Key (BYOK)
Sie können Ihre eigenen API-Schlüssel für gehostete Modelle (OpenAI, Anthropic, Google, Mistral) unter **Einstellungen → BYOK** verwenden, um Basispreise zu zahlen. Schlüssel werden verschlüsselt und gelten arbeitsbereichsweit.
## Strategien zur Kostenoptimierung
- **Modellauswahl**: Wählen Sie Modelle basierend auf der Komplexität der Aufgabe. Einfache Aufgaben können GPT-4.1-nano verwenden, während komplexes Denken möglicherweise o1 oder Claude Opus erfordert.
- **Prompt-Engineering**: Gut strukturierte, präzise Prompts reduzieren den Token-Verbrauch ohne Qualitätseinbußen.
- **Modellauswahl**: Wählen Sie Modelle basierend auf der Aufgabenkomplexität. Einfache Aufgaben können GPT-4.1-nano verwenden, während komplexes Reasoning o1 oder Claude Opus erfordern könnte.
- **Prompt Engineering**: Gut strukturierte, prägnante Prompts reduzieren den Token-Verbrauch ohne Qualitätsverlust.
- **Lokale Modelle**: Verwenden Sie Ollama oder VLLM für unkritische Aufgaben, um API-Kosten vollständig zu eliminieren.
- **Caching und Wiederverwendung**: Speichern Sie häufig verwendete Ergebnisse in Variablen oder Dateien, um wiederholte KI-Modellaufrufe zu vermeiden.
- **Batch-Verarbeitung**: Verarbeiten Sie mehrere Elemente in einer einzigen KI-Anfrage anstatt einzelne Aufrufe zu tätigen.
- **Caching und Wiederverwendung**: Speichern Sie häufig verwendete Ergebnisse in Variablen oder Dateien, um wiederholte AI-Modellaufrufe zu vermeiden.
- **Batch-Verarbeitung**: Verarbeiten Sie mehrere Elemente in einer einzigen AI-Anfrage, anstatt einzelne Aufrufe zu tätigen.
## Nutzungsüberwachung
Überwachen Sie Ihre Nutzung und Abrechnung unter Einstellungen → Abonnement:
- **Aktuelle Nutzung**: Echtzeit-Nutzung und -Kosten für den aktuellen Zeitraum
- **Nutzungslimits**: Plangrenzen mit visuellen Fortschrittsanzeigen
- **Aktuelle Nutzung**: Echtzeit-Nutzung und Kosten für den aktuellen Zeitraum
- **Nutzungslimits**: Plan-Limits mit visuellen Fortschrittsindikatoren
- **Abrechnungsdetails**: Prognostizierte Gebühren und Mindestverpflichtungen
- **Planverwaltung**: Upgrade-Optionen und Abrechnungsverlauf
- **Plan-Verwaltung**: Upgrade-Optionen und Abrechnungsverlauf
### Programmatische Nutzungsverfolgung
### Programmatisches Nutzungs-Tracking
Sie können Ihre aktuelle Nutzung und Limits programmatisch über die API abfragen:
**Endpunkt:**
**Endpoint:**
```text
GET /api/users/me/usage-limits
@@ -172,69 +176,69 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt
```
**Rate-Limit-Felder:**
- `requestsPerMinute`: Dauerhafte Rate-Begrenzung (Tokens werden mit dieser Rate aufgefüllt)
- `maxBurst`: Maximale Tokens, die Sie ansammeln können (Burst-Kapazität)
- `remaining`: Aktuell verfügbare Tokens (können bis zu `maxBurst` sein)
- `requestsPerMinute`: Dauerhaftes Rate-Limit (Tokens werden mit dieser Rate aufgefüllt)
- `maxBurst`: Maximale Tokens, die Sie akkumulieren können (Burst-Kapazität)
- `remaining`: Aktuell verfügbare Tokens (kann bis zu `maxBurst` betragen)
**Antwortfelder:**
- `currentPeriodCost` spiegelt die Nutzung in der aktuellen Abrechnungsperiode wider
- `limit` wird von individuellen Limits (Free/Pro) oder gepoolten Organisationslimits (Team/Enterprise) abgeleitet
- `plan` ist der aktive Plan mit der höchsten Priorität, der mit Ihrem Benutzer verknüpft ist
- `currentPeriodCost` spiegelt die Nutzung im aktuellen Abrechnungszeitraum wider
- `limit` wird aus individuellen Limits (Free/Pro) oder gepoolten Organisationslimits (Team/Enterprise) abgeleitet
- `plan` ist der Plan mit der höchsten Priorität, der Ihrem Benutzer zugeordnet ist
## Plan-Limits
Verschiedene Abonnementpläne haben unterschiedliche Nutzungslimits:
Verschiedene Abonnement-Pläne haben unterschiedliche Nutzungslimits:
| Plan | Monatliches Nutzungslimit | Rate-Limits (pro Minute) |
| Plan | Monatliches Nutzungslimit | Ratenlimits (pro Minute) |
|------|-------------------|-------------------------|
| **Free** | $10 | 5 sync, 10 async |
| **Pro** | $100 | 10 sync, 50 async |
| **Team** | $500 (gepoolt) | 50 sync, 100 async |
| **Free** | 20 $ | 5 sync, 10 async |
| **Pro** | 100 $ | 10 sync, 50 async |
| **Team** | 500 $ (gemeinsam) | 50 sync, 100 async |
| **Enterprise** | Individuell | Individuell |
## Abrechnungsmodell
Sim verwendet ein **Basisabonnement + Mehrverbrauch**-Abrechnungsmodell:
Sim verwendet ein **Basis-Abonnement + Mehrverbrauch**-Abrechnungsmodell:
### Wie es funktioniert
### So funktioniert es
**Pro-Plan ($20/Monat):**
- Monatliches Abonnement beinhaltet $20 Nutzung
- Nutzung unter $20 → Keine zusätzlichen Kosten
- Nutzung über $20 → Zahlen Sie den Mehrverbrauch am Monatsende
- Beispiel: $35 Nutzung = $20 (Abonnement) + $15 (Mehrverbrauch)
**Pro-Plan (20 $/Monat):**
- Monatsabonnement beinhaltet 20 $ Nutzung
- Nutzung unter 20 $ → Keine zusätzlichen Gebühren
- Nutzung über 20 $ → Mehrverbrauch am Monatsende zahlen
- Beispiel: 35 $ Nutzung = 20 $ (Abonnement) + 15 $ (Mehrverbrauch)
**Team-Plan ($40/Benutzer/Monat):**
- Gepoolte Nutzung für alle Teammitglieder
- Mehrverbrauch wird aus der Gesamtnutzung des Teams berechnet
**Team-Plan (40 $/Platz/Monat):**
- Gemeinsame Nutzung über alle Teammitglieder
- Mehrverbrauch wird aus der gesamten Team-Nutzung berechnet
- Organisationsinhaber erhält eine Rechnung
**Enterprise-Pläne:**
- Fester monatlicher Preis, kein Mehrverbrauch
- Fester Monatspreis, kein Mehrverbrauch
- Individuelle Nutzungslimits gemäß Vereinbarung
### Schwellenwert-Abrechnung
Wenn der nicht abgerechnete Mehrverbrauch $50 erreicht, berechnet Sim automatisch den gesamten nicht abgerechneten Betrag.
Wenn der nicht abgerechnete Mehrverbrauch 50 $ erreicht, rechnet Sim automatisch den gesamten nicht abgerechneten Betrag ab.
**Beispiel:**
- Tag 10: $70 Mehrverbrauch → Sofortige Abrechnung von $70
- Tag 15: Zusätzliche $35 Nutzung ($105 insgesamt) → Bereits abgerechnet, keine Aktion
- Tag 20: Weitere $50 Nutzung ($155 insgesamt, $85 nicht abgerechnet) → Sofortige Abrechnung von $85
- Tag 10: 70 $ Mehrverbrauch → 70 $ sofort abrechnen
- Tag 15: Zusätzliche 35 $ Nutzung (105 $ gesamt) → Bereits abgerechnet, keine Aktion
- Tag 20: Weitere 50 $ Nutzung (155 $ gesamt, 85 $ nicht abgerechnet) → 85 $ sofort abrechnen
Dies verteilt große Überziehungsgebühren über den Monat, anstatt eine große Rechnung am Ende des Abrechnungszeitraums zu erhalten.
Dies verteilt große Mehrverbrauchsgebühren über den Monat, anstatt einer großen Rechnung am Periodenende.
## Best Practices für Kostenmanagement
1. **Regelmäßig überwachen**: Überprüfen Sie Ihr Nutzungs-Dashboard häufig, um Überraschungen zu vermeiden
2. **Budgets festlegen**: Nutzen Sie Planlimits als Leitplanken für Ihre Ausgaben
2. **Budgets festlegen**: Nutzen Sie Plan-Limits als Leitplanken für Ihre Ausgaben
3. **Workflows optimieren**: Überprüfen Sie kostenintensive Ausführungen und optimieren Sie Prompts oder Modellauswahl
4. **Passende Modelle verwenden**: Passen Sie die Modellkomplexität an die Aufgabenanforderungen an
5. **Ähnliche Aufgaben bündeln**: Kombinieren Sie wenn möglich mehrere Anfragen, um den Overhead zu reduzieren
5. **Ähnliche Aufgaben bündeln**: Kombinieren Sie mehrere Anfragen, wenn möglich, um Overhead zu reduzieren
## Nächste Schritte
- Überprüfen Sie Ihre aktuelle Nutzung unter [Einstellungen → Abonnement](https://sim.ai/settings/subscription)
- Erfahren Sie mehr über [Protokollierung](/execution/logging), um Ausführungsdetails zu verfolgen
- Erkunden Sie die [Externe API](/execution/api) für programmatische Kostenüberwachung
- Entdecken Sie die [externe API](/execution/api) für programmatische Kostenüberwachung
- Sehen Sie sich [Workflow-Optimierungstechniken](/blocks) an, um Kosten zu reduzieren

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

@@ -35,81 +35,87 @@ Sobald Ihre Dokumente verarbeitet sind, können Sie die einzelnen Chunks anzeige
<Image src="/static/knowledgebase/knowledgebase.png" alt="Dokumentchunk-Ansicht mit verarbeiteten Inhalten" width={800} height={500} />
### Chunk-Konfiguration
- **Standardgröße der Chunks**: 1.024 Zeichen
- **Konfigurierbarer Bereich**: 100-4.000 Zeichen pro Chunk
- **Intelligente Überlappung**: Standardmäßig 200 Zeichen zur Kontexterhaltung
- **Hierarchische Aufteilung**: Respektiert Dokumentstruktur (Abschnitte, Absätze, Sätze)
### Bearbeitungsfunktionen
Beim Erstellen einer Wissensdatenbank können Sie konfigurieren, wie Dokumente in Chunks aufgeteilt werden:
| Einstellung | Einheit | Standard | Bereich | Beschreibung |
|---------|------|---------|-------|-------------|
| **Maximale Chunk-Größe** | Tokens | 1.024 | 100-4.000 | Maximale Größe jedes Chunks (1 Token ≈ 4 Zeichen) |
| **Minimale Chunk-Größe** | Zeichen | 1 | 1-2.000 | Minimale Chunk-Größe, um winzige Fragmente zu vermeiden |
| **Überlappung** | Zeichen | 200 | 0-500 | Kontextüberlappung zwischen aufeinanderfolgenden Chunks |
- **Hierarchische Aufteilung**: Berücksichtigt die Dokumentstruktur (Abschnitte, Absätze, Sätze)
### Bearbeitungsmöglichkeiten
- **Chunk-Inhalt bearbeiten**: Textinhalt einzelner Chunks ändern
- **Chunk-Grenzen anpassen**: Chunks bei Bedarf zusammenführen oder teilen
- **Chunk-Grenzen anpassen**: Chunks nach Bedarf zusammenführen oder aufteilen
- **Metadaten hinzufügen**: Chunks mit zusätzlichem Kontext anreichern
- **Massenoperationen**: Effiziente Verwaltung mehrerer Chunks
- **Massenoperationen**: Mehrere Chunks effizient verwalten
## Erweiterte PDF-Verarbeitung
Für PDF-Dokumente bietet Sim erweiterte Verarbeitungsfunktionen:
### OCR-Unterstützung
Bei Konfiguration mit Azure oder [Mistral OCR](https://docs.mistral.ai/ocr/):
Wenn mit Azure oder [Mistral OCR](https://docs.mistral.ai/ocr/) konfiguriert:
- **Verarbeitung gescannter Dokumente**: Text aus bildbasierten PDFs extrahieren
- **Umgang mit gemischten Inhalten**: Verarbeitung von PDFs mit Text und Bildern
- **Verarbeitung gemischter Inhalte**: PDFs mit Text und Bildern verarbeiten
- **Hohe Genauigkeit**: Fortschrittliche KI-Modelle gewährleisten präzise Textextraktion
## Verwendung des Wissensblocks in Workflows
## Verwendung des Knowledge-Blocks in Workflows
Sobald Ihre Dokumente verarbeitet sind, können Sie sie in Ihren KI-Workflows über den Wissensblock nutzen. Dies ermöglicht Retrieval-Augmented Generation (RAG), wodurch Ihre KI-Agenten auf Ihre Dokumentinhalte zugreifen und darüber nachdenken können, um genauere, kontextbezogene Antworten zu liefern.
Sobald Ihre Dokumente verarbeitet sind, können Sie sie in Ihren KI-Workflows über den Knowledge-Block verwenden. Dies ermöglicht Retrieval-Augmented Generation (RAG), wodurch Ihre KI-Agenten auf Ihre Dokumentinhalte zugreifen und darüber nachdenken können, um genauere, kontextbezogene Antworten zu liefern.
<Image src="/static/knowledgebase/knowledgebase-2.png" alt="Verwendung des Wissensblocks in Workflows" width={800} height={500} />
<Image src="/static/knowledgebase/knowledgebase-2.png" alt="Verwendung des Knowledge-Blocks in Workflows" width={800} height={500} />
### Funktionen des Wissensblocks
- **Semantische Suche**: Relevante Inhalte mit natürlichsprachlichen Abfragen finden
- **Kontextintegration**: Automatisches Einbinden relevanter Chunks in Agenten-Prompts
- **Dynamischer Abruf**: Suche erfolgt in Echtzeit während der Workflow-Ausführung
- **Relevanzbewertung**: Ergebnisse nach semantischer Ähnlichkeit geordnet
### Knowledge-Block-Funktionen
- **Semantische Suche**: Relevante Inhalte mithilfe natürlichsprachlicher Abfragen finden
- **Kontextintegration**: Relevante Chunks automatisch in Agenten-Prompts einbinden
- **Dynamisches Abrufen**: Suche erfolgt in Echtzeit während der Workflow-Ausführung
- **Relevanz-Bewertung**: Ergebnisse nach semantischer Ähnlichkeit sortiert
### Integrationsoptionen
- **System-Prompts**: Kontext für Ihre KI-Agenten bereitstellen
- **Dynamischer Kontext**: Suche und Einbindung relevanter Informationen während Gesprächen
- **Dokumentübergreifende Suche**: Abfrage über Ihre gesamte Wissensdatenbank
- **Gefilterte Suche**: Kombination mit Tags für präzisen Inhaltsabruf
- **System-Prompts**: Stellen Sie Ihren KI-Agenten Kontext bereit
- **Dynamischer Kontext**: Suchen und fügen Sie relevante Informationen während Konversationen hinzu
- **Multi-Dokument-Suche**: Durchsuchen Sie Ihre gesamte Wissensdatenbank
- **Gefilterte Suche**: Kombinieren Sie mit Tags für präzises Abrufen von Inhalten
## Vektorsuchtechnologie
## Vektor-Suchtechnologie
Sim verwendet Vektorsuche, die von [pgvector](https://github.com/pgvector/pgvector) unterstützt wird, um die Bedeutung und den Kontext Ihrer Inhalte zu verstehen:
### Semantisches Verständnis
- **Kontextuelle Suche**: Findet relevante Inhalte, auch wenn exakte Schlüsselwörter nicht übereinstimmen
- **Konzeptbasierte Abfrage**: Versteht Beziehungen zwischen Ideen
- **Konzeptbasiertes Abrufen**: Versteht Beziehungen zwischen Ideen
- **Mehrsprachige Unterstützung**: Funktioniert über verschiedene Sprachen hinweg
- **Synonymerkennung**: Findet verwandte Begriffe und Konzepte
### Suchfunktionen
- **Natürlichsprachige Abfragen**: Stellen Sie Fragen in natürlicher Sprache
- **Natürlichsprachige Abfragen**: Stellen Sie Fragen in einfachem Deutsch
- **Ähnlichkeitssuche**: Finden Sie konzeptionell ähnliche Inhalte
- **Hybridsuche**: Kombiniert Vektor- und traditionelle Schlüsselwortsuche
- **Konfigurierbare Ergebnisse**: Steuern Sie die Anzahl und den Relevanz-Schwellenwert der Ergebnisse
- **Hybride Suche**: Kombiniert Vektor- und traditionelle Schlüsselwortsuche
- **Konfigurierbare Ergebnisse**: Steuern Sie die Anzahl und Relevanzschwelle der Ergebnisse
## Dokumentenverwaltung
### Organisationsfunktionen
- **Massenupload**: Laden Sie mehrere Dateien gleichzeitig über die asynchrone API hoch
- **Verarbeitungsstatus**: Echtzeit-Updates zum Dokumentenverarbeitungsprozess
- **Suchen und Filtern**: Finden Sie Dokumente schnell in großen Sammlungen
- **Massen-Upload**: Laden Sie mehrere Dateien gleichzeitig über die asynchrone API hoch
- **Verarbeitungsstatus**: Echtzeit-Updates zur Dokumentenverarbeitung
- **Suchen und filtern**: Finden Sie Dokumente schnell in großen Sammlungen
- **Metadaten-Tracking**: Automatische Erfassung von Dateiinformationen und Verarbeitungsdetails
### Sicherheit und Datenschutz
- **Sichere Speicherung**: Dokumente werden mit Sicherheit auf Unternehmensniveau gespeichert
- **Zugriffskontrolle**: Workspace-basierte Berechtigungen
- **Verarbeitungsisolierung**: Jeder Workspace hat eine isolierte Dokumentenverarbeitung
- **Verarbeitungsisolierung**: Jeder Workspace hat isolierte Dokumentenverarbeitung
- **Datenaufbewahrung**: Konfigurieren Sie Richtlinien zur Dokumentenaufbewahrung
## Erste Schritte
1. **Navigieren Sie zu Ihrer Wissensdatenbank**: Zugriff über Ihre Workspace-Seitenleiste
2. **Dokumente hochladen**: Drag & Drop oder wählen Sie Dateien zum Hochladen aus
3. **Verarbeitung überwachen**: Beobachten Sie, wie Dokumente verarbeitet und in Chunks aufgeteilt werden
4. **Chunks erkunden**: Sehen und bearbeiten Sie die verarbeiteten Inhalte
5. **Zu Workflows hinzufügen**: Verwenden Sie den Wissensblock, um ihn in Ihre KI-Agenten zu integrieren
2. **Dokumente hochladen**: Ziehen und ablegen oder Dateien zum Hochladen auswählen
3. **Verarbeitung überwachen**: Beobachten Sie, wie Dokumente verarbeitet und in Abschnitte unterteilt werden
4. **Abschnitte erkunden**: Zeigen Sie die verarbeiteten Inhalte an und bearbeiten Sie sie
5. **Zu Workflows hinzufügen**: Verwenden Sie den Knowledge-Block, um mit Ihren KI-Agenten zu integrieren
Die Wissensdatenbank verwandelt Ihre statischen Dokumente in eine intelligente, durchsuchbare Ressource, die Ihre KI-Workflows für fundiertere und kontextbezogenere Antworten nutzen können.
Die Wissensdatenbank verwandelt Ihre statischen Dokumente in eine intelligente, durchsuchbare Ressource, die Ihre KI-Workflows für fundiertere und kontextbezogene Antworten nutzen können.

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

@@ -0,0 +1,59 @@
---
title: Circleback
description: KI-gestützte Meeting-Notizen und Aufgaben
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="circleback"
color="linear-gradient(180deg, #E0F7FA 0%, #FFFFFF 100%)"
/>
{/* MANUAL-CONTENT-START:intro */}
[Circleback](https://circleback.ai/) ist eine KI-gestützte Plattform, die Meeting-Notizen, Aufgaben, Transkripte und Aufzeichnungen für Ihr Team automatisiert. Wenn ein Meeting abgeschlossen ist, verarbeitet Circleback die Konversation und liefert detaillierte Notizen und Aufgaben sowie ein Transkript und eine Aufzeichnung (sofern verfügbar). Dies hilft Teams dabei, Erkenntnisse effizient zu erfassen, Aufgaben zu verteilen und sicherzustellen, dass nichts übersehen wird alles nahtlos in Ihre Workflows integriert.
Mit der Sim Circleback-Integration können Sie:
- **Detaillierte Meeting-Notizen und Aufgaben erhalten**: Sammeln Sie automatisch gut formatierte Meeting-Zusammenfassungen und verfolgen Sie umsetzbare Aufgaben, die während Ihrer Anrufe besprochen wurden.
- **Auf vollständige Meeting-Aufzeichnungen und Transkripte zugreifen**: Erhalten Sie die vollständige Konversation und die zugehörige Aufzeichnung, um wichtige Momente einfach zu überprüfen oder mit Kollegen zu teilen.
- **Teilnehmerinformationen und Meeting-Kontext erfassen**: Teilnehmerlisten, Meeting-Metadaten und Tags helfen dabei, Ihre Daten organisiert und umsetzbar zu halten.
- **Erkenntnisse direkt in Ihre Workflows liefern**: Lösen Sie Automatisierungen aus oder senden Sie Circleback-Daten an andere Systeme, sobald ein Meeting beendet ist, mithilfe der leistungsstarken Webhook-Trigger von Sim.
**So funktioniert es in Sim:**
Circleback verwendet Webhook-Trigger: Sobald ein Meeting verarbeitet wurde, werden die Daten automatisch an Ihren Agenten oder Ihre Automatisierung übertragen. Sie können weitere Automatisierungen basierend auf folgenden Ereignissen erstellen:
- Meeting abgeschlossen (alle verarbeiteten Daten verfügbar)
- Neue Notizen (Notizen sind verfügbar, noch bevor das Meeting vollständig verarbeitet ist)
- Raw-Webhook-Integration für erweiterte Anwendungsfälle
**Die folgenden Informationen sind in der Circleback-Meeting-Webhook-Payload verfügbar:**
| Feld | Typ | Beschreibung |
|----------------|---------|----------------------------------------------------|
| `id` | number | Circleback Meeting-ID |
| `name` | string | Meeting-Titel |
| `url` | string | Virtueller Meeting-Link (Zoom, Meet, Teams usw.) |
| `createdAt` | string | Zeitstempel der Meeting-Erstellung |
| `duration` | number | Dauer in Sekunden |
| `recordingUrl` | string | Aufzeichnungs-URL (24 Stunden gültig) |
| `tags` | json | Array von Tags |
| `icalUid` | string | Kalender-Event-ID |
| `attendees` | json | Array von Teilnehmer-Objekten |
| `notes` | string | Meeting-Notizen in Markdown |
| `actionItems` | json | Array von Aufgaben |
| `transcript` | json | Array von Transkript-Segmenten |
| `insights` | json | Vom Nutzer erstellte Insights |
| `meeting` | json | Vollständige Meeting-Daten |
Egal, ob Sie sofortige Zusammenfassungen verteilen, Aufgaben protokollieren oder benutzerdefinierte Workflows erstellen möchten, die durch neue Meeting-Daten ausgelöst werden Circleback und Sim machen es nahtlos, alles rund um Ihre Meetings automatisch zu verwalten.
{/* MANUAL-CONTENT-END */}
## Nutzungsanleitung
Erhalten Sie Meeting-Notizen, Aufgaben, Transkripte und Aufzeichnungen, wenn Meetings verarbeitet werden. Circleback nutzt Webhooks, um Daten an Ihre Workflows zu übermitteln.
## Hinweise
- Kategorie: `triggers`
- Typ: `circleback`

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,218 @@
---
title: Grain
description: Zugriff auf Meeting-Aufzeichnungen, Transkripte und KI-Zusammenfassungen
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="grain"
color="#F6FAF9"
/>
{/* MANUAL-CONTENT-START:intro */}
[Grain](https://grain.com/) ist eine moderne Plattform zum Erfassen, Speichern und Teilen von Meeting-Aufzeichnungen, Transkripten, Highlights und KI-gestützten Zusammenfassungen. Grain ermöglicht es Teams, Gespräche in umsetzbare Erkenntnisse zu verwandeln und alle über wichtige Momente aus Meetings auf dem Laufenden zu halten.
Mit Grain können Sie:
- **Auf durchsuchbare Aufzeichnungen und Transkripte zugreifen**: Finden und überprüfen Sie jedes Meeting nach Stichwort, Teilnehmer oder Thema.
- **Highlights und Clips teilen**: Erfassen Sie wichtige Momente und teilen Sie kurze Video-/Audio-Highlights in Ihrem Team oder in Workflows.
- **KI-generierte Zusammenfassungen erhalten**: Erstellen Sie automatisch Meeting-Zusammenfassungen, Aktionspunkte und wichtige Erkenntnisse mithilfe der fortschrittlichen KI von Grain.
- **Meetings nach Team oder Typ organisieren**: Taggen und kategorisieren Sie Aufzeichnungen für einfachen Zugriff und Reporting.
Die Sim-Grain-Integration ermöglicht es Ihren Agenten:
- Meeting-Aufzeichnungen und Details nach flexiblen Filtern (Datum/Uhrzeit, Teilnehmer, Team usw.) aufzulisten, zu suchen und abzurufen.
- Auf KI-Zusammenfassungen, Teilnehmer, Highlights und andere Metadaten für Meetings zuzugreifen, um Automatisierungen oder Analysen zu unterstützen.
- Workflows auszulösen, sobald neue Meetings verarbeitet, Zusammenfassungen generiert oder Highlights über Grain-Webhooks erstellt werden.
- Grain-Daten einfach in andere Tools zu überführen oder Teammitglieder zu benachrichtigen, sobald etwas Wichtiges in einem Meeting passiert.
Ob Sie Follow-up-Aktionen automatisieren, wichtige Gespräche dokumentieren oder Erkenntnisse in Ihrer Organisation sichtbar machen möchten Grain und Sim machen es einfach, Meeting-Intelligence mit Ihren Workflows zu verbinden.
{/* MANUAL-CONTENT-END */}
## Nutzungsanweisungen
Integrieren Sie Grain in Ihren Workflow. Greifen Sie auf Meeting-Aufzeichnungen, Transkripte, Highlights und KI-generierte Zusammenfassungen zu. Kann auch Workflows basierend auf Grain-Webhook-Ereignissen auslösen.
## Tools
### `grain_list_recordings`
Aufzeichnungen von Grain mit optionalen Filtern und Paginierung auflisten
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
| `cursor` | string | Nein | Paginierungs-Cursor für nächste Seite |
| `beforeDatetime` | string | Nein | Nur Aufzeichnungen vor diesem ISO8601-Zeitstempel |
| `afterDatetime` | string | Nein | Nur Aufzeichnungen nach diesem ISO8601-Zeitstempel |
| `participantScope` | string | Nein | Filter: "internal" oder "external" |
| `titleSearch` | string | Nein | Suchbegriff zum Filtern nach Aufzeichnungstitel |
| `teamId` | string | Nein | Nach Team-UUID filtern |
| `meetingTypeId` | string | Nein | Nach Meeting-Typ-UUID filtern |
| `includeHighlights` | boolean | Nein | Highlights/Clips in Antwort einschließen |
| `includeParticipants` | boolean | Nein | Teilnehmerliste in Antwort einschließen |
| `includeAiSummary` | boolean | Nein | KI-generierte Zusammenfassung einschließen |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `recordings` | array | Array von Aufzeichnungsobjekten |
### `grain_get_recording`
Details einer einzelnen Aufzeichnung nach ID abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
| `recordingId` | string | Ja | Die Aufzeichnungs-UUID |
| `includeHighlights` | boolean | Nein | Highlights/Clips einschließen |
| `includeParticipants` | boolean | Nein | Teilnehmerliste einschließen |
| `includeAiSummary` | boolean | Nein | KI-Zusammenfassung einschließen |
| `includeCalendarEvent` | boolean | Nein | Kalenderereignisdaten einschließen |
| `includeHubspot` | boolean | Nein | HubSpot-Verknüpfungen einschließen |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `id` | string | Aufnahme-UUID |
| `title` | string | Aufnahmetitel |
| `start_datetime` | string | ISO8601-Startzeitstempel |
| `end_datetime` | string | ISO8601-Endzeitstempel |
| `duration_ms` | number | Dauer in Millisekunden |
| `media_type` | string | audio, transcript oder video |
| `source` | string | Aufnahmequelle \(zoom, meet, teams, etc.\) |
| `url` | string | URL zur Ansicht in Grain |
| `thumbnail_url` | string | Vorschaubild-URL |
| `tags` | array | Array von Tag-Strings |
| `teams` | array | Teams, zu denen die Aufnahme gehört |
| `meeting_type` | object | Meeting-Typ-Informationen \(id, name, scope\) |
| `highlights` | array | Highlights \(falls enthalten\) |
| `participants` | array | Teilnehmer \(falls enthalten\) |
| `ai_summary` | object | KI-Zusammenfassungstext \(falls enthalten\) |
| `calendar_event` | object | Kalenderereignisdaten \(falls enthalten\) |
| `hubspot` | object | HubSpot-Verknüpfungen \(falls enthalten\) |
### `grain_get_transcript`
Vollständiges Transkript einer Aufnahme abrufen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Ja | Grain-API-Schlüssel \(Personal Access Token\) |
| `recordingId` | string | Ja | Die Aufnahme-UUID |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `transcript` | array | Array von Transkriptabschnitten |
### `grain_list_teams`
Alle Teams im Workspace auflisten
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `teams` | array | Array von Team-Objekten |
### `grain_list_meeting_types`
Alle Meeting-Typen im Workspace auflisten
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `meeting_types` | array | Array von Meeting-Typ-Objekten |
### `grain_create_hook`
Einen Webhook erstellen, um Aufzeichnungs-Events zu empfangen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
| `hookUrl` | string | Ja | Webhook-Endpunkt-URL \(muss mit 2xx antworten\) |
| `filterBeforeDatetime` | string | Nein | Filter: Aufzeichnungen vor diesem Datum |
| `filterAfterDatetime` | string | Nein | Filter: Aufzeichnungen nach diesem Datum |
| `filterParticipantScope` | string | Nein | Filter: "internal" oder "external" |
| `filterTeamId` | string | Nein | Filter: spezifische Team-UUID |
| `filterMeetingTypeId` | string | Nein | Filter: spezifischer Meeting-Typ |
| `includeHighlights` | boolean | Nein | Highlights in Webhook-Payload einschließen |
| `includeParticipants` | boolean | Nein | Teilnehmer in Webhook-Payload einschließen |
| `includeAiSummary` | boolean | Nein | KI-Zusammenfassung in Webhook-Payload einschließen |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `id` | string | Hook-UUID |
| `enabled` | boolean | Ob der Hook aktiv ist |
| `hook_url` | string | Die Webhook-URL |
| `filter` | object | Angewendete Filter |
| `include` | object | Enthaltene Felder |
| `inserted_at` | string | ISO8601-Erstellungszeitstempel |
### `grain_list_hooks`
Alle Webhooks für das Konto auflisten
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Ja | Grain-API-Schlüssel \(Personal Access Token\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `hooks` | array | Array von Hook-Objekten |
### `grain_delete_hook`
Einen Webhook anhand der ID löschen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Ja | Grain-API-Schlüssel \(Personal Access Token\) |
| `hookId` | string | Ja | Die zu löschende Hook-UUID |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | True, wenn der Webhook erfolgreich gelöscht wurde |
## Hinweise
- Kategorie: `tools`
- Typ: `grain`

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

@@ -38,6 +38,7 @@ Erstellen Sie einen neuen Kontakt in Intercom mit E-Mail, external_id oder Rolle
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `role` | string | Nein | Die Rolle des Kontakts. Akzeptiert 'user' oder 'lead'. Standardmäßig 'lead', wenn nicht angegeben. |
| `email` | string | Nein | Die E-Mail-Adresse des Kontakts |
| `external_id` | string | Nein | Eine eindeutige Kennung für den Kontakt, die vom Client bereitgestellt wird |
| `phone` | string | Nein | Die Telefonnummer des Kontakts |
@@ -45,16 +46,16 @@ Erstellen Sie einen neuen Kontakt in Intercom mit E-Mail, external_id oder Rolle
| `avatar` | string | Nein | Eine Avatar-Bild-URL für den Kontakt |
| `signed_up_at` | number | Nein | Der Zeitpunkt der Registrierung des Benutzers als Unix-Zeitstempel |
| `last_seen_at` | number | Nein | Der Zeitpunkt, zu dem der Benutzer zuletzt gesehen wurde, als Unix-Zeitstempel |
| `owner_id` | string | Nein | Die ID eines Administrators, dem die Kontoinhaberschaft des Kontakts zugewiesen wurde |
| `unsubscribed_from_emails` | boolean | Nein | Ob der Kontakt E-Mails abbestellt hat |
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt \(z.B. \{"attribute_name": "value"\}\) |
| `owner_id` | string | Nein | Die ID eines Administrators, dem die Kontoverantwortung für den Kontakt zugewiesen wurde |
| `unsubscribed_from_emails` | boolean | Nein | Ob der Kontakt von E-Mails abgemeldet ist |
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt \(z. B. \{"attribute_name": "value"\}\) |
| `company_id` | string | Nein | Unternehmens-ID, mit der der Kontakt bei der Erstellung verknüpft werden soll |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Erstellte Kontaktdaten |
| `contact` | object | Erstelltes Kontaktobjekt |
### `intercom_get_contact`
@@ -70,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`
@@ -81,23 +81,25 @@ Einen bestehenden Kontakt in Intercom aktualisieren
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `contactId` | string | Ja | Zu aktualisierende Kontakt-ID |
| `contactId` | string | Ja | Kontakt-ID, die aktualisiert werden soll |
| `role` | string | Nein | Die Rolle des Kontakts. Akzeptiert 'user' oder 'lead'. |
| `external_id` | string | Nein | Eine eindeutige Kennung für den Kontakt, die vom Client bereitgestellt wird |
| `email` | string | Nein | Die E-Mail-Adresse des Kontakts |
| `phone` | string | Nein | Die Telefonnummer des Kontakts |
| `name` | string | Nein | Der Name des Kontakts |
| `avatar` | string | Nein | Eine Avatar-Bild-URL für den Kontakt |
| `signed_up_at` | number | Nein | Der Zeitpunkt der Registrierung des Benutzers als Unix-Timestamp |
| `last_seen_at` | number | Nein | Der Zeitpunkt, zu dem der Benutzer zuletzt gesehen wurde, als Unix-Timestamp |
| `owner_id` | string | Nein | Die ID eines Administrators, dem die Kontoeigentümerschaft des Kontakts zugewiesen wurde |
| `unsubscribed_from_emails` | boolean | Nein | Ob der Kontakt E-Mails abbestellt hat |
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt \(z.B. \{"attribut_name": "wert"\}\) |
| `signed_up_at` | number | Nein | Der Zeitpunkt der Registrierung des Benutzers als Unix-Zeitstempel |
| `last_seen_at` | number | Nein | Der Zeitpunkt, zu dem der Benutzer zuletzt gesehen wurde, als Unix-Zeitstempel |
| `owner_id` | string | Nein | Die ID eines Administrators, dem die Kontoverantwortung für den Kontakt zugewiesen wurde |
| `unsubscribed_from_emails` | boolean | Nein | Ob der Kontakt von E-Mails abgemeldet ist |
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt \(z. B. \{"attribute_name": "value"\}\) |
| `company_id` | string | Nein | Unternehmens-ID, mit der der Kontakt verknüpft werden soll |
#### Output
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Aktualisierte Kontaktdaten |
| `contact` | object | Aktualisiertes Kontaktobjekt |
### `intercom_list_contacts`
@@ -114,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`
@@ -125,16 +126,17 @@ Suche nach Kontakten in Intercom mit einer Abfrage
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `query` | string | Ja | Suchabfrage (z.B., \{"field":"email","operator":"=","value":"user@example.com"\}) |
| `query` | string | Ja | Suchabfrage (z. B. \{"field":"email","operator":"=","value":"user@example.com"\}) |
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite (max: 150) |
| `starting_after` | string | Nein | Cursor für Paginierung |
| `sort_field` | string | Nein | Feld zum Sortieren (z. B. "name", "created_at", "last_seen_at") |
| `sort_order` | string | Nein | Sortierreihenfolge: "ascending" oder "descending" |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Suchergebnisse |
| `contacts` | array | Array von übereinstimmenden Kontaktobjekten |
### `intercom_delete_contact`
@@ -150,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`
@@ -163,19 +166,19 @@ Ein Unternehmen in Intercom erstellen oder aktualisieren
| --------- | ---- | -------- | ----------- |
| `company_id` | string | Ja | Ihre eindeutige Kennung für das Unternehmen |
| `name` | string | Nein | Der Name des Unternehmens |
| `website` | string | Nein | Die Unternehmenswebsite |
| `plan` | string | Nein | Der Unternehmensplan |
| `website` | string | Nein | Die Website des Unternehmens |
| `plan` | string | Nein | Der Name des Unternehmensplans |
| `size` | number | Nein | Die Anzahl der Mitarbeiter im Unternehmen |
| `industry` | string | Nein | Die Branche, in der das Unternehmen tätig ist |
| `monthly_spend` | number | Nein | Wie viel Umsatz das Unternehmen für Ihr Geschäft generiert. Hinweis: Dieses Feld kürzt Dezimalzahlen auf ganze Zahlen \(z.B. wird aus 155,98 die Zahl 155\) |
| `monthly_spend` | number | Nein | Wie viel Umsatz das Unternehmen für Ihr Geschäft generiert. Hinweis: Dieses Feld rundet Dezimalzahlen auf ganze Zahlen ab (z. B. wird 155,98 zu 155) |
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt |
| `remote_created_at` | number | Nein | Der Zeitpunkt, zu dem das Unternehmen von Ihnen erstellt wurde, als Unix-Zeitstempel |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Erstellte oder aktualisierte Unternehmensdaten |
| `company` | object | Erstelltes oder aktualisiertes Unternehmensobjekt |
### `intercom_get_company`
@@ -191,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`
@@ -204,13 +206,13 @@ Listet alle Unternehmen von Intercom mit Paginierungsunterstützung auf. Hinweis
| --------- | ---- | -------- | ----------- |
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite |
| `page` | number | Nein | Seitennummer |
| `starting_after` | string | Nein | Cursor für Paginierung (bevorzugt gegenüber seitenbasierter Paginierung) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Liste der Unternehmen |
| `companies` | array | Array von Unternehmensobjekten |
### `intercom_get_conversation`
@@ -221,14 +223,14 @@ Eine einzelne Konversation anhand der ID von Intercom abrufen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Ja | Konversations-ID zum Abrufen |
| `display_as` | string | Nein | Auf "plaintext" setzen, um Nachrichten im Klartext abzurufen |
| `display_as` | string | Nein | Auf "plaintext" setzen, um Nachrichten als reinen Text abzurufen |
| `include_translations` | boolean | Nein | Wenn true, werden Konversationsteile in die erkannte Sprache der Konversation übersetzt |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Konversationsdaten |
| `conversation` | object | Konversationsobjekt |
### `intercom_list_conversations`
@@ -238,15 +240,16 @@ Alle Konversationen von Intercom mit Paginierungsunterstützung auflisten
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite \(max: 150\) |
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite (max: 150) |
| `starting_after` | string | Nein | Cursor für Paginierung |
| `sort` | string | Nein | Feld zum Sortieren (z. B. "waiting_since", "updated_at", "created_at") |
| `order` | string | Nein | Sortierreihenfolge: "asc" (aufsteigend) oder "desc" (absteigend) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Liste der Konversationen |
| `conversations` | array | Array von Konversationsobjekten |
### `intercom_reply_conversation`
@@ -256,18 +259,18 @@ Als Administrator auf eine Konversation in Intercom antworten
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Ja | Konversations-ID, auf die geantwortet werden soll |
| `conversationId` | string | Ja | Konversations-ID zum Antworten |
| `message_type` | string | Ja | Nachrichtentyp: "comment" oder "note" |
| `body` | string | Ja | Der Textinhalt der Antwort |
| `admin_id` | string | Nein | Die ID des Administrators, der die Antwort verfasst. Wenn nicht angegeben, wird ein Standard-Administrator \(Operator/Fin\) verwendet. |
| `attachment_urls` | string | Nein | Kommagetrennte Liste von Bild-URLs \(max. 10\) |
| `admin_id` | string | Nein | Die ID des Administrators, der die Antwort verfasst. Falls nicht angegeben, wird ein Standard-Administrator (Operator/Fin) verwendet. |
| `attachment_urls` | string | Nein | Kommagetrennte Liste von Bild-URLs (max. 10) |
| `created_at` | number | Nein | Unix-Zeitstempel für den Zeitpunkt der Erstellung der Antwort. Falls nicht angegeben, wird die aktuelle Zeit verwendet. |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Aktualisierte Konversation mit Antwort |
| `conversation` | object | Aktualisiertes Konversationsobjekt |
### `intercom_search_conversations`
@@ -278,15 +281,16 @@ Nach Konversationen in Intercom mit einer Abfrage suchen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `query` | string | Ja | Suchabfrage als JSON-Objekt |
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite (max: 150) |
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite \(max: 150\) |
| `starting_after` | string | Nein | Cursor für Paginierung |
| `sort_field` | string | Nein | Feld, nach dem sortiert werden soll \(z. B. "created_at", "updated_at"\) |
| `sort_order` | string | Nein | Sortierreihenfolge: "ascending" oder "descending" |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Suchergebnisse |
| `conversations` | array | Array von übereinstimmenden Konversationsobjekten |
### `intercom_create_ticket`
@@ -297,15 +301,18 @@ Ein neues Ticket in Intercom erstellen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `ticket_type_id` | string | Ja | Die ID des Ticket-Typs |
| `contacts` | string | Ja | JSON-Array von Kontakt-Identifikatoren (z.B. \{"id": "contact_id"\}) |
| `contacts` | string | Ja | JSON-Array von Kontaktkennungen \(z. B. \[\{"id": "contact_id"\}\]\) |
| `ticket_attributes` | string | Ja | JSON-Objekt mit Ticket-Attributen einschließlich _default_title_ und _default_description_ |
| `company_id` | string | Nein | Unternehmens-ID, mit der das Ticket verknüpft werden soll |
| `created_at` | number | Nein | Unix-Zeitstempel für den Zeitpunkt der Ticket-Erstellung. Wenn nicht angegeben, wird die aktuelle Zeit verwendet. |
| `conversation_to_link_id` | string | Nein | ID einer vorhandenen Konversation, die mit diesem Ticket verknüpft werden soll |
| `disable_notifications` | boolean | Nein | Wenn true, werden Benachrichtigungen bei der Ticket-Erstellung unterdrückt |
#### 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`
@@ -319,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`
@@ -330,22 +336,23 @@ Eine neue vom Administrator initiierte Nachricht in Intercom erstellen und sende
#### Input
| Parameter | Type | Erforderlich | Beschreibung |
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `message_type` | string | Ja | Nachrichtentyp: "inapp" oder "email" |
| `message_type` | string | Ja | Nachrichtentyp: "inapp" für In-App-Nachrichten oder "email" für E-Mail-Nachrichten |
| `template` | string | Ja | Nachrichtenvorlagenstil: "plain" für einfachen Text oder "personal" für personalisierten Stil |
| `subject` | string | Nein | Der Betreff der Nachricht \(für E-Mail-Typ\) |
| `body` | string | Ja | Der Inhalt der Nachricht |
| `from_type` | string | Ja | Absendertyp: "admin" |
| `from_id` | string | Ja | Die ID des Administrators, der die Nachricht sendet |
| `to_type` | string | Ja | Empfängertyp: "contact" |
| `to_id` | string | Ja | Die ID des Kontakts, der die Nachricht empfängt |
| `created_at` | number | Nein | Unix-Zeitstempel für den Zeitpunkt der Nachrichtenerstellung. Wenn nicht angegeben, wird die aktuelle Zeit verwendet. |
#### Output
| Parameter | Type | Beschreibung |
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Erstellte Nachrichtendaten |
| `message` | object | Erstelltes Nachrichtenobjekt |
## Notizen

View File

@@ -61,8 +61,6 @@ Extrahieren und verarbeiten Sie Webinhalte in sauberen, LLM-freundlichen Text mi
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `content` | string | Der extrahierte Inhalt von der URL, verarbeitet zu sauberem, LLM-freundlichem Text |
| `links` | array | Liste der auf der Seite gefundenen Links (wenn gatherLinks oder withLinksummary aktiviert ist) |
| `images` | array | Liste der auf der Seite gefundenen Bilder (wenn withImagesummary aktiviert ist) |
### `jina_search`

View File

@@ -48,8 +48,13 @@ Ruft detaillierte Informationen zu einem bestimmten Jira-Issue ab
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Status des Operationserfolgs |
| `output` | object | Jira-Issue-Details mit Issue-Key, Zusammenfassung, Beschreibung, Erstellungs- und Aktualisierungszeitstempeln |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key \(z.B. PROJ-123\) |
| `summary` | string | Issue-Zusammenfassung |
| `description` | json | Inhalt der Issue-Beschreibung |
| `created` | string | Zeitstempel der Issue-Erstellung |
| `updated` | string | Zeitstempel der letzten Issue-Aktualisierung |
| `issue` | json | Vollständiges Issue-Objekt mit allen Feldern |
### `jira_update`
@@ -73,8 +78,9 @@ Ein Jira-Issue aktualisieren
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Aktualisierte Jira-Issue-Details mit Zeitstempel, Issue-Key, Zusammenfassung und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Aktualisierter Issue-Key \(z.B. PROJ-123\) |
| `summary` | string | Issue-Zusammenfassung nach der Aktualisierung |
### `jira_write`
@@ -84,21 +90,30 @@ Ein Jira-Issue erstellen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain (z.B. ihrfirma.atlassian.net) |
| `domain` | string | Ja | Ihre Jira-Domain \(z.B. ihrfirma.atlassian.net\) |
| `projectId` | string | Ja | Projekt-ID für das Issue |
| `summary` | string | Ja | Zusammenfassung für das Issue |
| `description` | string | Nein | Beschreibung für das Issue |
| `priority` | string | Nein | Priorität für das Issue |
| `assignee` | string | Nein | Bearbeiter für das Issue |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz. Wenn nicht angegeben, wird sie anhand der Domain abgerufen. |
| `issueType` | string | Ja | Art des zu erstellenden Issues (z.B. Task, Story) |
| `priority` | string | Nein | Prioritäts-ID oder -Name für das Issue \(z.B. "10000" oder "High"\) |
| `assignee` | string | Nein | Account-ID des Bearbeiters für das Issue |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz. Wenn nicht angegeben, wird sie über die Domain abgerufen. |
| `issueType` | string | Ja | Typ des zu erstellenden Issues \(z.B. Task, Story\) |
| `labels` | array | Nein | Labels für das Issue \(Array von Label-Namen\) |
| `duedate` | string | Nein | Fälligkeitsdatum für das Issue \(Format: YYYY-MM-DD\) |
| `reporter` | string | Nein | Account-ID des Melders für das Issue |
| `environment` | string | Nein | Umgebungsinformationen für das Issue |
| `customFieldId` | string | Nein | Benutzerdefinierte Feld-ID \(z.B. customfield_10001\) |
| `customFieldValue` | string | Nein | Wert für das benutzerdefinierte Feld |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Erstellte Jira-Issue-Details mit Zeitstempel, Issue-Key, Zusammenfassung, Erfolgsstatus und URL |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Erstellter Issue-Key \(z.B. PROJ-123\) |
| `summary` | string | Issue-Zusammenfassung |
| `url` | string | URL zum erstellten Issue |
| `assigneeId` | string | Account-ID des zugewiesenen Benutzers \(falls zugewiesen\) |
### `jira_bulk_read`
@@ -116,8 +131,7 @@ Mehrere Jira-Issues in Masse abrufen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | array | Array von Jira-Issues mit Zusammenfassung, Beschreibung, Erstellungs- und Aktualisierungszeitstempeln |
| `issues` | array | Array von Jira-Issues mit Zeitstempel, Zusammenfassung, Beschreibung, Erstellungs- und Aktualisierungszeitstempeln |
### `jira_delete_issue`
@@ -136,8 +150,8 @@ Ein Jira-Issue löschen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Details zum gelöschten Issue mit Zeitstempel, Issue-Key und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Gelöschter Issue-Key |
### `jira_assign_issue`
@@ -156,8 +170,9 @@ Ein Jira-Issue einem Benutzer zuweisen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Zuweisungsdetails mit Zeitstempel, Issue-Key, Bearbeiter-ID und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key, der zugewiesen wurde |
| `assigneeId` | string | Konto-ID des Bearbeiters |
### `jira_transition_issue`
@@ -177,8 +192,9 @@ Ein Jira-Issue zwischen Workflow-Status verschieben (z.B. To Do -> In Progress)
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Übergangsdetails mit Zeitstempel, Issue-Key, Übergangs-ID und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key, der übergangen wurde |
| `transitionId` | string | Angewendete Übergangs-ID |
### `jira_search_issues`
@@ -199,8 +215,11 @@ Nach Jira-Issues mit JQL (Jira Query Language) suchen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Suchergebnisse mit Zeitstempel, Gesamtanzahl, Paginierungsdetails und Array der übereinstimmenden Issues |
| `ts` | string | Zeitstempel der Operation |
| `total` | number | Gesamtanzahl der übereinstimmenden Issues |
| `startAt` | number | Paginierungsstartindex |
| `maxResults` | number | Maximale Ergebnisse pro Seite |
| `issues` | array | Array übereinstimmender Issues mit Key, Zusammenfassung, Status, Bearbeiter, Erstellungs- und Aktualisierungsdatum |
### `jira_add_comment`
@@ -219,8 +238,10 @@ Einen Kommentar zu einem Jira-Issue hinzufügen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Kommentardetails mit Zeitstempel, Issue-Key, Kommentar-ID, Inhalt und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key, zu dem der Kommentar hinzugefügt wurde |
| `commentId` | string | Erstellte Kommentar-ID |
| `body` | string | Kommentartextinhalt |
### `jira_get_comments`
@@ -240,8 +261,10 @@ Alle Kommentare eines Jira-Issues abrufen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Kommentardaten mit Zeitstempel, Issue-Key, Gesamtanzahl und Array von Kommentaren |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key |
| `total` | number | Gesamtanzahl der Kommentare |
| `comments` | array | Array von Kommentaren mit ID, Autor, Inhalt, Erstellungs- und Aktualisierungsdatum |
### `jira_update_comment`
@@ -261,8 +284,10 @@ Einen bestehenden Kommentar zu einem Jira-Issue aktualisieren
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Aktualisierte Kommentardetails mit Zeitstempel, Issue-Key, Kommentar-ID, Textinhalt und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key |
| `commentId` | string | Aktualisierte Kommentar-ID |
| `body` | string | Aktualisierter Kommentartext |
### `jira_delete_comment`
@@ -281,8 +306,9 @@ Einen Kommentar aus einem Jira-Issue löschen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Löschdetails mit Zeitstempel, Issue-Key, Kommentar-ID und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key |
| `commentId` | string | ID des gelöschten Kommentars |
### `jira_get_attachments`
@@ -300,8 +326,9 @@ Alle Anhänge eines Jira-Issues abrufen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Anhangsdaten mit Zeitstempel, Issue-Key und Array von Anhängen |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key |
| `attachments` | array | Array von Anhängen mit ID, Dateiname, Größe, MIME-Typ, Erstellungsdatum und Autor |
### `jira_delete_attachment`
@@ -319,8 +346,8 @@ Einen Anhang von einem Jira-Issue löschen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Löschdetails mit Zeitstempel, Anhangs-ID und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `attachmentId` | string | ID des gelöschten Anhangs |
### `jira_add_worklog`
@@ -341,8 +368,10 @@ Einen Zeiterfassungseintrag zu einem Jira-Issue hinzufügen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Worklog-Details mit Zeitstempel, Issue-Key, Worklog-ID, aufgewendeter Zeit in Sekunden und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key, zu dem der Worklog hinzugefügt wurde |
| `worklogId` | string | ID des erstellten Worklogs |
| `timeSpentSeconds` | number | Aufgewendete Zeit in Sekunden |
### `jira_get_worklogs`
@@ -362,8 +391,10 @@ Alle Worklog-Einträge eines Jira-Issues abrufen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Worklog-Daten mit Zeitstempel, Issue-Key, Gesamtanzahl und Array von Worklogs |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key |
| `total` | number | Gesamtanzahl der Worklogs |
| `worklogs` | array | Array von Worklogs mit ID, Autor, aufgewendeter Zeit in Sekunden, aufgewendeter Zeit, Kommentar, Erstellungs-, Aktualisierungs- und Startdatum |
### `jira_update_worklog`
@@ -385,8 +416,9 @@ Aktualisieren eines vorhandenen Worklog-Eintrags in einem Jira-Issue
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Worklog-Aktualisierungsdetails mit Zeitstempel, Issue-Key, Worklog-ID und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key |
| `worklogId` | string | ID des aktualisierten Worklogs |
### `jira_delete_worklog`
@@ -405,8 +437,9 @@ Löschen eines Worklog-Eintrags aus einem Jira-Issue
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Löschdetails mit Zeitstempel, Issue-Key, Worklog-ID und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key |
| `worklogId` | string | ID des gelöschten Worklogs |
### `jira_create_issue_link`
@@ -427,8 +460,11 @@ Eine Verknüpfungsbeziehung zwischen zwei Jira-Issues erstellen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Issue-Verknüpfungsdetails mit Zeitstempel, eingehendem Issue-Key, ausgehendem Issue-Key, Verknüpfungstyp und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `inwardIssue` | string | Key des eingehenden Issues |
| `outwardIssue` | string | Key des ausgehenden Issues |
| `linkType` | string | Art der Issue-Verknüpfung |
| `linkId` | string | ID der erstellten Verknüpfung |
### `jira_delete_issue_link`
@@ -446,8 +482,8 @@ Eine Verknüpfung zwischen zwei Jira-Issues löschen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Löschdetails mit Zeitstempel, Link-ID und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `linkId` | string | ID der gelöschten Verknüpfung |
### `jira_add_watcher`
@@ -466,8 +502,9 @@ Einen Beobachter zu einem Jira-Issue hinzufügen, um Benachrichtigungen über Ak
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Beobachterdetails mit Zeitstempel, Issue-Key, Beobachter-Account-ID und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key |
| `watcherAccountId` | string | Account-ID des hinzugefügten Beobachters |
### `jira_remove_watcher`
@@ -486,8 +523,33 @@ Einen Beobachter von einem Jira-Issue entfernen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Erfolgsstatus der Operation |
| `output` | object | Entfernungsdetails mit Zeitstempel, Issue-Key, Beobachter-Konto-ID und Erfolgsstatus |
| `ts` | string | Zeitstempel der Operation |
| `issueKey` | string | Issue-Key |
| `watcherAccountId` | string | Account-ID des entfernten Beobachters |
### `jira_get_users`
Jira-Benutzer abrufen. Wenn eine Account-ID angegeben wird, wird ein einzelner Benutzer zurückgegeben. Andernfalls wird eine Liste aller Benutzer zurückgegeben.
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Ja | Ihre Jira-Domain \(z.B. ihrfirma.atlassian.net\) |
| `accountId` | string | Nein | Optionale Account-ID, um einen bestimmten Benutzer abzurufen. Wenn nicht angegeben, werden alle Benutzer zurückgegeben. |
| `startAt` | number | Nein | Der Index des ersten zurückzugebenden Benutzers \(für Paginierung, Standard: 0\) |
| `maxResults` | number | Nein | Maximale Anzahl der zurückzugebenden Benutzer \(Standard: 50\) |
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz. Wenn nicht angegeben, wird sie anhand der Domain abgerufen. |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `ts` | string | Zeitstempel der Operation |
| `users` | json | Array von Benutzern mit accountId, displayName, emailAddress, active-Status und avatarUrls |
| `total` | number | Gesamtanzahl der zurückgegebenen Benutzer |
| `startAt` | number | Startindex für Paginierung |
| `maxResults` | number | Maximale Ergebnisse pro Seite |
## Hinweise

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

@@ -10,55 +10,52 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
color="#F64F9E"
/>
## Gebrauchsanweisung
## Nutzungsanweisungen
Memory in den Workflow integrieren. Kann Erinnerungen hinzufügen, eine Erinnerung abrufen, alle Erinnerungen abrufen und Erinnerungen löschen.
Integrieren Sie Memory in den Workflow. Kann Erinnerungen hinzufügen, abrufen, alle Erinnerungen abrufen und Erinnerungen löschen.
## Tools
### `memory_add`
Füge eine neue Erinnerung zur Datenbank hinzu oder ergänze bestehende Erinnerungen mit derselben ID.
Fügen Sie eine neue Erinnerung zur Datenbank hinzu oder hängen Sie sie an eine bestehende Erinnerung mit derselben ID an.
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Nein | Konversationskennung (z.B. user-123, session-abc). Wenn bereits eine Erinnerung mit dieser conversationId für diesen Block existiert, wird die neue Nachricht angehängt. |
| `id` | string | Nein | Legacy-Parameter für die Konversationskennung. Verwenden Sie stattdessen conversationId. r Abwärtskompatibilität bereitgestellt. |
| `role` | string | Ja | Rolle für Agent-Erinnerung (user, assistant oder system) |
| `conversationId` | string | Nein | Konversationskennung \(z. B. user-123, session-abc\). Wenn bereits eine Erinnerung mit dieser conversationId existiert, wird die neue Nachricht an diese angehängt. |
| `id` | string | Nein | Legacy-Parameter für Konversationskennung. Verwenden Sie stattdessen conversationId. Wird aus Gründen der Abwärtskompatibilität bereitgestellt. |
| `role` | string | Ja | Rolle für Agent-Erinnerung \(user, assistant oder system\) |
| `content` | string | Ja | Inhalt für Agent-Erinnerung |
| `blockId` | string | Nein | Optionale Block-ID. Wenn nicht angegeben, wird die aktuelle Block-ID aus dem Ausführungskontext verwendet oder standardmäßig "default" gesetzt. |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Ob der Speicher erfolgreich hinzugefügt wurde |
| `memories` | array | Array von Speicherobjekten einschließlich des neuen oder aktualisierten Speichers |
| `success` | boolean | Ob die Erinnerung erfolgreich hinzugefügt wurde |
| `memories` | array | Array von Erinnerungsobjekten einschließlich der neuen oder aktualisierten Erinnerung |
| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist |
### `memory_get`
Erinnerungen nach conversationId, blockId, blockName oder einer Kombination abrufen. Gibt alle übereinstimmenden Erinnerungen zurück.
Erinnerung nach conversationId abrufen. Gibt übereinstimmende Erinnerungen zurück.
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Nein | Konversationskennung (z.B. user-123, session-abc). Wenn allein angegeben, werden alle Erinnerungen für diese Konversation über alle Blöcke hinweg zurückgegeben. |
| `id` | string | Nein | Legacy-Parameter für die Konversationskennung. Verwenden Sie stattdessen conversationId. r Abwärtskompatibilität bereitgestellt. |
| `blockId` | string | Nein | Block-Kennung. Wenn allein angegeben, werden alle Erinnerungen für diesen Block über alle Konversationen hinweg zurückgegeben. Wenn mit conversationId angegeben, werden Erinnerungen für diese spezifische Konversation in diesem Block zurückgegeben. |
| `blockName` | string | Nein | Blockname. Alternative zu blockId. Wenn allein angegeben, werden alle Erinnerungen für Blöcke mit diesem Namen zurückgegeben. Wenn mit conversationId angegeben, werden Erinnerungen für diese Konversation in Blöcken mit diesem Namen zurückgegeben. |
| `conversationId` | string | Nein | Konversationskennung \(z. B. user-123, session-abc\). Gibt Erinnerungen für diese Konversation zurück. |
| `id` | string | Nein | Legacy-Parameter für Konversationskennung. Verwenden Sie stattdessen conversationId. Wird aus Gründen der Abwärtskompatibilität bereitgestellt. |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Ob die Erinnerung erfolgreich abgerufen wurde |
| `memories` | array | Array von Speicherobjekten mit conversationId, blockId, blockName und data-Feldern |
| `success` | boolean | Ob der Speicher erfolgreich abgerufen wurde |
| `memories` | array | Array von Speicherobjekten mit conversationId- und data-Feldern |
| `message` | string | Erfolgs- oder Fehlermeldung |
| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist |
| `error` | string | Fehlermeldung, falls fehlgeschlagen |
### `memory_get_all`
@@ -73,31 +70,29 @@ Alle Speicher aus der Datenbank abrufen
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Ob alle Erinnerungen erfolgreich abgerufen wurden |
| `memories` | array | Array aller Speicherobjekte mit key, conversationId, blockId, blockName und data-Feldern |
| `success` | boolean | Ob alle Speicher erfolgreich abgerufen wurden |
| `memories` | array | Array aller Speicherobjekte mit key-, conversationId- und data-Feldern |
| `message` | string | Erfolgs- oder Fehlermeldung |
| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist |
| `error` | string | Fehlermeldung, falls fehlgeschlagen |
### `memory_delete`
Löschen von Erinnerungen nach conversationId, blockId, blockName oder einer Kombination davon. Unterstützt Massenlöschung.
Speicher nach conversationId löschen.
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Nein | Konversationskennung (z.B. user-123, session-abc). Wenn allein angegeben, werden alle Erinnerungen für diese Konversation über alle Blöcke hinweg gelöscht. |
| `id` | string | Nein | Legacy-Parameter für die Konversationskennung. Verwenden Sie stattdessen conversationId. r Abwärtskompatibilität bereitgestellt. |
| `blockId` | string | Nein | Block-Kennung. Wenn allein angegeben, werden alle Erinnerungen für diesen Block über alle Konversationen hinweg gelöscht. Wenn mit conversationId angegeben, werden Erinnerungen für diese spezifische Konversation in diesem Block gelöscht. |
| `blockName` | string | Nein | Blockname. Alternative zu blockId. Wenn allein angegeben, werden alle Erinnerungen für Blöcke mit diesem Namen gelöscht. Wenn mit conversationId angegeben, werden Erinnerungen für diese Konversation in Blöcken mit diesem Namen gelöscht. |
| `conversationId` | string | Nein | Konversationskennung (z. B. user-123, session-abc). Löscht alle Speicher für diese Konversation. |
| `id` | string | Nein | Legacy-Parameter für Konversationskennung. Verwenden Sie stattdessen conversationId. Wird aus Gründen der Abwärtskompatibilität bereitgestellt. |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Ob die Erinnerung erfolgreich gelöscht wurde |
| `success` | boolean | Ob der Speicher erfolgreich gelöscht wurde |
| `message` | string | Erfolgs- oder Fehlermeldung |
| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist |
| `error` | string | Fehlermeldung, falls fehlgeschlagen |
## Hinweise

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

@@ -0,0 +1,124 @@
---
title: ServiceNow
description: ServiceNow-Datensätze erstellen, lesen, aktualisieren und löschen
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="servicenow"
color="#032D42"
/>
{/* MANUAL-CONTENT-START:intro */}
[ServiceNow](https://www.servicenow.com/) ist eine leistungsstarke Cloud-Plattform zur Optimierung und Automatisierung von IT-Service-Management (ITSM), Workflows und Geschäftsprozessen in Ihrem Unternehmen. ServiceNow ermöglicht Ihnen die Verwaltung von Vorfällen, Anfragen, Aufgaben, Benutzern und mehr über seine umfangreiche API.
Mit ServiceNow können Sie:
- **IT-Workflows automatisieren**: Datensätze in jeder ServiceNow-Tabelle erstellen, lesen, aktualisieren und löschen, z. B. Vorfälle, Aufgaben, Änderungsanfragen und Benutzer.
- **Systeme integrieren**: ServiceNow mit Ihren anderen Tools und Prozessen für nahtlose Automatisierung verbinden.
- **Eine einzige Informationsquelle pflegen**: Alle Ihre Service- und Betriebsdaten organisiert und zugänglich halten.
- **Betriebliche Effizienz steigern**: Manuelle Arbeit reduzieren und Servicequalität mit anpassbaren Workflows und Automatisierung verbessern.
In Sim ermöglicht die ServiceNow-Integration Ihren Agenten, direkt mit Ihrer ServiceNow-Instanz als Teil ihrer Workflows zu interagieren. Agenten können Datensätze in jeder ServiceNow-Tabelle erstellen, lesen, aktualisieren oder löschen und Ticket- oder Benutzerdaten für ausgefeilte Automatisierung und Entscheidungsfindung nutzen. Diese Integration verbindet Ihre Workflow-Automatisierung und IT-Betrieb und befähigt Ihre Agenten, Serviceanfragen, Vorfälle, Benutzer und Assets ohne manuelle Eingriffe zu verwalten. Durch die Verbindung von Sim mit ServiceNow können Sie Service-Management-Aufgaben automatisieren, Reaktionszeiten verbessern und konsistenten, sicheren Zugriff auf die wichtigen Servicedaten Ihres Unternehmens gewährleisten.
{/* MANUAL-CONTENT-END */}
## Nutzungsanweisungen
Integrieren Sie ServiceNow in Ihren Workflow. Erstellen, lesen, aktualisieren und löschen Sie Datensätze in jeder ServiceNow-Tabelle, einschließlich Vorfälle, Aufgaben, Änderungsanfragen, Benutzer und mehr.
## Tools
### `servicenow_create_record`
Einen neuen Datensatz in einer ServiceNow-Tabelle erstellen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Ja | ServiceNow-Instanz-URL \(z. B. https://instance.service-now.com\) |
| `username` | string | Ja | ServiceNow-Benutzername |
| `password` | string | Ja | ServiceNow-Passwort |
| `tableName` | string | Ja | Tabellenname \(z. B. incident, task, sys_user\) |
| `fields` | json | Ja | Felder, die für den Datensatz festgelegt werden sollen \(JSON-Objekt\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `record` | json | Erstellter ServiceNow-Datensatz mit sys_id und anderen Feldern |
| `metadata` | json | Metadaten der Operation |
### `servicenow_read_record`
Datensätze aus einer ServiceNow-Tabelle lesen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Ja | ServiceNow-Instanz-URL \(z. B. https://instance.service-now.com\) |
| `username` | string | Ja | ServiceNow-Benutzername |
| `password` | string | Ja | ServiceNow-Passwort |
| `tableName` | string | Ja | Tabellenname |
| `sysId` | string | Nein | Spezifische Datensatz-sys_id |
| `number` | string | Nein | Datensatznummer \(z. B. INC0010001\) |
| `query` | string | Nein | Kodierte Abfragezeichenfolge \(z. B. "active=true^priority=1"\) |
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Datensätze |
| `fields` | string | Nein | Durch Kommas getrennte Liste der zurückzugebenden Felder |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `records` | array | Array von ServiceNow-Datensätzen |
| `metadata` | json | Metadaten der Operation |
### `servicenow_update_record`
Einen bestehenden Datensatz in einer ServiceNow-Tabelle aktualisieren
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Ja | ServiceNow-Instanz-URL \(z. B. https://instance.service-now.com\) |
| `username` | string | Ja | ServiceNow-Benutzername |
| `password` | string | Ja | ServiceNow-Passwort |
| `tableName` | string | Ja | Tabellenname |
| `sysId` | string | Ja | Datensatz-sys_id zum Aktualisieren |
| `fields` | json | Ja | Zu aktualisierende Felder \(JSON-Objekt\) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `record` | json | Aktualisierter ServiceNow-Datensatz |
| `metadata` | json | Metadaten der Operation |
### `servicenow_delete_record`
Einen Datensatz aus einer ServiceNow-Tabelle löschen
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Ja | ServiceNow-Instanz-URL \(z. B. https://instance.service-now.com\) |
| `username` | string | Ja | ServiceNow-Benutzername |
| `password` | string | Ja | ServiceNow-Passwort |
| `tableName` | string | Ja | Tabellenname |
| `sysId` | string | Ja | Datensatz-sys_id zum Löschen |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `success` | boolean | Ob das Löschen erfolgreich war |
| `metadata` | json | Metadaten der Operation |
## Hinweise
- Kategorie: `tools`
- Typ: `servicenow`

View File

@@ -54,7 +54,7 @@ Integriert Slack in den Workflow. Kann Nachrichten senden, aktualisieren und lö
### `slack_message`
Senden Sie Nachrichten an Slack-Kanäle oder Benutzer über die Slack-API. Unterstützt Slack mrkdwn-Formatierung.
Sende Nachrichten an Slack-Kanäle oder Direktnachrichten. Unterstützt Slack mrkdwn-Formatierung.
#### Eingabe
@@ -62,8 +62,9 @@ Senden Sie Nachrichten an Slack-Kanäle oder Benutzer über die Slack-API. Unter
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
| `channel` | string | Ja | Ziel-Slack-Kanal \(z.B. #general\) |
| `text` | string | Ja | Nachrichtentext zum Senden \(unterstützt Slack mrkdwn-Formatierung\) |
| `channel` | string | Nein | Ziel-Slack-Kanal \(z.B. #general\) |
| `userId` | string | Nein | Ziel-Slack-Benutzer-ID für Direktnachrichten \(z.B. U1234567890\) |
| `text` | string | Ja | Zu sendender Nachrichtentext \(unterstützt Slack mrkdwn-Formatierung\) |
| `thread_ts` | string | Nein | Thread-Zeitstempel für Antworten \(erstellt Thread-Antwort\) |
| `files` | file[] | Nein | Dateien, die an die Nachricht angehängt werden sollen |
@@ -108,11 +109,12 @@ Lesen Sie die neuesten Nachrichten aus Slack-Kanälen. Rufen Sie den Konversatio
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
| `channel` | string | Ja | Slack-Kanal, aus dem Nachrichten gelesen werden sollen (z.B. #general) |
| `limit` | number | Nein | Anzahl der abzurufenden Nachrichten (Standard: 10, max: 100) |
| `oldest` | string | Nein | Beginn des Zeitraums (Zeitstempel) |
| `latest` | string | Nein | Ende des Zeitraums (Zeitstempel) |
| `botToken` | string | Nein | Bot-Token für Custom Bot |
| `channel` | string | Nein | Slack-Kanal, aus dem Nachrichten gelesen werden sollen \(z.B. #general\) |
| `userId` | string | Nein | Benutzer-ID für DM-Konversation \(z.B. U1234567890\) |
| `limit` | number | Nein | Anzahl der abzurufenden Nachrichten \(Standard: 10, max: 15\) |
| `oldest` | string | Nein | Beginn des Zeitbereichs \(Zeitstempel\) |
| `latest` | string | Nein | Ende des Zeitbereichs \(Zeitstempel\) |
#### Ausgabe

View File

@@ -47,12 +47,13 @@ Daten aus einer Supabase-Tabelle abfragen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z. B. jdrkgepadsdopsntdlom\) |
| `table` | string | Ja | Der Name der abzufragenden Supabase-Tabelle |
| `filter` | string | Nein | PostgREST-Filter \(z.B. "id=eq.123"\) |
| `orderBy` | string | Nein | Spalte zum Sortieren \(fügen Sie DESC für absteigend hinzu\) |
| `schema` | string | Nein | Datenbankschema für die Abfrage \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
| `filter` | string | Nein | PostgREST-Filter \(z. B. "id=eq.123"\) |
| `orderBy` | string | Nein | Spalte zum Sortieren \(fügen Sie DESC für absteigende Sortierung hinzu\) |
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Zeilen |
| `apiKey` | string | Ja | Ihr Supabase Service-Rolle-Secret-Schlüssel |
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
#### Ausgabe
@@ -69,8 +70,9 @@ Daten in eine Supabase-Tabelle einfügen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z. B. jdrkgepadsdopsntdlom\) |
| `table` | string | Ja | Der Name der Supabase-Tabelle, in die Daten eingefügt werden sollen |
| `schema` | string | Nein | Datenbankschema für das Einfügen \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
| `data` | array | Ja | Die einzufügenden Daten \(Array von Objekten oder ein einzelnes Objekt\) |
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
@@ -89,10 +91,11 @@ Eine einzelne Zeile aus einer Supabase-Tabelle basierend auf Filterkriterien abr
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID (z.B. jdrkgepadsdopsntdlom) |
| `table` | string | Ja | Der Name der Supabase-Tabelle für die Abfrage |
| `filter` | string | Ja | PostgREST-Filter zum Finden der spezifischen Zeile (z.B. "id=eq.123") |
| `apiKey` | string | Ja | Ihr Supabase Service-Role-Secret-Key |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z. B. jdrkgepadsdopsntdlom\) |
| `table` | string | Ja | Der Name der abzufragenden Supabase-Tabelle |
| `schema` | string | Nein | Datenbankschema für die Abfrage \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
| `filter` | string | Ja | PostgREST-Filter zum Auffinden der spezifischen Zeile \(z. B. "id=eq.123"\) |
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
#### Ausgabe
@@ -109,9 +112,10 @@ Zeilen in einer Supabase-Tabelle basierend auf Filterkriterien aktualisieren
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID (z.B. jdrkgepadsdopsntdlom) |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
| `table` | string | Ja | Der Name der zu aktualisierenden Supabase-Tabelle |
| `filter` | string | Ja | PostgREST-Filter zur Identifizierung der zu aktualisierenden Zeilen (z.B. "id=eq.123") |
| `schema` | string | Nein | Datenbankschema für die Aktualisierung \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
| `filter` | string | Ja | PostgREST-Filter zur Identifizierung der zu aktualisierenden Zeilen \(z.B. "id=eq.123"\) |
| `data` | object | Ja | Daten, die in den übereinstimmenden Zeilen aktualisiert werden sollen |
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
@@ -130,9 +134,10 @@ Zeilen aus einer Supabase-Tabelle basierend auf Filterkriterien löschen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID (z.B. jdrkgepadsdopsntdlom) |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
| `table` | string | Ja | Der Name der Supabase-Tabelle, aus der gelöscht werden soll |
| `filter` | string | Ja | PostgREST-Filter zur Identifizierung der zu löschenden Zeilen (z.B. "id=eq.123") |
| `schema` | string | Nein | Datenbankschema für die Löschung \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
| `filter` | string | Ja | PostgREST-Filter zur Identifizierung der zu löschenden Zeilen \(z.B. "id=eq.123"\) |
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
#### Ausgabe
@@ -151,8 +156,9 @@ Daten in eine Supabase-Tabelle einfügen oder aktualisieren (Upsert-Operation)
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
| `table` | string | Ja | Der Name der Supabase-Tabelle, in die Daten upsertet werden sollen |
| `data` | array | Ja | Die zu upsertenden Daten \(einfügen oder aktualisieren\) - Array von Objekten oder ein einzelnes Objekt |
| `table` | string | Ja | Der Name der Supabase-Tabelle, in die Daten eingefügt oder aktualisiert werden sollen |
| `schema` | string | Nein | Datenbankschema für Upsert \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
| `data` | array | Ja | Die Daten für Upsert \(Einfügen oder Aktualisieren\) - Array von Objekten oder ein einzelnes Objekt |
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
#### Ausgabe
@@ -171,7 +177,8 @@ Zeilen in einer Supabase-Tabelle zählen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
| `table` | string | Ja | Der Name der Supabase-Tabelle, deren Zeilen gezählt werden sollen |
| `table` | string | Ja | Der Name der Supabase-Tabelle, aus der Zeilen gezählt werden sollen |
| `schema` | string | Nein | Datenbankschema zum Zählen \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
| `filter` | string | Nein | PostgREST-Filter \(z.B. "status=eq.active"\) |
| `countType` | string | Nein | Zähltyp: exact, planned oder estimated \(Standard: exact\) |
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
@@ -192,7 +199,8 @@ Volltextsuche in einer Supabase-Tabelle durchführen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
| `table` | string | Ja | Der Name der Supabase-Tabelle für die Suche |
| `table` | string | Ja | Der Name der zu durchsuchenden Supabase-Tabelle |
| `schema` | string | Nein | Datenbankschema zum Durchsuchen \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
| `column` | string | Ja | Die Spalte, in der gesucht werden soll |
| `query` | string | Ja | Die Suchanfrage |
| `searchType` | string | Nein | Suchtyp: plain, phrase oder websearch \(Standard: websearch\) |
@@ -258,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

@@ -39,14 +39,17 @@ Senden Sie eine Chat-Completion-Anfrage an jeden unterstützten LLM-Anbieter
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `model` | string | Ja | Das zu verwendende Modell (z.B. gpt-4o, claude-sonnet-4-5, gemini-2.0-flash) |
| `systemPrompt` | string | Nein | System-Prompt zur Festlegung des Assistentenverhaltens |
| `context` | string | Ja | Die Benutzernachricht oder der Kontext, der an das Modell gesendet wird |
| `apiKey` | string | Nein | API-Schlüssel für den Anbieter (verwendet den Plattformschlüssel, wenn für gehostete Modelle nicht angegeben) |
| `temperature` | number | Nein | Temperatur für die Antwortgenerierung (0-2) |
| `maxTokens` | number | Nein | Maximale Tokens in der Antwort |
| `model` | string | Ja | Das zu verwendende Modell \(z. B. gpt-4o, claude-sonnet-4-5, gemini-2.0-flash\) |
| `systemPrompt` | string | Nein | System-Prompt zur Festlegung des Verhaltens des Assistenten |
| `context` | string | Ja | Die Benutzernachricht oder der Kontext, der an das Modell gesendet werden soll |
| `apiKey` | string | Nein | API-Schlüssel für den Anbieter \(verwendet den Plattformschlüssel, falls nicht für gehostete Modelle angegeben\) |
| `temperature` | number | Nein | Temperatur für die Antwortgenerierung \(02\) |
| `maxTokens` | number | Nein | Maximale Anzahl von Tokens in der Antwort |
| `azureEndpoint` | string | Nein | Azure OpenAI-Endpunkt-URL |
| `azureApiVersion` | string | Nein | Azure OpenAI API-Version |
| `azureApiVersion` | string | Nein | Azure OpenAI-API-Version |
| `vertexProject` | string | Nein | Google Cloud-Projekt-ID für Vertex AI |
| `vertexLocation` | string | Nein | Google Cloud-Standort für Vertex AI \(Standard: us-central1\) |
| `vertexCredential` | string | Nein | Google Cloud OAuth-Anmeldeinformations-ID für Vertex AI |
#### 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

@@ -39,9 +39,10 @@ Alle Elemente aus einer Webflow CMS-Sammlung auflisten
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Ja | ID der Webflow-Website |
| `collectionId` | string | Ja | ID der Sammlung |
| `offset` | number | Nein | Offset für Paginierung \(optional\) |
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Elemente \(optional, Standard: 100\) |
| `offset` | number | Nein | Offset für Paginierung (optional) |
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Elemente (optional, Standard: 100) |
#### Ausgabe
@@ -58,6 +59,7 @@ Ein einzelnes Element aus einer Webflow CMS-Sammlung abrufen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Ja | ID der Webflow-Website |
| `collectionId` | string | Ja | ID der Sammlung |
| `itemId` | string | Ja | ID des abzurufenden Elements |
@@ -76,8 +78,9 @@ Ein neues Element in einer Webflow CMS-Sammlung erstellen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Ja | ID der Webflow-Website |
| `collectionId` | string | Ja | ID der Sammlung |
| `fieldData` | json | Ja | Felddaten für das neue Element als JSON-Objekt. Die Schlüssel sollten mit den Feldnamen der Sammlung übereinstimmen. |
| `fieldData` | json | Ja | Felddaten für das neue Element als JSON-Objekt. Schlüssel sollten mit den Sammlungsfeldnamen übereinstimmen. |
#### Ausgabe
@@ -94,6 +97,7 @@ Ein vorhandenes Element in einer Webflow CMS-Sammlung aktualisieren
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Ja | ID der Webflow-Website |
| `collectionId` | string | Ja | ID der Sammlung |
| `itemId` | string | Ja | ID des zu aktualisierenden Elements |
| `fieldData` | json | Ja | Zu aktualisierende Felddaten als JSON-Objekt. Nur Felder einschließen, die geändert werden sollen. |
@@ -113,6 +117,7 @@ Ein Element aus einer Webflow CMS-Sammlung löschen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Ja | ID der Webflow-Website |
| `collectionId` | string | Ja | ID der Sammlung |
| `itemId` | string | Ja | ID des zu löschenden Elements |

View File

@@ -27,12 +27,14 @@ In Sim ermöglicht die Zoom-Integration Ihren Agenten die Automatisierung der Pl
- Details oder Einladungen für jedes Meeting abzurufen
- Bestehende Meetings direkt aus Ihren Automatisierungen zu aktualisieren oder zu löschen
Diese Funktionen ermöglichen es Ihnen, die Remote-Zusammenarbeit zu optimieren, wiederkehrende Videositzungen zu automatisieren und die Zoom-Umgebung Ihrer Organisation als Teil Ihrer Workflows zu verwalten.
Um eine Verbindung zu Zoom herzustellen, fügen Sie den Zoom-Block ein und klicken Sie auf `Connect`, um sich mit Ihrem Zoom-Konto zu authentifizieren. Nach der Verbindung können Sie die Zoom-Tools verwenden, um Zoom-Meetings zu erstellen, aufzulisten, zu aktualisieren und zu löschen. Sie können Ihr Zoom-Konto jederzeit trennen, indem Sie unter Einstellungen > Integrationen auf `Disconnect` klicken, und der Zugriff auf Ihr Zoom-Konto wird sofort widerrufen.
Diese Funktionen ermöglichen es Ihnen, die Zusammenarbeit aus der Ferne zu optimieren, wiederkehrende Videositzungen zu automatisieren und die Zoom-Umgebung Ihrer Organisation als Teil Ihrer Workflows zu verwalten.
{/* MANUAL-CONTENT-END */}
## Nutzungsanleitung
## Gebrauchsanweisung
Integrieren Sie Zoom in Workflows. Erstellen, listen, aktualisieren und löschen Sie Zoom-Meetings. Rufen Sie Meeting-Details, Einladungen, Aufzeichnungen und Teilnehmer ab. Verwalten Sie Cloud-Aufzeichnungen programmgesteuert.
Integrieren Sie Zoom in Workflows. Erstellen, listen, aktualisieren und löschen Sie Zoom-Meetings. Erhalten Sie Meeting-Details, Einladungen, Aufzeichnungen und Teilnehmerinformationen. Verwalten Sie Cloud-Aufzeichnungen programmatisch.
## Tools
@@ -49,7 +51,7 @@ Ein neues Zoom-Meeting erstellen
| `type` | number | Nein | Meeting-Typ: 1=sofort, 2=geplant, 3=wiederkehrend ohne feste Zeit, 8=wiederkehrend mit fester Zeit |
| `startTime` | string | Nein | Meeting-Startzeit im ISO 8601-Format \(z.B. 2025-06-03T10:00:00Z\) |
| `duration` | number | Nein | Meeting-Dauer in Minuten |
| `timezone` | string | Nein | Zeitzone für das Meeting \(z.B. Europe/Berlin\) |
| `timezone` | string | Nein | Zeitzone für das Meeting \(z.B. America/Los_Angeles\) |
| `password` | string | Nein | Meeting-Passwort |
| `agenda` | string | Nein | Meeting-Agenda |
| `hostVideo` | boolean | Nein | Mit eingeschaltetem Host-Video starten |
@@ -59,7 +61,7 @@ Ein neues Zoom-Meeting erstellen
| `waitingRoom` | boolean | Nein | Warteraum aktivieren |
| `autoRecording` | string | Nein | Automatische Aufzeichnungseinstellung: local, cloud oder none |
#### Output
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
@@ -67,18 +69,18 @@ Ein neues Zoom-Meeting erstellen
### `zoom_list_meetings`
Alle Meetings eines Zoom-Benutzers auflisten
Alle Meetings für einen Zoom-Benutzer auflisten
#### Input
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `userId` | string | Ja | Die Benutzer-ID oder E-Mail-Adresse. Verwenden Sie "me" für den authentifizierten Benutzer. |
| `type` | string | Nein | Meeting-Typ-Filter: scheduled, live, upcoming, upcoming_meetings oder previous_meetings |
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite (max. 300) |
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite \(max. 300\) |
| `nextPageToken` | string | Nein | Token für Paginierung, um die nächste Ergebnisseite zu erhalten |
#### Output
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
@@ -89,7 +91,7 @@ Alle Meetings eines Zoom-Benutzers auflisten
Details eines bestimmten Zoom-Meetings abrufen
#### Input
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
@@ -97,13 +99,13 @@ Details eines bestimmten Zoom-Meetings abrufen
| `occurrenceId` | string | Nein | Vorkommnis-ID für wiederkehrende Meetings |
| `showPreviousOccurrences` | boolean | Nein | Frühere Vorkommnisse für wiederkehrende Meetings anzeigen |
#### Output
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `meeting` | object | Die Meeting-Details |
### `zoom_update_meeting`
Details eines bestimmten Zoom-Meetings abrufen
Ein bestehendes Zoom-Meeting aktualisieren
@@ -116,11 +118,11 @@ Ein bestehendes Zoom-Meeting aktualisieren
| `type` | number | Nein | Meeting-Typ: 1=sofort, 2=geplant, 3=wiederkehrend ohne feste Zeit, 8=wiederkehrend mit fester Zeit |
| `startTime` | string | Nein | Meeting-Startzeit im ISO 8601-Format \(z.B. 2025-06-03T10:00:00Z\) |
| `duration` | number | Nein | Meeting-Dauer in Minuten |
| `timezone` | string | Nein | Zeitzone für das Meeting \(z.B. America/Los_Angeles\) |
| `timezone` | string | Nein | Zeitzone für das Meeting \(z.B. Europe/Berlin\) |
| `password` | string | Nein | Meeting-Passwort |
| `agenda` | string | Nein | Meeting-Agenda |
| `hostVideo` | boolean | Nein | Mit eingeschalteter Host-Kamera starten |
| `participantVideo` | boolean | Nein | Mit eingeschalteter Teilnehmer-Kamera starten |
| `hostVideo` | boolean | Nein | Mit eingeschaltetem Host-Video starten |
| `participantVideo` | boolean | Nein | Mit eingeschaltetem Teilnehmer-Video starten |
| `joinBeforeHost` | boolean | Nein | Teilnehmern erlauben, vor dem Host beizutreten |
| `muteUponEntry` | boolean | Nein | Teilnehmer beim Betreten stummschalten |
| `waitingRoom` | boolean | Nein | Warteraum aktivieren |
@@ -132,7 +134,7 @@ Ein bestehendes Zoom-Meeting aktualisieren
| --------- | ---- | ----------- |
| `success` | boolean | Ob das Meeting erfolgreich aktualisiert wurde |
### `zoom_delete_meeting`
Ein Zoom-Meeting löschen
Ein Zoom-Meeting löschen oder abbrechen
@@ -141,9 +143,9 @@ Ein Zoom-Meeting löschen oder abbrechen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `meetingId` | string | Ja | Die zu löschende Meeting-ID |
| `occurrenceId` | string | Nein | Vorkommnis-ID zum Löschen eines bestimmten Vorkommnisses eines wiederkehrenden Meetings |
| `occurrenceId` | string | Nein | Occurrence-ID zum Löschen eines bestimmten Termins eines wiederkehrenden Meetings |
| `scheduleForReminder` | boolean | Nein | Erinnerungs-E-Mail zur Stornierung an Teilnehmer senden |
| `cancelMeetingReminder` | boolean | Nein | Stornierungsmail an Teilnehmer und alternative Hosts senden |
| `cancelMeetingReminder` | boolean | Nein | Stornierungs-E-Mail an Teilnehmer und alternative Hosts senden |
#### Ausgabe
@@ -153,7 +155,7 @@ Ein Zoom-Meeting löschen oder abbrechen
### `zoom_get_meeting_invitation`
Abrufen des Einladungstextes für ein Zoom-Meeting
Den Einladungstext für ein Zoom-Meeting abrufen
#### Eingabe
@@ -165,20 +167,20 @@ Abrufen des Einladungstextes für ein Zoom-Meeting
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `invitation` | string | Der Einladungstext für das Meeting |
| `invitation` | string | Der Meeting-Einladungstext |
### `zoom_list_recordings`
Alle Cloud-Aufzeichnungen für einen Zoom-Benutzer auflisten
Alle Cloud-Aufzeichnungen eines Zoom-Benutzers auflisten
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `userId` | string | Ja | Die Benutzer-ID oder E-Mail-Adresse. Verwenden Sie "me" für den authentifizierten Benutzer. |
| `from` | string | Nein | Startdatum im Format jjjj-mm-tt \(innerhalb der letzten 6 Monate\) |
| `to` | string | Nein | Enddatum im Format jjjj-mm-tt |
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite \(max. 300\) |
| `from` | string | Nein | Startdatum im Format yyyy-mm-dd (innerhalb der letzten 6 Monate) |
| `to` | string | Nein | Enddatum im Format yyyy-mm-dd |
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite (max. 300) |
| `nextPageToken` | string | Nein | Token für die Paginierung, um die nächste Ergebnisseite zu erhalten |
| `trash` | boolean | Nein | Auf true setzen, um Aufzeichnungen aus dem Papierkorb aufzulisten |
@@ -189,7 +191,7 @@ Alle Cloud-Aufzeichnungen für einen Zoom-Benutzer auflisten
| `recordings` | array | Liste der Aufzeichnungen |
| `pageInfo` | object | Paginierungsinformationen |
### `zoom_get_meeting_recordings`
Alle Aufzeichnungen für ein bestimmtes Zoom-Meeting abrufen
Alle Aufzeichnungen für ein bestimmtes Zoom-Meeting abrufen
@@ -198,8 +200,8 @@ Alle Aufzeichnungen für ein bestimmtes Zoom-Meeting abrufen
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `meetingId` | string | Ja | Die Meeting-ID oder Meeting-UUID |
| `includeFolderItems` | boolean | Nein | Elemente innerhalb eines Ordners einschließen |
| `ttl` | number | Nein | Gültigkeitsdauer für Download-URLs in Sekunden \(max 604800\) |
| `includeFolderItems` | boolean | Nein | Elemente innerhalb eines Ordners einbeziehen |
| `ttl` | number | Nein | Gültigkeitsdauer für Download-URLs in Sekunden \(max. 604800\) |
#### Ausgabe
@@ -207,7 +209,7 @@ Alle Aufzeichnungen für ein bestimmtes Zoom-Meeting abrufen
| --------- | ---- | ----------- |
| `recording` | object | Die Meeting-Aufzeichnung mit allen Dateien |
### `zoom_delete_recording`
Cloud-Aufzeichnungen für ein Zoom-Meeting löschen
Cloud-Aufzeichnungen für ein Zoom-Meeting löschen
@@ -225,7 +227,7 @@ Cloud-Aufzeichnungen für ein Zoom-Meeting löschen
| --------- | ---- | ----------- |
| `success` | boolean | Ob die Aufzeichnung erfolgreich gelöscht wurde |
### `zoom_list_past_participants`
Teilnehmer eines vergangenen Zoom-Meetings auflisten
Teilnehmer eines vergangenen Zoom-Meetings auflisten
@@ -234,14 +236,14 @@ Teilnehmer eines vergangenen Zoom-Meetings auflisten
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `meetingId` | string | Ja | Die vergangene Meeting-ID oder UUID |
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite \(max 300\) |
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite \(max. 300\) |
| `nextPageToken` | string | Nein | Token für Paginierung, um die nächste Ergebnisseite zu erhalten |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `participants` | array | Liste der Besprechungsteilnehmer |
| `participants` | array | Liste der Meeting-Teilnehmer |
| `pageInfo` | object | Paginierungsinformationen |
## Hinweise

View File

@@ -5,7 +5,6 @@ title: Zeitplan
import { Callout } from 'fumadocs-ui/components/callout'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
Der Zeitplan-Block löst Workflows automatisch nach einem wiederkehrenden Zeitplan zu bestimmten Intervallen oder Zeiten aus.
@@ -21,67 +20,58 @@ Der Zeitplan-Block löst Workflows automatisch nach einem wiederkehrenden Zeitpl
## Zeitplan-Optionen
Konfigurieren Sie, wann Ihr Workflow ausgeführt wird, mit den Dropdown-Optionen:
Konfigurieren Sie, wann Ihr Workflow ausgeführt wird:
<Tabs items={['Einfache Intervalle', 'Cron-Ausdrücke']}>
<Tab>
<ul className="list-disc space-y-1 pl-6">
<li><strong>Alle paar Minuten</strong>: 5, 15, 30 Minuten-Intervalle</li>
<li><strong>Stündlich</strong>: Jede Stunde oder alle paar Stunden</li>
<li><strong>Täglich</strong>: Einmal oder mehrmals pro Tag</li>
<li><strong>Wöchentlich</strong>: Bestimmte Wochentage</li>
<li><strong>Monatlich</strong>: Bestimmte Tage des Monats</li>
<li><strong>Alle X Minuten</strong>: Ausführung in Minutenintervallen (1-1440)</li>
<li><strong>Stündlich</strong>: Ausführung zu einer bestimmten Minute jeder Stunde</li>
<li><strong>Täglich</strong>: Ausführung zu einer bestimmten Uhrzeit jeden Tag</li>
<li><strong>Wöchentlich</strong>: Ausführung an einem bestimmten Tag und einer bestimmten Uhrzeit jede Woche</li>
<li><strong>Monatlich</strong>: Ausführung an einem bestimmten Tag und einer bestimmten Uhrzeit jeden Monat</li>
</ul>
</Tab>
<Tab>
<p>Verwenden Sie Cron-Ausdrücke für erweiterte Zeitplanung:</p>
<p>Verwenden Sie Cron-Ausdrücke für erweiterte Planung:</p>
<div className="text-sm space-y-1">
<div><code>0 9 * * 1-5</code> - Jeden Wochentag um 9 Uhr</div>
<div><code>*/15 * * * *</code> - Alle 15 Minuten</div>
<div><code>0 0 1 * *</code> - Am ersten Tag jedes Monats</div>
<div><code>0 0 1 * *</code> - Erster Tag jedes Monats</div>
</div>
</Tab>
</Tabs>
## Zeitpläne konfigurieren
## Aktivierung
Wenn ein Workflow geplant ist:
- Der Zeitplan wird **aktiv** und zeigt die nächste Ausführungszeit an
- Klicken Sie auf die Schaltfläche **"Geplant"**, um den Zeitplan zu deaktivieren
- Zeitpläne werden nach **3 aufeinanderfolgenden Fehlern** automatisch deaktiviert
Zeitpläne sind an die Workflow-Bereitstellung gebunden:
<div className="flex justify-center">
<Image
src="/static/blocks/schedule-2.png"
alt="Aktiver Zeitplan-Block"
width={500}
height={400}
className="my-6"
/>
</div>
<div className="flex justify-center">
<Image
src="/static/blocks/schedule-3.png"
alt="Deaktivierter Zeitplan"
width={500}
height={350}
className="my-6"
/>
</div>
<div className="flex justify-center">
<Image
src="/static/blocks/schedule-3.png"
alt="Deaktivierter Zeitplan"
width={500}
height={400}
className="my-6"
/>
</div>
Deaktivierte Zeitpläne zeigen an, wann sie zuletzt aktiv waren. Klicken Sie auf das **"Deaktiviert"**-Badge, um den Zeitplan wieder zu aktivieren.
- **Workflow bereitstellen** → Zeitplan wird aktiv und beginnt mit der Ausführung
- **Workflow-Bereitstellung aufheben** → Zeitplan wird entfernt
- **Workflow erneut bereitstellen** → Zeitplan wird mit aktueller Konfiguration neu erstellt
<Callout>
Zeitplan-Blöcke können keine eingehenden Verbindungen empfangen und dienen ausschließlich als Workflow-Auslöser.
Sie müssen Ihren Workflow bereitstellen, damit der Zeitplan mit der Ausführung beginnt. Konfigurieren Sie den Zeitplan-Block und stellen Sie ihn dann über die Symbolleiste bereit.
</Callout>
## Automatische Deaktivierung
Zeitpläne werden nach **100 aufeinanderfolgenden Fehlern** automatisch deaktiviert, um unkontrollierte Fehler zu verhindern. Bei Deaktivierung:
- Erscheint ein Warnhinweis auf dem Zeitplan-Block
- Die Ausführung des Zeitplans wird gestoppt
- Klicken Sie auf den Hinweis, um den Zeitplan zu reaktivieren
<div className="flex justify-center">
<Image
src="/static/blocks/schedule-3.png"
alt="Deaktivierter Zeitplan"
width={500}
height={400}
className="my-6"
/>
</div>
<Callout>
Zeitplan-Blöcke können keine eingehenden Verbindungen empfangen und dienen ausschließlich als Workflow-Einstiegspunkte.
</Callout>

View File

@@ -106,26 +106,24 @@ Different block types produce different output structures. Here's what you can e
<Tab>
```json
{
"content": "Original content passed through",
"conditionResult": true,
"selectedPath": {
"blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
"blockType": "agent",
"blockTitle": "Follow-up Agent"
},
"selectedConditionId": "condition-1"
"selectedOption": "condition-1"
}
```
### Condition Block Output Fields
- **content**: The original content passed through
- **conditionResult**: Boolean result of the condition evaluation
- **selectedPath**: Information about the selected path
- **blockId**: ID of the next block in the selected path
- **blockType**: Type of the next block
- **blockTitle**: Title of the next block
- **selectedConditionId**: ID of the selected condition
- **selectedOption**: ID of the selected condition
</Tab>
<Tab>

View File

@@ -48,40 +48,40 @@ The model breakdown shows:
<Tabs items={['Hosted Models', 'Bring Your Own API Key']}>
<Tab>
**Hosted Models** - Sim provides API keys with a 2.5x pricing multiplier:
**Hosted Models** - Sim provides API keys with a 2x pricing multiplier:
**OpenAI**
| Model | Base Price (Input/Output) | Hosted Price (Input/Output) |
|-------|---------------------------|----------------------------|
| GPT-5.1 | $1.25 / $10.00 | $3.13 / $25.00 |
| GPT-5 | $1.25 / $10.00 | $3.13 / $25.00 |
| GPT-5 Mini | $0.25 / $2.00 | $0.63 / $5.00 |
| GPT-5 Nano | $0.05 / $0.40 | $0.13 / $1.00 |
| GPT-4o | $2.50 / $10.00 | $6.25 / $25.00 |
| GPT-4.1 | $2.00 / $8.00 | $5.00 / $20.00 |
| GPT-4.1 Mini | $0.40 / $1.60 | $1.00 / $4.00 |
| GPT-4.1 Nano | $0.10 / $0.40 | $0.25 / $1.00 |
| o1 | $15.00 / $60.00 | $37.50 / $150.00 |
| o3 | $2.00 / $8.00 | $5.00 / $20.00 |
| o4 Mini | $1.10 / $4.40 | $2.75 / $11.00 |
| GPT-5.1 | $1.25 / $10.00 | $2.50 / $20.00 |
| GPT-5 | $1.25 / $10.00 | $2.50 / $20.00 |
| GPT-5 Mini | $0.25 / $2.00 | $0.50 / $4.00 |
| GPT-5 Nano | $0.05 / $0.40 | $0.10 / $0.80 |
| GPT-4o | $2.50 / $10.00 | $5.00 / $20.00 |
| GPT-4.1 | $2.00 / $8.00 | $4.00 / $16.00 |
| GPT-4.1 Mini | $0.40 / $1.60 | $0.80 / $3.20 |
| GPT-4.1 Nano | $0.10 / $0.40 | $0.20 / $0.80 |
| o1 | $15.00 / $60.00 | $30.00 / $120.00 |
| o3 | $2.00 / $8.00 | $4.00 / $16.00 |
| o4 Mini | $1.10 / $4.40 | $2.20 / $8.80 |
**Anthropic**
| Model | Base Price (Input/Output) | Hosted Price (Input/Output) |
|-------|---------------------------|----------------------------|
| Claude Opus 4.5 | $5.00 / $25.00 | $12.50 / $62.50 |
| Claude Opus 4.1 | $15.00 / $75.00 | $37.50 / $187.50 |
| Claude Sonnet 4.5 | $3.00 / $15.00 | $7.50 / $37.50 |
| Claude Sonnet 4.0 | $3.00 / $15.00 | $7.50 / $37.50 |
| Claude Haiku 4.5 | $1.00 / $5.00 | $2.50 / $12.50 |
| Claude Opus 4.5 | $5.00 / $25.00 | $10.00 / $50.00 |
| Claude Opus 4.1 | $15.00 / $75.00 | $30.00 / $150.00 |
| Claude Sonnet 4.5 | $3.00 / $15.00 | $6.00 / $30.00 |
| Claude Sonnet 4.0 | $3.00 / $15.00 | $6.00 / $30.00 |
| Claude Haiku 4.5 | $1.00 / $5.00 | $2.00 / $10.00 |
**Google**
| Model | Base Price (Input/Output) | Hosted Price (Input/Output) |
|-------|---------------------------|----------------------------|
| Gemini 3 Pro Preview | $2.00 / $12.00 | $5.00 / $30.00 |
| Gemini 2.5 Pro | $0.15 / $0.60 | $0.38 / $1.50 |
| Gemini 2.5 Flash | $0.15 / $0.60 | $0.38 / $1.50 |
| Gemini 3 Pro Preview | $2.00 / $12.00 | $4.00 / $24.00 |
| Gemini 2.5 Pro | $1.25 / $10.00 | $2.50 / $20.00 |
| Gemini 2.5 Flash | $0.30 / $2.50 | $0.60 / $5.00 |
*The 2.5x multiplier covers infrastructure and API management costs.*
*The 2x multiplier covers infrastructure and API management costs.*
</Tab>
<Tab>
@@ -104,6 +104,10 @@ The model breakdown shows:
Pricing shown reflects rates as of September 10, 2025. Check provider documentation for current pricing.
</Callout>
## Bring Your Own Key (BYOK)
You can use your own API keys for hosted models (OpenAI, Anthropic, Google, Mistral) in **Settings → BYOK** to pay base prices. Keys are encrypted and apply workspace-wide.
## Cost Optimization Strategies
- **Model Selection**: Choose models based on task complexity. Simple tasks can use GPT-4.1-nano while complex reasoning might need o1 or Claude Opus.
@@ -183,7 +187,7 @@ Different subscription plans have different usage limits:
| Plan | Monthly Usage Limit | Rate Limits (per minute) |
|------|-------------------|-------------------------|
| **Free** | $10 | 5 sync, 10 async |
| **Free** | $20 | 5 sync, 10 async |
| **Pro** | $100 | 10 sync, 50 async |
| **Team** | $500 (pooled) | 50 sync, 100 async |
| **Enterprise** | Custom | Custom |

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

@@ -34,9 +34,15 @@ Once your documents are processed, you can view and edit the individual chunks.
<Image src="/static/knowledgebase/knowledgebase.png" alt="Document chunks view showing processed content" width={800} height={500} />
### Chunk Configuration
- **Default chunk size**: 1,024 characters
- **Configurable range**: 100-4,000 characters per chunk
- **Smart overlap**: 200 characters by default for context preservation
When creating a knowledge base, you can configure how documents are split into chunks:
| Setting | Unit | Default | Range | Description |
|---------|------|---------|-------|-------------|
| **Max Chunk Size** | tokens | 1,024 | 100-4,000 | Maximum size of each chunk (1 token ≈ 4 characters) |
| **Min Chunk Size** | characters | 1 | 1-2,000 | Minimum chunk size to avoid tiny fragments |
| **Overlap** | characters | 200 | 0-500 | Context overlap between consecutive chunks |
- **Hierarchical splitting**: Respects document structure (sections, paragraphs, sentences)
### Editing Capabilities

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

@@ -0,0 +1,64 @@
---
title: Circleback
description: AI-powered meeting notes and action items
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="circleback"
color="linear-gradient(180deg, #E0F7FA 0%, #FFFFFF 100%)"
/>
{/* MANUAL-CONTENT-START:intro */}
[Circleback](https://circleback.ai/) is an AI-powered platform that automates meeting notes, action items, transcripts, and recordings for your team. When a meeting is completed, Circleback processes the conversation and provides detailed notes and action items, along with a transcript and a recording (when available). This helps teams efficiently capture insights, distribute action items, and ensure nothing is missed—all seamlessly integrated into your workflows.
With the Sim Circleback integration, you can:
- **Receive detailed meeting notes and action items**: Automatically collect well-formatted meeting summaries and track actionable tasks discussed during your calls.
- **Access complete meeting recordings and transcripts**: Get the full conversation and the associated recording, making it easy to review key moments or share with colleagues.
- **Capture attendee information and meeting context**: Attendee lists, meeting metadata, and tags help keep your data organized and actionable.
- **Deliver insights directly into your workflows**: Trigger automations or send Circleback data to other systems the moment a meeting is done, using Sims powerful webhook triggers.
**How it works in Sim:**
Circleback uses webhook triggers: whenever a meeting is processed, data is pushed automatically to your agent or automation. You can build further automations based on:
- Meeting completed (all processed data available)
- New notes (notes ready even before full meeting is processed)
- Raw webhook integration for advanced use cases
**The following information is available in the Circleback meeting webhook payload:**
| Field | Type | Description |
|----------------|---------|----------------------------------------------------|
| `id` | number | Circleback meeting ID |
| `name` | string | Meeting title |
| `url` | string | Virtual meeting URL (Zoom, Meet, Teams, etc.) |
| `createdAt` | string | Meeting creation timestamp |
| `duration` | number | Duration in seconds |
| `recordingUrl` | string | Recording URL (valid 24 hours) |
| `tags` | json | Array of tags |
| `icalUid` | string | Calendar event ID |
| `attendees` | json | Array of attendee objects |
| `notes` | string | Meeting notes in Markdown |
| `actionItems` | json | Array of action items |
| `transcript` | json | Array of transcript segments |
| `insights` | json | User-created insights |
| `meeting` | json | Full meeting payload |
Whether you want to distribute instant summaries, log action items, or build custom workflows triggered by new meeting data, Circleback and Sim make it seamless to handle everything related to your meetings—automatically.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Receive meeting notes, action items, transcripts, and recordings when meetings are processed. Circleback uses webhooks to push data to your workflows.
## Notes
- Category: `triggers`
- Type: `circleback`

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,223 @@
---
title: Grain
description: Access meeting recordings, transcripts, and AI summaries
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="grain"
color="#F6FAF9"
/>
{/* MANUAL-CONTENT-START:intro */}
[Grain](https://grain.com/) is a modern platform for capturing, storing, and sharing meeting recordings, transcripts, highlights, and AI-powered summaries. Grain enables teams to turn conversations into actionable insights and keep everyone aligned on key moments from meetings.
With Grain, you can:
- **Access searchable recordings and transcripts**: Find and review every meeting by keyword, participant, or topic.
- **Share highlights and clips**: Capture important moments and share short video/audio highlights across your team or workflows.
- **Get AI-generated summaries**: Automatically produce meeting summaries, action items, and key insights using Grains advanced AI.
- **Organize meetings by team or type**: Tag and categorize recordings for easy access and reporting.
The Sim Grain integration empowers your agents to:
- List, search, and retrieve meeting recordings and details by flexible filters (datetime, participant, team, etc).
- Access AI summaries, participants, highlights, and other metadata for meetings to power automations or analysis.
- Trigger workflows whenever new meetings are processed, summaries are generated, or highlights are created via Grain webhooks.
- Easily bridge Grain data into other tools or notify teammates the moment something important happens in a meeting.
Whether you want to automate follow-up actions, keep records of important conversations, or surface insights across your organization, Grain and Sim make it easy to connect meeting intelligence to your workflows.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Integrate Grain into your workflow. Access meeting recordings, transcripts, highlights, and AI-generated summaries. Can also trigger workflows based on Grain webhook events.
## Tools
### `grain_list_recordings`
List recordings from Grain with optional filters and pagination
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Grain API key \(Personal Access Token\) |
| `cursor` | string | No | Pagination cursor for next page |
| `beforeDatetime` | string | No | Only recordings before this ISO8601 timestamp |
| `afterDatetime` | string | No | Only recordings after this ISO8601 timestamp |
| `participantScope` | string | No | Filter: "internal" or "external" |
| `titleSearch` | string | No | Search term to filter by recording title |
| `teamId` | string | No | Filter by team UUID |
| `meetingTypeId` | string | No | Filter by meeting type UUID |
| `includeHighlights` | boolean | No | Include highlights/clips in response |
| `includeParticipants` | boolean | No | Include participant list in response |
| `includeAiSummary` | boolean | No | Include AI-generated summary |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `recordings` | array | Array of recording objects |
### `grain_get_recording`
Get details of a single recording by ID
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Grain API key \(Personal Access Token\) |
| `recordingId` | string | Yes | The recording UUID |
| `includeHighlights` | boolean | No | Include highlights/clips |
| `includeParticipants` | boolean | No | Include participant list |
| `includeAiSummary` | boolean | No | Include AI summary |
| `includeCalendarEvent` | boolean | No | Include calendar event data |
| `includeHubspot` | boolean | No | Include HubSpot associations |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Recording UUID |
| `title` | string | Recording title |
| `start_datetime` | string | ISO8601 start timestamp |
| `end_datetime` | string | ISO8601 end timestamp |
| `duration_ms` | number | Duration in milliseconds |
| `media_type` | string | audio, transcript, or video |
| `source` | string | Recording source \(zoom, meet, teams, etc.\) |
| `url` | string | URL to view in Grain |
| `thumbnail_url` | string | Thumbnail image URL |
| `tags` | array | Array of tag strings |
| `teams` | array | Teams the recording belongs to |
| `meeting_type` | object | Meeting type info \(id, name, scope\) |
| `highlights` | array | Highlights \(if included\) |
| `participants` | array | Participants \(if included\) |
| `ai_summary` | object | AI summary text \(if included\) |
| `calendar_event` | object | Calendar event data \(if included\) |
| `hubspot` | object | HubSpot associations \(if included\) |
### `grain_get_transcript`
Get the full transcript of a recording
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Grain API key \(Personal Access Token\) |
| `recordingId` | string | Yes | The recording UUID |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `transcript` | array | Array of transcript sections |
### `grain_list_teams`
List all teams in the workspace
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Grain API key \(Personal Access Token\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `teams` | array | Array of team objects |
### `grain_list_meeting_types`
List all meeting types in the workspace
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Grain API key \(Personal Access Token\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `meeting_types` | array | Array of meeting type objects |
### `grain_create_hook`
Create a webhook to receive recording events
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Grain API key \(Personal Access Token\) |
| `hookUrl` | string | Yes | Webhook endpoint URL \(must respond 2xx\) |
| `filterBeforeDatetime` | string | No | Filter: recordings before this date |
| `filterAfterDatetime` | string | No | Filter: recordings after this date |
| `filterParticipantScope` | string | No | Filter: "internal" or "external" |
| `filterTeamId` | string | No | Filter: specific team UUID |
| `filterMeetingTypeId` | string | No | Filter: specific meeting type |
| `includeHighlights` | boolean | No | Include highlights in webhook payload |
| `includeParticipants` | boolean | No | Include participants in webhook payload |
| `includeAiSummary` | boolean | No | Include AI summary in webhook payload |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Hook UUID |
| `enabled` | boolean | Whether hook is active |
| `hook_url` | string | The webhook URL |
| `filter` | object | Applied filters |
| `include` | object | Included fields |
| `inserted_at` | string | ISO8601 creation timestamp |
### `grain_list_hooks`
List all webhooks for the account
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Grain API key \(Personal Access Token\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `hooks` | array | Array of hook objects |
### `grain_delete_hook`
Delete a webhook by ID
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Grain API key \(Personal Access Token\) |
| `hookId` | string | Yes | The hook UUID to delete |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | True when webhook was successfully deleted |
## Notes
- Category: `tools`
- Type: `grain`

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

@@ -41,6 +41,7 @@ Create a new contact in Intercom with email, external_id, or role
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `role` | string | No | The role of the contact. Accepts 'user' or 'lead'. Defaults to 'lead' if not specified. |
| `email` | string | No | The contact's email address |
| `external_id` | string | No | A unique identifier for the contact provided by the client |
| `phone` | string | No | The contact's phone number |
@@ -51,13 +52,13 @@ Create a new contact in Intercom with email, external_id, or role
| `owner_id` | string | No | The id of an admin that has been assigned account ownership of the contact |
| `unsubscribed_from_emails` | boolean | No | Whether the contact is unsubscribed from emails |
| `custom_attributes` | string | No | Custom attributes as JSON object \(e.g., \{"attribute_name": "value"\}\) |
| `company_id` | string | No | Company ID to associate the contact with during creation |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Created contact data |
| `contact` | object | Created contact object |
### `intercom_get_contact`
@@ -73,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`
@@ -85,6 +85,8 @@ Update an existing contact in Intercom
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `contactId` | string | Yes | Contact ID to update |
| `role` | string | No | The role of the contact. Accepts 'user' or 'lead'. |
| `external_id` | string | No | A unique identifier for the contact provided by the client |
| `email` | string | No | The contact's email address |
| `phone` | string | No | The contact's phone number |
| `name` | string | No | The contact's name |
@@ -94,13 +96,13 @@ Update an existing contact in Intercom
| `owner_id` | string | No | The id of an admin that has been assigned account ownership of the contact |
| `unsubscribed_from_emails` | boolean | No | Whether the contact is unsubscribed from emails |
| `custom_attributes` | string | No | Custom attributes as JSON object \(e.g., \{"attribute_name": "value"\}\) |
| `company_id` | string | No | Company ID to associate the contact with |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Updated contact data |
| `contact` | object | Updated contact object |
### `intercom_list_contacts`
@@ -117,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`
@@ -131,13 +132,14 @@ Search for contacts in Intercom using a query
| `query` | string | Yes | Search query \(e.g., \{"field":"email","operator":"=","value":"user@example.com"\}\) |
| `per_page` | number | No | Number of results per page \(max: 150\) |
| `starting_after` | string | No | Cursor for pagination |
| `sort_field` | string | No | Field to sort by \(e.g., "name", "created_at", "last_seen_at"\) |
| `sort_order` | string | No | Sort order: "ascending" or "descending" |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Search results |
| `contacts` | array | Array of matching contact objects |
### `intercom_delete_contact`
@@ -153,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`
@@ -172,13 +175,13 @@ Create or update a company in Intercom
| `industry` | string | No | The industry the company operates in |
| `monthly_spend` | number | No | How much revenue the company generates for your business. Note: This field truncates floats to whole integers \(e.g., 155.98 becomes 155\) |
| `custom_attributes` | string | No | Custom attributes as JSON object |
| `remote_created_at` | number | No | The time the company was created by you as a Unix timestamp |
#### Output
| 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`
@@ -194,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`
@@ -207,13 +209,13 @@ List all companies from Intercom with pagination support. Note: This endpoint ha
| --------- | ---- | -------- | ----------- |
| `per_page` | number | No | Number of results per page |
| `page` | number | No | Page number |
| `starting_after` | string | No | Cursor for pagination \(preferred over page-based pagination\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | List of companies |
| `companies` | array | Array of company objects |
### `intercom_get_conversation`
@@ -225,13 +227,13 @@ Retrieve a single conversation by ID from Intercom
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Yes | Conversation ID to retrieve |
| `display_as` | string | No | Set to "plaintext" to retrieve messages in plain text |
| `include_translations` | boolean | No | When true, conversation parts will be translated to the detected language of the conversation |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Conversation data |
| `conversation` | object | Conversation object |
### `intercom_list_conversations`
@@ -243,13 +245,14 @@ List all conversations from Intercom with pagination support
| --------- | ---- | -------- | ----------- |
| `per_page` | number | No | Number of results per page \(max: 150\) |
| `starting_after` | string | No | Cursor for pagination |
| `sort` | string | No | Field to sort by \(e.g., "waiting_since", "updated_at", "created_at"\) |
| `order` | string | No | Sort order: "asc" \(ascending\) or "desc" \(descending\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | List of conversations |
| `conversations` | array | Array of conversation objects |
### `intercom_reply_conversation`
@@ -264,13 +267,13 @@ Reply to a conversation as an admin in Intercom
| `body` | string | Yes | The text body of the reply |
| `admin_id` | string | No | The ID of the admin authoring the reply. If not provided, a default admin \(Operator/Fin\) will be used. |
| `attachment_urls` | string | No | Comma-separated list of image URLs \(max 10\) |
| `created_at` | number | No | Unix timestamp for when the reply was created. If not provided, current time is used. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Updated conversation with reply |
| `conversation` | object | Updated conversation object |
### `intercom_search_conversations`
@@ -283,13 +286,14 @@ Search for conversations in Intercom using a query
| `query` | string | Yes | Search query as JSON object |
| `per_page` | number | No | Number of results per page \(max: 150\) |
| `starting_after` | string | No | Cursor for pagination |
| `sort_field` | string | No | Field to sort by \(e.g., "created_at", "updated_at"\) |
| `sort_order` | string | No | Sort order: "ascending" or "descending" |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Search results |
| `conversations` | array | Array of matching conversation objects |
### `intercom_create_ticket`
@@ -302,13 +306,16 @@ Create a new ticket in Intercom
| `ticket_type_id` | string | Yes | The ID of the ticket type |
| `contacts` | string | Yes | JSON array of contact identifiers \(e.g., \[\{"id": "contact_id"\}\]\) |
| `ticket_attributes` | string | Yes | JSON object with ticket attributes including _default_title_ and _default_description_ |
| `company_id` | string | No | Company ID to associate the ticket with |
| `created_at` | number | No | Unix timestamp for when the ticket was created. If not provided, current time is used. |
| `conversation_to_link_id` | string | No | ID of an existing conversation to link to this ticket |
| `disable_notifications` | boolean | No | When true, suppresses notifications when the ticket is created |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Created ticket data |
| `ticket` | object | Created ticket object |
### `intercom_get_ticket`
@@ -324,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`
@@ -335,20 +341,21 @@ Create and send a new admin-initiated message in Intercom
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `message_type` | string | Yes | Message type: "inapp" or "email" |
| `message_type` | string | Yes | Message type: "inapp" for in-app messages or "email" for email messages |
| `template` | string | Yes | Message template style: "plain" for plain text or "personal" for personalized style |
| `subject` | string | No | The subject of the message \(for email type\) |
| `body` | string | Yes | The body of the message |
| `from_type` | string | Yes | Sender type: "admin" |
| `from_id` | string | Yes | The ID of the admin sending the message |
| `to_type` | string | Yes | Recipient type: "contact" |
| `to_id` | string | Yes | The ID of the contact receiving the message |
| `created_at` | number | No | Unix timestamp for when the message was created. If not provided, current time is used. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Created message data |
| `message` | object | Created message object |

View File

@@ -64,8 +64,6 @@ Extract and process web content into clean, LLM-friendly text using Jina AI Read
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `content` | string | The extracted content from the URL, processed into clean, LLM-friendly text |
| `links` | array | List of links found on the page \(when gatherLinks or withLinksummary is enabled\) |
| `images` | array | List of images found on the page \(when withImagesummary is enabled\) |
### `jina_search`

View File

@@ -51,8 +51,13 @@ Retrieve detailed information about a specific Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Jira issue details with issue key, summary, description, created and updated timestamps |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key \(e.g., PROJ-123\) |
| `summary` | string | Issue summary |
| `description` | json | Issue description content |
| `created` | string | Issue creation timestamp |
| `updated` | string | Issue last updated timestamp |
| `issue` | json | Complete issue object with all fields |
### `jira_update`
@@ -76,8 +81,9 @@ Update a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Updated Jira issue details with timestamp, issue key, summary, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Updated issue key \(e.g., PROJ-123\) |
| `summary` | string | Issue summary after update |
### `jira_write`
@@ -91,17 +97,26 @@ Write a Jira issue
| `projectId` | string | Yes | Project ID for the issue |
| `summary` | string | Yes | Summary for the issue |
| `description` | string | No | Description for the issue |
| `priority` | string | No | Priority for the issue |
| `assignee` | string | No | Assignee for the issue |
| `priority` | string | No | Priority ID or name for the issue \(e.g., "10000" or "High"\) |
| `assignee` | string | No | Assignee account ID for the issue |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
| `issueType` | string | Yes | Type of issue to create \(e.g., Task, Story\) |
| `labels` | array | No | Labels for the issue \(array of label names\) |
| `duedate` | string | No | Due date for the issue \(format: YYYY-MM-DD\) |
| `reporter` | string | No | Reporter account ID for the issue |
| `environment` | string | No | Environment information for the issue |
| `customFieldId` | string | No | Custom field ID \(e.g., customfield_10001\) |
| `customFieldValue` | string | No | Value for the custom field |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Created Jira issue details with timestamp, issue key, summary, success status, and URL |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Created issue key \(e.g., PROJ-123\) |
| `summary` | string | Issue summary |
| `url` | string | URL to the created issue |
| `assigneeId` | string | Account ID of the assigned user \(if assigned\) |
### `jira_bulk_read`
@@ -119,8 +134,7 @@ Retrieve multiple Jira issues in bulk
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | array | Array of Jira issues with summary, description, created and updated timestamps |
| `issues` | array | Array of Jira issues with ts, summary, description, created, and updated timestamps |
### `jira_delete_issue`
@@ -139,8 +153,8 @@ Delete a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Deleted issue details with timestamp, issue key, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Deleted issue key |
### `jira_assign_issue`
@@ -159,8 +173,9 @@ Assign a Jira issue to a user
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Assignment details with timestamp, issue key, assignee ID, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key that was assigned |
| `assigneeId` | string | Account ID of the assignee |
### `jira_transition_issue`
@@ -180,8 +195,9 @@ Move a Jira issue between workflow statuses (e.g., To Do -> In Progress)
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Transition details with timestamp, issue key, transition ID, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key that was transitioned |
| `transitionId` | string | Applied transition ID |
### `jira_search_issues`
@@ -202,8 +218,11 @@ Search for Jira issues using JQL (Jira Query Language)
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Search results with timestamp, total count, pagination details, and array of matching issues |
| `ts` | string | Timestamp of the operation |
| `total` | number | Total number of matching issues |
| `startAt` | number | Pagination start index |
| `maxResults` | number | Maximum results per page |
| `issues` | array | Array of matching issues with key, summary, status, assignee, created, updated |
### `jira_add_comment`
@@ -222,8 +241,10 @@ Add a comment to a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Comment details with timestamp, issue key, comment ID, body, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key the comment was added to |
| `commentId` | string | Created comment ID |
| `body` | string | Comment text content |
### `jira_get_comments`
@@ -243,8 +264,10 @@ Get all comments from a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Comments data with timestamp, issue key, total count, and array of comments |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key |
| `total` | number | Total number of comments |
| `comments` | array | Array of comments with id, author, body, created, updated |
### `jira_update_comment`
@@ -264,8 +287,10 @@ Update an existing comment on a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Updated comment details with timestamp, issue key, comment ID, body text, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key |
| `commentId` | string | Updated comment ID |
| `body` | string | Updated comment text |
### `jira_delete_comment`
@@ -284,8 +309,9 @@ Delete a comment from a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Deletion details with timestamp, issue key, comment ID, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key |
| `commentId` | string | Deleted comment ID |
### `jira_get_attachments`
@@ -303,8 +329,9 @@ Get all attachments from a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Attachments data with timestamp, issue key, and array of attachments |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key |
| `attachments` | array | Array of attachments with id, filename, size, mimeType, created, author |
### `jira_delete_attachment`
@@ -322,8 +349,8 @@ Delete an attachment from a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Deletion details with timestamp, attachment ID, and success status |
| `ts` | string | Timestamp of the operation |
| `attachmentId` | string | Deleted attachment ID |
### `jira_add_worklog`
@@ -344,8 +371,10 @@ Add a time tracking worklog entry to a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Worklog details with timestamp, issue key, worklog ID, time spent in seconds, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key the worklog was added to |
| `worklogId` | string | Created worklog ID |
| `timeSpentSeconds` | number | Time spent in seconds |
### `jira_get_worklogs`
@@ -365,8 +394,10 @@ Get all worklog entries from a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Worklogs data with timestamp, issue key, total count, and array of worklogs |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key |
| `total` | number | Total number of worklogs |
| `worklogs` | array | Array of worklogs with id, author, timeSpentSeconds, timeSpent, comment, created, updated, started |
### `jira_update_worklog`
@@ -388,8 +419,9 @@ Update an existing worklog entry on a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Worklog update details with timestamp, issue key, worklog ID, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key |
| `worklogId` | string | Updated worklog ID |
### `jira_delete_worklog`
@@ -408,8 +440,9 @@ Delete a worklog entry from a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Deletion details with timestamp, issue key, worklog ID, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key |
| `worklogId` | string | Deleted worklog ID |
### `jira_create_issue_link`
@@ -430,8 +463,11 @@ Create a link relationship between two Jira issues
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Issue link details with timestamp, inward issue key, outward issue key, link type, and success status |
| `ts` | string | Timestamp of the operation |
| `inwardIssue` | string | Inward issue key |
| `outwardIssue` | string | Outward issue key |
| `linkType` | string | Type of issue link |
| `linkId` | string | Created link ID |
### `jira_delete_issue_link`
@@ -449,8 +485,8 @@ Delete a link between two Jira issues
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Deletion details with timestamp, link ID, and success status |
| `ts` | string | Timestamp of the operation |
| `linkId` | string | Deleted link ID |
### `jira_add_watcher`
@@ -469,8 +505,9 @@ Add a watcher to a Jira issue to receive notifications about updates
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Watcher details with timestamp, issue key, watcher account ID, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key |
| `watcherAccountId` | string | Added watcher account ID |
### `jira_remove_watcher`
@@ -489,8 +526,33 @@ Remove a watcher from a Jira issue
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Operation success status |
| `output` | object | Removal details with timestamp, issue key, watcher account ID, and success status |
| `ts` | string | Timestamp of the operation |
| `issueKey` | string | Issue key |
| `watcherAccountId` | string | Removed watcher account ID |
### `jira_get_users`
Get Jira users. If an account ID is provided, returns a single user. Otherwise, returns a list of all users.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
| `accountId` | string | No | Optional account ID to get a specific user. If not provided, returns all users. |
| `startAt` | number | No | The index of the first user to return \(for pagination, default: 0\) |
| `maxResults` | number | No | Maximum number of users to return \(default: 50\) |
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ts` | string | Timestamp of the operation |
| `users` | json | Array of users with accountId, displayName, emailAddress, active status, and avatarUrls |
| `total` | number | Total number of users returned |
| `startAt` | number | Pagination start index |
| `maxResults` | number | Maximum results per page |

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

@@ -26,11 +26,10 @@ Add a new memory to the database or append to existing memory with the same ID.
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | No | Conversation identifier \(e.g., user-123, session-abc\). If a memory with this conversationId already exists for this block, the new message will be appended to it. |
| `conversationId` | string | No | Conversation identifier \(e.g., user-123, session-abc\). If a memory with this conversationId already exists, the new message will be appended to it. |
| `id` | string | No | Legacy parameter for conversation identifier. Use conversationId instead. Provided for backwards compatibility. |
| `role` | string | Yes | Role for agent memory \(user, assistant, or system\) |
| `content` | string | Yes | Content for agent memory |
| `blockId` | string | No | Optional block ID. If not provided, uses the current block ID from execution context, or defaults to "default". |
#### Output
@@ -42,23 +41,21 @@ Add a new memory to the database or append to existing memory with the same ID.
### `memory_get`
Retrieve memory by conversationId, blockId, blockName, or a combination. Returns all matching memories.
Retrieve memory by conversationId. Returns matching memories.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | No | Conversation identifier \(e.g., user-123, session-abc\). If provided alone, returns all memories for this conversation across all blocks. |
| `conversationId` | string | No | Conversation identifier \(e.g., user-123, session-abc\). Returns memories for this conversation. |
| `id` | string | No | Legacy parameter for conversation identifier. Use conversationId instead. Provided for backwards compatibility. |
| `blockId` | string | No | Block identifier. If provided alone, returns all memories for this block across all conversations. If provided with conversationId, returns memories for that specific conversation in this block. |
| `blockName` | string | No | Block name. Alternative to blockId. If provided alone, returns all memories for blocks with this name. If provided with conversationId, returns memories for that conversation in blocks with this name. |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the memory was retrieved successfully |
| `memories` | array | Array of memory objects with conversationId, blockId, blockName, and data fields |
| `memories` | array | Array of memory objects with conversationId and data fields |
| `message` | string | Success or error message |
| `error` | string | Error message if operation failed |
@@ -76,22 +73,20 @@ Retrieve all memories from the database
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether all memories were retrieved successfully |
| `memories` | array | Array of all memory objects with key, conversationId, blockId, blockName, and data fields |
| `memories` | array | Array of all memory objects with key, conversationId, and data fields |
| `message` | string | Success or error message |
| `error` | string | Error message if operation failed |
### `memory_delete`
Delete memories by conversationId, blockId, blockName, or a combination. Supports bulk deletion.
Delete memories by conversationId.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | No | Conversation identifier \(e.g., user-123, session-abc\). If provided alone, deletes all memories for this conversation across all blocks. |
| `conversationId` | string | No | Conversation identifier \(e.g., user-123, session-abc\). Deletes all memories for this conversation. |
| `id` | string | No | Legacy parameter for conversation identifier. Use conversationId instead. Provided for backwards compatibility. |
| `blockId` | string | No | Block identifier. If provided alone, deletes all memories for this block across all conversations. If provided with conversationId, deletes memories for that specific conversation in this block. |
| `blockName` | string | No | Block name. Alternative to blockId. If provided alone, deletes all memories for blocks with this name. If provided with conversationId, deletes memories for that conversation in blocks with this name. |
#### Output

View File

@@ -9,6 +9,7 @@
"asana",
"browser_use",
"calendly",
"circleback",
"clay",
"confluence",
"cursor",
@@ -35,14 +36,18 @@
"google_slides",
"google_vault",
"grafana",
"grain",
"greptile",
"hubspot",
"huggingface",
"hunter",
"image_generator",
"imap",
"incidentio",
"intercom",
"jina",
"jira",
"jira_service_management",
"kalshi",
"knowledge",
"linear",
@@ -80,6 +85,7 @@
"sendgrid",
"sentry",
"serper",
"servicenow",
"sftp",
"sharepoint",
"shopify",

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

@@ -0,0 +1,129 @@
---
title: ServiceNow
description: Create, read, update, and delete ServiceNow records
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="servicenow"
color="#032D42"
/>
{/* MANUAL-CONTENT-START:intro */}
[ServiceNow](https://www.servicenow.com/) is a powerful cloud platform designed to streamline and automate IT service management (ITSM), workflows, and business processes across your organization. ServiceNow enables you to manage incidents, requests, tasks, users, and more using its extensive API.
With ServiceNow, you can:
- **Automate IT workflows**: Create, read, update, and delete records in any ServiceNow table, such as incidents, tasks, change requests, and users.
- **Integrate systems**: Connect ServiceNow with your other tools and processes for seamless automation.
- **Maintain a single source of truth**: Keep all your service and operations data organized and accessible.
- **Drive operational efficiency**: Reduce manual work and improve service quality with customizable workflows and automation.
In Sim, the ServiceNow integration enables your agents to interact directly with your ServiceNow instance as part of their workflows. Agents can create, read, update, or delete records in any ServiceNow table and leverage ticket or user data for sophisticated automation and decision-making. This integration bridges your workflow automation and IT operations, empowering your agents to manage service requests, incidents, users, and assets without manual intervention. By connecting Sim with ServiceNow, you can automate service management tasks, improve response times, and ensure consistent, secure access to your organization's vital service data.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Integrate ServiceNow into your workflow. Create, read, update, and delete records in any ServiceNow table including incidents, tasks, change requests, users, and more.
## Tools
### `servicenow_create_record`
Create a new record in a ServiceNow table
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Yes | ServiceNow instance URL \(e.g., https://instance.service-now.com\) |
| `username` | string | Yes | ServiceNow username |
| `password` | string | Yes | ServiceNow password |
| `tableName` | string | Yes | Table name \(e.g., incident, task, sys_user\) |
| `fields` | json | Yes | Fields to set on the record \(JSON object\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `record` | json | Created ServiceNow record with sys_id and other fields |
| `metadata` | json | Operation metadata |
### `servicenow_read_record`
Read records from a ServiceNow table
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Yes | ServiceNow instance URL \(e.g., https://instance.service-now.com\) |
| `username` | string | Yes | ServiceNow username |
| `password` | string | Yes | ServiceNow password |
| `tableName` | string | Yes | Table name |
| `sysId` | string | No | Specific record sys_id |
| `number` | string | No | Record number \(e.g., INC0010001\) |
| `query` | string | No | Encoded query string \(e.g., "active=true^priority=1"\) |
| `limit` | number | No | Maximum number of records to return |
| `fields` | string | No | Comma-separated list of fields to return |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `records` | array | Array of ServiceNow records |
| `metadata` | json | Operation metadata |
### `servicenow_update_record`
Update an existing record in a ServiceNow table
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Yes | ServiceNow instance URL \(e.g., https://instance.service-now.com\) |
| `username` | string | Yes | ServiceNow username |
| `password` | string | Yes | ServiceNow password |
| `tableName` | string | Yes | Table name |
| `sysId` | string | Yes | Record sys_id to update |
| `fields` | json | Yes | Fields to update \(JSON object\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `record` | json | Updated ServiceNow record |
| `metadata` | json | Operation metadata |
### `servicenow_delete_record`
Delete a record from a ServiceNow table
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Yes | ServiceNow instance URL \(e.g., https://instance.service-now.com\) |
| `username` | string | Yes | ServiceNow username |
| `password` | string | Yes | ServiceNow password |
| `tableName` | string | Yes | Table name |
| `sysId` | string | Yes | Record sys_id to delete |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the deletion was successful |
| `metadata` | json | Operation metadata |
## Notes
- Category: `tools`
- Type: `servicenow`

View File

@@ -56,7 +56,7 @@ Integrate Slack into the workflow. Can send, update, and delete messages, create
### `slack_message`
Send messages to Slack channels or users through the Slack API. Supports Slack mrkdwn formatting.
Send messages to Slack channels or direct messages. Supports Slack mrkdwn formatting.
#### Input
@@ -64,7 +64,8 @@ Send messages to Slack channels or users through the Slack API. Supports Slack m
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Target Slack channel \(e.g., #general\) |
| `channel` | string | No | Target Slack channel \(e.g., #general\) |
| `userId` | string | No | Target Slack user ID for direct messages \(e.g., U1234567890\) |
| `text` | string | Yes | Message text to send \(supports Slack mrkdwn formatting\) |
| `thread_ts` | string | No | Thread timestamp to reply to \(creates thread reply\) |
| `files` | file[] | No | Files to attach to the message |
@@ -111,8 +112,9 @@ Read the latest messages from Slack channels. Retrieve conversation history with
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Slack channel to read messages from \(e.g., #general\) |
| `limit` | number | No | Number of messages to retrieve \(default: 10, max: 100\) |
| `channel` | string | No | Slack channel to read messages from \(e.g., #general\) |
| `userId` | string | No | User ID for DM conversation \(e.g., U1234567890\) |
| `limit` | number | No | Number of messages to retrieve \(default: 10, max: 15\) |
| `oldest` | string | No | Start of time range \(timestamp\) |
| `latest` | string | No | End of time range \(timestamp\) |

View File

@@ -52,6 +52,7 @@ Query data from a Supabase table
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to query |
| `schema` | string | No | Database schema to query from \(default: public\). Use this to access tables in other schemas. |
| `filter` | string | No | PostgREST filter \(e.g., "id=eq.123"\) |
| `orderBy` | string | No | Column to order by \(add DESC for descending\) |
| `limit` | number | No | Maximum number of rows to return |
@@ -74,6 +75,7 @@ Insert data into a Supabase table
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to insert data into |
| `schema` | string | No | Database schema to insert into \(default: public\). Use this to access tables in other schemas. |
| `data` | array | Yes | The data to insert \(array of objects or a single object\) |
| `apiKey` | string | Yes | Your Supabase service role secret key |
@@ -94,6 +96,7 @@ Get a single row from a Supabase table based on filter criteria
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to query |
| `schema` | string | No | Database schema to query from \(default: public\). Use this to access tables in other schemas. |
| `filter` | string | Yes | PostgREST filter to find the specific row \(e.g., "id=eq.123"\) |
| `apiKey` | string | Yes | Your Supabase service role secret key |
@@ -114,6 +117,7 @@ Update rows in a Supabase table based on filter criteria
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to update |
| `schema` | string | No | Database schema to update in \(default: public\). Use this to access tables in other schemas. |
| `filter` | string | Yes | PostgREST filter to identify rows to update \(e.g., "id=eq.123"\) |
| `data` | object | Yes | Data to update in the matching rows |
| `apiKey` | string | Yes | Your Supabase service role secret key |
@@ -135,6 +139,7 @@ Delete rows from a Supabase table based on filter criteria
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to delete from |
| `schema` | string | No | Database schema to delete from \(default: public\). Use this to access tables in other schemas. |
| `filter` | string | Yes | PostgREST filter to identify rows to delete \(e.g., "id=eq.123"\) |
| `apiKey` | string | Yes | Your Supabase service role secret key |
@@ -155,6 +160,7 @@ Insert or update data in a Supabase table (upsert operation)
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to upsert data into |
| `schema` | string | No | Database schema to upsert into \(default: public\). Use this to access tables in other schemas. |
| `data` | array | Yes | The data to upsert \(insert or update\) - array of objects or a single object |
| `apiKey` | string | Yes | Your Supabase service role secret key |
@@ -175,6 +181,7 @@ Count rows in a Supabase table
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to count rows from |
| `schema` | string | No | Database schema to count from \(default: public\). Use this to access tables in other schemas. |
| `filter` | string | No | PostgREST filter \(e.g., "status=eq.active"\) |
| `countType` | string | No | Count type: exact, planned, or estimated \(default: exact\) |
| `apiKey` | string | Yes | Your Supabase service role secret key |
@@ -196,6 +203,7 @@ Perform full-text search on a Supabase table
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
| `table` | string | Yes | The name of the Supabase table to search |
| `schema` | string | No | Database schema to search in \(default: public\). Use this to access tables in other schemas. |
| `column` | string | Yes | The column to search in |
| `query` | string | Yes | The search query |
| `searchType` | string | No | Search type: plain, phrase, or websearch \(default: websearch\) |
@@ -261,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

@@ -50,6 +50,9 @@ Send a chat completion request to any supported LLM provider
| `maxTokens` | number | No | Maximum tokens in the response |
| `azureEndpoint` | string | No | Azure OpenAI endpoint URL |
| `azureApiVersion` | string | No | Azure OpenAI API version |
| `vertexProject` | string | No | Google Cloud project ID for Vertex AI |
| `vertexLocation` | string | No | Google Cloud location for Vertex AI \(defaults to us-central1\) |
| `vertexCredential` | string | No | Google Cloud OAuth credential ID for Vertex AI |
#### Output

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

@@ -42,6 +42,7 @@ List all items from a Webflow CMS collection
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Yes | ID of the Webflow site |
| `collectionId` | string | Yes | ID of the collection |
| `offset` | number | No | Offset for pagination \(optional\) |
| `limit` | number | No | Maximum number of items to return \(optional, default: 100\) |
@@ -61,6 +62,7 @@ Get a single item from a Webflow CMS collection
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Yes | ID of the Webflow site |
| `collectionId` | string | Yes | ID of the collection |
| `itemId` | string | Yes | ID of the item to retrieve |
@@ -79,6 +81,7 @@ Create a new item in a Webflow CMS collection
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Yes | ID of the Webflow site |
| `collectionId` | string | Yes | ID of the collection |
| `fieldData` | json | Yes | Field data for the new item as a JSON object. Keys should match collection field names. |
@@ -97,6 +100,7 @@ Update an existing item in a Webflow CMS collection
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Yes | ID of the Webflow site |
| `collectionId` | string | Yes | ID of the collection |
| `itemId` | string | Yes | ID of the item to update |
| `fieldData` | json | Yes | Field data to update as a JSON object. Only include fields you want to change. |
@@ -116,6 +120,7 @@ Delete an item from a Webflow CMS collection
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `siteId` | string | Yes | ID of the Webflow site |
| `collectionId` | string | Yes | ID of the collection |
| `itemId` | string | Yes | ID of the item to delete |

View File

@@ -27,6 +27,8 @@ In Sim, the Zoom integration empowers your agents to automate scheduling and mee
- Retrieve details or invitations for any meeting
- Update or delete existing meetings directly from your automations
To connect to Zoom, drop the Zoom block and click `Connect` to authenticate with your Zoom account. Once connected, you can use the Zoom tools to create, list, update, and delete Zoom meetings. At any given time, you can disconnect your Zoom account by clicking `Disconnect` in Settings > Integrations, and access to your Zoom account will be revoked immediatley.
These capabilities let you streamline remote collaboration, automate recurring video sessions, and manage your organization's Zoom environment all as part of your workflows.
{/* MANUAL-CONTENT-END */}

View File

@@ -5,7 +5,6 @@ title: Schedule
import { Callout } from 'fumadocs-ui/components/callout'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
The Schedule block automatically triggers workflows on a recurring schedule at specified intervals or times.
@@ -21,16 +20,16 @@ The Schedule block automatically triggers workflows on a recurring schedule at s
## Schedule Options
Configure when your workflow runs using the dropdown options:
Configure when your workflow runs:
<Tabs items={['Simple Intervals', 'Cron Expressions']}>
<Tab>
<ul className="list-disc space-y-1 pl-6">
<li><strong>Every few minutes</strong>: 5, 15, 30 minute intervals</li>
<li><strong>Hourly</strong>: Every hour or every few hours</li>
<li><strong>Daily</strong>: Once or multiple times per day</li>
<li><strong>Weekly</strong>: Specific days of the week</li>
<li><strong>Monthly</strong>: Specific days of the month</li>
<li><strong>Every X Minutes</strong>: Run at minute intervals (1-1440)</li>
<li><strong>Hourly</strong>: Run at a specific minute each hour</li>
<li><strong>Daily</strong>: Run at a specific time each day</li>
<li><strong>Weekly</strong>: Run on a specific day and time each week</li>
<li><strong>Monthly</strong>: Run on a specific day and time each month</li>
</ul>
</Tab>
<Tab>
@@ -43,24 +42,25 @@ Configure when your workflow runs using the dropdown options:
</Tab>
</Tabs>
## Configuring Schedules
## Activation
When a workflow is scheduled:
- The schedule becomes **active** and shows the next execution time
- Click the **"Scheduled"** button to deactivate the schedule
- Schedules automatically deactivate after **3 consecutive failures**
Schedules are tied to workflow deployment:
<div className="flex justify-center">
<Image
src="/static/blocks/schedule-2.png"
alt="Active Schedule Block"
width={500}
height={400}
className="my-6"
/>
</div>
- **Deploy workflow** → Schedule becomes active and starts running
- **Undeploy workflow** → Schedule is removed
- **Redeploy workflow** → Schedule is recreated with current configuration
## Disabled Schedules
<Callout>
You must deploy your workflow for the schedule to start running. Configure the schedule block, then deploy from the toolbar.
</Callout>
## Automatic Disabling
Schedules automatically disable after **100 consecutive failures** to prevent runaway errors. When disabled:
- A warning badge appears on the schedule block
- The schedule stops executing
- Click the badge to reactivate the schedule
<div className="flex justify-center">
<Image
@@ -72,8 +72,6 @@ When a workflow is scheduled:
/>
</div>
Disabled schedules show when they were last active. Click the **"Disabled"** badge to reactivate the schedule.
<Callout>
Schedule blocks cannot receive incoming connections and serve as pure workflow triggers.
</Callout>
Schedule blocks cannot receive incoming connections and serve as workflow entry points only.
</Callout>

View File

@@ -111,26 +111,24 @@ Diferentes tipos de bloques producen diferentes estructuras de salida. Esto es l
```json
{
"content": "Original content passed through",
"conditionResult": true,
"selectedPath": {
"blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
"blockType": "agent",
"blockTitle": "Follow-up Agent"
},
"selectedConditionId": "condition-1"
"selectedOption": "condition-1"
}
```
### Campos de salida del bloque de condición
- **content**: El contenido original que se transmite
- **conditionResult**: Resultado booleano de la evaluación de la condición
- **selectedPath**: Información sobre la ruta seleccionada
- **conditionResult**: resultado booleano de la evaluación de la condición
- **selectedPath**: información sobre la ruta seleccionada
- **blockId**: ID del siguiente bloque en la ruta seleccionada
- **blockType**: Tipo del siguiente bloque
- **blockTitle**: Título del siguiente bloque
- **selectedConditionId**: ID de la condición seleccionada
- **blockType**: tipo del siguiente bloque
- **blockTitle**: título del siguiente bloque
- **selectedOption**: ID de la condición seleccionada
</Tab>
<Tab>

View File

@@ -47,42 +47,42 @@ El desglose del modelo muestra:
## Opciones de precios
<Tabs items={['Hosted Models', 'Bring Your Own API Key']}>
<Tabs items={['Modelos alojados', 'Trae tu propia clave API']}>
<Tab>
**Modelos alojados** - Sim proporciona claves API con un multiplicador de precio de 2.5x:
**Modelos alojados** - Sim proporciona claves API con un multiplicador de precio de 2x:
**OpenAI**
| Modelo | Precio base (Entrada/Salida) | Precio alojado (Entrada/Salida) |
| Modelo | Precio base (entrada/salida) | Precio alojado (entrada/salida) |
|-------|---------------------------|----------------------------|
| GPT-5.1 | $1.25 / $10.00 | $3.13 / $25.00 |
| GPT-5 | $1.25 / $10.00 | $3.13 / $25.00 |
| GPT-5 Mini | $0.25 / $2.00 | $0.63 / $5.00 |
| GPT-5 Nano | $0.05 / $0.40 | $0.13 / $1.00 |
| GPT-4o | $2.50 / $10.00 | $6.25 / $25.00 |
| GPT-4.1 | $2.00 / $8.00 | $5.00 / $20.00 |
| GPT-4.1 Mini | $0.40 / $1.60 | $1.00 / $4.00 |
| GPT-4.1 Nano | $0.10 / $0.40 | $0.25 / $1.00 |
| o1 | $15.00 / $60.00 | $37.50 / $150.00 |
| o3 | $2.00 / $8.00 | $5.00 / $20.00 |
| o4 Mini | $1.10 / $4.40 | $2.75 / $11.00 |
| GPT-5.1 | $1.25 / $10.00 | $2.50 / $20.00 |
| GPT-5 | $1.25 / $10.00 | $2.50 / $20.00 |
| GPT-5 Mini | $0.25 / $2.00 | $0.50 / $4.00 |
| GPT-5 Nano | $0.05 / $0.40 | $0.10 / $0.80 |
| GPT-4o | $2.50 / $10.00 | $5.00 / $20.00 |
| GPT-4.1 | $2.00 / $8.00 | $4.00 / $16.00 |
| GPT-4.1 Mini | $0.40 / $1.60 | $0.80 / $3.20 |
| GPT-4.1 Nano | $0.10 / $0.40 | $0.20 / $0.80 |
| o1 | $15.00 / $60.00 | $30.00 / $120.00 |
| o3 | $2.00 / $8.00 | $4.00 / $16.00 |
| o4 Mini | $1.10 / $4.40 | $2.20 / $8.80 |
**Anthropic**
| Modelo | Precio base (Entrada/Salida) | Precio alojado (Entrada/Salida) |
| Modelo | Precio base (entrada/salida) | Precio alojado (entrada/salida) |
|-------|---------------------------|----------------------------|
| Claude Opus 4.5 | $5.00 / $25.00 | $12.50 / $62.50 |
| Claude Opus 4.1 | $15.00 / $75.00 | $37.50 / $187.50 |
| Claude Sonnet 4.5 | $3.00 / $15.00 | $7.50 / $37.50 |
| Claude Sonnet 4.0 | $3.00 / $15.00 | $7.50 / $37.50 |
| Claude Haiku 4.5 | $1.00 / $5.00 | $2.50 / $12.50 |
| Claude Opus 4.5 | $5.00 / $25.00 | $10.00 / $50.00 |
| Claude Opus 4.1 | $15.00 / $75.00 | $30.00 / $150.00 |
| Claude Sonnet 4.5 | $3.00 / $15.00 | $6.00 / $30.00 |
| Claude Sonnet 4.0 | $3.00 / $15.00 | $6.00 / $30.00 |
| Claude Haiku 4.5 | $1.00 / $5.00 | $2.00 / $10.00 |
**Google**
| Modelo | Precio base (Entrada/Salida) | Precio alojado (Entrada/Salida) |
| Modelo | Precio base (entrada/salida) | Precio alojado (entrada/salida) |
|-------|---------------------------|----------------------------|
| Gemini 3 Pro Preview | $2.00 / $12.00 | $5.00 / $30.00 |
| Gemini 2.5 Pro | $0.15 / $0.60 | $0.38 / $1.50 |
| Gemini 2.5 Flash | $0.15 / $0.60 | $0.38 / $1.50 |
| Gemini 3 Pro Preview | $2.00 / $12.00 | $4.00 / $24.00 |
| Gemini 2.5 Pro | $1.25 / $10.00 | $2.50 / $20.00 |
| Gemini 2.5 Flash | $0.30 / $2.50 | $0.60 / $5.00 |
*El multiplicador de 2.5x cubre los costos de infraestructura y gestión de API.*
*El multiplicador 2x cubre los costos de infraestructura y gestión de API.*
</Tab>
<Tab>
@@ -105,26 +105,30 @@ El desglose del modelo muestra:
Los precios mostrados reflejan las tarifas a partir del 10 de septiembre de 2025. Consulta la documentación del proveedor para conocer los precios actuales.
</Callout>
## Trae tu propia clave (BYOK)
Puedes usar tus propias claves API para modelos alojados (OpenAI, Anthropic, Google, Mistral) en **Configuración → BYOK** para pagar precios base. Las claves están encriptadas y se aplican a todo el espacio de trabajo.
## Estrategias de optimización de costos
- **Selección de modelos**: Elige modelos según la complejidad de la tarea. Las tareas simples pueden usar GPT-4.1-nano mientras que el razonamiento complejo podría necesitar o1 o Claude Opus.
- **Ingeniería de prompts**: Los prompts bien estructurados y concisos reducen el uso de tokens sin sacrificar la calidad.
- **Modelos locales**: Usa Ollama o VLLM para tareas no críticas para eliminar por completo los costos de API.
- **Almacenamiento en caché y reutilización**: Guarda resultados frecuentemente utilizados en variables o archivos para evitar llamadas repetidas al modelo de IA.
- **Procesamiento por lotes**: Procesa múltiples elementos en una sola solicitud de IA en lugar de hacer llamadas individuales.
- **Selección de modelo**: elige modelos según la complejidad de la tarea. Las tareas simples pueden usar GPT-4.1-nano mientras que el razonamiento complejo podría necesitar o1 o Claude Opus.
- **Ingeniería de prompts**: los prompts bien estructurados y concisos reducen el uso de tokens sin sacrificar calidad.
- **Modelos locales**: usa Ollama o VLLM para tareas no críticas para eliminar completamente los costos de API.
- **Almacenamiento en caché y reutilización**: guarda resultados usados frecuentemente en variables o archivos para evitar llamadas repetidas al modelo de IA.
- **Procesamiento por lotes**: procesa múltiples elementos en una sola solicitud de IA en lugar de hacer llamadas individuales.
## Monitoreo de uso
Monitorea tu uso y facturación en Configuración → Suscripción:
- **Uso actual**: Uso y costos en tiempo real para el período actual
- **Límites de uso**: Límites del plan con indicadores visuales de progreso
- **Detalles de facturación**: Cargos proyectados y compromisos mínimos
- **Gestión del plan**: Opciones de actualización e historial de facturación
- **Uso actual**: uso y costos en tiempo real para el período actual
- **Límites de uso**: límites del plan con indicadores visuales de progreso
- **Detalles de facturación**: cargos proyectados y compromisos mínimos
- **Gestión de plan**: opciones de actualización e historial de facturación
### Seguimiento programático de uso
### Seguimiento de uso programático
Puedes consultar tu uso actual y límites de forma programática utilizando la API:
Puedes consultar tu uso y límites actuales de forma programática usando la API:
**Endpoint:**
@@ -135,13 +139,13 @@ GET /api/users/me/usage-limits
**Autenticación:**
- Incluye tu clave API en el encabezado `X-API-Key`
**Ejemplo de solicitud:**
**Solicitud de ejemplo:**
```bash
curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" https://sim.ai/api/users/me/usage-limits
```
**Ejemplo de respuesta:**
**Respuesta de ejemplo:**
```json
{
@@ -172,14 +176,14 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt
```
**Campos de límite de tasa:**
- `requestsPerMinute`: Límite de tasa sostenida (los tokens se recargan a esta velocidad)
- `maxBurst`: Máximo de tokens que puedes acumular (capacidad de ráfaga)
- `remaining`: Tokens disponibles actualmente (puede ser hasta `maxBurst`)
- `requestsPerMinute`: límite de tasa sostenida (los tokens se recargan a esta tasa)
- `maxBurst`: tokens máximos que puedes acumular (capacidad de ráfaga)
- `remaining`: tokens actuales disponibles (puede ser hasta `maxBurst`)
**Campos de respuesta:**
- `currentPeriodCost` refleja el uso en el período de facturación actual
- `limit` se deriva de límites individuales (Gratuito/Pro) o límites agrupados de la organización (Equipo/Empresa)
- `plan` es el plan activo de mayor prioridad asociado a tu usuario
- `limit` se deriva de límites individuales (Free/Pro) o límites de organización agrupados (Team/Enterprise)
- `plan` es el plan activo de mayor prioridad asociado con tu usuario
## Límites del plan
@@ -187,9 +191,9 @@ Los diferentes planes de suscripción tienen diferentes límites de uso:
| Plan | Límite de uso mensual | Límites de tasa (por minuto) |
|------|-------------------|-------------------------|
| **Gratuito** | $10 | 5 sincrónico, 10 asincrónico |
| **Pro** | $100 | 10 sincrónico, 50 asincrónico |
| **Equipo** | $500 (agrupado) | 50 sincrónico, 100 asincrónico |
| **Gratuito** | $20 | 5 sync, 10 async |
| **Pro** | $100 | 10 sync, 50 async |
| **Equipo** | $500 (compartido) | 50 sync, 100 async |
| **Empresa** | Personalizado | Personalizado |
## Modelo de facturación
@@ -200,16 +204,16 @@ Sim utiliza un modelo de facturación de **suscripción base + excedente**:
**Plan Pro ($20/mes):**
- La suscripción mensual incluye $20 de uso
- Uso por debajo de $20 → Sin cargos adicionales
- Uso por encima de $20 → Pagas el excedente al final del mes
- Uso inferior a $20 → Sin cargos adicionales
- Uso superior a $20 → Paga el excedente al final del mes
- Ejemplo: $35 de uso = $20 (suscripción) + $15 (excedente)
**Plan de Equipo ($40/usuario/mes):**
- Uso agrupado entre todos los miembros del equipo
- Excedente calculado del uso total del equipo
**Plan Equipo ($40/usuario/mes):**
- Uso compartido entre todos los miembros del equipo
- El excedente se calcula a partir del uso total del equipo
- El propietario de la organización recibe una sola factura
**Planes Empresariales:**
**Planes Empresa:**
- Precio mensual fijo, sin excedentes
- Límites de uso personalizados según el acuerdo
@@ -218,23 +222,23 @@ Sim utiliza un modelo de facturación de **suscripción base + excedente**:
Cuando el excedente no facturado alcanza los $50, Sim factura automáticamente el monto total no facturado.
**Ejemplo:**
- Día 10: $70 de excedente → Factura inmediata de $70
- Día 15: $35 adicionales de uso ($105 en total) → Ya facturado, sin acción
- Día 20: Otros $50 de uso ($155 en total, $85 no facturados) → Factura inmediata de $85
- Día 10: $70 de excedente → Factura $70 inmediatamente
- Día 15: $35 adicionales de uso ($105 total) → Ya facturado, sin acción
- Día 20: Otros $50 de uso ($155 total, $85 sin facturar) → Factura $85 inmediatamente
Esto distribuye los cargos por exceso a lo largo del mes en lugar de una gran factura al final del período.
Esto distribuye los cargos por excedentes grandes a lo largo del mes en lugar de una sola factura grande al final del período.
## Mejores prácticas para la gestión de costos
## Mejores prácticas de gestión de costos
1. **Monitorear regularmente**: Revisa tu panel de uso con frecuencia para evitar sorpresas
2. **Establecer presupuestos**: Utiliza los límites del plan como guías para tu gasto
3. **Optimizar flujos de trabajo**: Revisa las ejecuciones de alto costo y optimiza los prompts o la selección de modelos
4. **Usar modelos apropiados**: Ajusta la complejidad del modelo a los requisitos de la tarea
5. **Agrupar tareas similares**: Combina múltiples solicitudes cuando sea posible para reducir la sobrecarga
1. **Monitorea regularmente**: Revisa tu panel de uso con frecuencia para evitar sorpresas
2. **Establece presupuestos**: Usa los límites del plan como barreras de protección para tu gasto
3. **Optimiza flujos de trabajo**: Revisa las ejecuciones de alto costo y optimiza los prompts o la selección de modelos
4. **Usa modelos apropiados**: Ajusta la complejidad del modelo a los requisitos de la tarea
5. **Agrupa tareas similares**: Combina múltiples solicitudes cuando sea posible para reducir la sobrecarga
## Próximos pasos
- Revisa tu uso actual en [Configuración → Suscripción](https://sim.ai/settings/subscription)
- Aprende sobre [Registro](/execution/logging) para seguir los detalles de ejecución
- Explora la [API externa](/execution/api) para el monitoreo programático de costos
- Consulta las [técnicas de optimización de flujo de trabajo](/blocks) para reducir costos
- Aprende sobre [Registro](/execution/logging) para rastrear detalles de ejecución
- Explora la [API externa](/execution/api) para monitoreo programático de costos
- Consulta las [técnicas de optimización de flujos de trabajo](/blocks) para reducir costos

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

@@ -35,81 +35,87 @@ Una vez que tus documentos están procesados, puedes ver y editar los fragmentos
<Image src="/static/knowledgebase/knowledgebase.png" alt="Vista de fragmentos de documentos mostrando contenido procesado" width={800} height={500} />
### Configuración de fragmentos
- **Tamaño predeterminado del fragmento**: 1.024 caracteres
- **Rango configurable**: 100-4.000 caracteres por fragmento
- **Superposición inteligente**: 200 caracteres por defecto para preservar el contexto
- **División jerárquica**: Respeta la estructura del documento (secciones, párrafos, oraciones)
Al crear una base de conocimiento, puedes configurar cómo se dividen los documentos en fragmentos:
| Configuración | Unidad | Predeterminado | Rango | Descripción |
|---------|------|---------|-------|-------------|
| **Tamaño máximo de fragmento** | tokens | 1.024 | 100-4.000 | Tamaño máximo de cada fragmento (1 token ≈ 4 caracteres) |
| **Tamaño mínimo de fragmento** | caracteres | 1 | 1-2.000 | Tamaño mínimo de fragmento para evitar fragmentos diminutos |
| **Superposición** | caracteres | 200 | 0-500 | Superposición de contexto entre fragmentos consecutivos |
- **División jerárquica**: respeta la estructura del documento (secciones, párrafos, oraciones)
### Capacidades de edición
- **Editar contenido de fragmentos**: Modificar el contenido de texto de fragmentos individuales
- **Ajustar límites de fragmentos**: Fusionar o dividir fragmentos según sea necesario
- **Añadir metadatos**: Mejorar fragmentos con contexto adicional
- **Operaciones masivas**: Gestionar múltiples fragmentos de manera eficiente
- **Editar contenido de fragmentos**: modifica el contenido de texto de fragmentos individuales
- **Ajustar límites de fragmentos**: combina o divide fragmentos según sea necesario
- **Añadir metadatos**: mejora los fragmentos con contexto adicional
- **Operaciones masivas**: gestiona múltiples fragmentos de manera eficiente
## Procesamiento avanzado de PDF
Para documentos PDF, Sim ofrece capacidades de procesamiento mejoradas:
### Soporte OCR
### Compatibilidad con OCR
Cuando se configura con Azure o [Mistral OCR](https://docs.mistral.ai/ocr/):
- **Procesamiento de documentos escaneados**: Extraer texto de PDFs basados en imágenes
- **Manejo de contenido mixto**: Procesar PDFs con texto e imágenes
- **Alta precisión**: Modelos avanzados de IA aseguran una extracción precisa del texto
- **Procesamiento de documentos escaneados**: extrae texto de PDF basados en imágenes
- **Manejo de contenido mixto**: procesa PDF con texto e imágenes
- **Alta precisión**: los modelos de IA avanzados garantizan una extracción de texto precisa
## Uso del bloque de conocimiento en flujos de trabajo
Una vez que tus documentos son procesados, puedes utilizarlos en tus flujos de trabajo de IA a través del bloque de Conocimiento. Esto permite la Generación Aumentada por Recuperación (RAG), permitiendo a tus agentes de IA acceder y razonar sobre el contenido de tus documentos para proporcionar respuestas más precisas y contextuales.
Una vez que tus documentos estén procesados, puedes usarlos en tus flujos de trabajo de IA a través del bloque de conocimiento. Esto habilita la generación aumentada por recuperación (RAG), permitiendo que tus agentes de IA accedan y razonen sobre el contenido de tus documentos para proporcionar respuestas más precisas y contextuales.
<Image src="/static/knowledgebase/knowledgebase-2.png" alt="Uso del bloque de conocimiento en flujos de trabajo" width={800} height={500} />
### Características del bloque de conocimiento
- **Búsqueda semántica**: Encontrar contenido relevante usando consultas en lenguaje natural
- **Integración de contexto**: Incluir automáticamente fragmentos relevantes en los prompts del agente
- **Recuperación dinámica**: La búsqueda ocurre en tiempo real durante la ejecución del flujo de trabajo
- **Puntuación de relevancia**: Resultados clasificados por similitud semántica
- **Búsqueda semántica**: encuentra contenido relevante usando consultas en lenguaje natural
- **Integración de contexto**: incluye automáticamente fragmentos relevantes en las indicaciones del agente
- **Recuperación dinámica**: la búsqueda ocurre en tiempo real durante la ejecución del flujo de trabajo
- **Puntuación de relevancia**: resultados clasificados por similitud semántica
### Opciones de integración
- **Prompts del sistema**: Proporcionar contexto a tus agentes de IA
- **Contexto dinámico**: Buscar e incluir información relevante durante las conversaciones
- **Búsqueda multi-documento**: Consultar a través de toda tu base de conocimiento
- **Búsqueda filtrada**: Combinar con etiquetas para una recuperación precisa de contenido
- **Prompts del sistema**: proporciona contexto a tus agentes de IA
- **Contexto dinámico**: busca e incluye información relevante durante las conversaciones
- **Búsqueda multidocumento**: consulta en toda tu base de conocimiento
- **Búsqueda filtrada**: combina con etiquetas para una recuperación precisa de contenido
## Tecnología de búsqueda vectorial
Sim utiliza búsqueda vectorial impulsada por [pgvector](https://github.com/pgvector/pgvector) para entender el significado y contexto de tu contenido:
Sim utiliza búsqueda vectorial impulsada por [pgvector](https://github.com/pgvector/pgvector) para comprender el significado y contexto de tu contenido:
### Comprensión semántica
- **Búsqueda contextual**: Encuentra contenido relevante incluso cuando las palabras clave exactas no coinciden
- **Recuperación basada en conceptos**: Comprende las relaciones entre ideas
- **Soporte multilingüe**: Funciona en diferentes idiomas
- **Reconocimiento de sinónimos**: Encuentra términos y conceptos relacionados
- **Búsqueda contextual**: encuentra contenido relevante incluso cuando las palabras clave exactas no coinciden
- **Recuperación basada en conceptos**: comprende las relaciones entre ideas
- **Soporte multiidioma**: funciona en diferentes idiomas
- **Reconocimiento de sinónimos**: encuentra términos y conceptos relacionados
### Capacidades de búsqueda
- **Consultas en lenguaje natural**: Haz preguntas en español simple
- **Búsqueda por similitud**: Encuentra contenido conceptualmente similar
- **Búsqueda híbrida**: Combina búsqueda vectorial y tradicional por palabras clave
- **Resultados configurables**: Controla el número y umbral de relevancia de los resultados
- **Consultas en lenguaje natural**: haz preguntas en lenguaje cotidiano
- **Búsqueda por similitud**: encuentra contenido conceptualmente similar
- **Búsqueda híbrida**: combina búsqueda vectorial y búsqueda tradicional por palabras clave
- **Resultados configurables**: controla el número y el umbral de relevancia de los resultados
## Gestión de documentos
### Características de organización
- **Carga masiva**: Sube múltiples archivos a la vez mediante la API asíncrona
- **Estado de procesamiento**: Actualizaciones en tiempo real sobre el procesamiento de documentos
- **Búsqueda y filtrado**: Encuentra documentos rápidamente en grandes colecciones
- **Seguimiento de metadatos**: Captura automática de información de archivos y detalles de procesamiento
### Funciones de organización
- **Carga masiva**: sube múltiples archivos a la vez mediante la API asíncrona
- **Estado de procesamiento**: actualizaciones en tiempo real sobre el procesamiento de documentos
- **Búsqueda y filtrado**: encuentra documentos rápidamente en colecciones grandes
- **Seguimiento de metadatos**: captura automática de información de archivos y detalles de procesamiento
### Seguridad y privacidad
- **Almacenamiento seguro**: Documentos almacenados con seguridad de nivel empresarial
- **Control de acceso**: Permisos basados en espacios de trabajo
- **Aislamiento de procesamiento**: Cada espacio de trabajo tiene procesamiento de documentos aislado
- **Retención de datos**: Configura políticas de retención de documentos
- **Almacenamiento seguro**: documentos almacenados con seguridad de nivel empresarial
- **Control de acceso**: permisos basados en el espacio de trabajo
- **Aislamiento de procesamiento**: cada espacio de trabajo tiene procesamiento de documentos aislado
- **Retención de datos**: configura políticas de retención de documentos
## Primeros pasos
1. **Navega a tu base de conocimiento**: Accede desde la barra lateral de tu espacio de trabajo
2. **Sube documentos**: Arrastra y suelta o selecciona archivos para subir
3. **Monitorea el procesamiento**: Observa cómo se procesan y dividen los documentos
4. **Explora fragmentos**: Visualiza y edita el contenido procesado
5. **Añade a flujos de trabajo**: Usa el bloque de Conocimiento para integrarlo con tus agentes de IA
1. **Navega a tu base de conocimiento**: accede desde la barra lateral de tu espacio de trabajo
2. **Sube documentos**: arrastra y suelta o selecciona archivos para subir
3. **Monitorea el procesamiento**: observa cómo se procesan y fragmentan los documentos
4. **Explora fragmentos**: visualiza y edita el contenido procesado
5. **Añade a flujos de trabajo**: utiliza el bloque Knowledge para integrar con tus agentes de IA
La base de conocimiento transforma tus documentos estáticos en un recurso inteligente y consultable que tus flujos de trabajo de IA pueden aprovechar para obtener respuestas más informadas y contextuales.
La base de conocimientos transforma tus documentos estáticos en un recurso inteligente y consultable que tus flujos de trabajo de IA pueden aprovechar para obtener respuestas más informadas y contextuales.

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

@@ -0,0 +1,59 @@
---
title: Circleback
description: Notas de reuniones e ítems de acción impulsados por IA
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="circleback"
color="linear-gradient(180deg, #E0F7FA 0%, #FFFFFF 100%)"
/>
{/* MANUAL-CONTENT-START:intro */}
[Circleback](https://circleback.ai/) es una plataforma impulsada por IA que automatiza las notas de reuniones, ítems de acción, transcripciones y grabaciones para tu equipo. Cuando se completa una reunión, Circleback procesa la conversación y proporciona notas detalladas e ítems de acción, junto con una transcripción y una grabación (cuando está disponible). Esto ayuda a los equipos a capturar información de manera eficiente, distribuir ítems de acción y asegurar que no se pierda nada, todo integrado sin problemas en tus flujos de trabajo.
Con la integración de Sim Circleback, puedes:
- **Recibir notas detalladas de reuniones e ítems de acción**: Recopila automáticamente resúmenes de reuniones bien formateados y realiza seguimiento de las tareas accionables discutidas durante tus llamadas.
- **Acceder a grabaciones y transcripciones completas de reuniones**: Obtén la conversación completa y la grabación asociada, facilitando la revisión de momentos clave o compartir con colegas.
- **Capturar información de asistentes y contexto de la reunión**: Las listas de asistentes, metadatos de reuniones y etiquetas ayudan a mantener tus datos organizados y accionables.
- **Entregar información directamente en tus flujos de trabajo**: Activa automatizaciones o envía datos de Circleback a otros sistemas en el momento en que finaliza una reunión, usando los potentes activadores webhook de Sim.
**Cómo funciona en Sim:**
Circleback utiliza activadores webhook: cada vez que se procesa una reunión, los datos se envían automáticamente a tu agente o automatización. Puedes crear más automatizaciones basadas en:
- Reunión completada (todos los datos procesados disponibles)
- Nuevas notas (notas listas incluso antes de que se procese la reunión completa)
- Integración webhook sin procesar para casos de uso avanzados
**La siguiente información está disponible en la carga útil del webhook de reunión de Circleback:**
| Campo | Tipo | Descripción |
|----------------|---------|----------------------------------------------------|
| `id` | number | ID de reunión de Circleback |
| `name` | string | Título de la reunión |
| `url` | string | URL de reunión virtual (Zoom, Meet, Teams, etc.) |
| `createdAt` | string | Marca de tiempo de creación de la reunión |
| `duration` | number | Duración en segundos |
| `recordingUrl` | string | URL de grabación (válida 24 horas) |
| `tags` | json | Array de etiquetas |
| `icalUid` | string | ID de evento de calendario |
| `attendees` | json | Array de objetos de asistentes |
| `notes` | string | Notas de la reunión en Markdown |
| `actionItems` | json | Array de elementos de acción |
| `transcript` | json | Array de segmentos de transcripción |
| `insights` | json | Insights creados por el usuario |
| `meeting` | json | Payload completo de la reunión |
Ya sea que quieras distribuir resúmenes instantáneos, registrar elementos de acción o crear flujos de trabajo personalizados activados por nuevos datos de reuniones, Circleback y Sim hacen que sea sencillo manejar todo lo relacionado con tus reuniones, automáticamente.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Recibe notas de reuniones, elementos de acción, transcripciones y grabaciones cuando se procesen las reuniones. Circleback utiliza webhooks para enviar datos a tus flujos de trabajo.
## Notas
- Categoría: `triggers`
- Tipo: `circleback`

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,218 @@
---
title: Grain
description: Accede a grabaciones de reuniones, transcripciones y resúmenes de IA
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="grain"
color="#F6FAF9"
/>
{/* MANUAL-CONTENT-START:intro */}
[Grain](https://grain.com/) es una plataforma moderna para capturar, almacenar y compartir grabaciones de reuniones, transcripciones, momentos destacados y resúmenes generados por IA. Grain permite a los equipos convertir conversaciones en información procesable y mantener a todos alineados con los momentos clave de las reuniones.
Con Grain, puedes:
- **Acceder a grabaciones y transcripciones con búsqueda**: Encuentra y revisa cada reunión por palabra clave, participante o tema.
- **Compartir momentos destacados y clips**: Captura momentos importantes y comparte fragmentos cortos de video/audio en tu equipo o flujos de trabajo.
- **Obtener resúmenes generados por IA**: Produce automáticamente resúmenes de reuniones, elementos de acción e información clave utilizando la IA avanzada de Grain.
- **Organizar reuniones por equipo o tipo**: Etiqueta y categoriza grabaciones para facilitar el acceso y la generación de informes.
La integración de Sim con Grain permite a tus agentes:
- Listar, buscar y recuperar grabaciones de reuniones y detalles mediante filtros flexibles (fecha y hora, participante, equipo, etc.).
- Acceder a resúmenes de IA, participantes, momentos destacados y otros metadatos de reuniones para impulsar automatizaciones o análisis.
- Activar flujos de trabajo cada vez que se procesen nuevas reuniones, se generen resúmenes o se creen momentos destacados a través de webhooks de Grain.
- Conectar fácilmente los datos de Grain con otras herramientas o notificar a los compañeros de equipo en el momento en que sucede algo importante en una reunión.
Ya sea que desees automatizar acciones de seguimiento, mantener registros de conversaciones importantes o destacar información en toda tu organización, Grain y Sim facilitan la conexión de la inteligencia de reuniones con tus flujos de trabajo.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integra Grain en tu flujo de trabajo. Accede a grabaciones de reuniones, transcripciones, momentos destacados y resúmenes generados por IA. También puede activar flujos de trabajo basados en eventos de webhook de Grain.
## Herramientas
### `grain_list_recordings`
Lista las grabaciones de Grain con filtros opcionales y paginación
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Sí | Clave API de Grain \(token de acceso personal\) |
| `cursor` | string | No | Cursor de paginación para la siguiente página |
| `beforeDatetime` | string | No | Solo grabaciones anteriores a esta marca de tiempo ISO8601 |
| `afterDatetime` | string | No | Solo grabaciones posteriores a esta marca de tiempo ISO8601 |
| `participantScope` | string | No | Filtro: "internal" o "external" |
| `titleSearch` | string | No | Término de búsqueda para filtrar por título de grabación |
| `teamId` | string | No | Filtrar por UUID de equipo |
| `meetingTypeId` | string | No | Filtrar por UUID de tipo de reunión |
| `includeHighlights` | boolean | No | Incluir destacados/clips en la respuesta |
| `includeParticipants` | boolean | No | Incluir lista de participantes en la respuesta |
| `includeAiSummary` | boolean | No | Incluir resumen generado por IA |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `recordings` | array | Array de objetos de grabación |
### `grain_get_recording`
Obtiene los detalles de una única grabación por ID
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Sí | Clave API de Grain \(token de acceso personal\) |
| `recordingId` | string | Sí | El UUID de la grabación |
| `includeHighlights` | boolean | No | Incluir destacados/clips |
| `includeParticipants` | boolean | No | Incluir lista de participantes |
| `includeAiSummary` | boolean | No | Incluir resumen de IA |
| `includeCalendarEvent` | boolean | No | Incluir datos del evento de calendario |
| `includeHubspot` | boolean | No | Incluir asociaciones de HubSpot |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `id` | string | UUID de la grabación |
| `title` | string | Título de la grabación |
| `start_datetime` | string | Marca de tiempo de inicio ISO8601 |
| `end_datetime` | string | Marca de tiempo de finalización ISO8601 |
| `duration_ms` | number | Duración en milisegundos |
| `media_type` | string | audio, transcript o video |
| `source` | string | Fuente de la grabación \(zoom, meet, teams, etc.\) |
| `url` | string | URL para ver en Grain |
| `thumbnail_url` | string | URL de la imagen en miniatura |
| `tags` | array | Array de cadenas de etiquetas |
| `teams` | array | Equipos a los que pertenece la grabación |
| `meeting_type` | object | Información del tipo de reunión \(id, nombre, alcance\) |
| `highlights` | array | Destacados \(si se incluyen\) |
| `participants` | array | Participantes \(si se incluyen\) |
| `ai_summary` | object | Texto del resumen de IA \(si se incluye\) |
| `calendar_event` | object | Datos del evento de calendario \(si se incluyen\) |
| `hubspot` | object | Asociaciones de HubSpot \(si se incluyen\) |
### `grain_get_transcript`
Obtener la transcripción completa de una grabación
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Sí | Clave de API de Grain \(token de acceso personal\) |
| `recordingId` | string | Sí | El UUID de la grabación |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `transcript` | array | Array de secciones de transcripción |
### `grain_list_teams`
Listar todos los equipos en el espacio de trabajo
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Sí | Clave API de Grain \(token de acceso personal\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `teams` | array | Array de objetos de equipo |
### `grain_list_meeting_types`
Listar todos los tipos de reunión en el espacio de trabajo
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Sí | Clave API de Grain \(token de acceso personal\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `meeting_types` | array | Array de objetos de tipo de reunión |
### `grain_create_hook`
Crear un webhook para recibir eventos de grabación
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Sí | Clave API de Grain \(token de acceso personal\) |
| `hookUrl` | string | Sí | URL del endpoint del webhook \(debe responder 2xx\) |
| `filterBeforeDatetime` | string | No | Filtro: grabaciones antes de esta fecha |
| `filterAfterDatetime` | string | No | Filtro: grabaciones después de esta fecha |
| `filterParticipantScope` | string | No | Filtro: "internal" o "external" |
| `filterTeamId` | string | No | Filtro: UUID de equipo específico |
| `filterMeetingTypeId` | string | No | Filtro: tipo de reunión específico |
| `includeHighlights` | boolean | No | Incluir destacados en la carga del webhook |
| `includeParticipants` | boolean | No | Incluir participantes en la carga del webhook |
| `includeAiSummary` | boolean | No | Incluir resumen de IA en la carga del webhook |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `id` | string | UUID del hook |
| `enabled` | boolean | Si el hook está activo |
| `hook_url` | string | La URL del webhook |
| `filter` | object | Filtros aplicados |
| `include` | object | Campos incluidos |
| `inserted_at` | string | Marca de tiempo de creación ISO8601 |
### `grain_list_hooks`
Listar todos los webhooks de la cuenta
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Sí | Clave API de Grain \(token de acceso personal\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `hooks` | array | Array de objetos hook |
### `grain_delete_hook`
Eliminar un webhook por ID
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Sí | Clave API de Grain \(token de acceso personal\) |
| `hookId` | string | Sí | El UUID del hook a eliminar |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Verdadero cuando el webhook se eliminó correctamente |
## Notas
- Categoría: `tools`
- Tipo: `grain`

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

@@ -38,23 +38,24 @@ Crear un nuevo contacto en Intercom con email, external_id o rol
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `role` | string | No | El rol del contacto. Acepta 'user' o 'lead'. Por defecto es 'lead' si no se especifica. |
| `email` | string | No | La dirección de correo electrónico del contacto |
| `external_id` | string | No | Un identificador único para el contacto proporcionado por el cliente |
| `phone` | string | No | El número de teléfono del contacto |
| `name` | string | No | El nombre del contacto |
| `avatar` | string | No | Una URL de imagen de avatar para el contacto |
| `signed_up_at` | number | No | El momento en que el usuario se registró como marca de tiempo Unix |
| `last_seen_at` | number | No | El momento en que el usuario fue visto por última vez como marca de tiempo Unix |
| `owner_id` | string | No | El id de un administrador que ha sido asignado como propietario de la cuenta del contacto |
| `signed_up_at` | number | No | La hora en que el usuario se registró como marca de tiempo Unix |
| `last_seen_at` | number | No | La hora en que el usuario fue visto por última vez como marca de tiempo Unix |
| `owner_id` | string | No | El id de un administrador al que se le ha asignado la propiedad de la cuenta del contacto |
| `unsubscribed_from_emails` | boolean | No | Si el contacto está dado de baja de los correos electrónicos |
| `custom_attributes` | string | No | Atributos personalizados como objeto JSON \(p. ej., \{"nombre_atributo": "valor"\}\) |
| `custom_attributes` | string | No | Atributos personalizados como objeto JSON \(ej., \{"attribute_name": "value"\}\) |
| `company_id` | string | No | ID de empresa para asociar el contacto durante la creación |
#### Salida
| 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`
@@ -70,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`
@@ -82,22 +82,24 @@ Actualizar un contacto existente en Intercom
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `contactId` | string | Sí | ID del contacto a actualizar |
| `email` | string | No | Dirección de correo electrónico del contacto |
| `phone` | string | No | Número de teléfono del contacto |
| `name` | string | No | Nombre del contacto |
| `avatar` | string | No | URL de imagen de avatar para el contacto |
| `signed_up_at` | number | No | El momento en que el usuario se registró como marca de tiempo Unix |
| `last_seen_at` | number | No | El momento en que el usuario fue visto por última vez como marca de tiempo Unix |
| `owner_id` | string | No | El id de un administrador que ha sido asignado como propietario de la cuenta del contacto |
| `role` | string | No | El rol del contacto. Acepta 'user' o 'lead'. |
| `external_id` | string | No | Un identificador único para el contacto proporcionado por el cliente |
| `email` | string | No | La dirección de correo electrónico del contacto |
| `phone` | string | No | El número de teléfono del contacto |
| `name` | string | No | El nombre del contacto |
| `avatar` | string | No | Una URL de imagen de avatar para el contacto |
| `signed_up_at` | number | No | La hora en que el usuario se registró como marca de tiempo Unix |
| `last_seen_at` | number | No | La hora en que el usuario fue visto por última vez como marca de tiempo Unix |
| `owner_id` | string | No | El id de un administrador al que se le ha asignado la propiedad de la cuenta del contacto |
| `unsubscribed_from_emails` | boolean | No | Si el contacto está dado de baja de los correos electrónicos |
| `custom_attributes` | string | No | Atributos personalizados como objeto JSON (p. ej., \{"nombre_atributo": "valor"\}) |
| `custom_attributes` | string | No | Atributos personalizados como objeto JSON \(ej., \{"attribute_name": "value"\}\) |
| `company_id` | string | No | ID de empresa para asociar el contacto |
#### Salida
| 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`
@@ -114,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`
@@ -125,16 +126,17 @@ Buscar contactos en Intercom usando una consulta
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `query` | string | Sí | Consulta de búsqueda \(p. ej., \{"field":"email","operator":"=","value":"user@example.com"\}\) |
| `query` | string | Sí | Consulta de búsqueda \(ej., \{"field":"email","operator":"=","value":"user@example.com"\}\) |
| `per_page` | number | No | Número de resultados por página \(máx: 150\) |
| `starting_after` | string | No | Cursor para paginación |
| `sort_field` | string | No | Campo por el cual ordenar \(ej., "name", "created_at", "last_seen_at"\) |
| `sort_order` | string | No | Orden de clasificación: "ascending" o "descending" |
#### Salida
| 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`
@@ -150,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`
@@ -166,16 +169,16 @@ Crear o actualizar una empresa en Intercom
| `website` | string | No | El sitio web de la empresa |
| `plan` | string | No | El nombre del plan de la empresa |
| `size` | number | No | El número de empleados en la empresa |
| `industry` | string | No | El sector en el que opera la empresa |
| `monthly_spend` | number | No | Cuántos ingresos genera la empresa para tu negocio. Nota: Este campo trunca los decimales a números enteros \(por ejemplo, 155.98 se convierte en 155\) |
| `industry` | string | No | La industria en la que opera la empresa |
| `monthly_spend` | number | No | Cuántos ingresos genera la empresa para tu negocio. Nota: Este campo trunca decimales a números enteros \(ej., 155.98 se convierte en 155\) |
| `custom_attributes` | string | No | Atributos personalizados como objeto JSON |
| `remote_created_at` | number | No | La fecha en que creaste la empresa como marca de tiempo Unix |
#### Salida
| 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`
@@ -191,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`
@@ -204,13 +206,13 @@ Lista todas las empresas de Intercom con soporte de paginación. Nota: Este endp
| --------- | ---- | -------- | ----------- |
| `per_page` | number | No | Número de resultados por página |
| `page` | number | No | Número de página |
| `starting_after` | string | No | Cursor para paginación \(preferido sobre paginación basada en páginas\) |
#### Salida
| 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`
@@ -221,14 +223,14 @@ Recuperar una sola conversación por ID desde Intercom
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Sí | ID de la conversación a recuperar |
| `display_as` | string | No | Establecer como "plaintext" para recuperar mensajes en texto plano |
| `display_as` | string | No | Establecer en "plaintext" para recuperar mensajes en texto plano |
| `include_translations` | boolean | No | Cuando es true, las partes de la conversación se traducirán al idioma detectado de la conversación |
#### Salida
| 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`
@@ -240,13 +242,14 @@ Listar todas las conversaciones de Intercom con soporte de paginación
| --------- | ---- | -------- | ----------- |
| `per_page` | number | No | Número de resultados por página \(máx: 150\) |
| `starting_after` | string | No | Cursor para paginación |
| `sort` | string | No | Campo por el que ordenar \(p. ej., "waiting_since", "updated_at", "created_at"\) |
| `order` | string | No | Orden de clasificación: "asc" \(ascendente\) o "desc" \(descendente\) |
#### Salida
| 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`
@@ -258,16 +261,16 @@ Responder a una conversación como administrador en Intercom
| --------- | ---- | -------- | ----------- |
| `conversationId` | string | Sí | ID de la conversación a la que responder |
| `message_type` | string | Sí | Tipo de mensaje: "comment" o "note" |
| `body` | string | Sí | El texto del cuerpo de la respuesta |
| `admin_id` | string | No | El ID del administrador que escribe la respuesta. Si no se proporciona, se utilizará un administrador predeterminado \(Operator/Fin\). |
| `attachment_urls` | string | No | Lista separada por comas de URLs de imágenes \(máximo 10\) |
| `body` | string | Sí | El cuerpo de texto de la respuesta |
| `admin_id` | string | No | El ID del administrador que escribe la respuesta. Si no se proporciona, se usará un administrador predeterminado \(Operator/Fin\). |
| `attachment_urls` | string | No | Lista de URLs de imágenes separadas por comas \(máx 10\) |
| `created_at` | number | No | Marca de tiempo Unix de cuándo se creó la respuesta. Si no se proporciona, se usa la hora actual. |
#### Salida
| 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`
@@ -278,15 +281,16 @@ Buscar conversaciones en Intercom usando una consulta
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `query` | string | Sí | Consulta de búsqueda como objeto JSON |
| `per_page` | number | No | Número de resultados por página (máx: 150) |
| `per_page` | number | No | Número de resultados por página \(máx: 150\) |
| `starting_after` | string | No | Cursor para paginación |
| `sort_field` | string | No | Campo por el que ordenar \(p. ej., "created_at", "updated_at"\) |
| `sort_order` | string | No | Orden de clasificación: "ascending" o "descending" |
#### Salida
| 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`
@@ -297,15 +301,18 @@ Crear un nuevo ticket en Intercom
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `ticket_type_id` | string | Sí | El ID del tipo de ticket |
| `contacts` | string | Sí | Array JSON de identificadores de contacto (p. ej., \{"id": "contact_id"\}) |
| `contacts` | string | Sí | Array JSON de identificadores de contacto \(p. ej., \[\{"id": "contact_id"\}\]\) |
| `ticket_attributes` | string | Sí | Objeto JSON con atributos del ticket incluyendo _default_title_ y _default_description_ |
| `company_id` | string | No | ID de la empresa para asociar el ticket |
| `created_at` | number | No | Marca de tiempo Unix de cuándo se creó el ticket. Si no se proporciona, se utiliza la hora actual. |
| `conversation_to_link_id` | string | No | ID de una conversación existente para vincular a este ticket |
| `disable_notifications` | boolean | No | Cuando es true, suprime las notificaciones cuando se crea el ticket |
#### Salida
| 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`
@@ -321,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`
@@ -332,20 +338,21 @@ Crear y enviar un nuevo mensaje iniciado por el administrador en Intercom
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `message_type` | string | Sí | Tipo de mensaje: "inapp" o "email" |
| `message_type` | string | Sí | Tipo de mensaje: "inapp" para mensajes dentro de la aplicación o "email" para mensajes de correo electrónico |
| `template` | string | Sí | Estilo de plantilla del mensaje: "plain" para texto sin formato o "personal" para estilo personalizado |
| `subject` | string | No | El asunto del mensaje \(para tipo email\) |
| `body` | string | Sí | El cuerpo del mensaje |
| `from_type` | string | Sí | Tipo de remitente: "admin" |
| `from_id` | string | Sí | El ID del administrador que envía el mensaje |
| `to_type` | string | Sí | Tipo de destinatario: "contact" |
| `to_id` | string | Sí | El ID del contacto que recibe el mensaje |
| `created_at` | number | No | Marca de tiempo Unix de cuándo se creó el mensaje. Si no se proporciona, se utiliza la hora actual. |
#### Salida
| 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

@@ -61,8 +61,6 @@ Extrae y procesa contenido web en texto limpio y compatible con LLM usando Jina
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | El contenido extraído de la URL, procesado en texto limpio y compatible con LLM |
| `links` | array | Lista de enlaces encontrados en la página (cuando gatherLinks o withLinksummary está activado) |
| `images` | array | Lista de imágenes encontradas en la página (cuando withImagesummary está activado) |
### `jina_search`

View File

@@ -48,8 +48,13 @@ Recupera información detallada sobre una incidencia específica de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de la incidencia de Jira con clave de incidencia, resumen, descripción, marcas de tiempo de creación y actualización |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de la incidencia (p. ej., PROJ-123) |
| `summary` | string | Resumen de la incidencia |
| `description` | json | Contenido de la descripción de la incidencia |
| `created` | string | Marca de tiempo de creación de la incidencia |
| `updated` | string | Marca de tiempo de última actualización de la incidencia |
| `issue` | json | Objeto completo de la incidencia con todos los campos |
### `jira_update`
@@ -73,8 +78,9 @@ Actualizar una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles actualizados de la incidencia de Jira con marca de tiempo, clave de incidencia, resumen y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de la incidencia actualizada (p. ej., PROJ-123) |
| `summary` | string | Resumen de la incidencia después de la actualización |
### `jira_write`
@@ -83,22 +89,31 @@ Escribir una incidencia de Jira
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| --------- | ---- | ----------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `projectId` | string | Sí | ID del proyecto para la incidencia |
| `summary` | string | Sí | Resumen de la incidencia |
| `description` | string | No | Descripción de la incidencia |
| `priority` | string | No | Prioridad de la incidencia |
| `assignee` | string | No | Asignado para la incidencia |
| `cloudId` | string | No | ID de Jira Cloud para la instancia. Si no se proporciona, se obtendrá utilizando el dominio. |
| `priority` | string | No | ID o nombre de prioridad para la incidencia \(p. ej., "10000" o "Alta"\) |
| `assignee` | string | No | ID de cuenta del asignado para la incidencia |
| `cloudId` | string | No | ID de Jira Cloud para la instancia. Si no se proporciona, se obtendrá usando el dominio. |
| `issueType` | string | Sí | Tipo de incidencia a crear \(p. ej., Tarea, Historia\) |
| `labels` | array | No | Etiquetas para la incidencia \(array de nombres de etiquetas\) |
| `duedate` | string | No | Fecha de vencimiento para la incidencia \(formato: AAAA-MM-DD\) |
| `reporter` | string | No | ID de cuenta del informador para la incidencia |
| `environment` | string | No | Información del entorno para la incidencia |
| `customFieldId` | string | No | ID del campo personalizado \(p. ej., customfield_10001\) |
| `customFieldValue` | string | No | Valor para el campo personalizado |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de la incidencia de Jira creada con marca de tiempo, clave de incidencia, resumen, estado de éxito y URL |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de la incidencia creada \(p. ej., PROJ-123\) |
| `summary` | string | Resumen de la incidencia |
| `url` | string | URL de la incidencia creada |
| `assigneeId` | string | ID de cuenta del usuario asignado \(si está asignado\) |
### `jira_bulk_read`
@@ -116,8 +131,7 @@ Recuperar múltiples incidencias de Jira en bloque
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | array | Array de incidencias de Jira con resumen, descripción, marcas de tiempo de creación y actualización |
| `issues` | array | Array de incidencias de Jira con marca de tiempo, resumen, descripción, y marcas de tiempo de creación y actualización |
### `jira_delete_issue`
@@ -136,8 +150,8 @@ Eliminar una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de la incidencia eliminada con marca de tiempo, clave de incidencia y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de la incidencia eliminada |
### `jira_assign_issue`
@@ -156,8 +170,9 @@ Asignar una incidencia de Jira a un usuario
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de la asignación con marca de tiempo, clave de incidencia, ID del asignado y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de la incidencia que fue asignada |
| `assigneeId` | string | ID de cuenta del asignado |
### `jira_transition_issue`
@@ -177,8 +192,9 @@ Mover una incidencia de Jira entre estados de flujo de trabajo (p. ej., Pendient
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de la transición con marca de tiempo, clave de incidencia, ID de transición y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia que fue transicionada |
| `transitionId` | string | ID de transición aplicada |
### `jira_search_issues`
@@ -199,8 +215,11 @@ Buscar incidencias de Jira usando JQL (Jira Query Language)
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Resultados de búsqueda con marca de tiempo, recuento total, detalles de paginación y array de incidencias coincidentes |
| `ts` | string | Marca de tiempo de la operación |
| `total` | number | Número total de incidencias coincidentes |
| `startAt` | number | Índice de inicio de paginación |
| `maxResults` | number | Máximo de resultados por página |
| `issues` | array | Array de incidencias coincidentes con clave, resumen, estado, asignado, creado, actualizado |
### `jira_add_comment`
@@ -219,8 +238,10 @@ Añadir un comentario a una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles del comentario con marca de tiempo, clave de incidencia, ID del comentario, cuerpo y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia a la que se añadió el comentario |
| `commentId` | string | ID del comentario creado |
| `body` | string | Contenido de texto del comentario |
### `jira_get_comments`
@@ -240,8 +261,10 @@ Obtener todos los comentarios de una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos de comentarios con marca de tiempo, clave de incidencia, recuento total y array de comentarios |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia |
| `total` | number | Número total de comentarios |
| `comments` | array | Array de comentarios con id, autor, cuerpo, creado, actualizado |
### `jira_update_comment`
@@ -261,8 +284,10 @@ Actualizar un comentario existente en una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles del comentario actualizado con marca de tiempo, clave de incidencia, ID de comentario, texto del cuerpo y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia |
| `commentId` | string | ID del comentario actualizado |
| `body` | string | Texto actualizado del comentario |
### `jira_delete_comment`
@@ -281,8 +306,9 @@ Eliminar un comentario de una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de eliminación con marca de tiempo, clave de incidencia, ID de comentario y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia |
| `commentId` | string | ID del comentario eliminado |
### `jira_get_attachments`
@@ -300,8 +326,9 @@ Obtener todos los adjuntos de una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos de adjuntos con marca de tiempo, clave de incidencia y array de adjuntos |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia |
| `attachments` | array | Array de adjuntos con id, nombre de archivo, tamaño, tipo MIME, fecha de creación y autor |
### `jira_delete_attachment`
@@ -319,8 +346,8 @@ Eliminar un adjunto de una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de eliminación con marca de tiempo, ID de adjunto y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `attachmentId` | string | ID del adjunto eliminado |
### `jira_add_worklog`
@@ -341,8 +368,10 @@ Añadir una entrada de registro de trabajo de seguimiento de tiempo a una incide
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles del registro de trabajo con marca de tiempo, clave de incidencia, ID del registro de trabajo, tiempo dedicado en segundos y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia a la que se añadió el registro de trabajo |
| `worklogId` | string | ID del registro de trabajo creado |
| `timeSpentSeconds` | number | Tiempo empleado en segundos |
### `jira_get_worklogs`
@@ -362,8 +391,10 @@ Obtener todas las entradas de registro de trabajo de una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos de registros de trabajo con marca de tiempo, clave de incidencia, recuento total y array de registros de trabajo |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia |
| `total` | number | Número total de registros de trabajo |
| `worklogs` | array | Array de registros de trabajo con id, autor, segundos empleados, tiempo empleado, comentario, fecha de creación, actualización e inicio |
### `jira_update_worklog`
@@ -385,8 +416,9 @@ Actualizar una entrada existente de registro de trabajo en una incidencia de Jir
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de actualización del registro de trabajo con marca de tiempo, clave de incidencia, ID de registro de trabajo y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia |
| `worklogId` | string | ID del registro de trabajo actualizado |
### `jira_delete_worklog`
@@ -405,8 +437,9 @@ Eliminar una entrada de registro de trabajo de una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de eliminación con marca de tiempo, clave de incidencia, ID de registro de trabajo y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia |
| `worklogId` | string | ID del registro de trabajo eliminado |
### `jira_create_issue_link`
@@ -427,8 +460,11 @@ Crear una relación de enlace entre dos incidencias de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles del enlace de incidencia con marca de tiempo, clave de incidencia de entrada, clave de incidencia de salida, tipo de enlace y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `inwardIssue` | string | Clave de incidencia de entrada |
| `outwardIssue` | string | Clave de incidencia de salida |
| `linkType` | string | Tipo de enlace de incidencia |
| `linkId` | string | ID del enlace creado |
### `jira_delete_issue_link`
@@ -446,8 +482,8 @@ Eliminar un enlace entre dos incidencias de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de eliminación con marca de tiempo, ID del enlace y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `linkId` | string | ID del enlace eliminado |
### `jira_add_watcher`
@@ -466,8 +502,9 @@ Añadir un observador a una incidencia de Jira para recibir notificaciones sobre
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles del observador con marca de tiempo, clave de incidencia, ID de cuenta del observador y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia |
| `watcherAccountId` | string | ID de cuenta del observador añadido |
### `jira_remove_watcher`
@@ -486,8 +523,33 @@ Eliminar un observador de una incidencia de Jira
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de eliminación con marca de tiempo, clave de incidencia, ID de cuenta del observador y estado de éxito |
| `ts` | string | Marca de tiempo de la operación |
| `issueKey` | string | Clave de incidencia |
| `watcherAccountId` | string | ID de cuenta del observador eliminado |
### `jira_get_users`
Obtener usuarios de Jira. Si se proporciona un ID de cuenta, devuelve un solo usuario. De lo contrario, devuelve una lista de todos los usuarios.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `accountId` | string | No | ID de cuenta opcional para obtener un usuario específico. Si no se proporciona, devuelve todos los usuarios. |
| `startAt` | number | No | El índice del primer usuario a devolver \(para paginación, predeterminado: 0\) |
| `maxResults` | number | No | Número máximo de usuarios a devolver \(predeterminado: 50\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia. Si no se proporciona, se obtendrá usando el dominio. |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la operación |
| `users` | json | Array de usuarios con accountId, displayName, emailAddress, estado activo y avatarUrls |
| `total` | number | Número total de usuarios devueltos |
| `startAt` | number | Índice de inicio de paginación |
| `maxResults` | number | Máximo de resultados por página |
## 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

@@ -12,57 +12,54 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
## Instrucciones de uso
Integra la Memoria en el flujo de trabajo. Puede añadir, obtener una memoria, obtener todas las memorias y eliminar memorias.
Integra memoria en el flujo de trabajo. Puede añadir, obtener una memoria, obtener todas las memorias y eliminar memorias.
## Herramientas
### `memory_add`
Añade una nueva memoria a la base de datos o agrega a una memoria existente con el mismo ID.
Añadir una nueva memoria a la base de datos o agregar a una memoria existente con el mismo ID.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `conversationId` | string | No | Identificador de conversación (p. ej., user-123, session-abc). Si ya existe una memoria con este conversationId para este bloque, el nuevo mensaje se añadirá a ella. |
| `id` | string | No | Parámetro heredado para el identificador de conversación. Use conversationId en su lugar. Proporcionado para compatibilidad con versiones anteriores. |
| `role` | string | Sí | Rol para la memoria del agente (user, assistant o system) |
| `conversationId` | string | No | Identificador de conversación \(ej., user-123, session-abc\). Si ya existe una memoria con este conversationId, el nuevo mensaje se agregará a ella. |
| `id` | string | No | Parámetro heredado para identificador de conversación. Usa conversationId en su lugar. Proporcionado para compatibilidad con versiones anteriores. |
| `role` | string | Sí | Rol para la memoria del agente \(user, assistant o system\) |
| `content` | string | Sí | Contenido para la memoria del agente |
| `blockId` | string | No | ID de bloque opcional. Si no se proporciona, utiliza el ID del bloque actual del contexto de ejecución, o por defecto "default". |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Indica si la memoria se añadió correctamente |
| `success` | boolean | Si la memoria se añadió correctamente |
| `memories` | array | Array de objetos de memoria incluyendo la memoria nueva o actualizada |
| `error` | string | Mensaje de error si la operación falló |
### `memory_get`
Recuperar memoria por conversationId, blockId, blockName o una combinación. Devuelve todas las memorias coincidentes.
Recuperar memoria por conversationId. Devuelve las memorias coincidentes.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `conversationId` | string | No | Identificador de conversación (p. ej., user-123, session-abc). Si se proporciona solo, devuelve todas las memorias para esta conversación en todos los bloques. |
| `id` | string | No | Parámetro heredado para el identificador de conversación. Use conversationId en su lugar. Proporcionado para compatibilidad con versiones anteriores. |
| `blockId` | string | No | Identificador de bloque. Si se proporciona solo, devuelve todas las memorias para este bloque en todas las conversaciones. Si se proporciona con conversationId, devuelve las memorias para esa conversación específica en este bloque. |
| `blockName` | string | No | Nombre del bloque. Alternativa a blockId. Si se proporciona solo, devuelve todas las memorias para bloques con este nombre. Si se proporciona con conversationId, devuelve las memorias para esa conversación en bloques con este nombre. |
| `conversationId` | string | No | Identificador de conversación \(ej., user-123, session-abc\). Devuelve las memorias para esta conversación. |
| `id` | string | No | Parámetro heredado para identificador de conversación. Usa conversationId en su lugar. Proporcionado para compatibilidad con versiones anteriores. |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Si la memoria fue recuperada con éxito |
| `memories` | array | Array de objetos de memoria con campos conversationId, blockId, blockName y data |
| `success` | boolean | Si la memoria se recuperó exitosamente |
| `memories` | array | Array de objetos de memoria con campos conversationId y data |
| `message` | string | Mensaje de éxito o error |
| `error` | string | Mensaje de error si la operación falló |
### `memory_get_all`
Recuperar todas las memorias de la base de datos
Recupera todas las memorias de la base de datos
#### Entrada
@@ -73,29 +70,27 @@ Recuperar todas las memorias de la base de datos
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Si todas las memorias fueron recuperadas con éxito |
| `memories` | array | Array de todos los objetos de memoria con campos key, conversationId, blockId, blockName y data |
| `success` | boolean | Si todas las memorias se recuperaron exitosamente |
| `memories` | array | Array de todos los objetos de memoria con campos key, conversationId y data |
| `message` | string | Mensaje de éxito o error |
| `error` | string | Mensaje de error si la operación falló |
### `memory_delete`
Eliminar memorias por conversationId, blockId, blockName o una combinación. Admite eliminación masiva.
Elimina memorias por conversationId.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `conversationId` | string | No | Identificador de conversación (p. ej., user-123, session-abc). Si se proporciona solo, elimina todas las memorias para esta conversación en todos los bloques. |
| `id` | string | No | Parámetro heredado para el identificador de conversación. Use conversationId en su lugar. Proporcionado para compatibilidad con versiones anteriores. |
| `blockId` | string | No | Identificador de bloque. Si se proporciona solo, elimina todas las memorias para este bloque en todas las conversaciones. Si se proporciona con conversationId, elimina las memorias para esa conversación específica en este bloque. |
| `blockName` | string | No | Nombre del bloque. Alternativa a blockId. Si se proporciona solo, elimina todas las memorias para bloques con este nombre. Si se proporciona con conversationId, elimina las memorias para esa conversación en bloques con este nombre. |
| `conversationId` | string | No | Identificador de conversación (ej., user-123, session-abc). Elimina todas las memorias de esta conversación. |
| `id` | string | No | Parámetro heredado para identificador de conversación. Usa conversationId en su lugar. Proporcionado para compatibilidad con versiones anteriores. |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Si la memoria fue eliminada con éxito |
| `success` | boolean | Si la memoria se eliminó exitosamente |
| `message` | string | Mensaje de éxito o error |
| `error` | string | Mensaje de error si la operación falló |

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

@@ -0,0 +1,124 @@
---
title: ServiceNow
description: Crear, leer, actualizar y eliminar registros de ServiceNow
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="servicenow"
color="#032D42"
/>
{/* MANUAL-CONTENT-START:intro */}
[ServiceNow](https://www.servicenow.com/) es una potente plataforma en la nube diseñada para optimizar y automatizar la gestión de servicios de TI (ITSM), flujos de trabajo y procesos empresariales en toda tu organización. ServiceNow te permite gestionar incidencias, solicitudes, tareas, usuarios y más utilizando su amplia API.
Con ServiceNow, puedes:
- **Automatizar flujos de trabajo de TI**: crear, leer, actualizar y eliminar registros en cualquier tabla de ServiceNow, como incidencias, tareas, solicitudes de cambio y usuarios.
- **Integrar sistemas**: conectar ServiceNow con tus otras herramientas y procesos para una automatización fluida.
- **Mantener una única fuente de verdad**: mantener todos tus datos de servicio y operaciones organizados y accesibles.
- **Impulsar la eficiencia operativa**: reducir el trabajo manual y mejorar la calidad del servicio con flujos de trabajo personalizables y automatización.
En Sim, la integración de ServiceNow permite que tus agentes interactúen directamente con tu instancia de ServiceNow como parte de sus flujos de trabajo. Los agentes pueden crear, leer, actualizar o eliminar registros en cualquier tabla de ServiceNow y aprovechar datos de tickets o usuarios para automatización y toma de decisiones sofisticadas. Esta integración conecta tu automatización de flujos de trabajo y operaciones de TI, permitiendo que tus agentes gestionen solicitudes de servicio, incidencias, usuarios y activos sin intervención manual. Al conectar Sim con ServiceNow, puedes automatizar tareas de gestión de servicios, mejorar los tiempos de respuesta y garantizar un acceso consistente y seguro a los datos de servicio vitales de tu organización.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integra ServiceNow en tu flujo de trabajo. Crea, lee, actualiza y elimina registros en cualquier tabla de ServiceNow, incluyendo incidencias, tareas, solicitudes de cambio, usuarios y más.
## Herramientas
### `servicenow_create_record`
Crear un nuevo registro en una tabla de ServiceNow
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Sí | URL de la instancia de ServiceNow \(p. ej., https://instance.service-now.com\) |
| `username` | string | Sí | Nombre de usuario de ServiceNow |
| `password` | string | Sí | Contraseña de ServiceNow |
| `tableName` | string | Sí | Nombre de la tabla \(p. ej., incident, task, sys_user\) |
| `fields` | json | Sí | Campos a establecer en el registro \(objeto JSON\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `record` | json | Registro de ServiceNow creado con sys_id y otros campos |
| `metadata` | json | Metadatos de la operación |
### `servicenow_read_record`
Leer registros de una tabla de ServiceNow
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Sí | URL de la instancia de ServiceNow \(p. ej., https://instance.service-now.com\) |
| `username` | string | Sí | Nombre de usuario de ServiceNow |
| `password` | string | Sí | Contraseña de ServiceNow |
| `tableName` | string | Sí | Nombre de la tabla |
| `sysId` | string | No | sys_id del registro específico |
| `number` | string | No | Número de registro \(p. ej., INC0010001\) |
| `query` | string | No | Cadena de consulta codificada \(p. ej., "active=true^priority=1"\) |
| `limit` | number | No | Número máximo de registros a devolver |
| `fields` | string | No | Lista de campos separados por comas a devolver |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `records` | array | Array de registros de ServiceNow |
| `metadata` | json | Metadatos de la operación |
### `servicenow_update_record`
Actualiza un registro existente en una tabla de ServiceNow
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Sí | URL de la instancia de ServiceNow \(ej., https://instance.service-now.com\) |
| `username` | string | Sí | Nombre de usuario de ServiceNow |
| `password` | string | Sí | Contraseña de ServiceNow |
| `tableName` | string | Sí | Nombre de la tabla |
| `sysId` | string | Sí | sys_id del registro a actualizar |
| `fields` | json | Sí | Campos a actualizar \(objeto JSON\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `record` | json | Registro de ServiceNow actualizado |
| `metadata` | json | Metadatos de la operación |
### `servicenow_delete_record`
Elimina un registro de una tabla de ServiceNow
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `instanceUrl` | string | Sí | URL de la instancia de ServiceNow \(ej., https://instance.service-now.com\) |
| `username` | string | Sí | Nombre de usuario de ServiceNow |
| `password` | string | Sí | Contraseña de ServiceNow |
| `tableName` | string | Sí | Nombre de la tabla |
| `sysId` | string | Sí | sys_id del registro a eliminar |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Si la eliminación fue exitosa |
| `metadata` | json | Metadatos de la operación |
## Notas
- Categoría: `tools`
- Tipo: `servicenow`

View File

@@ -54,7 +54,7 @@ Integra Slack en el flujo de trabajo. Puede enviar, actualizar y eliminar mensaj
### `slack_message`
Envía mensajes a canales o usuarios de Slack a través de la API de Slack. Compatible con el formato mrkdwn de Slack.
Envía mensajes a canales de Slack o mensajes directos. Compatible con el formato mrkdwn de Slack.
#### Entrada
@@ -62,9 +62,10 @@ Envía mensajes a canales o usuarios de Slack a través de la API de Slack. Comp
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Método de autenticación: oauth o bot_token |
| `botToken` | string | No | Token del bot para Bot personalizado |
| `channel` | string | | Canal de Slack objetivo (p. ej., #general) |
| `channel` | string | No | Canal de Slack objetivo (p. ej., #general) |
| `userId` | string | No | ID de usuario de Slack objetivo para mensajes directos (p. ej., U1234567890) |
| `text` | string | Sí | Texto del mensaje a enviar (admite formato mrkdwn de Slack) |
| `thread_ts` | string | No | Marca de tiempo del hilo para responder (crea respuesta en hilo) |
| `thread_ts` | string | No | Marca de tiempo del hilo al que responder (crea respuesta en hilo) |
| `files` | file[] | No | Archivos para adjuntar al mensaje |
#### Salida
@@ -109,8 +110,9 @@ Lee los últimos mensajes de los canales de Slack. Recupera el historial de conv
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Método de autenticación: oauth o bot_token |
| `botToken` | string | No | Token del bot para Bot personalizado |
| `channel` | string | | Canal de Slack del que leer mensajes (p. ej., #general) |
| `limit` | number | No | Número de mensajes a recuperar (predeterminado: 10, máx: 100) |
| `channel` | string | No | Canal de Slack del que leer mensajes (p. ej., #general) |
| `userId` | string | No | ID de usuario para conversación de mensaje directo (p. ej., U1234567890) |
| `limit` | number | No | Número de mensajes a recuperar (predeterminado: 10, máx: 15) |
| `oldest` | string | No | Inicio del rango de tiempo (marca de tiempo) |
| `latest` | string | No | Fin del rango de tiempo (marca de tiempo) |

View File

@@ -47,10 +47,11 @@ Consultar datos de una tabla de Supabase
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `projectId` | string | Sí | Tu ID de proyecto de Supabase \(ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | El nombre de la tabla de Supabase a consultar |
| `filter` | string | No | Filtro de PostgREST \(ej., "id=eq.123"\) |
| `orderBy` | string | No | Columna para ordenar \(añade DESC para orden descendente\) |
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | Nombre de la tabla Supabase a consultar |
| `schema` | string | No | Esquema de base de datos desde donde consultar \(predeterminado: public\). Usa esto para acceder a tablas en otros esquemas. |
| `filter` | string | No | Filtro PostgREST \(p. ej., "id=eq.123"\) |
| `orderBy` | string | No | Columna para ordenar \(añade DESC para descendente\) |
| `limit` | number | No | Número máximo de filas a devolver |
| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
@@ -68,9 +69,10 @@ Insertar datos en una tabla de Supabase
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| --------- | ---- | ----------- | ----------- |
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | Nombre de la tabla Supabase donde insertar datos |
| `schema` | string | No | Esquema de base de datos donde insertar \(predeterminado: public\). Usa esto para acceder a tablas en otros esquemas. |
| `data` | array | Sí | Los datos a insertar \(array de objetos o un solo objeto\) |
| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
@@ -88,9 +90,10 @@ Obtener una sola fila de una tabla de Supabase basada en criterios de filtro
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Sí | ID de tu proyecto de Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | Nombre de la tabla de Supabase para consultar |
| --------- | ---- | ----------- | ----------- |
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | Nombre de la tabla Supabase a consultar |
| `schema` | string | No | Esquema de base de datos desde donde consultar \(predeterminado: public\). Usa esto para acceder a tablas en otros esquemas. |
| `filter` | string | Sí | Filtro PostgREST para encontrar la fila específica \(p. ej., "id=eq.123"\) |
| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
@@ -111,8 +114,9 @@ Actualizar filas en una tabla de Supabase según criterios de filtro
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | Nombre de la tabla Supabase a actualizar |
| `schema` | string | No | Esquema de base de datos donde actualizar \(predeterminado: public\). Usa esto para acceder a tablas en otros esquemas. |
| `filter` | string | Sí | Filtro PostgREST para identificar las filas a actualizar \(p. ej., "id=eq.123"\) |
| `data` | object | Sí | Datos para actualizar en las filas coincidentes |
| `data` | object | Sí | Datos a actualizar en las filas coincidentes |
| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
#### Salida
@@ -132,6 +136,7 @@ Eliminar filas de una tabla de Supabase según criterios de filtro
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | Nombre de la tabla Supabase de la que eliminar |
| `schema` | string | No | Esquema de base de datos del que eliminar \(predeterminado: public\). Usa esto para acceder a tablas en otros esquemas. |
| `filter` | string | Sí | Filtro PostgREST para identificar las filas a eliminar \(p. ej., "id=eq.123"\) |
| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
@@ -152,7 +157,8 @@ Insertar o actualizar datos en una tabla de Supabase (operación upsert)
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | Nombre de la tabla Supabase donde hacer upsert de datos |
| `data` | array | | Los datos para upsert \(insertar o actualizar\) - array de objetos o un solo objeto |
| `schema` | string | No | Esquema de base de datos donde hacer upsert \(predeterminado: public\). Usa esto para acceder a tablas en otros esquemas. |
| `data` | array | Sí | Los datos para hacer upsert \(insertar o actualizar\) - array de objetos o un solo objeto |
| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
#### Salida
@@ -171,7 +177,8 @@ Contar filas en una tabla de Supabase
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | Nombre de la tabla Supabase de la que contar filas |
| `table` | string | Sí | El nombre de la tabla Supabase de la que contar filas |
| `schema` | string | No | Esquema de base de datos desde el que contar \(predeterminado: public\). Usa esto para acceder a tablas en otros esquemas. |
| `filter` | string | No | Filtro PostgREST \(p. ej., "status=eq.active"\) |
| `countType` | string | No | Tipo de conteo: exact, planned o estimated \(predeterminado: exact\) |
| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
@@ -192,7 +199,8 @@ Realizar búsqueda de texto completo en una tabla de Supabase
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
| `table` | string | Sí | Nombre de la tabla Supabase en la que buscar |
| `table` | string | Sí | El nombre de la tabla Supabase donde buscar |
| `schema` | string | No | Esquema de base de datos en el que buscar \(predeterminado: public\). Usa esto para acceder a tablas en otros esquemas. |
| `column` | string | Sí | La columna en la que buscar |
| `query` | string | Sí | La consulta de búsqueda |
| `searchType` | string | No | Tipo de búsqueda: plain, phrase o websearch \(predeterminado: websearch\) |
@@ -258,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

@@ -37,16 +37,19 @@ Envía una solicitud de completado de chat a cualquier proveedor de LLM compatib
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `model` | string | Sí | El modelo a utilizar \(p. ej., gpt-4o, claude-sonnet-4-5, gemini-2.0-flash\) |
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | --------- | ----------- |
| `model` | string | Sí | El modelo a utilizar \(por ejemplo, gpt-4o, claude-sonnet-4-5, gemini-2.0-flash\) |
| `systemPrompt` | string | No | Prompt del sistema para establecer el comportamiento del asistente |
| `context` | string | Sí | El mensaje del usuario o contexto para enviar al modelo |
| `apiKey` | string | No | Clave API para el proveedor \(usa la clave de la plataforma si no se proporciona para modelos alojados\) |
| `context` | string | Sí | El mensaje del usuario o contexto a enviar al modelo |
| `apiKey` | string | No | Clave API del proveedor \(usa la clave de la plataforma si no se proporciona para modelos alojados\) |
| `temperature` | number | No | Temperatura para la generación de respuestas \(0-2\) |
| `maxTokens` | number | No | Tokens máximos en la respuesta |
| `maxTokens` | number | No | Máximo de tokens en la respuesta |
| `azureEndpoint` | string | No | URL del endpoint de Azure OpenAI |
| `azureApiVersion` | string | No | Versión de la API de Azure OpenAI |
| `vertexProject` | string | No | ID del proyecto de Google Cloud para Vertex AI |
| `vertexLocation` | string | No | Ubicación de Google Cloud para Vertex AI \(por defecto us-central1\) |
| `vertexCredential` | string | No | ID de credencial OAuth de Google Cloud para Vertex AI |
#### Salida

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`

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