+
{
+ e.preventDefault()
+ e.stopPropagation()
+ setIsOpen(!isOpen)
+ }}
+ className='flex items-center gap-2 rounded-xl border border-border/20 bg-muted/50 px-3 py-2 text-sm backdrop-blur-sm transition-colors hover:bg-muted'
+ >
+ {languages[currentLang as keyof typeof languages]?.flag}
+
+ {languages[currentLang as keyof typeof languages]?.name}
+
+
+
+
+ {isOpen && (
+ <>
+
setIsOpen(false)} />
+
+ {Object.entries(languages).map(([code, lang]) => (
+ {
+ e.preventDefault()
+ e.stopPropagation()
+ handleLanguageChange(code)
+ }}
+ className={`flex w-full items-center gap-3 px-3 py-2.5 text-sm transition-colors first:rounded-t-lg last:rounded-b-lg hover:bg-muted/80 ${
+ currentLang === code ? 'bg-muted/60 font-medium text-primary' : 'text-foreground'
+ }`}
+ >
+ {lang.flag}
+ {lang.name}
+ {currentLang === code && }
+
+ ))}
+
+ >
+ )}
+
+ )
+}
diff --git a/apps/docs/content/docs/blocks/meta.json b/apps/docs/content/docs/blocks/meta.json
deleted file mode 100644
index 511620d6a9..0000000000
--- a/apps/docs/content/docs/blocks/meta.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "title": "Blocks",
- "pages": [
- "agent",
- "api",
- "condition",
- "evaluator",
- "function",
- "loop",
- "parallel",
- "response",
- "router",
- "workflow"
- ],
- "defaultOpen": false
-}
diff --git a/apps/docs/content/docs/connections/meta.json b/apps/docs/content/docs/connections/meta.json
deleted file mode 100644
index b86970f3e1..0000000000
--- a/apps/docs/content/docs/connections/meta.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "title": "Connections",
- "pages": ["basics", "tags", "data-structure"],
- "defaultOpen": false
-}
diff --git a/apps/docs/content/docs/copilot/meta.json b/apps/docs/content/docs/copilot/meta.json
deleted file mode 100644
index e87b1b27be..0000000000
--- a/apps/docs/content/docs/copilot/meta.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "title": "Copilot",
- "pages": ["index"],
- "defaultOpen": false
-}
diff --git a/apps/docs/content/docs/blocks/agent.mdx b/apps/docs/content/docs/en/blocks/agent.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/agent.mdx
rename to apps/docs/content/docs/en/blocks/agent.mdx
diff --git a/apps/docs/content/docs/blocks/api.mdx b/apps/docs/content/docs/en/blocks/api.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/api.mdx
rename to apps/docs/content/docs/en/blocks/api.mdx
diff --git a/apps/docs/content/docs/blocks/condition.mdx b/apps/docs/content/docs/en/blocks/condition.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/condition.mdx
rename to apps/docs/content/docs/en/blocks/condition.mdx
diff --git a/apps/docs/content/docs/blocks/evaluator.mdx b/apps/docs/content/docs/en/blocks/evaluator.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/evaluator.mdx
rename to apps/docs/content/docs/en/blocks/evaluator.mdx
diff --git a/apps/docs/content/docs/blocks/function.mdx b/apps/docs/content/docs/en/blocks/function.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/function.mdx
rename to apps/docs/content/docs/en/blocks/function.mdx
diff --git a/apps/docs/content/docs/blocks/index.mdx b/apps/docs/content/docs/en/blocks/index.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/index.mdx
rename to apps/docs/content/docs/en/blocks/index.mdx
diff --git a/apps/docs/content/docs/blocks/loop.mdx b/apps/docs/content/docs/en/blocks/loop.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/loop.mdx
rename to apps/docs/content/docs/en/blocks/loop.mdx
diff --git a/apps/docs/content/docs/blocks/parallel.mdx b/apps/docs/content/docs/en/blocks/parallel.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/parallel.mdx
rename to apps/docs/content/docs/en/blocks/parallel.mdx
diff --git a/apps/docs/content/docs/blocks/response.mdx b/apps/docs/content/docs/en/blocks/response.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/response.mdx
rename to apps/docs/content/docs/en/blocks/response.mdx
diff --git a/apps/docs/content/docs/blocks/router.mdx b/apps/docs/content/docs/en/blocks/router.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/router.mdx
rename to apps/docs/content/docs/en/blocks/router.mdx
diff --git a/apps/docs/content/docs/blocks/workflow.mdx b/apps/docs/content/docs/en/blocks/workflow.mdx
similarity index 100%
rename from apps/docs/content/docs/blocks/workflow.mdx
rename to apps/docs/content/docs/en/blocks/workflow.mdx
diff --git a/apps/docs/content/docs/connections/basics.mdx b/apps/docs/content/docs/en/connections/basics.mdx
similarity index 100%
rename from apps/docs/content/docs/connections/basics.mdx
rename to apps/docs/content/docs/en/connections/basics.mdx
diff --git a/apps/docs/content/docs/connections/data-structure.mdx b/apps/docs/content/docs/en/connections/data-structure.mdx
similarity index 100%
rename from apps/docs/content/docs/connections/data-structure.mdx
rename to apps/docs/content/docs/en/connections/data-structure.mdx
diff --git a/apps/docs/content/docs/connections/index.mdx b/apps/docs/content/docs/en/connections/index.mdx
similarity index 100%
rename from apps/docs/content/docs/connections/index.mdx
rename to apps/docs/content/docs/en/connections/index.mdx
diff --git a/apps/docs/content/docs/connections/tags.mdx b/apps/docs/content/docs/en/connections/tags.mdx
similarity index 100%
rename from apps/docs/content/docs/connections/tags.mdx
rename to apps/docs/content/docs/en/connections/tags.mdx
diff --git a/apps/docs/content/docs/copilot/index.mdx b/apps/docs/content/docs/en/copilot/index.mdx
similarity index 100%
rename from apps/docs/content/docs/copilot/index.mdx
rename to apps/docs/content/docs/en/copilot/index.mdx
diff --git a/apps/docs/content/docs/execution/api.mdx b/apps/docs/content/docs/en/execution/api.mdx
similarity index 100%
rename from apps/docs/content/docs/execution/api.mdx
rename to apps/docs/content/docs/en/execution/api.mdx
diff --git a/apps/docs/content/docs/execution/basics.mdx b/apps/docs/content/docs/en/execution/basics.mdx
similarity index 100%
rename from apps/docs/content/docs/execution/basics.mdx
rename to apps/docs/content/docs/en/execution/basics.mdx
diff --git a/apps/docs/content/docs/execution/costs.mdx b/apps/docs/content/docs/en/execution/costs.mdx
similarity index 100%
rename from apps/docs/content/docs/execution/costs.mdx
rename to apps/docs/content/docs/en/execution/costs.mdx
diff --git a/apps/docs/content/docs/execution/index.mdx b/apps/docs/content/docs/en/execution/index.mdx
similarity index 100%
rename from apps/docs/content/docs/execution/index.mdx
rename to apps/docs/content/docs/en/execution/index.mdx
diff --git a/apps/docs/content/docs/execution/logging.mdx b/apps/docs/content/docs/en/execution/logging.mdx
similarity index 100%
rename from apps/docs/content/docs/execution/logging.mdx
rename to apps/docs/content/docs/en/execution/logging.mdx
diff --git a/apps/docs/content/docs/getting-started/index.mdx b/apps/docs/content/docs/en/getting-started/index.mdx
similarity index 100%
rename from apps/docs/content/docs/getting-started/index.mdx
rename to apps/docs/content/docs/en/getting-started/index.mdx
diff --git a/apps/docs/content/docs/en/index.mdx b/apps/docs/content/docs/en/index.mdx
new file mode 100644
index 0000000000..e3bcf6045a
--- /dev/null
+++ b/apps/docs/content/docs/en/index.mdx
@@ -0,0 +1,60 @@
+---
+title: Documentation
+---
+
+import { Card, Cards } from 'fumadocs-ui/components/card'
+
+# Sim Documentation
+
+Welcome to Sim, a visual workflow builder for AI applications. Build powerful AI agents, automation workflows, and data processing pipelines by connecting blocks on a canvas.
+
+## Quick Start
+
+
+
+ Learn what you can build with Sim
+
+
+ Create your first workflow in 10 minutes
+
+
+ Learn about the building blocks
+
+
+ Explore 80+ built-in integrations
+
+
+
+## Core Concepts
+
+
+
+ Understand how data flows between blocks
+
+
+ Work with workflow and environment variables
+
+
+ Monitor workflow runs and manage costs
+
+
+ Start workflows via API, webhooks, or schedules
+
+
+
+## Advanced Features
+
+
+
+ Set up workspace roles and permissions
+
+
+ Define workflows as code
+
+
+ Connect external services with Model Context Protocol
+
+
+ Integrate Sim into your applications
+
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/introduction/index.mdx b/apps/docs/content/docs/en/introduction/index.mdx
similarity index 92%
rename from apps/docs/content/docs/introduction/index.mdx
rename to apps/docs/content/docs/en/introduction/index.mdx
index 36b8f9934f..c1d776f053 100644
--- a/apps/docs/content/docs/introduction/index.mdx
+++ b/apps/docs/content/docs/en/introduction/index.mdx
@@ -70,16 +70,16 @@ Need something custom? Use our [MCP integration](/mcp) to connect any external s
Ready to build your first AI workflow?
-
+
Create your first workflow in 10 minutes
-
+
Learn about the building blocks
-
+
Explore 60+ built-in integrations
-
+
Set up workspace roles and permissions
diff --git a/apps/docs/content/docs/knowledgebase/index.mdx b/apps/docs/content/docs/en/knowledgebase/index.mdx
similarity index 95%
rename from apps/docs/content/docs/knowledgebase/index.mdx
rename to apps/docs/content/docs/en/knowledgebase/index.mdx
index 824667a9b4..281d0efa3b 100644
--- a/apps/docs/content/docs/knowledgebase/index.mdx
+++ b/apps/docs/content/docs/en/knowledgebase/index.mdx
@@ -30,7 +30,7 @@ Sim supports PDF, Word (DOC/DOCX), plain text (TXT), Markdown (MD), HTML, Excel
Once your documents are processed, you can view and edit the individual chunks. This gives you full control over how your content is organized and searched.
-
+
### Chunk Configuration
- **Default chunk size**: 1,024 characters
@@ -58,7 +58,7 @@ When configured with Azure or [Mistral OCR](https://docs.mistral.ai/ocr/):
Once your documents are processed, you can use them in your AI workflows through the Knowledge block. This enables Retrieval-Augmented Generation (RAG), allowing your AI agents to access and reason over your document content to provide more accurate, contextual responses.
-
+
### Knowledge Block Features
- **Semantic search**: Find relevant content using natural language queries
diff --git a/apps/docs/content/docs/knowledgebase/tags.mdx b/apps/docs/content/docs/en/knowledgebase/tags.mdx
similarity index 100%
rename from apps/docs/content/docs/knowledgebase/tags.mdx
rename to apps/docs/content/docs/en/knowledgebase/tags.mdx
diff --git a/apps/docs/content/docs/mcp/index.mdx b/apps/docs/content/docs/en/mcp/index.mdx
similarity index 100%
rename from apps/docs/content/docs/mcp/index.mdx
rename to apps/docs/content/docs/en/mcp/index.mdx
diff --git a/apps/docs/content/docs/meta.json b/apps/docs/content/docs/en/meta.json
similarity index 100%
rename from apps/docs/content/docs/meta.json
rename to apps/docs/content/docs/en/meta.json
diff --git a/apps/docs/content/docs/permissions/roles-and-permissions.mdx b/apps/docs/content/docs/en/permissions/roles-and-permissions.mdx
similarity index 100%
rename from apps/docs/content/docs/permissions/roles-and-permissions.mdx
rename to apps/docs/content/docs/en/permissions/roles-and-permissions.mdx
diff --git a/apps/docs/content/docs/sdks/python.mdx b/apps/docs/content/docs/en/sdks/python.mdx
similarity index 100%
rename from apps/docs/content/docs/sdks/python.mdx
rename to apps/docs/content/docs/en/sdks/python.mdx
diff --git a/apps/docs/content/docs/sdks/typescript.mdx b/apps/docs/content/docs/en/sdks/typescript.mdx
similarity index 100%
rename from apps/docs/content/docs/sdks/typescript.mdx
rename to apps/docs/content/docs/en/sdks/typescript.mdx
diff --git a/apps/docs/content/docs/tools/airtable.mdx b/apps/docs/content/docs/en/tools/airtable.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/airtable.mdx
rename to apps/docs/content/docs/en/tools/airtable.mdx
diff --git a/apps/docs/content/docs/tools/arxiv.mdx b/apps/docs/content/docs/en/tools/arxiv.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/arxiv.mdx
rename to apps/docs/content/docs/en/tools/arxiv.mdx
diff --git a/apps/docs/content/docs/tools/browser_use.mdx b/apps/docs/content/docs/en/tools/browser_use.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/browser_use.mdx
rename to apps/docs/content/docs/en/tools/browser_use.mdx
diff --git a/apps/docs/content/docs/tools/clay.mdx b/apps/docs/content/docs/en/tools/clay.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/clay.mdx
rename to apps/docs/content/docs/en/tools/clay.mdx
diff --git a/apps/docs/content/docs/tools/confluence.mdx b/apps/docs/content/docs/en/tools/confluence.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/confluence.mdx
rename to apps/docs/content/docs/en/tools/confluence.mdx
diff --git a/apps/docs/content/docs/tools/discord.mdx b/apps/docs/content/docs/en/tools/discord.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/discord.mdx
rename to apps/docs/content/docs/en/tools/discord.mdx
diff --git a/apps/docs/content/docs/tools/elevenlabs.mdx b/apps/docs/content/docs/en/tools/elevenlabs.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/elevenlabs.mdx
rename to apps/docs/content/docs/en/tools/elevenlabs.mdx
diff --git a/apps/docs/content/docs/tools/exa.mdx b/apps/docs/content/docs/en/tools/exa.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/exa.mdx
rename to apps/docs/content/docs/en/tools/exa.mdx
diff --git a/apps/docs/content/docs/tools/file.mdx b/apps/docs/content/docs/en/tools/file.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/file.mdx
rename to apps/docs/content/docs/en/tools/file.mdx
diff --git a/apps/docs/content/docs/tools/firecrawl.mdx b/apps/docs/content/docs/en/tools/firecrawl.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/firecrawl.mdx
rename to apps/docs/content/docs/en/tools/firecrawl.mdx
diff --git a/apps/docs/content/docs/tools/generic_webhook.mdx b/apps/docs/content/docs/en/tools/generic_webhook.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/generic_webhook.mdx
rename to apps/docs/content/docs/en/tools/generic_webhook.mdx
diff --git a/apps/docs/content/docs/tools/github.mdx b/apps/docs/content/docs/en/tools/github.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/github.mdx
rename to apps/docs/content/docs/en/tools/github.mdx
diff --git a/apps/docs/content/docs/tools/gmail.mdx b/apps/docs/content/docs/en/tools/gmail.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/gmail.mdx
rename to apps/docs/content/docs/en/tools/gmail.mdx
diff --git a/apps/docs/content/docs/tools/google_calendar.mdx b/apps/docs/content/docs/en/tools/google_calendar.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/google_calendar.mdx
rename to apps/docs/content/docs/en/tools/google_calendar.mdx
diff --git a/apps/docs/content/docs/tools/google_docs.mdx b/apps/docs/content/docs/en/tools/google_docs.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/google_docs.mdx
rename to apps/docs/content/docs/en/tools/google_docs.mdx
diff --git a/apps/docs/content/docs/tools/google_drive.mdx b/apps/docs/content/docs/en/tools/google_drive.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/google_drive.mdx
rename to apps/docs/content/docs/en/tools/google_drive.mdx
diff --git a/apps/docs/content/docs/tools/google_search.mdx b/apps/docs/content/docs/en/tools/google_search.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/google_search.mdx
rename to apps/docs/content/docs/en/tools/google_search.mdx
diff --git a/apps/docs/content/docs/tools/google_sheets.mdx b/apps/docs/content/docs/en/tools/google_sheets.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/google_sheets.mdx
rename to apps/docs/content/docs/en/tools/google_sheets.mdx
diff --git a/apps/docs/content/docs/tools/huggingface.mdx b/apps/docs/content/docs/en/tools/huggingface.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/huggingface.mdx
rename to apps/docs/content/docs/en/tools/huggingface.mdx
diff --git a/apps/docs/content/docs/tools/hunter.mdx b/apps/docs/content/docs/en/tools/hunter.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/hunter.mdx
rename to apps/docs/content/docs/en/tools/hunter.mdx
diff --git a/apps/docs/content/docs/tools/image_generator.mdx b/apps/docs/content/docs/en/tools/image_generator.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/image_generator.mdx
rename to apps/docs/content/docs/en/tools/image_generator.mdx
diff --git a/apps/docs/content/docs/tools/index.mdx b/apps/docs/content/docs/en/tools/index.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/index.mdx
rename to apps/docs/content/docs/en/tools/index.mdx
diff --git a/apps/docs/content/docs/tools/jina.mdx b/apps/docs/content/docs/en/tools/jina.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/jina.mdx
rename to apps/docs/content/docs/en/tools/jina.mdx
diff --git a/apps/docs/content/docs/tools/jira.mdx b/apps/docs/content/docs/en/tools/jira.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/jira.mdx
rename to apps/docs/content/docs/en/tools/jira.mdx
diff --git a/apps/docs/content/docs/tools/knowledge.mdx b/apps/docs/content/docs/en/tools/knowledge.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/knowledge.mdx
rename to apps/docs/content/docs/en/tools/knowledge.mdx
diff --git a/apps/docs/content/docs/tools/linear.mdx b/apps/docs/content/docs/en/tools/linear.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/linear.mdx
rename to apps/docs/content/docs/en/tools/linear.mdx
diff --git a/apps/docs/content/docs/tools/linkup.mdx b/apps/docs/content/docs/en/tools/linkup.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/linkup.mdx
rename to apps/docs/content/docs/en/tools/linkup.mdx
diff --git a/apps/docs/content/docs/tools/mem0.mdx b/apps/docs/content/docs/en/tools/mem0.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/mem0.mdx
rename to apps/docs/content/docs/en/tools/mem0.mdx
diff --git a/apps/docs/content/docs/tools/memory.mdx b/apps/docs/content/docs/en/tools/memory.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/memory.mdx
rename to apps/docs/content/docs/en/tools/memory.mdx
diff --git a/apps/docs/content/docs/tools/microsoft_excel.mdx b/apps/docs/content/docs/en/tools/microsoft_excel.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/microsoft_excel.mdx
rename to apps/docs/content/docs/en/tools/microsoft_excel.mdx
diff --git a/apps/docs/content/docs/tools/microsoft_planner.mdx b/apps/docs/content/docs/en/tools/microsoft_planner.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/microsoft_planner.mdx
rename to apps/docs/content/docs/en/tools/microsoft_planner.mdx
diff --git a/apps/docs/content/docs/tools/microsoft_teams.mdx b/apps/docs/content/docs/en/tools/microsoft_teams.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/microsoft_teams.mdx
rename to apps/docs/content/docs/en/tools/microsoft_teams.mdx
diff --git a/apps/docs/content/docs/tools/mistral_parse.mdx b/apps/docs/content/docs/en/tools/mistral_parse.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/mistral_parse.mdx
rename to apps/docs/content/docs/en/tools/mistral_parse.mdx
diff --git a/apps/docs/content/docs/tools/mongodb.mdx b/apps/docs/content/docs/en/tools/mongodb.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/mongodb.mdx
rename to apps/docs/content/docs/en/tools/mongodb.mdx
diff --git a/apps/docs/content/docs/tools/mysql.mdx b/apps/docs/content/docs/en/tools/mysql.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/mysql.mdx
rename to apps/docs/content/docs/en/tools/mysql.mdx
diff --git a/apps/docs/content/docs/tools/notion.mdx b/apps/docs/content/docs/en/tools/notion.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/notion.mdx
rename to apps/docs/content/docs/en/tools/notion.mdx
diff --git a/apps/docs/content/docs/tools/onedrive.mdx b/apps/docs/content/docs/en/tools/onedrive.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/onedrive.mdx
rename to apps/docs/content/docs/en/tools/onedrive.mdx
diff --git a/apps/docs/content/docs/tools/openai.mdx b/apps/docs/content/docs/en/tools/openai.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/openai.mdx
rename to apps/docs/content/docs/en/tools/openai.mdx
diff --git a/apps/docs/content/docs/tools/outlook.mdx b/apps/docs/content/docs/en/tools/outlook.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/outlook.mdx
rename to apps/docs/content/docs/en/tools/outlook.mdx
diff --git a/apps/docs/content/docs/tools/parallel_ai.mdx b/apps/docs/content/docs/en/tools/parallel_ai.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/parallel_ai.mdx
rename to apps/docs/content/docs/en/tools/parallel_ai.mdx
diff --git a/apps/docs/content/docs/tools/perplexity.mdx b/apps/docs/content/docs/en/tools/perplexity.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/perplexity.mdx
rename to apps/docs/content/docs/en/tools/perplexity.mdx
diff --git a/apps/docs/content/docs/tools/pinecone.mdx b/apps/docs/content/docs/en/tools/pinecone.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/pinecone.mdx
rename to apps/docs/content/docs/en/tools/pinecone.mdx
diff --git a/apps/docs/content/docs/tools/postgresql.mdx b/apps/docs/content/docs/en/tools/postgresql.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/postgresql.mdx
rename to apps/docs/content/docs/en/tools/postgresql.mdx
diff --git a/apps/docs/content/docs/tools/qdrant.mdx b/apps/docs/content/docs/en/tools/qdrant.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/qdrant.mdx
rename to apps/docs/content/docs/en/tools/qdrant.mdx
diff --git a/apps/docs/content/docs/tools/reddit.mdx b/apps/docs/content/docs/en/tools/reddit.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/reddit.mdx
rename to apps/docs/content/docs/en/tools/reddit.mdx
diff --git a/apps/docs/content/docs/tools/s3.mdx b/apps/docs/content/docs/en/tools/s3.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/s3.mdx
rename to apps/docs/content/docs/en/tools/s3.mdx
diff --git a/apps/docs/content/docs/tools/schedule.mdx b/apps/docs/content/docs/en/tools/schedule.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/schedule.mdx
rename to apps/docs/content/docs/en/tools/schedule.mdx
diff --git a/apps/docs/content/docs/tools/serper.mdx b/apps/docs/content/docs/en/tools/serper.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/serper.mdx
rename to apps/docs/content/docs/en/tools/serper.mdx
diff --git a/apps/docs/content/docs/tools/sharepoint.mdx b/apps/docs/content/docs/en/tools/sharepoint.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/sharepoint.mdx
rename to apps/docs/content/docs/en/tools/sharepoint.mdx
diff --git a/apps/docs/content/docs/tools/slack.mdx b/apps/docs/content/docs/en/tools/slack.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/slack.mdx
rename to apps/docs/content/docs/en/tools/slack.mdx
diff --git a/apps/docs/content/docs/tools/stagehand.mdx b/apps/docs/content/docs/en/tools/stagehand.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/stagehand.mdx
rename to apps/docs/content/docs/en/tools/stagehand.mdx
diff --git a/apps/docs/content/docs/tools/stagehand_agent.mdx b/apps/docs/content/docs/en/tools/stagehand_agent.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/stagehand_agent.mdx
rename to apps/docs/content/docs/en/tools/stagehand_agent.mdx
diff --git a/apps/docs/content/docs/tools/supabase.mdx b/apps/docs/content/docs/en/tools/supabase.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/supabase.mdx
rename to apps/docs/content/docs/en/tools/supabase.mdx
diff --git a/apps/docs/content/docs/tools/tavily.mdx b/apps/docs/content/docs/en/tools/tavily.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/tavily.mdx
rename to apps/docs/content/docs/en/tools/tavily.mdx
diff --git a/apps/docs/content/docs/tools/telegram.mdx b/apps/docs/content/docs/en/tools/telegram.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/telegram.mdx
rename to apps/docs/content/docs/en/tools/telegram.mdx
diff --git a/apps/docs/content/docs/tools/thinking.mdx b/apps/docs/content/docs/en/tools/thinking.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/thinking.mdx
rename to apps/docs/content/docs/en/tools/thinking.mdx
diff --git a/apps/docs/content/docs/tools/translate.mdx b/apps/docs/content/docs/en/tools/translate.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/translate.mdx
rename to apps/docs/content/docs/en/tools/translate.mdx
diff --git a/apps/docs/content/docs/tools/twilio_sms.mdx b/apps/docs/content/docs/en/tools/twilio_sms.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/twilio_sms.mdx
rename to apps/docs/content/docs/en/tools/twilio_sms.mdx
diff --git a/apps/docs/content/docs/tools/typeform.mdx b/apps/docs/content/docs/en/tools/typeform.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/typeform.mdx
rename to apps/docs/content/docs/en/tools/typeform.mdx
diff --git a/apps/docs/content/docs/tools/vision.mdx b/apps/docs/content/docs/en/tools/vision.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/vision.mdx
rename to apps/docs/content/docs/en/tools/vision.mdx
diff --git a/apps/docs/content/docs/tools/wealthbox.mdx b/apps/docs/content/docs/en/tools/wealthbox.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/wealthbox.mdx
rename to apps/docs/content/docs/en/tools/wealthbox.mdx
diff --git a/apps/docs/content/docs/tools/webhook.mdx b/apps/docs/content/docs/en/tools/webhook.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/webhook.mdx
rename to apps/docs/content/docs/en/tools/webhook.mdx
diff --git a/apps/docs/content/docs/tools/whatsapp.mdx b/apps/docs/content/docs/en/tools/whatsapp.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/whatsapp.mdx
rename to apps/docs/content/docs/en/tools/whatsapp.mdx
diff --git a/apps/docs/content/docs/tools/wikipedia.mdx b/apps/docs/content/docs/en/tools/wikipedia.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/wikipedia.mdx
rename to apps/docs/content/docs/en/tools/wikipedia.mdx
diff --git a/apps/docs/content/docs/tools/x.mdx b/apps/docs/content/docs/en/tools/x.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/x.mdx
rename to apps/docs/content/docs/en/tools/x.mdx
diff --git a/apps/docs/content/docs/tools/youtube.mdx b/apps/docs/content/docs/en/tools/youtube.mdx
similarity index 100%
rename from apps/docs/content/docs/tools/youtube.mdx
rename to apps/docs/content/docs/en/tools/youtube.mdx
diff --git a/apps/docs/content/docs/triggers/schedule.mdx b/apps/docs/content/docs/en/triggers/schedule.mdx
similarity index 100%
rename from apps/docs/content/docs/triggers/schedule.mdx
rename to apps/docs/content/docs/en/triggers/schedule.mdx
diff --git a/apps/docs/content/docs/triggers/starter.mdx b/apps/docs/content/docs/en/triggers/starter.mdx
similarity index 100%
rename from apps/docs/content/docs/triggers/starter.mdx
rename to apps/docs/content/docs/en/triggers/starter.mdx
diff --git a/apps/docs/content/docs/triggers/webhook.mdx b/apps/docs/content/docs/en/triggers/webhook.mdx
similarity index 100%
rename from apps/docs/content/docs/triggers/webhook.mdx
rename to apps/docs/content/docs/en/triggers/webhook.mdx
diff --git a/apps/docs/content/docs/variables/environment-variables.mdx b/apps/docs/content/docs/en/variables/environment-variables.mdx
similarity index 100%
rename from apps/docs/content/docs/variables/environment-variables.mdx
rename to apps/docs/content/docs/en/variables/environment-variables.mdx
diff --git a/apps/docs/content/docs/variables/workflow-variables.mdx b/apps/docs/content/docs/en/variables/workflow-variables.mdx
similarity index 100%
rename from apps/docs/content/docs/variables/workflow-variables.mdx
rename to apps/docs/content/docs/en/variables/workflow-variables.mdx
diff --git a/apps/docs/content/docs/yaml/block-reference.mdx b/apps/docs/content/docs/en/yaml/block-reference.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/block-reference.mdx
rename to apps/docs/content/docs/en/yaml/block-reference.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/agent.mdx b/apps/docs/content/docs/en/yaml/blocks/agent.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/agent.mdx
rename to apps/docs/content/docs/en/yaml/blocks/agent.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/api.mdx b/apps/docs/content/docs/en/yaml/blocks/api.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/api.mdx
rename to apps/docs/content/docs/en/yaml/blocks/api.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/condition.mdx b/apps/docs/content/docs/en/yaml/blocks/condition.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/condition.mdx
rename to apps/docs/content/docs/en/yaml/blocks/condition.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/evaluator.mdx b/apps/docs/content/docs/en/yaml/blocks/evaluator.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/evaluator.mdx
rename to apps/docs/content/docs/en/yaml/blocks/evaluator.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/function.mdx b/apps/docs/content/docs/en/yaml/blocks/function.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/function.mdx
rename to apps/docs/content/docs/en/yaml/blocks/function.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/index.mdx b/apps/docs/content/docs/en/yaml/blocks/index.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/index.mdx
rename to apps/docs/content/docs/en/yaml/blocks/index.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/loop.mdx b/apps/docs/content/docs/en/yaml/blocks/loop.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/loop.mdx
rename to apps/docs/content/docs/en/yaml/blocks/loop.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/parallel.mdx b/apps/docs/content/docs/en/yaml/blocks/parallel.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/parallel.mdx
rename to apps/docs/content/docs/en/yaml/blocks/parallel.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/response.mdx b/apps/docs/content/docs/en/yaml/blocks/response.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/response.mdx
rename to apps/docs/content/docs/en/yaml/blocks/response.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/router.mdx b/apps/docs/content/docs/en/yaml/blocks/router.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/router.mdx
rename to apps/docs/content/docs/en/yaml/blocks/router.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/starter.mdx b/apps/docs/content/docs/en/yaml/blocks/starter.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/starter.mdx
rename to apps/docs/content/docs/en/yaml/blocks/starter.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/webhook.mdx b/apps/docs/content/docs/en/yaml/blocks/webhook.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/webhook.mdx
rename to apps/docs/content/docs/en/yaml/blocks/webhook.mdx
diff --git a/apps/docs/content/docs/yaml/blocks/workflow.mdx b/apps/docs/content/docs/en/yaml/blocks/workflow.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/blocks/workflow.mdx
rename to apps/docs/content/docs/en/yaml/blocks/workflow.mdx
diff --git a/apps/docs/content/docs/yaml/examples.mdx b/apps/docs/content/docs/en/yaml/examples.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/examples.mdx
rename to apps/docs/content/docs/en/yaml/examples.mdx
diff --git a/apps/docs/content/docs/yaml/index.mdx b/apps/docs/content/docs/en/yaml/index.mdx
similarity index 100%
rename from apps/docs/content/docs/yaml/index.mdx
rename to apps/docs/content/docs/en/yaml/index.mdx
diff --git a/apps/docs/content/docs/es/blocks/agent.mdx b/apps/docs/content/docs/es/blocks/agent.mdx
new file mode 100644
index 0000000000..5592c01ef7
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/agent.mdx
@@ -0,0 +1,306 @@
+---
+title: Agente
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+import { Video } from '@/components/ui/video'
+
+El bloque Agente sirve como interfaz entre tu flujo de trabajo y los Modelos de Lenguaje Grandes (LLMs). Ejecuta solicitudes de inferencia contra varios proveedores de IA, procesa entradas de lenguaje natural según las instrucciones definidas y genera salidas estructuradas o no estructuradas para su consumo posterior.
+
+
+
+
+
+## Descripción general
+
+El bloque Agente te permite:
+
+
+
+ Procesar lenguaje natural : Analizar la entrada del usuario y generar respuestas contextuales
+
+
+ Ejecutar tareas impulsadas por IA : Realizar análisis de contenido, generación y toma de decisiones
+
+
+ Llamar a herramientas externas : Acceder a APIs, bases de datos y servicios durante el procesamiento
+
+
+ Generar salida estructurada : Devolver datos JSON que coincidan con los requisitos de tu esquema
+
+
+
+## Opciones de configuración
+
+### Prompt del sistema
+
+El prompt del sistema establece los parámetros operativos y las restricciones de comportamiento del agente. Esta configuración define el rol del agente, la metodología de respuesta y los límites de procesamiento para todas las solicitudes entrantes.
+
+```markdown
+You are a helpful assistant that specializes in financial analysis.
+Always provide clear explanations and cite sources when possible.
+When responding to questions about investments, include risk disclaimers.
+```
+
+### Prompt del usuario
+
+El prompt del usuario representa los datos de entrada principales para el procesamiento de inferencia. Este parámetro acepta texto en lenguaje natural o datos estructurados que el agente analizará y a los que responderá. Las fuentes de entrada incluyen:
+
+- **Configuración estática**: Entrada de texto directa especificada en la configuración del bloque
+- **Entrada dinámica**: Datos pasados desde bloques anteriores a través de interfaces de conexión
+- **Generación en tiempo de ejecución**: Contenido generado programáticamente durante la ejecución del flujo de trabajo
+
+### Selección de modelo
+
+El bloque Agente admite múltiples proveedores de LLM a través de una interfaz de inferencia unificada. Los modelos disponibles incluyen:
+
+**Modelos de OpenAI**: GPT-5, GPT-4o, o1, o3, o4-mini, gpt-4.1 (inferencia basada en API)
+**Modelos de Anthropic**: Claude 3.7 Sonnet (inferencia basada en API)
+**Modelos de Google**: Gemini 2.5 Pro, Gemini 2.0 Flash (inferencia basada en API)
+**Proveedores alternativos**: Groq, Cerebras, xAI, DeepSeek (inferencia basada en API)
+**Despliegue local**: Modelos compatibles con Ollama (inferencia autohospedada)
+
+
+
+
+
+### Temperatura
+
+Controla la creatividad y aleatoriedad de las respuestas:
+
+
+
+ Respuestas más deterministas y enfocadas. Ideal para tareas factuales, atención al cliente y
+ situaciones donde la precisión es crítica.
+
+
+ Equilibrio entre creatividad y enfoque. Adecuado para aplicaciones de uso general que requieren
+ tanto precisión como cierta creatividad.
+
+
+ Respuestas más creativas y variadas. Ideal para escritura creativa, lluvia de ideas y generación
+ de ideas diversas.
+
+
+
+
+ El rango de temperatura (0-1 o 0-2) varía dependiendo del modelo seleccionado.
+
+
+### Clave API
+
+Tu clave API para el proveedor de LLM seleccionado. Se almacena de forma segura y se utiliza para la autenticación.
+
+### Herramientas
+
+Las herramientas amplían las capacidades del agente mediante integraciones de API externas y conexiones de servicios. El sistema de herramientas permite la llamada a funciones, permitiendo al agente ejecutar operaciones más allá de la generación de texto.
+
+**Proceso de integración de herramientas**:
+1. Accede a la sección de configuración de Herramientas dentro del bloque del Agente
+2. Selecciona entre más de 60 integraciones predefinidas o define funciones personalizadas
+3. Configura los parámetros de autenticación y las restricciones operativas
+
+
+
+
+
+**Categorías de herramientas disponibles**:
+- **Comunicación**: Gmail, Slack, Telegram, WhatsApp, Microsoft Teams
+- **Fuentes de datos**: Notion, Google Sheets, Airtable, Supabase, Pinecone
+- **Servicios web**: Firecrawl, Google Search, Exa AI, automatización de navegador
+- **Desarrollo**: GitHub, Jira, gestión de repositorios y problemas en Linear
+- **Servicios de IA**: OpenAI, Perplexity, Hugging Face, ElevenLabs
+
+**Control de ejecución de herramientas**:
+- **Auto**: El modelo determina la invocación de herramientas según el contexto y la necesidad
+- **Requerido**: La herramienta debe ser llamada durante cada solicitud de inferencia
+- **Ninguno**: Definición de herramienta disponible pero excluida del contexto del modelo
+
+
+
+
+
+### Formato de respuesta
+
+El parámetro de formato de respuesta impone la generación de salidas estructuradas mediante la validación de esquemas JSON. Esto asegura respuestas consistentes y legibles por máquina que se ajustan a estructuras de datos predefinidas:
+
+```json
+{
+ "name": "user_analysis",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "sentiment": {
+ "type": "string",
+ "enum": ["positive", "negative", "neutral"]
+ },
+ "confidence": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 1
+ }
+ },
+ "required": ["sentiment", "confidence"]
+ }
+}
+```
+
+Esta configuración restringe la salida del modelo para que cumpla con el esquema especificado, evitando respuestas de texto libre y asegurando la generación de datos estructurados.
+
+### Acceso a los resultados
+
+Después de que un agente completa su tarea, puedes acceder a sus salidas:
+
+- **`
`**: El texto de respuesta o datos estructurados del agente
+- **``**: Estadísticas de uso de tokens (prompt, completado, total)
+- **``**: Detalles de cualquier herramienta que el agente utilizó durante la ejecución
+- **``**: Costo estimado de la llamada a la API (si está disponible)
+
+## Funciones avanzadas
+
+### Memoria + Agente: Historial de conversación
+
+Utiliza un bloque `Memory` con un `id` consistente (por ejemplo, `chat`) para persistir mensajes entre ejecuciones, e incluir ese historial en el prompt del agente.
+
+- Añade el mensaje del usuario antes del agente
+- Lee el historial de conversación para contexto
+- Añade la respuesta del agente después de que se ejecute
+
+```yaml
+# 1) Add latest user message
+- Memory (operation: add)
+ id: chat
+ role: user
+ content: {{input}}
+
+# 2) Load conversation history
+- Memory (operation: get)
+ id: chat
+
+# 3) Run the agent with prior messages available
+- Agent
+ System Prompt: ...
+ User Prompt: |
+ Use the conversation so far:
+ {{memory_get.memories}}
+ Current user message: {{input}}
+
+# 4) Store the agent reply
+- Memory (operation: add)
+ id: chat
+ role: assistant
+ content: {{agent.content}}
+```
+
+Consulta la referencia del bloque `Memory` para más detalles: [/tools/memory](/tools/memory).
+
+## Entradas y salidas
+
+
+
+
+
+ Prompt del sistema : Instrucciones que definen el comportamiento y rol del agente
+
+
+ Prompt del usuario : Texto de entrada o datos a procesar
+
+
+ Modelo : Selección del modelo de IA (OpenAI, Anthropic, Google, etc.)
+
+
+ Temperatura : Control de aleatoriedad de respuesta (0-2)
+
+
+ Herramientas : Array de herramientas disponibles para llamadas a funciones
+
+
+ Formato de respuesta : Esquema JSON para salida estructurada
+
+
+
+
+
+
+ agent.content : Texto de respuesta o datos estructurados del agente
+
+
+ agent.tokens : Objeto de estadísticas de uso de tokens
+
+
+ agent.tool_calls : Array de detalles de ejecución de herramientas
+
+
+ agent.cost : Costo estimado de la llamada a la API (si está disponible)
+
+
+
+
+
+
+ Contenido : Salida de respuesta principal del agente
+
+
+ Metadatos : Estadísticas de uso y detalles de ejecución
+
+
+ Acceso : Disponible en bloques después del agente
+
+
+
+
+
+## Ejemplos de casos de uso
+
+### Automatización de atención al cliente
+
+
+
Escenario: Gestionar consultas de clientes con acceso a base de datos
+
+ El usuario envía un ticket de soporte a través del bloque API
+ El agente verifica pedidos/suscripciones en Postgres y busca en la base de conocimientos para obtener orientación
+ Si se necesita escalamiento, el agente crea una incidencia en Linear con el contexto relevante
+ El agente redacta una respuesta clara por correo electrónico
+ Gmail envía la respuesta al cliente
+ La conversación se guarda en Memoria para mantener el historial para mensajes futuros
+
+
+
+### Análisis de contenido multi-modelo
+
+
+
Escenario: Analizar contenido con diferentes modelos de IA
+
+ El bloque de función procesa el documento cargado
+ El agente con GPT-4o realiza análisis técnico
+ El agente con Claude analiza el sentimiento y tono
+ El bloque de función combina los resultados para el informe final
+
+
+
+### Asistente de investigación con herramientas
+
+
+
Escenario: Asistente de investigación con búsqueda web y acceso a documentos
+
+ Consulta del usuario recibida a través de entrada
+ El agente busca en la web usando la herramienta de Google Search
+ El agente accede a la base de datos de Notion para documentos internos
+ El agente compila un informe de investigación completo
+
+
+
+## Mejores prácticas
+
+- **Sé específico en los prompts del sistema**: Define claramente el rol, tono y limitaciones del agente. Cuanto más específicas sean tus instrucciones, mejor podrá el agente cumplir con su propósito previsto.
+- **Elige la configuración de temperatura adecuada**: Usa configuraciones de temperatura más bajas (0-0.3) cuando la precisión es importante, o aumenta la temperatura (0.7-2.0) para respuestas más creativas o variadas
+- **Aprovecha las herramientas de manera efectiva**: Integra herramientas que complementen el propósito del agente y mejoren sus capacidades. Sé selectivo sobre qué herramientas proporcionas para evitar sobrecargar al agente. Para tareas con poca superposición, usa otro bloque de Agente para obtener los mejores resultados.
diff --git a/apps/docs/content/docs/es/blocks/api.mdx b/apps/docs/content/docs/es/blocks/api.mdx
new file mode 100644
index 0000000000..24e259cc2e
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/api.mdx
@@ -0,0 +1,232 @@
+---
+title: API
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+
+El bloque API te permite conectar tu flujo de trabajo a servicios externos a través de endpoints API utilizando peticiones HTTP. Admite varios métodos como GET, POST, PUT, DELETE y PATCH, permitiéndote interactuar con prácticamente cualquier endpoint API.
+
+
+
+
+
+## Descripción general
+
+El bloque API te permite:
+
+
+
+ Conectar con servicios externos : Realizar peticiones HTTP a APIs REST y servicios web
+
+
+ Enviar y recibir datos : Procesar respuestas y transformar datos de fuentes externas
+
+
+ Integrar plataformas de terceros : Conectar con servicios como Stripe, Slack o APIs personalizadas
+
+
+ Gestionar la autenticación : Admitir varios métodos de autenticación, incluyendo tokens Bearer y claves API
+
+
+
+## Cómo funciona
+
+El bloque API procesa las peticiones HTTP a través de un enfoque estructurado:
+
+1. **Configurar petición** - Establecer URL, método, cabeceras y parámetros del cuerpo
+2. **Ejecutar petición** - Enviar petición HTTP al endpoint especificado
+3. **Procesar respuesta** - Gestionar datos de respuesta, códigos de estado y cabeceras
+4. **Gestión de errores** - Administrar tiempos de espera, reintentos y condiciones de error
+
+## Opciones de configuración
+
+### URL
+
+La URL del endpoint para la petición API. Puede ser:
+
+- Una URL estática introducida directamente en el bloque
+- Una URL dinámica conectada desde la salida de otro bloque
+- Una URL con parámetros de ruta
+
+### Método
+
+Selecciona el método HTTP para tu petición:
+
+- **GET**: Recuperar datos del servidor
+- **POST**: Enviar datos al servidor para crear un recurso
+- **PUT**: Actualizar un recurso existente en el servidor
+- **DELETE**: Eliminar un recurso del servidor
+- **PATCH**: Actualizar parcialmente un recurso existente
+
+### Parámetros de consulta
+
+Define pares clave-valor que se añadirán a la URL como parámetros de consulta. Por ejemplo:
+
+```
+Key: apiKey
+Value: your_api_key_here
+
+Key: limit
+Value: 10
+```
+
+Estos se añadirían a la URL como `?apiKey=your_api_key_here&limit=10`.
+
+### Cabeceras
+
+Configura las cabeceras HTTP para tu solicitud. Las cabeceras comunes incluyen:
+
+```
+Key: Content-Type
+Value: application/json
+
+Key: Authorization
+Value: Bearer your_token_here
+```
+
+### Cuerpo de la solicitud
+
+Para métodos que admiten un cuerpo de solicitud (POST, PUT, PATCH), puedes definir los datos a enviar. El cuerpo puede ser:
+
+- Datos JSON introducidos directamente en el bloque
+- Datos conectados desde la salida de otro bloque
+- Generados dinámicamente durante la ejecución del flujo de trabajo
+
+### Acceso a los resultados
+
+Después de completar una solicitud API, puedes acceder a sus salidas:
+
+- **``**: Los datos del cuerpo de respuesta de la API
+- **``**: Código de estado HTTP (200, 404, 500, etc.)
+- **``**: Cabeceras de respuesta del servidor
+- **``**: Detalles del error si la solicitud falló
+
+## Funciones avanzadas
+
+### Construcción dinámica de URL
+
+Construye URLs dinámicamente usando variables de bloques anteriores:
+
+```javascript
+// In a Function block before the API
+const userId = ;
+const apiUrl = `https://api.example.com/users/${userId}/profile`;
+```
+
+### Reintentos de solicitud
+
+El bloque API gestiona automáticamente:
+- Tiempos de espera de red con retroceso exponencial
+- Respuestas de límite de velocidad (códigos de estado 429)
+- Errores del servidor (códigos de estado 5xx) con lógica de reintento
+- Fallos de conexión con intentos de reconexión
+
+### Validación de respuesta
+
+Valida las respuestas de la API antes de procesarlas:
+
+```javascript
+// In a Function block after the API
+if ( === 200) {
+ const data = ;
+ // Process successful response
+} else {
+ // Handle error response
+ console.error(`API Error: ${}`);
+}
+```
+
+## Entradas y salidas
+
+
+
+
+
+ URL : El endpoint al que enviar la solicitud
+
+
+ Method : Método HTTP (GET, POST, PUT, DELETE, PATCH)
+
+
+ Query Parameters : Pares clave-valor para parámetros de URL
+
+
+ Headers : Cabeceras HTTP para autenticación y tipo de contenido
+
+
+ Body : Carga de solicitud para métodos POST/PUT/PATCH
+
+
+
+
+
+
+ api.data : Datos del cuerpo de respuesta de la llamada API
+
+
+ api.status : Código de estado HTTP devuelto por el servidor
+
+
+ api.headers : Cabeceras de respuesta del servidor
+
+
+ api.error : Detalles del error si la solicitud falló
+
+
+
+
+
+
+ Response Data : Contenido principal de respuesta de la API
+
+
+ Status Information : Estado HTTP y detalles de error
+
+
+ Access : Disponible en bloques después de la llamada API
+
+
+
+
+
+## Ejemplos de casos de uso
+
+### Obtener datos de perfil de usuario
+
+
+
Escenario: Recuperar información de usuario desde un servicio externo
+
+ El bloque de función construye el ID de usuario desde la entrada
+ El bloque API llama al endpoint GET /users/{id}
+ El bloque de función procesa y formatea los datos del usuario
+ El bloque de respuesta devuelve el perfil formateado
+
+
+
+### Procesamiento de pagos
+
+
+
Escenario: Procesar pago a través de la API de Stripe
+
+ El bloque de función valida los datos de pago
+ El bloque API crea la intención de pago a través de Stripe
+ El bloque de condición gestiona el éxito/fracaso del pago
+ El bloque Supabase actualiza el estado del pedido en la base de datos
+
+
+
+## Mejores prácticas
+
+- **Usa variables de entorno para datos sensibles**: No codifiques directamente claves API o credenciales
+- **Maneja los errores con elegancia**: Conecta lógica de manejo de errores para solicitudes fallidas
+- **Valida las respuestas**: Comprueba los códigos de estado y formatos de respuesta antes de procesar datos
+- **Respeta los límites de tasa**: Ten en cuenta los límites de tasa de la API e implementa la limitación apropiada
diff --git a/apps/docs/content/docs/es/blocks/condition.mdx b/apps/docs/content/docs/es/blocks/condition.mdx
new file mode 100644
index 0000000000..b92d36bb6c
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/condition.mdx
@@ -0,0 +1,242 @@
+---
+title: Condición
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'
+import { Image } from '@/components/ui/image'
+
+El bloque de Condición te permite ramificar la ruta de ejecución de tu flujo de trabajo basándose en expresiones booleanas, permitiéndote crear flujos de trabajo dinámicos y receptivos con diferentes rutas de ejecución. Evalúa condiciones y dirige el flujo de trabajo en consecuencia, permitiéndote controlar el flujo de ejecución basado en datos o lógica sin requerir un LLM.
+
+
+
+
+
+
+ Los bloques de Condición permiten una toma de decisiones determinista sin requerir un LLM, haciéndolos ideales
+ para lógica de ramificación sencilla.
+
+
+## Descripción general
+
+El bloque de Condición te permite:
+
+
+
+ Crear lógica de ramificación : dirigir flujos de trabajo basados en expresiones booleanas
+
+
+ Tomar decisiones basadas en datos : evaluar condiciones usando salidas de bloques anteriores
+
+
+ Manejar múltiples escenarios : definir múltiples condiciones con diferentes rutas
+
+
+ Proporcionar enrutamiento determinista : tomar decisiones sin requerir un LLM
+
+
+
+## Cómo funciona
+
+El bloque de Condición opera a través de un proceso de evaluación secuencial:
+
+1. **Evaluar expresión** - Procesa la expresión booleana de JavaScript/TypeScript usando los datos actuales del flujo de trabajo
+2. **Determinar resultado** - Devuelve verdadero o falso basado en la evaluación de la expresión
+3. **Dirigir flujo de trabajo** - Dirige la ejecución al bloque de destino apropiado basado en el resultado
+4. **Proporcionar contexto** - Genera metadatos sobre la decisión para depuración y monitoreo
+
+## Opciones de configuración
+
+### Condiciones
+
+Define una o más condiciones que serán evaluadas. Cada condición incluye:
+
+- **Expresión**: una expresión JavaScript/TypeScript que evalúa a verdadero o falso
+- **Ruta**: el bloque de destino al que dirigir si la condición es verdadera
+- **Descripción**: explicación opcional de lo que comprueba la condición
+
+Puedes crear múltiples condiciones que se evalúan en orden, donde la primera condición que coincida determina la ruta de ejecución.
+
+### Formato de expresión de condición
+
+Las condiciones utilizan sintaxis JavaScript y pueden hacer referencia a valores de entrada de bloques anteriores.
+
+
+
+
+ ```javascript
+ // Check if a score is above a threshold
+ > 75
+ ```
+
+
+
+
+ ```javascript
+ // Check if a text contains specific keywords
+ .includes('urgent') || .includes('emergency')
+ ```
+
+
+
+
+ ```javascript
+ // Check multiple conditions
+ >= 18 && === 'US'
+ ```
+
+
+
+
+### Acceso a resultados
+
+Después de evaluar una condición, puedes acceder a sus salidas:
+
+- **``**: Resultado booleano de la evaluación de la condición
+- **``**: ID de la condición que coincidió
+- **``**: Descripción del resultado de la evaluación
+- **``**: Detalles del destino de enrutamiento elegido
+
+## Funciones avanzadas
+
+### Expresiones complejas
+
+Usa operadores y funciones de JavaScript en las condiciones:
+
+```javascript
+// String operations
+.endsWith('@company.com')
+
+// Array operations
+.includes('urgent')
+
+// Mathematical operations
+ * 100 > 85
+
+// Date comparisons
+new Date() > new Date('2024-01-01')
+```
+
+### Evaluación de múltiples condiciones
+
+Las condiciones se evalúan en orden hasta que una coincida:
+
+```javascript
+// Condition 1: Check for high priority
+ === 'high'
+
+// Condition 2: Check for urgent keywords
+.toLowerCase().includes('urgent')
+
+// Condition 3: Default fallback
+true
+```
+
+### Manejo de errores
+
+Las condiciones manejan automáticamente:
+- Valores indefinidos o nulos con evaluación segura
+- Incompatibilidades de tipo con alternativas apropiadas
+- Expresiones inválidas con registro de errores
+- Variables faltantes con valores predeterminados
+
+## Entradas y salidas
+
+
+
+
+
+ Condiciones : Array de expresiones booleanas para evaluar
+
+
+ Expresiones : Condiciones JavaScript/TypeScript usando salidas de bloques
+
+
+ Rutas de enrutamiento : Bloques de destino para cada resultado de condición
+
+
+
+
+
+
+ condition.result : Resultado booleano de la evaluación de condición
+
+
+ condition.matched_condition : ID de la condición coincidente
+
+
+ condition.content : Descripción del resultado de evaluación
+
+
+ condition.path : Detalles del destino de enrutamiento elegido
+
+
+
+
+
+
+ Resultado booleano : Resultado principal de la evaluación de condición
+
+
+ Información de enrutamiento : Selección de ruta y detalles de condición
+
+
+ Acceso : Disponible en bloques después de la condición
+
+
+
+
+
+## Ejemplos de casos de uso
+
+### Enrutamiento de atención al cliente
+
+
+
Escenario: Enrutar tickets de soporte según la prioridad
+
+ El bloque API obtiene datos de tickets de soporte
+ La condición verifica si `` es igual a 'high'
+ Tickets de alta prioridad → Agente con herramientas de escalación
+ Tickets de prioridad normal → Agente de soporte estándar
+
+
+
+### Moderación de contenido
+
+
+
Escenario: Filtrar contenido basado en resultados de análisis
+
+ El agente analiza contenido generado por usuarios
+ La condición verifica si `` > 0.7
+ Contenido tóxico → Flujo de moderación
+ Contenido limpio → Flujo de publicación
+
+
+
+### Flujo de incorporación de usuarios
+
+
+
Escenario: Personalizar la incorporación según el tipo de usuario
+
+ El bloque de función procesa datos de registro de usuarios
+ La condición verifica si `` === 'enterprise'
+ Usuarios empresariales → Flujo de configuración avanzada
+ Usuarios individuales → Flujo de incorporación simple
+
+
+
+## Mejores prácticas
+
+- **Ordenar las condiciones correctamente**: Coloca las condiciones más específicas antes que las generales para asegurar que la lógica específica tenga prioridad sobre las alternativas
+- **Incluir una condición predeterminada**: Añade una condición general (`true`) como última condición para manejar casos no coincidentes y evitar que la ejecución del flujo de trabajo se quede atascada
+- **Mantener las expresiones simples**: Usa expresiones booleanas claras y directas para mejorar la legibilidad y facilitar la depuración
+- **Documentar tus condiciones**: Añade descripciones para explicar el propósito de cada condición para una mejor colaboración en equipo y mantenimiento
+- **Probar casos límite**: Verifica que las condiciones manejen correctamente los valores límite probando con valores en los extremos de los rangos de tus condiciones
diff --git a/apps/docs/content/docs/es/blocks/evaluator.mdx b/apps/docs/content/docs/es/blocks/evaluator.mdx
new file mode 100644
index 0000000000..f149c0d1b8
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/evaluator.mdx
@@ -0,0 +1,199 @@
+---
+title: Evaluador
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+import { Video } from '@/components/ui/video'
+
+El bloque Evaluador utiliza IA para puntuar y evaluar la calidad del contenido mediante métricas de evaluación personalizables que tú defines. Perfecto para control de calidad, pruebas A/B y para garantizar que tus resultados de IA cumplan con estándares específicos.
+
+
+
+
+
+## Descripción general
+
+El bloque Evaluador te permite:
+
+
+
+ Puntuar la calidad del contenido : Usa IA para evaluar contenido según métricas personalizadas con puntuaciones numéricas
+
+
+ Definir métricas personalizadas : Crea criterios de evaluación específicos adaptados a tu caso de uso
+
+
+ Automatizar el control de calidad : Construye flujos de trabajo que evalúan y filtran contenido automáticamente
+
+
+ Seguir el rendimiento : Monitoriza mejoras y consistencia a lo largo del tiempo con puntuaciones objetivas
+
+
+
+## Cómo funciona
+
+El bloque Evaluador procesa contenido mediante evaluación impulsada por IA:
+
+1. **Recibe contenido** - Toma el contenido de entrada de bloques previos en tu flujo de trabajo
+2. **Aplica métricas** - Evalúa el contenido según tus métricas personalizadas definidas
+3. **Genera puntuaciones** - El modelo de IA asigna puntuaciones numéricas para cada métrica
+4. **Proporciona resumen** - Devuelve una evaluación detallada con puntuaciones y explicaciones
+
+## Opciones de configuración
+
+### Métricas de evaluación
+
+Define métricas personalizadas para evaluar el contenido. Cada métrica incluye:
+
+- **Nombre**: Un identificador corto para la métrica
+- **Descripción**: Una explicación detallada de lo que mide la métrica
+- **Rango**: El rango numérico para la puntuación (p. ej., 1-5, 0-10)
+
+Ejemplos de métricas:
+
+```
+Accuracy (1-5): How factually accurate is the content?
+Clarity (1-5): How clear and understandable is the content?
+Relevance (1-5): How relevant is the content to the original query?
+```
+
+### Contenido
+
+El contenido a evaluar. Esto puede ser:
+
+- Proporcionado directamente en la configuración del bloque
+- Conectado desde la salida de otro bloque (típicamente un bloque de Agente)
+- Generado dinámicamente durante la ejecución del flujo de trabajo
+
+### Selección de modelo
+
+Elige un modelo de IA para realizar la evaluación:
+
+**OpenAI**: GPT-4o, o1, o3, o4-mini, gpt-4.1
+**Anthropic**: Claude 3.7 Sonnet
+**Google**: Gemini 2.5 Pro, Gemini 2.0 Flash
+**Otros proveedores**: Groq, Cerebras, xAI, DeepSeek
+**Modelos locales**: Cualquier modelo ejecutándose en Ollama
+
+
+
+
+
+**Recomendación**: Utiliza modelos con fuertes capacidades de razonamiento como GPT-4o o Claude 3.7 Sonnet para evaluaciones más precisas.
+
+### Clave API
+
+Tu clave API para el proveedor de LLM seleccionado. Esta se almacena de forma segura y se utiliza para la autenticación.
+
+## Cómo funciona
+
+1. El bloque Evaluador toma el contenido proporcionado y tus métricas personalizadas
+2. Genera un prompt especializado que instruye al LLM para evaluar el contenido
+3. El prompt incluye directrices claras sobre cómo puntuar cada métrica
+4. El LLM evalúa el contenido y devuelve puntuaciones numéricas para cada métrica
+5. El bloque Evaluador formatea estas puntuaciones como salida estructurada para su uso en tu flujo de trabajo
+
+## Ejemplos de casos de uso
+
+### Evaluación de calidad de contenido
+
+
+
Escenario: Evaluar la calidad de un artículo de blog antes de su publicación
+
+ El bloque de Agente genera el contenido del artículo
+ El Evaluador evalúa la precisión, legibilidad y engagement
+ El bloque de Condición verifica si las puntuaciones cumplen con los umbrales mínimos
+ Puntuaciones altas → Publicar, Puntuaciones bajas → Revisar y reintentar
+
+
+
+### Pruebas A/B de contenido
+
+
+
Escenario: Comparar múltiples respuestas generadas por IA
+
+ El bloque paralelo genera múltiples variaciones de respuesta
+ El evaluador puntúa cada variación según claridad y relevancia
+ El bloque de función selecciona la respuesta con mayor puntuación
+ El bloque de respuesta devuelve el mejor resultado
+
+
+
+### Control de calidad de atención al cliente
+
+
+
Escenario: Asegurar que las respuestas de soporte cumplan con los estándares de calidad
+
+ El agente de soporte genera una respuesta a la consulta del cliente
+ El evaluador puntúa la utilidad, empatía y precisión
+ Las puntuaciones se registran para entrenamiento y monitoreo de rendimiento
+ Las puntuaciones bajas activan un proceso de revisión humana
+
+
+
+## Entradas y salidas
+
+
+
+
+
+ Contenido : El texto o datos estructurados a evaluar
+
+
+ Métricas de evaluación : Criterios personalizados con rangos de puntuación
+
+
+ Modelo : Modelo de IA para análisis de evaluación
+
+
+ Clave API : Autenticación para el proveedor de LLM seleccionado
+
+
+
+
+
+
+ evaluator.content : Resumen de la evaluación
+
+
+ evaluator.model : Modelo utilizado para la evaluación
+
+
+ evaluator.tokens : Estadísticas de uso de tokens
+
+
+ evaluator.cost : Resumen de costos para la llamada de evaluación
+
+
+
+
+
+
+ Puntuaciones de métricas : Puntuaciones numéricas para cada métrica definida
+
+
+ Resumen de evaluación : Evaluación detallada con explicaciones
+
+
+ Acceso : Disponible en bloques después del evaluador
+
+
+
+
+
+## Mejores prácticas
+
+- **Usar descripciones específicas de métricas**: Define claramente qué mide cada métrica para obtener evaluaciones más precisas
+- **Elegir rangos apropiados**: Selecciona rangos de puntuación que proporcionen suficiente detalle sin ser excesivamente complejos
+- **Conectar con bloques de agente**: Utiliza bloques evaluadores para evaluar las salidas de bloques de agente y crear bucles de retroalimentación
+- **Usar métricas consistentes**: Para análisis comparativos, mantén métricas consistentes en evaluaciones similares
+- **Combinar múltiples métricas**: Usa varias métricas para obtener una evaluación integral
diff --git a/apps/docs/content/docs/es/blocks/function.mdx b/apps/docs/content/docs/es/blocks/function.mdx
new file mode 100644
index 0000000000..fcfe30fc7c
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/function.mdx
@@ -0,0 +1,156 @@
+---
+title: Función
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+
+El bloque Función te permite ejecutar código JavaScript o TypeScript personalizado en tus flujos de trabajo. Úsalo para transformar datos, realizar cálculos o implementar lógica personalizada que no está disponible en otros bloques.
+
+
+
+
+
+## Descripción general
+
+El bloque Función te permite:
+
+
+
+ Transformar datos : Convertir formatos, analizar texto, manipular arrays y objetos
+
+
+ Realizar cálculos : Operaciones matemáticas, estadísticas, cálculos financieros
+
+
+ Implementar lógica personalizada : Condicionales complejos, bucles y algoritmos
+
+
+ Procesar datos externos : Analizar respuestas, formatear solicitudes, gestionar autenticación
+
+
+
+## Cómo funciona
+
+El bloque Función ejecuta tu código en un entorno seguro y aislado:
+
+1. **Recibir entrada**: Accede a los datos de bloques anteriores a través del objeto `input`
+2. **Ejecutar código**: Ejecuta tu código JavaScript/Python
+3. **Devolver resultados**: Usa `return` para pasar datos al siguiente bloque
+4. **Manejar errores**: Gestión de errores y registro integrados
+
+## Ejecución remota (E2B)
+
+ - **Lenguajes**: Ejecuta JavaScript y Python en un sandbox E2B aislado.
+ - **Cómo activarlo**: Activa “Ejecución de código remoto” en el bloque Función.
+ - **Cuándo usarlo**: Lógica más pesada, bibliotecas externas o código específico de Python.
+ - **Rendimiento**: Más lento que JS local debido al inicio del sandbox y la sobrecarga de red.
+ - **Notas**: Requiere `E2B_API_KEY` si se ejecuta localmente. Para la menor latencia, usa JS nativo local (Modo rápido).
+
+## Entradas y salidas
+
+
+
+
+
+ Código : Tu código JavaScript/Python para ejecutar
+
+
+ Tiempo de espera : Tiempo máximo de ejecución (por defecto 30 segundos)
+
+
+ Datos de entrada : Todas las salidas de bloques conectados disponibles a través de variables
+
+
+
+
+
+
+ function.result : El valor devuelto por tu función
+
+
+ function.stdout : Salida de console.log() de tu código
+
+
+
+
+
+## Casos de uso de ejemplo
+
+### Pipeline de procesamiento de datos
+
+
+
Escenario: Transformar respuesta de API en datos estructurados
+
+ El bloque de API obtiene datos brutos del cliente
+ El bloque de función procesa y valida los datos
+ El bloque de función calcula métricas derivadas
+ El bloque de respuesta devuelve resultados formateados
+
+
+
+### Implementación de lógica de negocio
+
+
+
Escenario: Calcular puntuaciones y niveles de fidelidad
+
+ El agente recupera el historial de compras del cliente
+ El bloque de función calcula métricas de fidelidad
+ El bloque de función determina el nivel del cliente
+ El bloque de condición enruta según el nivel
+
+
+
+### Validación y limpieza de datos
+
+
+
Escenario: Validar y limpiar la entrada del usuario
+
+ Entrada del usuario recibida desde el envío del formulario
+ El bloque de función valida el formato de correo electrónico y números de teléfono
+ El bloque de función limpia y normaliza los datos
+ El bloque de API guarda los datos validados en la base de datos
+
+
+
+### Ejemplo: Calculadora de puntuación de fidelidad
+
+```javascript title="loyalty-calculator.js"
+// Process customer data and calculate loyalty score
+const { purchaseHistory, accountAge, supportTickets } = ;
+
+// Calculate metrics
+const totalSpent = purchaseHistory.reduce((sum, purchase) => sum + purchase.amount, 0);
+const purchaseFrequency = purchaseHistory.length / (accountAge / 365);
+const ticketRatio = supportTickets.resolved / supportTickets.total;
+
+// Calculate loyalty score (0-100)
+const spendScore = Math.min(totalSpent / 1000 * 30, 30);
+const frequencyScore = Math.min(purchaseFrequency * 20, 40);
+const supportScore = ticketRatio * 30;
+
+const loyaltyScore = Math.round(spendScore + frequencyScore + supportScore);
+
+return {
+ customer: ,
+ loyaltyScore,
+ loyaltyTier: loyaltyScore >= 80 ? "Platinum" : loyaltyScore >= 60 ? "Gold" : "Silver",
+ metrics: { spendScore, frequencyScore, supportScore }
+};
+```
+
+## Mejores prácticas
+
+- **Mantén las funciones enfocadas**: Escribe funciones que hagan una sola cosa bien para mejorar la mantenibilidad y la depuración
+- **Maneja los errores con elegancia**: Usa bloques try/catch para manejar posibles errores y proporcionar mensajes de error significativos
+- **Prueba casos extremos**: Asegúrate de que tu código maneje correctamente entradas inusuales, valores nulos y condiciones límite
+- **Optimiza el rendimiento**: Ten en cuenta la complejidad computacional y el uso de memoria para grandes conjuntos de datos
+- **Usa console.log() para depuración**: Aprovecha la salida stdout para depurar y monitorear la ejecución de funciones
diff --git a/apps/docs/content/docs/es/blocks/index.mdx b/apps/docs/content/docs/es/blocks/index.mdx
new file mode 100644
index 0000000000..17cd943aa3
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/index.mdx
@@ -0,0 +1,129 @@
+---
+title: Bloques
+description: Los componentes de construcción de tus flujos de trabajo de IA
+---
+
+import { Card, Cards } from 'fumadocs-ui/components/card'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Video } from '@/components/ui/video'
+
+Los bloques son los componentes de construcción que conectas para crear flujos de trabajo de IA. Piensa en ellos como módulos especializados que manejan tareas específicas—desde chatear con modelos de IA hasta realizar llamadas API o procesar datos.
+
+
+
+
+
+## Tipos de bloques principales
+
+Sim proporciona siete tipos de bloques principales que manejan las funciones esenciales de los flujos de trabajo de IA:
+
+### Bloques de procesamiento
+- **[Agente](/blocks/agent)** - Chatea con modelos de IA (OpenAI, Anthropic, Google, modelos locales)
+- **[Función](/blocks/function)** - Ejecuta código personalizado de JavaScript/TypeScript
+- **[API](/blocks/api)** - Conecta con servicios externos mediante peticiones HTTP
+
+### Bloques lógicos
+- **[Condición](/blocks/condition)** - Ramifica caminos de flujo de trabajo basados en expresiones booleanas
+- **[Enrutador](/blocks/router)** - Usa IA para dirigir inteligentemente las solicitudes a diferentes caminos
+- **[Evaluador](/blocks/evaluator)** - Puntúa y evalúa la calidad del contenido usando IA
+
+### Bloques de salida
+- **[Respuesta](/blocks/response)** - Formatea y devuelve resultados finales de tu flujo de trabajo
+
+## Cómo funcionan los bloques
+
+Cada bloque tiene tres componentes principales:
+
+**Entradas**: Datos que llegan al bloque desde otros bloques o entrada del usuario
+**Configuración**: Ajustes que controlan cómo se comporta el bloque
+**Salidas**: Datos que el bloque produce para que otros bloques los utilicen
+
+
+
+ Recibir entrada : El bloque recibe datos de bloques conectados o entrada del usuario
+
+
+ Procesar : El bloque procesa la entrada según su configuración
+
+
+ Resultados de salida : El bloque produce datos de salida para los siguientes bloques en el flujo de trabajo
+
+
+
+## Conectando bloques
+
+Creas flujos de trabajo conectando bloques entre sí. La salida de un bloque se convierte en la entrada de otro:
+
+- **Arrastra para conectar**: Arrastra desde un puerto de salida a un puerto de entrada
+- **Conexiones múltiples**: Una salida puede conectarse a múltiples entradas
+- **Rutas ramificadas**: Algunos bloques pueden dirigir a diferentes rutas según las condiciones
+
+
+
+
+
+## Patrones comunes
+
+### Procesamiento secuencial
+Conecta bloques en cadena donde cada bloque procesa la salida del anterior:
+
+```
+User Input → Agent → Function → Response
+```
+
+### Ramificación condicional
+Utiliza bloques de Condición o Enrutador para crear diferentes rutas:
+
+```
+User Input → Router → Agent A (for questions)
+ → Agent B (for commands)
+```
+
+### Control de calidad
+Utiliza bloques Evaluadores para evaluar y filtrar salidas:
+
+```
+Agent → Evaluator → Condition → Response (if good)
+ → Agent (retry if bad)
+```
+
+## Configuración de bloques
+
+Cada tipo de bloque tiene opciones de configuración específicas:
+
+**Todos los bloques**:
+- Conexiones de entrada/salida
+- Comportamiento de manejo de errores
+- Configuración de tiempo de espera de ejecución
+
+**Bloques de IA** (Agente, Enrutador, Evaluador):
+- Selección de modelo (OpenAI, Anthropic, Google, local)
+- Claves API y autenticación
+- Temperatura y otros parámetros del modelo
+- Instrucciones y prompts del sistema
+
+**Bloques lógicos** (Condición, Función):
+- Expresiones o código personalizado
+- Referencias de variables
+- Configuración del entorno de ejecución
+
+**Bloques de integración** (API, Respuesta):
+- Configuración de endpoint
+- Cabeceras y autenticación
+- Formato de solicitud/respuesta
+
+
+
+ Conéctate a modelos de IA y crea respuestas inteligentes
+
+
+ Ejecuta código personalizado para procesar y transformar datos
+
+
+ Intégrate con servicios externos y APIs
+
+
+ Crea lógica de ramificación basada en evaluación de datos
+
+
diff --git a/apps/docs/content/docs/es/blocks/loop.mdx b/apps/docs/content/docs/es/blocks/loop.mdx
new file mode 100644
index 0000000000..8e14c51f4f
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/loop.mdx
@@ -0,0 +1,211 @@
+---
+title: Loop
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+
+El bloque Loop es un bloque contenedor en Sim que permite crear flujos de trabajo iterativos ejecutando un grupo de bloques repetidamente. Los bucles permiten el procesamiento iterativo en tus flujos de trabajo.
+
+El bloque Loop admite dos tipos de iteración:
+
+
+ Los bloques Loop son nodos contenedores que pueden albergar otros bloques dentro de ellos. Los bloques dentro de un bucle se ejecutarán múltiples veces según tu configuración.
+
+
+## Descripción general
+
+El bloque Loop te permite:
+
+
+
+ Iterar sobre colecciones : Procesar arrays u objetos un elemento a la vez
+
+
+ Repetir operaciones : Ejecutar bloques un número fijo de veces
+
+
+ Procesamiento secuencial : Manejar transformación de datos en iteraciones ordenadas
+
+
+ Agregar resultados : Recopilar salidas de todas las iteraciones del bucle
+
+
+
+## Cómo funciona
+
+El bloque Loop ejecuta los bloques contenidos a través de iteración secuencial:
+
+1. **Inicializar bucle** - Configurar parámetros de iteración (contador o colección)
+2. **Ejecutar iteración** - Ejecutar bloques contenidos para la iteración actual
+3. **Recopilar resultados** - Almacenar la salida de cada iteración
+4. **Continuar o completar** - Pasar a la siguiente iteración o finalizar el bucle
+
+## Opciones de configuración
+
+### Tipo de bucle
+
+Elige entre dos tipos de bucles:
+
+
+
+ **For Loop (Iteraciones)** - Un bucle numérico que se ejecuta un número fijo de veces:
+
+
+
+
+
+ Úsalo cuando necesites repetir una operación un número específico de veces.
+
+
+ ```
+ Example: Run 5 times
+ - Iteration 1
+ - Iteration 2
+ - Iteration 3
+ - Iteration 4
+ - Iteration 5
+ ```
+
+
+
+ **Bucle ForEach (Colección)** - Un bucle basado en colecciones que itera sobre cada elemento en un array u objeto:
+
+
+
+
+
+ Úsalo cuando necesites procesar una colección de elementos.
+
+
+ ```
+ Example: Process ["apple", "banana", "orange"]
+ - Iteration 1: Process "apple"
+ - Iteration 2: Process "banana"
+ - Iteration 3: Process "orange"
+ ```
+
+
+
+
+## Cómo usar los bucles
+
+### Creación de un bucle
+
+1. Arrastra un bloque de bucle desde la barra de herramientas a tu lienzo
+2. Configura el tipo de bucle y los parámetros
+3. Arrastra otros bloques dentro del contenedor del bucle
+4. Conecta los bloques según sea necesario
+
+### Acceso a los resultados
+
+Después de que un bucle se completa, puedes acceder a los resultados agregados:
+
+- **``**: Array de resultados de todas las iteraciones del bucle
+
+## Ejemplos de casos de uso
+
+### Procesamiento de resultados de API
+
+
+
Escenario: Procesar múltiples registros de clientes
+
+ El bloque API obtiene la lista de clientes
+ El bucle ForEach itera sobre cada cliente
+ Dentro del bucle: El agente analiza los datos del cliente
+ Dentro del bucle: La función almacena los resultados del análisis
+
+
+
+### Generación iterativa de contenido
+
+
+
Escenario: Generar múltiples variaciones
+
+ Configurar el bucle For para 5 iteraciones
+ Dentro del bucle: El agente genera una variación de contenido
+ Dentro del bucle: El evaluador puntúa el contenido
+ Después del bucle: La función selecciona la mejor variación
+
+
+
+## Características avanzadas
+
+### Limitaciones
+
+
+ Los bloques contenedores (Bucles y Paralelos) no pueden anidarse unos dentro de otros. Esto significa:
+ - No puedes colocar un bloque de Bucle dentro de otro bloque de Bucle
+ - No puedes colocar un bloque Paralelo dentro de un bloque de Bucle
+ - No puedes colocar ningún bloque contenedor dentro de otro bloque contenedor
+
+ Si necesitas iteración multidimensional, considera reestructurar tu flujo de trabajo para usar bucles secuenciales o procesar datos por etapas.
+
+
+
+ Los bucles se ejecutan secuencialmente, no en paralelo. Si necesitas ejecución concurrente, utiliza el bloque Paralelo en su lugar.
+
+
+## Entradas y salidas
+
+
+
+
+
+ Tipo de bucle : Elige entre 'for' o 'forEach'
+
+
+ Iteraciones : Número de veces a ejecutar (bucles for)
+
+
+ Colección : Array u objeto sobre el que iterar (bucles forEach)
+
+
+
+
+
+
+ loop.currentItem : Elemento actual que se está procesando
+
+
+ loop.index : Número de iteración actual (base 0)
+
+
+ loop.items : Colección completa (bucles forEach)
+
+
+
+
+
+
+ loop.results : Array con todos los resultados de las iteraciones
+
+
+ Estructura : Los resultados mantienen el orden de iteración
+
+
+ Acceso : Disponible en bloques después del bucle
+
+
+
+
+
+## Mejores prácticas
+
+- **Establece límites razonables**: Mantén un número razonable de iteraciones para evitar tiempos de ejecución largos
+- **Usa ForEach para colecciones**: Cuando proceses arrays u objetos, usa bucles ForEach en lugar de bucles For
+- **Maneja los errores con elegancia**: Considera añadir manejo de errores dentro de los bucles para flujos de trabajo robustos
diff --git a/apps/docs/content/docs/es/blocks/parallel.mdx b/apps/docs/content/docs/es/blocks/parallel.mdx
new file mode 100644
index 0000000000..265a81700f
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/parallel.mdx
@@ -0,0 +1,231 @@
+---
+title: Paralelo
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+
+El bloque Paralelo es un bloque contenedor en Sim que permite ejecutar múltiples instancias de bloques simultáneamente para un procesamiento más rápido del flujo de trabajo.
+
+El bloque Paralelo admite dos tipos de ejecución concurrente:
+
+
+ Los bloques Paralelos son nodos contenedores que ejecutan su contenido múltiples veces simultáneamente, a diferencia de los bucles que ejecutan secuencialmente.
+
+
+## Descripción general
+
+El bloque Paralelo te permite:
+
+
+
+ Distribuir trabajo : Procesar múltiples elementos concurrentemente
+
+
+ Acelerar la ejecución : Ejecutar operaciones independientes simultáneamente
+
+
+ Manejar operaciones masivas : Procesar grandes conjuntos de datos eficientemente
+
+
+ Agregar resultados : Recopilar salidas de todas las ejecuciones paralelas
+
+
+
+## Opciones de configuración
+
+### Tipo de paralelo
+
+Elige entre dos tipos de ejecución paralela:
+
+
+
+ **Paralelo basado en conteo** - Ejecuta un número fijo de instancias paralelas:
+
+
+
+
+
+ Usa esto cuando necesites ejecutar la misma operación múltiples veces concurrentemente.
+
+
+ ```
+ Example: Run 5 parallel instances
+ - Instance 1 ┐
+ - Instance 2 ├─ All execute simultaneously
+ - Instance 3 │
+ - Instance 4 │
+ - Instance 5 ┘
+ ```
+
+
+
+ **Paralelo basado en colección** - Distribuye una colección entre instancias paralelas:
+
+
+
+
+
+ Cada instancia procesa un elemento de la colección simultáneamente.
+
+
+ ```
+ Example: Process ["task1", "task2", "task3"] in parallel
+ - Instance 1: Process "task1" ┐
+ - Instance 2: Process "task2" ├─ All execute simultaneously
+ - Instance 3: Process "task3" ┘
+ ```
+
+
+
+
+## Cómo usar bloques paralelos
+
+### Creación de un bloque paralelo
+
+1. Arrastra un bloque Paralelo desde la barra de herramientas a tu lienzo
+2. Configura el tipo de paralelo y los parámetros
+3. Arrastra un solo bloque dentro del contenedor paralelo
+4. Conecta el bloque según sea necesario
+
+### Acceso a los resultados
+
+Después de que un bloque paralelo se complete, puedes acceder a los resultados agregados:
+
+- **``**: Array de resultados de todas las instancias paralelas
+
+## Ejemplos de casos de uso
+
+### Procesamiento de API por lotes
+
+
+
Escenario: Procesar múltiples llamadas API simultáneamente
+
+ Bloque paralelo con colección de endpoints API
+ Dentro del paralelo: El bloque API llama a cada endpoint
+ Después del paralelo: Procesar todas las respuestas juntas
+
+
+
+### Procesamiento de IA con múltiples modelos
+
+
+
Escenario: Obtener respuestas de múltiples modelos de IA
+
+ Paralelo basado en colección sobre una lista de IDs de modelos (p. ej., ["gpt-4o", "claude-3.7-sonnet", "gemini-2.5-pro"])
+ Dentro del paralelo: El modelo del agente se establece al elemento actual de la colección
+ Después del paralelo: Comparar y seleccionar la mejor respuesta
+
+
+
+## Características avanzadas
+
+### Agregación de resultados
+
+Los resultados de todas las instancias paralelas se recopilan automáticamente:
+
+```javascript
+// In a Function block after the parallel
+const allResults = input.parallel.results;
+// Returns: [result1, result2, result3, ...]
+```
+
+### Aislamiento de instancias
+
+Cada instancia paralela se ejecuta independientemente:
+- Ámbitos de variables separados
+- Sin estado compartido entre instancias
+- Los fallos en una instancia no afectan a las demás
+
+### Limitaciones
+
+
+ Los bloques contenedores (Bucles y Paralelos) no pueden anidarse unos dentro de otros. Esto significa:
+ - No puedes colocar un bloque de Bucle dentro de un bloque Paralelo
+ - No puedes colocar otro bloque Paralelo dentro de un bloque Paralelo
+ - No puedes colocar ningún bloque contenedor dentro de otro bloque contenedor
+
+
+
+ Los bloques paralelos solo pueden contener un único bloque. No puedes tener múltiples bloques conectados entre sí dentro de un paralelo - en ese caso, solo se ejecutaría el primer bloque.
+
+
+
+ Aunque la ejecución paralela es más rápida, ten en cuenta:
+ - Los límites de tasa de las API al realizar solicitudes concurrentes
+ - El uso de memoria con conjuntos de datos grandes
+ - Máximo de 20 instancias concurrentes para evitar el agotamiento de recursos
+
+
+## Paralelo vs Bucle
+
+Entendiendo cuándo usar cada uno:
+
+| Característica | Paralelo | Bucle |
+|---------|----------|------|
+| Ejecución | Concurrente | Secuencial |
+| Velocidad | Más rápido para operaciones independientes | Más lento pero ordenado |
+| Orden | Sin orden garantizado | Mantiene el orden |
+| Caso de uso | Operaciones independientes | Operaciones dependientes |
+| Uso de recursos | Mayor | Menor |
+
+## Entradas y Salidas
+
+
+
+
+
+ Tipo de paralelo : Elige entre 'count' o 'collection'
+
+
+ Count : Número de instancias a ejecutar (basado en conteo)
+
+
+ Collection : Array u objeto a distribuir (basado en colección)
+
+
+
+
+
+
+ parallel.currentItem : Elemento para esta instancia
+
+
+ parallel.index : Número de instancia (base 0)
+
+
+ parallel.items : Colección completa (basado en colección)
+
+
+
+
+
+
+ parallel.results : Array de todos los resultados de instancias
+
+
+ Access : Disponible en bloques después del paralelo
+
+
+
+
+
+## Mejores prácticas
+
+- **Solo operaciones independientes**: Asegúrate de que las operaciones no dependan entre sí
+- **Manejo de límites de tasa**: Añade retrasos o limitaciones para flujos de trabajo con uso intensivo de API
+- **Manejo de errores**: Cada instancia debe manejar sus propios errores correctamente
diff --git a/apps/docs/content/docs/es/blocks/response.mdx b/apps/docs/content/docs/es/blocks/response.mdx
new file mode 100644
index 0000000000..b3cde4c940
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/response.mdx
@@ -0,0 +1,246 @@
+---
+title: Respuesta
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+
+El bloque de Respuesta es el paso final en tu flujo de trabajo que formatea y envía una respuesta estructurada a las llamadas API. Es como la declaración "return" para todo tu flujo de trabajo—empaqueta los resultados y los envía de vuelta.
+
+
+
+
+
+
+ Los bloques de respuesta son bloques terminales - finalizan la ejecución del flujo de trabajo y no pueden conectarse a otros bloques.
+
+
+## Descripción general
+
+El bloque de Respuesta te permite:
+
+
+
+ Formatear respuestas API : Estructurar los resultados del flujo de trabajo en respuestas HTTP adecuadas
+
+
+ Establecer códigos de estado : Configurar códigos de estado HTTP apropiados según los resultados del flujo de trabajo
+
+
+ Controlar encabezados : Añadir encabezados personalizados para respuestas API y webhooks
+
+
+ Transformar datos : Convertir variables del flujo de trabajo en formatos de respuesta amigables para el cliente
+
+
+
+## Cómo funciona
+
+El bloque de Respuesta finaliza la ejecución del flujo de trabajo:
+
+1. **Recopilar datos** - Reúne variables y salidas de bloques anteriores
+2. **Formatear respuesta** - Estructura los datos según tu configuración
+3. **Establecer detalles HTTP** - Aplica códigos de estado y encabezados
+4. **Enviar respuesta** - Devuelve la respuesta formateada al solicitante de la API
+
+## Cuándo necesitas bloques de respuesta
+
+- **Endpoints API**: Cuando tu flujo de trabajo es llamado vía API, los bloques de Respuesta formatean los datos de retorno
+- **Webhooks**: Devuelven confirmación o datos al sistema que realiza la llamada
+- **Pruebas**: Ver resultados formateados al probar tu flujo de trabajo
+
+## Dos formas de construir respuestas
+
+### Modo constructor (recomendado)
+Interfaz visual para construir la estructura de respuesta:
+- Arrastrar y soltar campos
+- Referenciar variables de flujo de trabajo fácilmente
+- Vista previa visual de la estructura de respuesta
+
+### Modo editor (avanzado)
+Escribir JSON directamente:
+- Control total sobre el formato de respuesta
+- Soporte para estructuras anidadas complejas
+- Usar sintaxis `` para valores dinámicos
+
+## Opciones de configuración
+
+### Datos de respuesta
+
+Los datos de respuesta son el contenido principal que se enviará de vuelta al solicitante de la API. Deben estar formateados como JSON y pueden incluir:
+
+- Valores estáticos
+- Referencias dinámicas a variables de flujo de trabajo usando la sintaxis ``
+- Objetos y matrices anidados
+- Cualquier estructura JSON válida
+
+### Código de estado
+
+Establece el código de estado HTTP para la respuesta. Los códigos de estado comunes incluyen:
+
+
+
+
+ 200 : OK - Respuesta estándar de éxito
+ 201 : Creado - Recurso creado con éxito
+ 204 : Sin contenido - Éxito sin cuerpo de respuesta
+
+
+
+
+ 400 : Solicitud incorrecta - Parámetros de solicitud inválidos
+ 401 : No autorizado - Se requiere autenticación
+ 404 : No encontrado - El recurso no existe
+ 422 : Entidad no procesable - Errores de validación
+
+
+
+
+ 500 : Error interno del servidor - Error del lado del servidor
+ 502 : Puerta de enlace incorrecta - Error de servicio externo
+ 503 : Servicio no disponible - Servicio temporalmente inactivo
+
+
+
+
+
+ El código de estado predeterminado es 200 si no se especifica.
+
+
+### Cabeceras de respuesta
+
+Configura cabeceras HTTP adicionales para incluir en la respuesta.
+
+Los encabezados se configuran como pares clave-valor:
+
+| Clave | Valor |
+|-----|-------|
+| Content-Type | application/json |
+| Cache-Control | no-cache |
+| X-API-Version | 1.0 |
+
+## Ejemplos de casos de uso
+
+### Respuesta del punto final de la API
+
+
+
Escenario: Devolver datos estructurados desde una API de búsqueda
+
+ El flujo de trabajo procesa la consulta de búsqueda y recupera resultados
+ El bloque de función formatea y pagina los resultados
+ El bloque de respuesta devuelve JSON con datos, paginación y metadatos
+ El cliente recibe una respuesta estructurada con estado 200
+
+
+
+### Confirmación de webhook
+
+
+
Escenario: Confirmar recepción y procesamiento del webhook
+
+ El disparador de webhook recibe datos del sistema externo
+ El flujo de trabajo procesa los datos entrantes
+ El bloque de respuesta devuelve una confirmación con el estado del procesamiento
+ El sistema externo recibe la confirmación
+
+
+
+### Manejo de respuestas de error
+
+
+
Escenario: Devolver respuestas de error apropiadas
+
+ El bloque de condición detecta fallos de validación o errores del sistema
+ El enrutador dirige hacia la ruta de manejo de errores
+ El bloque de respuesta devuelve estado 400/500 con detalles del error
+ El cliente recibe información estructurada del error
+
+
+
+## Entradas y salidas
+
+
+
+
+
+ Datos de respuesta : Estructura JSON para el cuerpo de la respuesta
+
+
+ Código de estado : Código de estado HTTP (predeterminado: 200)
+
+
+ Encabezados : Encabezados HTTP personalizados como pares clave-valor
+
+
+ Modo : Modo Constructor o Editor para la construcción de respuestas
+
+
+
+
+
+
+ response.data : El cuerpo de respuesta estructurado
+
+
+ response.status : Código de estado HTTP enviado
+
+
+ response.headers : Encabezados incluidos en la respuesta
+
+
+ response.success : Booleano que indica finalización exitosa
+
+
+
+
+
+
+ Respuesta HTTP : Respuesta completa enviada al solicitante de la API
+
+
+ Terminación del flujo de trabajo : Finaliza la ejecución del flujo de trabajo
+
+
+ Acceso : Los bloques de respuesta son terminales - no hay bloques subsiguientes
+
+
+
+
+
+## Referencias de variables
+
+Utiliza la sintaxis `` para insertar dinámicamente variables del flujo de trabajo en tu respuesta:
+
+```json
+{
+ "user": {
+ "id": "",
+ "name": "",
+ "email": ""
+ },
+ "query": "",
+ "results": "",
+ "totalFound": "",
+ "processingTime": "ms"
+}
+```
+
+
+ Los nombres de variables distinguen entre mayúsculas y minúsculas y deben coincidir exactamente con las variables disponibles en tu flujo de trabajo.
+
+
+## Mejores prácticas
+
+- **Usa códigos de estado significativos**: Elige códigos de estado HTTP apropiados que reflejen con precisión el resultado del flujo de trabajo
+- **Estructura tus respuestas de manera consistente**: Mantén una estructura JSON consistente en todos tus endpoints de API para una mejor experiencia del desarrollador
+- **Incluye metadatos relevantes**: Añade marcas de tiempo e información de versión para ayudar con la depuración y el monitoreo
+- **Maneja los errores con elegancia**: Utiliza lógica condicional en tu flujo de trabajo para establecer respuestas de error apropiadas con mensajes descriptivos
+- **Valida las referencias de variables**: Asegúrate de que todas las variables referenciadas existan y contengan los tipos de datos esperados antes de que se ejecute el bloque de Respuesta
diff --git a/apps/docs/content/docs/es/blocks/router.mdx b/apps/docs/content/docs/es/blocks/router.mdx
new file mode 100644
index 0000000000..2491508ae0
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/router.mdx
@@ -0,0 +1,225 @@
+---
+title: Router
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'
+import { Image } from '@/components/ui/image'
+import { Video } from '@/components/ui/video'
+
+El bloque Router utiliza IA para decidir de manera inteligente qué camino debe tomar tu flujo de trabajo a continuación, dirigiendo la ejecución del flujo de trabajo según condiciones o lógica específicas. A diferencia de los bloques de Condición que utilizan reglas simples, los bloques Router pueden entender el contexto y tomar decisiones inteligentes de enrutamiento basadas en el análisis de contenido.
+
+
+
+
+
+## Descripción general
+
+El bloque Router te permite:
+
+
+
+ Enrutamiento inteligente de contenido : Usa IA para entender la intención y el contexto
+
+
+ Selección dinámica de rutas : Dirige flujos de trabajo basados en análisis de contenido no estructurado
+
+
+ Decisiones conscientes del contexto : Toma decisiones inteligentes de enrutamiento más allá de reglas simples
+
+
+ Gestión de múltiples rutas : Maneja flujos de trabajo complejos con múltiples destinos potenciales
+
+
+
+## Router vs bloques de Condición
+
+
+
+ - Se necesita análisis de contenido impulsado por IA
+ - Contenido no estructurado o tipos de contenido variables
+ - Enrutamiento basado en intención (p. ej., "dirigir tickets de soporte a departamentos")
+ - Se requiere toma de decisiones consciente del contexto
+
+
+ - Decisiones simples basadas en reglas
+ - Datos estructurados o comparaciones numéricas
+ - Se necesita enrutamiento rápido y determinista
+ - Lógica booleana suficiente
+
+
+
+## Cómo funciona
+
+El bloque Router:
+
+
+
+ Analiza el contenido : Utiliza un LLM para entender el contenido y el contexto de entrada
+
+
+ Evalúa objetivos : Compara el contenido con los bloques de destino disponibles
+
+
+ Selecciona el destino : Identifica la ruta más apropiada basada en la intención
+
+
+ Ejecuta el enrutamiento : Dirige el flujo de trabajo al bloque seleccionado
+
+
+
+## Opciones de configuración
+
+### Contenido/Prompt
+
+El contenido o prompt que el Router analizará para tomar decisiones de enrutamiento. Esto puede ser:
+
+- Una consulta o entrada directa del usuario
+- Resultado de un bloque anterior
+- Un mensaje generado por el sistema
+
+### Bloques de destino
+
+Los posibles bloques de destino entre los que el Router puede seleccionar. El Router detectará automáticamente los bloques conectados, pero también puedes:
+
+- Personalizar las descripciones de los bloques de destino para mejorar la precisión del enrutamiento
+- Especificar criterios de enrutamiento para cada bloque de destino
+- Excluir ciertos bloques para que no sean considerados como destinos de enrutamiento
+
+### Selección de modelo
+
+Elige un modelo de IA para potenciar la decisión de enrutamiento:
+
+**OpenAI**: GPT-4o, o1, o3, o4-mini, gpt-4.1 \
+**Anthropic**: Claude 3.7 Sonnet \
+**Google**: Gemini 2.5 Pro, Gemini 2.0 Flash \
+**Otros proveedores**: Groq, Cerebras, xAI, DeepSeek \
+**Modelos locales**: Cualquier modelo ejecutándose en Ollama
+
+
+
+
+
+**Recomendación**: Utiliza modelos con fuertes capacidades de razonamiento como GPT-4o o Claude 3.7 Sonnet para decisiones de enrutamiento más precisas.
+
+### Clave API
+
+Tu clave API para el proveedor de LLM seleccionado. Esta se almacena de forma segura y se utiliza para la autenticación.
+
+### Acceso a los resultados
+
+Después de que un router tome una decisión, puedes acceder a sus resultados:
+
+- **``**: Resumen del prompt de enrutamiento utilizado
+- **``**: Detalles del bloque de destino elegido
+- **``**: Estadísticas de uso de tokens del LLM
+- **``**: Resumen de costos para la llamada de enrutamiento (entrada, salida, total)
+- **``**: El modelo utilizado para la toma de decisiones
+
+## Funciones avanzadas
+
+### Criterios de enrutamiento personalizados
+
+Define criterios específicos para cada bloque de destino:
+
+```javascript
+// Example routing descriptions
+Target Block 1: "Technical support issues, API problems, integration questions"
+Target Block 2: "Billing inquiries, subscription changes, payment issues"
+Target Block 3: "General questions, feedback, feature requests"
+```
+
+## Entradas y salidas
+
+
+
+
+
+ Contenido/Prompt : Texto a analizar para decisiones de enrutamiento
+
+
+ Bloques de destino : Bloques conectados como destinos potenciales
+
+
+ Modelo : Modelo de IA para análisis de enrutamiento
+
+
+ Clave API : Autenticación para el proveedor LLM seleccionado
+
+
+
+
+
+
+ router.prompt : Resumen del prompt de enrutamiento utilizado
+
+
+ router.selected_path : Detalles del destino elegido
+
+
+ router.tokens : Estadísticas de uso de tokens
+
+
+ router.cost : Resumen de costos para la llamada de enrutamiento (entrada, salida, total)
+
+
+ router.model : Modelo utilizado para la toma de decisiones
+
+
+
+
+
+## Ejemplos de casos de uso
+
+### Clasificación de soporte al cliente
+
+
+
Escenario: Enrutar tickets de soporte a departamentos especializados
+
+ El usuario envía una solicitud de soporte mediante un formulario
+ El enrutador analiza el contenido y contexto del ticket
+ Problemas técnicos → Agente de soporte de ingeniería
+ Preguntas de facturación → Agente de soporte financiero
+
+
+
+### Clasificación de contenido
+
+
+
Escenario: Clasificar y enrutar contenido generado por usuarios
+
+ El usuario envía contenido o comentarios
+ El enrutador analiza el tipo de contenido y el sentimiento
+ Solicitudes de funciones → Flujo de trabajo del equipo de producto
+ Informes de errores → Flujo de trabajo de soporte técnico
+
+
+
+### Calificación de leads
+
+
+
Escenario: Enrutar leads según criterios de calificación
+
+ Información del lead capturada desde un formulario
+ El enrutador analiza el tamaño de la empresa, la industria y las necesidades
+ Leads empresariales → Equipo de ventas con precios personalizados
+ Leads de PYMES → Flujo de incorporación autoservicio
+
+
+
+## Mejores prácticas
+
+- **Proporcionar descripciones claras de destino**: Ayuda al enrutador a entender cuándo seleccionar cada destino con descripciones específicas y detalladas
+- **Usar criterios de enrutamiento específicos**: Define condiciones claras y ejemplos para cada ruta para mejorar la precisión
+- **Implementar rutas alternativas**: Conecta un destino predeterminado para cuando ninguna ruta específica sea apropiada
+- **Probar con entradas diversas**: Asegúrate de que el enrutador maneja varios tipos de entrada, casos extremos y contenido inesperado
+- **Monitorear el rendimiento del enrutamiento**: Revisa las decisiones de enrutamiento regularmente y refina los criterios basándote en patrones de uso reales
+- **Elegir modelos apropiados**: Utiliza modelos con fuertes capacidades de razonamiento para decisiones de enrutamiento complejas
diff --git a/apps/docs/content/docs/es/blocks/workflow.mdx b/apps/docs/content/docs/es/blocks/workflow.mdx
new file mode 100644
index 0000000000..4377d0ac43
--- /dev/null
+++ b/apps/docs/content/docs/es/blocks/workflow.mdx
@@ -0,0 +1,168 @@
+---
+title: Flujo de trabajo
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+
+El bloque de Flujo de trabajo te permite ejecutar otros flujos de trabajo como componentes reutilizables dentro de tu flujo de trabajo actual. Esto permite un diseño modular, reutilización de código y la creación de flujos de trabajo complejos anidados que pueden componerse a partir de flujos de trabajo más pequeños y enfocados.
+
+
+
+
+
+
+ Los bloques de Flujo de trabajo permiten un diseño modular al permitirte componer flujos de trabajo complejos a partir de componentes más pequeños y reutilizables.
+
+
+## Descripción general
+
+El bloque de Flujo de trabajo sirve como puente entre flujos de trabajo, permitiéndote:
+
+
+
+ Reutilizar flujos de trabajo existentes : Ejecutar flujos de trabajo previamente creados como componentes dentro de nuevos flujos de trabajo
+
+
+ Crear diseños modulares : Desglosar procesos complejos en flujos de trabajo más pequeños y manejables
+
+
+ Mantener la separación de responsabilidades : Mantener diferentes lógicas de negocio aisladas en flujos de trabajo separados
+
+
+ Facilitar la colaboración en equipo : Compartir y reutilizar flujos de trabajo entre diferentes proyectos y miembros del equipo
+
+
+
+## Cómo funciona
+
+El bloque de Flujo de trabajo:
+
+1. Toma una referencia a otro flujo de trabajo en tu espacio de trabajo
+2. Pasa datos de entrada desde el flujo de trabajo actual al flujo de trabajo hijo (disponible a través de start.input)
+3. Ejecuta el flujo de trabajo hijo en un contexto aislado
+4. Devuelve el resultado al flujo de trabajo padre para su posterior procesamiento
+
+## Opciones de configuración
+
+### Selección de flujo de trabajo
+
+Elige qué flujo de trabajo ejecutar desde una lista desplegable de flujos de trabajo disponibles en tu espacio de trabajo. La lista incluye:
+
+- Todos los flujos de trabajo a los que tienes acceso en el espacio de trabajo actual
+- Flujos de trabajo compartidos contigo por otros miembros del equipo
+- Tanto flujos de trabajo habilitados como deshabilitados (aunque solo los habilitados pueden ser ejecutados)
+
+### Contexto de ejecución
+
+El flujo de trabajo secundario se ejecuta con:
+
+- Su propio contexto de ejecución aislado
+- Acceso a los mismos recursos del espacio de trabajo (claves API, variables de entorno)
+- Verificaciones adecuadas de permisos y membresía del espacio de trabajo
+- Tracespan anidado en el registro de ejecución
+
+
+ **Detección de ciclos**: El sistema detecta y previene automáticamente dependencias circulares entre flujos de trabajo para evitar bucles infinitos.
+
+
+## Entradas y salidas
+
+
+
+
+
+ Selección de flujo de trabajo : Elige qué flujo de trabajo ejecutar
+
+
+ Datos de entrada : Variable o referencia de bloque para pasar al flujo de trabajo secundario
+
+
+ Contexto de ejecución : Entorno aislado con recursos del espacio de trabajo
+
+
+
+
+
+
+ workflow.success : Booleano que indica el estado de finalización
+
+
+ workflow.childWorkflowName : Nombre del flujo de trabajo secundario ejecutado
+
+
+ workflow.result : Resultado devuelto por el flujo de trabajo secundario
+
+
+ workflow.error : Detalles del error si el flujo de trabajo falló
+
+
+
+
+
+
+ Respuesta del flujo de trabajo : Salida principal del flujo de trabajo secundario
+
+
+ Estado de ejecución : Estado de éxito e información de error
+
+
+ Acceso : Disponible en bloques después del flujo de trabajo
+
+
+
+
+
+## Ejemplos de casos de uso
+
+### Incorporación modular de clientes
+
+
+
Escenario: Dividir la incorporación compleja en componentes reutilizables
+
+ El flujo de trabajo principal recibe datos del cliente
+ El bloque de flujo de trabajo ejecuta el flujo de validación
+ El bloque de flujo de trabajo ejecuta el flujo de configuración de cuenta
+ El bloque de flujo de trabajo ejecuta el flujo de correo de bienvenida
+
+
+
+### Arquitectura de microservicios
+
+
+
Escenario: Crear flujos de trabajo de servicios independientes
+
+ El flujo de trabajo de procesamiento de pagos gestiona transacciones
+ El flujo de trabajo de gestión de inventario actualiza el stock
+ El flujo de trabajo de notificaciones envía confirmaciones
+ El flujo de trabajo principal orquesta todos los servicios
+
+
+
+### Procesamiento condicional
+
+
+
Escenario: Ejecutar diferentes flujos de trabajo según condiciones
+
+ El bloque de condición evalúa el tipo de usuario
+ Usuarios empresariales → Flujo de trabajo de aprobación complejo
+ Usuarios estándar → Flujo de trabajo de aprobación simple
+ Usuarios gratuitos → Flujo de trabajo de procesamiento básico
+
+
+
+## Mejores prácticas
+
+- **Mantén los flujos de trabajo enfocados**: Diseña flujos de trabajo secundarios para manejar tareas específicas y bien definidas con entradas y salidas claras
+- **Minimiza la profundidad de anidación**: Evita jerarquías de flujos de trabajo profundamente anidadas para mejorar la mantenibilidad y el rendimiento
+- **Maneja los errores con elegancia**: Implementa un manejo adecuado de errores para fallos en flujos de trabajo secundarios y proporciona mecanismos alternativos
+- **Prueba de forma independiente**: Asegúrate de que los flujos de trabajo secundarios puedan ser probados y validados independientemente de los flujos de trabajo principales
+- **Usa nomenclatura semántica**: Asigna a los flujos de trabajo nombres descriptivos que indiquen claramente su propósito y funcionalidad
diff --git a/apps/docs/content/docs/es/connections/basics.mdx b/apps/docs/content/docs/es/connections/basics.mdx
new file mode 100644
index 0000000000..0ff67f9cc5
--- /dev/null
+++ b/apps/docs/content/docs/es/connections/basics.mdx
@@ -0,0 +1,43 @@
+---
+title: Conceptos básicos de conexión
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+
+## Cómo funcionan las conexiones
+
+Las conexiones son las vías que permiten que los datos fluyan entre bloques en tu flujo de trabajo. En Sim, las conexiones definen cómo la información pasa de un bloque a otro, permitiendo el flujo de datos a través de tu flujo de trabajo.
+
+
+ Cada conexión representa una relación dirigida donde los datos fluyen desde la salida de un bloque de origen
+ hacia la entrada de un bloque de destino.
+
+
+### Creación de conexiones
+
+
+
+ Seleccionar bloque de origen : Haz clic en el puerto de salida del bloque desde el que quieres conectar
+
+
+ Dibujar conexión : Arrastra hasta el puerto de entrada del bloque de destino
+
+
+ Confirmar conexión : Suelta para crear la conexión
+
+
+
+### Flujo de conexión
+
+El flujo de datos a través de las conexiones sigue estos principios:
+
+1. **Flujo direccional**: Los datos siempre fluyen de las salidas a las entradas
+2. **Orden de ejecución**: Los bloques se ejecutan en orden según sus conexiones
+3. **Transformación de datos**: Los datos pueden transformarse al pasar entre bloques
+4. **Rutas condicionales**: Algunos bloques (como Router y Condition) pueden dirigir el flujo a diferentes rutas
+
+
+ Eliminar una conexión detendrá inmediatamente el flujo de datos entre los bloques. Asegúrate de que esto es
+ lo que deseas antes de eliminar conexiones.
+
diff --git a/apps/docs/content/docs/es/connections/data-structure.mdx b/apps/docs/content/docs/es/connections/data-structure.mdx
new file mode 100644
index 0000000000..bcc9f1e371
--- /dev/null
+++ b/apps/docs/content/docs/es/connections/data-structure.mdx
@@ -0,0 +1,195 @@
+---
+title: Estructura de datos de conexión
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+
+Cuando conectas bloques, entender la estructura de datos de las diferentes salidas de bloques es importante porque la estructura de datos de salida del bloque de origen determina qué valores están disponibles en el bloque de destino. Cada tipo de bloque produce una estructura de salida específica a la que puedes hacer referencia en bloques posteriores.
+
+
+ Entender estas estructuras de datos es esencial para utilizar eficazmente las etiquetas de conexión y
+ acceder a los datos correctos en tus flujos de trabajo.
+
+
+## Estructuras de salida de bloques
+
+Diferentes tipos de bloques producen diferentes estructuras de salida. Esto es lo que puedes esperar de cada tipo de bloque:
+
+
+
+
+ ```json
+ {
+ "content": "The generated text response",
+ "model": "gpt-4o",
+ "tokens": {
+ "prompt": 120,
+ "completion": 85,
+ "total": 205
+ },
+ "toolCalls": [...],
+ "cost": [...],
+ "usage": [...]
+ }
+ ```
+
+ ### Campos de salida del bloque de agente
+
+ - **content**: La respuesta de texto principal generada por el agente
+ - **model**: El modelo de IA utilizado (p. ej., "gpt-4o", "claude-3-opus")
+ - **tokens**: Estadísticas de uso de tokens
+ - **prompt**: Número de tokens en el prompt
+ - **completion**: Número de tokens en la respuesta
+ - **total**: Total de tokens utilizados
+ - **toolCalls**: Array de llamadas a herramientas realizadas por el agente (si las hay)
+ - **cost**: Array de objetos de costo para cada llamada a herramienta (si las hay)
+ - **usage**: Estadísticas de uso de tokens para toda la respuesta
+
+
+
+
+ ```json
+ {
+ "data": "Response data",
+ "status": 200,
+ "headers": {
+ "content-type": "application/json",
+ "cache-control": "no-cache"
+ }
+ }
+ ```
+
+ ### Campos de salida del bloque de API
+
+ - **data**: Los datos de respuesta de la API (puede ser de cualquier tipo)
+ - **status**: Código de estado HTTP de la respuesta
+ - **headers**: Cabeceras HTTP devueltas por la API
+
+
+
+
+ ```json
+ {
+ "result": "Function return value",
+ "stdout": "Console output",
+ }
+ ```
+
+ ### Campos de salida del bloque de función
+
+ - **result**: El valor de retorno de la función (puede ser de cualquier tipo)
+ - **stdout**: Salida de consola capturada durante la ejecución de la función
+
+
+
+
+ ```json
+ {
+ "content": "Evaluation summary",
+ "model": "gpt-5",
+ "tokens": {
+ "prompt": 120,
+ "completion": 85,
+ "total": 205
+ },
+ "metric1": 8.5,
+ "metric2": 7.2,
+ "metric3": 9.0
+ }
+ ```
+
+ ### Campos de salida del bloque evaluador
+
+ - **content**: Resumen de la evaluación
+ - **model**: El modelo de IA utilizado para la evaluación
+ - **tokens**: Estadísticas de uso de tokens
+ - **[metricName]**: Puntuación para cada métrica definida en el evaluador (campos dinámicos)
+
+
+
+
+ ```json
+ {
+ "content": "Original content passed through",
+ "conditionResult": true,
+ "selectedPath": {
+ "blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
+ "blockType": "agent",
+ "blockTitle": "Follow-up Agent"
+ },
+ "selectedConditionId": "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
+ - **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
+
+
+
+
+ ```json
+ {
+ "content": "Routing decision",
+ "model": "gpt-4o",
+ "tokens": {
+ "prompt": 120,
+ "completion": 85,
+ "total": 205
+ },
+ "selectedPath": {
+ "blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
+ "blockType": "agent",
+ "blockTitle": "Customer Service Agent"
+ }
+ }
+ ```
+
+ ### Campos de salida del bloque enrutador
+
+ - **content**: El texto de decisión de enrutamiento
+ - **model**: El modelo de IA utilizado para el enrutamiento
+ - **tokens**: Estadísticas de uso de tokens
+ - **selectedPath**: Información sobre la ruta seleccionada
+ - **blockId**: ID del bloque de destino seleccionado
+ - **blockType**: Tipo del bloque seleccionado
+ - **blockTitle**: Título del bloque seleccionado
+
+
+
+
+## Estructuras de salida personalizadas
+
+Algunos bloques pueden producir estructuras de salida personalizadas según su configuración:
+
+1. **Bloques de agente con formato de respuesta**: Al usar un formato de respuesta en un bloque de agente, la estructura de salida coincidirá con el esquema definido en lugar de la estructura estándar.
+
+2. **Bloques de función**: El campo `result` puede contener cualquier estructura de datos devuelta por el código de tu función.
+
+3. **Bloques de API**: El campo `data` contendrá lo que devuelva la API, que podría ser cualquier estructura JSON válida.
+
+
+ Verifica siempre la estructura de salida real de tus bloques durante el desarrollo para asegurarte de que
+ estás referenciando los campos correctos en tus conexiones.
+
+
+## Estructuras de datos anidadas
+
+Muchas salidas de bloques contienen estructuras de datos anidadas. Puedes acceder a estas utilizando la notación de punto en las etiquetas de conexión:
+
+```
+
+```
+
+Por ejemplo:
+
+- `` - Accede al total de tokens desde un bloque de Agente
+- `` - Accede al ID del primer resultado de una respuesta de API
+- `` - Accede a un campo anidado en el resultado de un bloque de Función
diff --git a/apps/docs/content/docs/es/connections/index.mdx b/apps/docs/content/docs/es/connections/index.mdx
new file mode 100644
index 0000000000..39f68624a9
--- /dev/null
+++ b/apps/docs/content/docs/es/connections/index.mdx
@@ -0,0 +1,42 @@
+---
+title: Conexiones
+description: Conecta tus bloques entre sí.
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Card, Cards } from 'fumadocs-ui/components/card'
+import { ConnectIcon } from '@/components/icons'
+import { Video } from '@/components/ui/video'
+
+Las conexiones son las vías que permiten que los datos fluyan entre bloques en tu flujo de trabajo. Definen cómo se pasa la información de un bloque a otro, permitiéndote crear procesos sofisticados de múltiples pasos.
+
+
+ Las conexiones correctamente configuradas son esenciales para crear flujos de trabajo efectivos. Determinan cómo
+ se mueven los datos a través de tu sistema y cómo los bloques interactúan entre sí.
+
+
+
+
+
+
+## Tipos de conexiones
+
+Sim admite diferentes tipos de conexiones que permiten varios patrones de flujo de trabajo:
+
+
+
+ Aprende cómo funcionan las conexiones y cómo crearlas en tus flujos de trabajo
+
+
+ Comprende cómo usar etiquetas de conexión para referenciar datos entre bloques
+
+
+ Explora las estructuras de datos de salida de diferentes tipos de bloques
+
+
+ Aprende técnicas para acceder y manipular datos conectados
+
+
+ Sigue los patrones recomendados para una gestión eficaz de conexiones
+
+
diff --git a/apps/docs/content/docs/es/connections/tags.mdx b/apps/docs/content/docs/es/connections/tags.mdx
new file mode 100644
index 0000000000..8a7085e0a0
--- /dev/null
+++ b/apps/docs/content/docs/es/connections/tags.mdx
@@ -0,0 +1,109 @@
+---
+title: Etiquetas de conexión
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Video } from '@/components/ui/video'
+
+Las etiquetas de conexión son representaciones visuales de los datos disponibles desde bloques conectados, proporcionando una manera fácil de referenciar datos entre bloques y salidas de bloques anteriores en tu flujo de trabajo.
+
+
+
+
+
+### ¿Qué son las etiquetas de conexión?
+
+Las etiquetas de conexión son elementos interactivos que aparecen cuando los bloques están conectados. Representan los datos que pueden fluir de un bloque a otro y te permiten:
+
+- Visualizar datos disponibles de bloques de origen
+- Referenciar campos de datos específicos en bloques de destino
+- Crear flujos de datos dinámicos entre bloques
+
+
+ Las etiquetas de conexión facilitan ver qué datos están disponibles de bloques anteriores y usarlos en tu
+ bloque actual sin tener que recordar estructuras de datos complejas.
+
+
+## Uso de etiquetas de conexión
+
+Hay dos formas principales de usar etiquetas de conexión en tus flujos de trabajo:
+
+
+
+
Arrastrar y soltar
+
+ Haz clic en una etiqueta de conexión y arrástrala a los campos de entrada de los bloques de destino. Aparecerá un menú desplegable
+ mostrando los valores disponibles.
+
+
+ Pasa el cursor sobre una etiqueta de conexión para ver los datos disponibles
+ Haz clic y arrastra la etiqueta a un campo de entrada
+ Selecciona el campo de datos específico del menú desplegable
+ La referencia se inserta automáticamente
+
+
+
+
+
Sintaxis de corchetes angulares
+
+ Escribe <> en los campos de entrada para ver un menú desplegable de valores de conexión disponibles
+ de bloques anteriores.
+
+
+ Haz clic en cualquier campo de entrada donde quieras usar datos conectados
+
+ Escribe <> para activar el menú desplegable de conexión
+
+ Navega y selecciona los datos que quieres referenciar
+ Continúa escribiendo o selecciona del menú desplegable para completar la referencia
+
+
+
+
+## Sintaxis de etiquetas
+
+Las etiquetas de conexión utilizan una sintaxis simple para hacer referencia a los datos:
+
+```
+
+```
+
+Donde:
+
+- `blockName` es el nombre del bloque de origen
+- `path.to.data` es la ruta al campo de datos específico
+
+Por ejemplo:
+
+- `` - Hace referencia al campo de contenido de un bloque con ID "agent1"
+- `` - Hace referencia al nombre del primer usuario en el array de usuarios desde el campo de datos de un bloque con ID "api2"
+
+## Referencias dinámicas de etiquetas
+
+Las etiquetas de conexión se evalúan en tiempo de ejecución, lo que significa:
+
+1. Siempre hacen referencia a los datos más actuales
+2. Pueden utilizarse en expresiones y combinarse con texto estático
+3. Pueden anidarse dentro de otras estructuras de datos
+
+### Ejemplos
+
+```javascript
+// Reference in text
+"The user's name is "
+
+// Reference in JSON
+{
+ "userName": "",
+ "orderTotal":
+}
+
+// Reference in code
+const greeting = "Hello, !";
+const total = * 1.1; // Add 10% tax
+```
+
+
+ Cuando utilices etiquetas de conexión en contextos numéricos, asegúrate de que los datos referenciados sean realmente un número
+ para evitar problemas de conversión de tipos.
+
diff --git a/apps/docs/content/docs/es/copilot/index.mdx b/apps/docs/content/docs/es/copilot/index.mdx
new file mode 100644
index 0000000000..1e004c00ec
--- /dev/null
+++ b/apps/docs/content/docs/es/copilot/index.mdx
@@ -0,0 +1,161 @@
+---
+title: Copilot
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Card, Cards } from 'fumadocs-ui/components/card'
+import { Image } from '@/components/ui/image'
+import { MessageCircle, Package, Zap, Infinity as InfinityIcon, Brain, BrainCircuit } from 'lucide-react'
+
+Copilot es tu asistente integrado en el editor que te ayuda a crear y editar flujos de trabajo con Sim Copilot, así como a entenderlos y mejorarlos. Puede:
+
+- **Explicar**: Responder preguntas sobre Sim y tu flujo de trabajo actual
+- **Guiar**: Sugerir ediciones y mejores prácticas
+- **Editar**: Realizar cambios en bloques, conexiones y configuraciones cuando los apruebes
+
+
+ Copilot es un servicio gestionado por Sim. Para implementaciones autoalojadas, genera una clave API de Copilot en la aplicación alojada (sim.ai → Configuración → Copilot)
+ 1. Ve a [sim.ai](https://sim.ai) → Configuración → Copilot y genera una clave API de Copilot
+ 2. Establece `COPILOT_API_KEY` en tu entorno autoalojado con ese valor
+
+
+## Menú contextual (@)
+
+Usa el símbolo `@` para hacer referencia a varios recursos y proporcionar a Copilot más contexto sobre tu espacio de trabajo:
+
+
+
+El menú `@` proporciona acceso a:
+- **Chats**: Referencia conversaciones previas con copilot
+- **Todos los flujos de trabajo**: Referencia cualquier flujo de trabajo en tu espacio de trabajo
+- **Bloques de flujo de trabajo**: Referencia bloques específicos de los flujos de trabajo
+- **Bloques**: Referencia tipos de bloques y plantillas
+- **Conocimiento**: Referencia tus documentos subidos y base de conocimientos
+- **Documentación**: Referencia la documentación de Sim
+- **Plantillas**: Referencia plantillas de flujo de trabajo
+- **Registros**: Referencia registros de ejecución y resultados
+
+Esta información contextual ayuda a Copilot a proporcionar asistencia más precisa y relevante para tu caso de uso específico.
+
+## Modos
+
+
+
+
+ Preguntar
+
+ }
+ >
+
+ Modo de preguntas y respuestas para explicaciones, orientación y sugerencias sin realizar cambios en tu flujo de trabajo.
+
+
+
+
+ Agente
+
+ }
+ >
+
+ Modo de construcción y edición. Copilot propone ediciones específicas (añadir bloques, conectar variables, ajustar configuraciones) y las aplica cuando las apruebas.
+
+
+
+
+## Niveles de profundidad
+
+
+
+
+ Rápido
+
+ }
+ >
+ El más rápido y económico. Ideal para ediciones pequeñas, flujos de trabajo simples y ajustes menores.
+
+
+
+ Auto
+
+ }
+ >
+ Equilibrio entre velocidad y razonamiento. Opción predeterminada recomendada para la mayoría de las tareas.
+
+
+
+ Avanzado
+
+ }
+ >
+ Mayor capacidad de razonamiento para flujos de trabajo más grandes y ediciones complejas sin perder rendimiento.
+
+
+
+ Behemoth
+
+ }
+ >
+ Máxima capacidad de razonamiento para planificación profunda, depuración y cambios arquitectónicos complejos.
+
+
+
+### Interfaz de selección de modo
+
+Puedes cambiar fácilmente entre diferentes modos de razonamiento usando el selector de modo en la interfaz de Copilot:
+
+
+
+La interfaz te permite:
+- **Seleccionar nivel de razonamiento**: Elige entre Rápido, Auto, Avanzado o Behemoth
+- **Activar modo MAX**: Activa el interruptor para obtener las máximas capacidades de razonamiento cuando necesites el análisis más exhaustivo
+- **Ver descripciones de modos**: Comprende para qué está optimizado cada modo
+
+Elige tu modo según la complejidad de tu tarea - usa Rápido para preguntas simples y Behemoth para cambios arquitectónicos complejos.
+
+## Facturación y cálculo de costos
+
+### Cómo se calculan los costos
+
+El uso de Copilot se factura por token del LLM subyacente:
+
+- **Tokens de entrada**: facturados a la tarifa base del proveedor (**a costo**)
+- **Tokens de salida**: facturados a **1,5×** la tarifa base de salida del proveedor
+
+```javascript
+copilotCost = (inputTokens × inputPrice + outputTokens × (outputPrice × 1.5)) / 1,000,000
+```
+
+| Componente | Tarifa aplicada |
+|------------|----------------------|
+| Entrada | inputPrice |
+| Salida | outputPrice × 1.5 |
+
+
+ Los precios mostrados reflejan las tarifas a partir del 4 de septiembre de 2025. Consulte la documentación del proveedor para conocer los precios actuales.
+
+
+
+ Los precios de los modelos son por millón de tokens. El cálculo divide por 1.000.000 para obtener el costo real. Consulte la página de Cálculo de Costos para antecedentes y ejemplos.
+
diff --git a/apps/docs/content/docs/es/execution/api.mdx b/apps/docs/content/docs/es/execution/api.mdx
new file mode 100644
index 0000000000..f412ac550a
--- /dev/null
+++ b/apps/docs/content/docs/es/execution/api.mdx
@@ -0,0 +1,551 @@
+---
+title: API externa
+---
+
+import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { CodeBlock } from 'fumadocs-ui/components/codeblock'
+import { Video } from '@/components/ui/video'
+
+Sim proporciona una API externa completa para consultar registros de ejecución de flujos de trabajo y configurar webhooks para notificaciones en tiempo real cuando los flujos de trabajo se completan.
+
+## Autenticación
+
+Todas las solicitudes a la API requieren una clave de API pasada en el encabezado `x-api-key`:
+
+```bash
+curl -H "x-api-key: YOUR_API_KEY" \
+ https://sim.ai/api/v1/logs?workspaceId=YOUR_WORKSPACE_ID
+```
+
+Puedes generar claves de API desde la configuración de usuario en el panel de control de Sim.
+
+## API de registros
+
+Todas las respuestas de la API incluyen información sobre tus límites de ejecución de flujos de trabajo y su uso:
+
+```json
+"limits": {
+ "workflowExecutionRateLimit": {
+ "sync": {
+ "limit": 60, // Max sync workflow executions per minute
+ "remaining": 58, // Remaining sync workflow executions
+ "resetAt": "..." // When the window resets
+ },
+ "async": {
+ "limit": 60, // Max async workflow executions per minute
+ "remaining": 59, // Remaining async workflow executions
+ "resetAt": "..." // When the window resets
+ }
+ },
+ "usage": {
+ "currentPeriodCost": 1.234, // Current billing period usage in USD
+ "limit": 10, // Usage limit in USD
+ "plan": "pro", // Current subscription plan
+ "isExceeded": false // Whether limit is exceeded
+ }
+}
+```
+
+**Nota:** Los límites de tasa en el cuerpo de la respuesta son para ejecuciones de flujos de trabajo. Los límites de tasa para llamar a este endpoint de la API están en los encabezados de respuesta (`X-RateLimit-*`).
+
+### Consultar registros
+
+Consulta los registros de ejecución de flujos de trabajo con amplias opciones de filtrado.
+
+
+
+
+ ```http
+ GET /api/v1/logs
+ ```
+
+ **Parámetros requeridos:**
+ - `workspaceId` - Tu ID de espacio de trabajo
+
+ **Filtros opcionales:**
+ - `workflowIds` - IDs de flujos de trabajo separados por comas
+ - `folderIds` - IDs de carpetas separados por comas
+ - `triggers` - Tipos de disparadores separados por comas: `api`, `webhook`, `schedule`, `manual`, `chat`
+ - `level` - Filtrar por nivel: `info`, `error`
+ - `startDate` - Marca de tiempo ISO para el inicio del rango de fechas
+ - `endDate` - Marca de tiempo ISO para el fin del rango de fechas
+ - `executionId` - Coincidencia exacta de ID de ejecución
+ - `minDurationMs` - Duración mínima de ejecución en milisegundos
+ - `maxDurationMs` - Duración máxima de ejecución en milisegundos
+ - `minCost` - Costo mínimo de ejecución
+ - `maxCost` - Costo máximo de ejecución
+ - `model` - Filtrar por modelo de IA utilizado
+
+ **Paginación:**
+ - `limit` - Resultados por página (predeterminado: 100)
+ - `cursor` - Cursor para la siguiente página
+ - `order` - Orden de clasificación: `desc`, `asc` (predeterminado: desc)
+
+ **Nivel de detalle:**
+ - `details` - Nivel de detalle de la respuesta: `basic`, `full` (predeterminado: básico)
+ - `includeTraceSpans` - Incluir intervalos de seguimiento (predeterminado: falso)
+ - `includeFinalOutput` - Incluir salida final (predeterminado: falso)
+
+
+
+ ```json
+ {
+ "data": [
+ {
+ "id": "log_abc123",
+ "workflowId": "wf_xyz789",
+ "executionId": "exec_def456",
+ "level": "info",
+ "trigger": "api",
+ "startedAt": "2025-01-01T12:34:56.789Z",
+ "endedAt": "2025-01-01T12:34:57.123Z",
+ "totalDurationMs": 334,
+ "cost": {
+ "total": 0.00234
+ },
+ "files": null
+ }
+ ],
+ "nextCursor": "eyJzIjoiMjAyNS0wMS0wMVQxMjozNDo1Ni43ODlaIiwiaWQiOiJsb2dfYWJjMTIzIn0",
+ "limits": {
+ "workflowExecutionRateLimit": {
+ "sync": {
+ "limit": 60,
+ "remaining": 58,
+ "resetAt": "2025-01-01T12:35:56.789Z"
+ },
+ "async": {
+ "limit": 60,
+ "remaining": 59,
+ "resetAt": "2025-01-01T12:35:56.789Z"
+ }
+ },
+ "usage": {
+ "currentPeriodCost": 1.234,
+ "limit": 10,
+ "plan": "pro",
+ "isExceeded": false
+ }
+ }
+ }
+ ```
+
+
+
+
+### Obtener detalles del registro
+
+Recupera información detallada sobre una entrada de registro específica.
+
+
+
+
+ ```http
+ GET /api/v1/logs/{id}
+ ```
+
+
+
+
+ ```json
+ {
+ "data": {
+ "id": "log_abc123",
+ "workflowId": "wf_xyz789",
+ "executionId": "exec_def456",
+ "level": "info",
+ "trigger": "api",
+ "startedAt": "2025-01-01T12:34:56.789Z",
+ "endedAt": "2025-01-01T12:34:57.123Z",
+ "totalDurationMs": 334,
+ "workflow": {
+ "id": "wf_xyz789",
+ "name": "My Workflow",
+ "description": "Process customer data"
+ },
+ "executionData": {
+ "traceSpans": [...],
+ "finalOutput": {...}
+ },
+ "cost": {
+ "total": 0.00234,
+ "tokens": {
+ "prompt": 123,
+ "completion": 456,
+ "total": 579
+ },
+ "models": {
+ "gpt-4o": {
+ "input": 0.001,
+ "output": 0.00134,
+ "total": 0.00234,
+ "tokens": {
+ "prompt": 123,
+ "completion": 456,
+ "total": 579
+ }
+ }
+ }
+ },
+ "limits": {
+ "workflowExecutionRateLimit": {
+ "sync": {
+ "limit": 60,
+ "remaining": 58,
+ "resetAt": "2025-01-01T12:35:56.789Z"
+ },
+ "async": {
+ "limit": 60,
+ "remaining": 59,
+ "resetAt": "2025-01-01T12:35:56.789Z"
+ }
+ },
+ "usage": {
+ "currentPeriodCost": 1.234,
+ "limit": 10,
+ "plan": "pro",
+ "isExceeded": false
+ }
+ }
+ }
+ }
+ ```
+
+
+
+
+### Obtener detalles de ejecución
+
+Recupera detalles de ejecución incluyendo la instantánea del estado del flujo de trabajo.
+
+
+
+
+ ```http
+ GET /api/v1/logs/executions/{executionId}
+ ```
+
+
+
+
+ ```json
+ {
+ "executionId": "exec_def456",
+ "workflowId": "wf_xyz789",
+ "workflowState": {
+ "blocks": {...},
+ "edges": [...],
+ "loops": {...},
+ "parallels": {...}
+ },
+ "executionMetadata": {
+ "trigger": "api",
+ "startedAt": "2025-01-01T12:34:56.789Z",
+ "endedAt": "2025-01-01T12:34:57.123Z",
+ "totalDurationMs": 334,
+ "cost": {...}
+ }
+ }
+ ```
+
+
+
+
+## Suscripciones a webhooks
+
+Recibe notificaciones en tiempo real cuando se completan las ejecuciones de flujos de trabajo. Los webhooks se configuran a través de la interfaz de usuario de Sim en el editor de flujos de trabajo.
+
+### Configuración
+
+Los webhooks pueden configurarse para cada flujo de trabajo a través de la interfaz de usuario del editor de flujos de trabajo. Haz clic en el icono de webhook en la barra de control para configurar tus suscripciones a webhooks.
+
+
+
+
+
+**Opciones de configuración disponibles:**
+- `url`: URL del punto final de tu webhook
+- `secret`: Secreto opcional para verificación de firma HMAC
+- `includeFinalOutput`: Incluir la salida final del flujo de trabajo en la carga útil
+- `includeTraceSpans`: Incluir intervalos de seguimiento de ejecución detallados
+- `includeRateLimits`: Incluir información del límite de tasa del propietario del flujo de trabajo
+- `includeUsageData`: Incluir datos de uso y facturación del propietario del flujo de trabajo
+- `levelFilter`: Array de niveles de registro a recibir (`info`, `error`)
+- `triggerFilter`: Array de tipos de disparadores a recibir (`api`, `webhook`, `schedule`, `manual`, `chat`)
+- `active`: Habilitar/deshabilitar la suscripción al webhook
+
+### Carga útil del webhook
+
+Cuando se completa la ejecución de un flujo de trabajo, Sim envía una solicitud POST a tu URL de webhook:
+
+```json
+{
+ "id": "evt_123",
+ "type": "workflow.execution.completed",
+ "timestamp": 1735925767890,
+ "data": {
+ "workflowId": "wf_xyz789",
+ "executionId": "exec_def456",
+ "status": "success",
+ "level": "info",
+ "trigger": "api",
+ "startedAt": "2025-01-01T12:34:56.789Z",
+ "endedAt": "2025-01-01T12:34:57.123Z",
+ "totalDurationMs": 334,
+ "cost": {
+ "total": 0.00234,
+ "tokens": {
+ "prompt": 123,
+ "completion": 456,
+ "total": 579
+ },
+ "models": {
+ "gpt-4o": {
+ "input": 0.001,
+ "output": 0.00134,
+ "total": 0.00234,
+ "tokens": {
+ "prompt": 123,
+ "completion": 456,
+ "total": 579
+ }
+ }
+ }
+ },
+ "files": null,
+ "finalOutput": {...}, // Only if includeFinalOutput=true
+ "traceSpans": [...], // Only if includeTraceSpans=true
+ "rateLimits": {...}, // Only if includeRateLimits=true
+ "usage": {...} // Only if includeUsageData=true
+ },
+ "links": {
+ "log": "/v1/logs/log_abc123",
+ "execution": "/v1/logs/executions/exec_def456"
+ }
+}
+```
+
+### Cabeceras de webhook
+
+Cada solicitud de webhook incluye estas cabeceras:
+
+- `sim-event`: Tipo de evento (siempre `workflow.execution.completed`)
+- `sim-timestamp`: Marca de tiempo Unix en milisegundos
+- `sim-delivery-id`: ID único de entrega para idempotencia
+- `sim-signature`: Firma HMAC-SHA256 para verificación (si se configura un secreto)
+- `Idempotency-Key`: Igual que el ID de entrega para detección de duplicados
+
+### Verificación de firma
+
+Si configuras un secreto de webhook, verifica la firma para asegurar que el webhook proviene de Sim:
+
+
+
+
+ ```javascript
+ import crypto from 'crypto';
+
+ function verifyWebhookSignature(body, signature, secret) {
+ const [timestampPart, signaturePart] = signature.split(',');
+ const timestamp = timestampPart.replace('t=', '');
+ const expectedSignature = signaturePart.replace('v1=', '');
+
+ const signatureBase = `${timestamp}.${body}`;
+ const hmac = crypto.createHmac('sha256', secret);
+ hmac.update(signatureBase);
+ const computedSignature = hmac.digest('hex');
+
+ return computedSignature === expectedSignature;
+ }
+
+ // In your webhook handler
+ app.post('/webhook', (req, res) => {
+ const signature = req.headers['sim-signature'];
+ const body = JSON.stringify(req.body);
+
+ if (!verifyWebhookSignature(body, signature, process.env.WEBHOOK_SECRET)) {
+ return res.status(401).send('Invalid signature');
+ }
+
+ // Process the webhook...
+ });
+ ```
+
+
+
+
+ ```python
+ import hmac
+ import hashlib
+ import json
+
+ def verify_webhook_signature(body: str, signature: str, secret: str) -> bool:
+ timestamp_part, signature_part = signature.split(',')
+ timestamp = timestamp_part.replace('t=', '')
+ expected_signature = signature_part.replace('v1=', '')
+
+ signature_base = f"{timestamp}.{body}"
+ computed_signature = hmac.new(
+ secret.encode(),
+ signature_base.encode(),
+ hashlib.sha256
+ ).hexdigest()
+
+ return hmac.compare_digest(computed_signature, expected_signature)
+
+ # In your webhook handler
+ @app.route('/webhook', methods=['POST'])
+ def webhook():
+ signature = request.headers.get('sim-signature')
+ body = json.dumps(request.json)
+
+ if not verify_webhook_signature(body, signature, os.environ['WEBHOOK_SECRET']):
+ return 'Invalid signature', 401
+
+ # Process the webhook...
+ ```
+
+
+
+
+### Política de reintentos
+
+Las entregas de webhook fallidas se reintentan con retroceso exponencial y fluctuación:
+
+- Máximo de intentos: 5
+- Retrasos de reintento: 5 segundos, 15 segundos, 1 minuto, 3 minutos, 10 minutos
+- Fluctuación: Hasta un 10% de retraso adicional para prevenir el efecto de manada
+- Solo las respuestas HTTP 5xx y 429 activan reintentos
+- Las entregas agotan el tiempo de espera después de 30 segundos
+
+
+ Las entregas de webhook se procesan de forma asíncrona y no afectan al rendimiento de ejecución del flujo de trabajo.
+
+
+## Mejores prácticas
+
+1. **Estrategia de sondeo**: Al sondear registros, utiliza paginación basada en cursor con `order=asc` y `startDate` para obtener nuevos registros de manera eficiente.
+
+2. **Seguridad de webhook**: Siempre configura un secreto de webhook y verifica las firmas para asegurar que las solicitudes provienen de Sim.
+
+3. **Idempotencia**: Utiliza la cabecera `Idempotency-Key` para detectar y manejar entregas duplicadas de webhook.
+
+4. **Privacidad**: Por defecto, `finalOutput` y `traceSpans` están excluidos de las respuestas. Habilítalos solo si necesitas los datos y comprendes las implicaciones de privacidad.
+
+5. **Limitación de tasa**: Implementa retroceso exponencial cuando recibas respuestas 429. Consulta la cabecera `Retry-After` para conocer el tiempo de espera recomendado.
+
+## Limitación de tasa
+
+La API implementa limitación de tasa para garantizar un uso justo:
+
+- **Plan gratuito**: 10 solicitudes por minuto
+- **Plan Pro**: 30 solicitudes por minuto
+- **Plan Team**: 60 solicitudes por minuto
+- **Plan Enterprise**: Límites personalizados
+
+La información del límite de tasa se incluye en los encabezados de respuesta:
+- `X-RateLimit-Limit`: Máximo de solicitudes por ventana
+- `X-RateLimit-Remaining`: Solicitudes restantes en la ventana actual
+- `X-RateLimit-Reset`: Marca de tiempo ISO cuando se reinicia la ventana
+
+## Ejemplo: Sondeo para nuevos registros
+
+```javascript
+let cursor = null;
+const workspaceId = 'YOUR_WORKSPACE_ID';
+const startDate = new Date().toISOString();
+
+async function pollLogs() {
+ const params = new URLSearchParams({
+ workspaceId,
+ startDate,
+ order: 'asc',
+ limit: '100'
+ });
+
+ if (cursor) {
+ params.append('cursor', cursor);
+ }
+
+ const response = await fetch(
+ `https://sim.ai/api/v1/logs?${params}`,
+ {
+ headers: {
+ 'x-api-key': 'YOUR_API_KEY'
+ }
+ }
+ );
+
+ if (response.ok) {
+ const data = await response.json();
+
+ // Process new logs
+ for (const log of data.data) {
+ console.log(`New execution: ${log.executionId}`);
+ }
+
+ // Update cursor for next poll
+ if (data.nextCursor) {
+ cursor = data.nextCursor;
+ }
+ }
+}
+
+// Poll every 30 seconds
+setInterval(pollLogs, 30000);
+```
+
+## Ejemplo: Procesamiento de webhooks
+
+```javascript
+import express from 'express';
+import crypto from 'crypto';
+
+const app = express();
+app.use(express.json());
+
+app.post('/sim-webhook', (req, res) => {
+ // Verify signature
+ const signature = req.headers['sim-signature'];
+ const body = JSON.stringify(req.body);
+
+ if (!verifyWebhookSignature(body, signature, process.env.WEBHOOK_SECRET)) {
+ return res.status(401).send('Invalid signature');
+ }
+
+ // Check timestamp to prevent replay attacks
+ const timestamp = parseInt(req.headers['sim-timestamp']);
+ const fiveMinutesAgo = Date.now() - (5 * 60 * 1000);
+
+ if (timestamp < fiveMinutesAgo) {
+ return res.status(401).send('Timestamp too old');
+ }
+
+ // Process the webhook
+ const event = req.body;
+
+ switch (event.type) {
+ case 'workflow.execution.completed':
+ const { workflowId, executionId, status, cost } = event.data;
+
+ if (status === 'error') {
+ console.error(`Workflow ${workflowId} failed: ${executionId}`);
+ // Handle error...
+ } else {
+ console.log(`Workflow ${workflowId} completed: ${executionId}`);
+ console.log(`Cost: ${cost.total}`);
+ // Process successful execution...
+ }
+ break;
+ }
+
+ // Return 200 to acknowledge receipt
+ res.status(200).send('OK');
+});
+
+app.listen(3000, () => {
+ console.log('Webhook server listening on port 3000');
+});
+```
diff --git a/apps/docs/content/docs/es/execution/basics.mdx b/apps/docs/content/docs/es/execution/basics.mdx
new file mode 100644
index 0000000000..12b37c53ee
--- /dev/null
+++ b/apps/docs/content/docs/es/execution/basics.mdx
@@ -0,0 +1,132 @@
+---
+title: Conceptos básicos de ejecución
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Card, Cards } from 'fumadocs-ui/components/card'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Image } from '@/components/ui/image'
+import { Video } from '@/components/ui/video'
+
+Entender cómo se ejecutan los flujos de trabajo en Sim es clave para crear automatizaciones eficientes y confiables. El motor de ejecución gestiona automáticamente las dependencias, la concurrencia y el flujo de datos para garantizar que tus flujos de trabajo funcionen de manera fluida y predecible.
+
+## Cómo se ejecutan los flujos de trabajo
+
+El motor de ejecución de Sim procesa los flujos de trabajo de manera inteligente analizando las dependencias y ejecutando los bloques en el orden más eficiente posible.
+
+### Ejecución concurrente por defecto
+
+Múltiples bloques se ejecutan simultáneamente cuando no dependen entre sí. Esta ejecución paralela mejora dramáticamente el rendimiento sin requerir configuración manual.
+
+
+
+En este ejemplo, tanto el bloque de agente de Atención al Cliente como el de Investigador Profundo se ejecutan simultáneamente después del bloque de Inicio, maximizando la eficiencia.
+
+### Combinación automática de salidas
+
+Cuando los bloques tienen múltiples dependencias, el motor de ejecución espera automáticamente a que todas las dependencias se completen, y luego proporciona sus salidas combinadas al siguiente bloque. No se requiere combinación manual.
+
+
+
+El bloque de Función recibe las salidas de ambos bloques de agente tan pronto como se completan, permitiéndote procesar los resultados combinados.
+
+### Enrutamiento inteligente
+
+Los flujos de trabajo pueden ramificarse en múltiples direcciones utilizando bloques de enrutamiento. El motor de ejecución admite tanto el enrutamiento determinista (con bloques de Condición) como el enrutamiento basado en IA (con bloques de Router).
+
+
+
+Este flujo de trabajo demuestra cómo la ejecución puede seguir diferentes caminos basados en condiciones o decisiones de IA, con cada camino ejecutándose independientemente.
+
+## Tipos de bloques
+
+Sim proporciona diferentes tipos de bloques que sirven para propósitos específicos en tus flujos de trabajo:
+
+
+
+ Los **bloques de inicio** inician flujos de trabajo y los **bloques de Webhook** responden a eventos externos. Cada flujo de trabajo necesita un disparador para comenzar la ejecución.
+
+
+
+ Los **bloques de agente** interactúan con modelos de IA, los **bloques de función** ejecutan código personalizado, y los **bloques de API** conectan con servicios externos. Estos bloques transforman y procesan tus datos.
+
+
+
+ Los **bloques de enrutador** usan IA para elegir caminos, los **bloques de condición** ramifican basándose en lógica, y los **bloques de bucle/paralelo** manejan iteraciones y concurrencia.
+
+
+
+ Los **bloques de respuesta** formatean las salidas finales para APIs e interfaces de chat, devolviendo resultados estructurados de tus flujos de trabajo.
+
+
+
+Todos los bloques se ejecutan automáticamente basándose en sus dependencias - no necesitas gestionar manualmente el orden de ejecución o el tiempo.
+
+## Disparadores de ejecución
+
+Los flujos de trabajo pueden activarse de varias maneras, dependiendo de tu caso de uso:
+
+### Pruebas manuales
+Haz clic en "Ejecutar" en el editor de flujo de trabajo para probar tu flujo de trabajo durante el desarrollo. Perfecto para depuración y validación.
+
+### Ejecución programada
+Configura ejecuciones recurrentes usando expresiones cron. Ideal para procesamiento regular de datos, informes o tareas de mantenimiento.
+
+### Despliegue de API
+Despliega flujos de trabajo como endpoints HTTP que pueden ser llamados programáticamente desde tus aplicaciones.
+
+### Integración de Webhook
+Responde a eventos de servicios externos como GitHub, Stripe o sistemas personalizados en tiempo real.
+
+### Interfaz de chat
+Crea interfaces conversacionales alojadas en subdominios personalizados para aplicaciones de IA orientadas al usuario.
+
+
+ Aprende más sobre cada tipo de disparador en la [sección de Disparadores](/triggers) de la documentación.
+
+
+## Monitoreo de ejecución
+
+Cuando los flujos de trabajo se ejecutan, Sim proporciona visibilidad en tiempo real del proceso de ejecución:
+
+- **Estados de bloques en vivo**: Ve qué bloques se están ejecutando actualmente, cuáles han completado o fallado
+- **Registros de ejecución**: Los registros detallados aparecen en tiempo real mostrando entradas, salidas y cualquier error
+- **Métricas de rendimiento**: Realiza seguimiento del tiempo de ejecución y costos para cada bloque
+- **Visualización de rutas**: Comprende qué rutas de ejecución se tomaron a través de tu flujo de trabajo
+
+
+ Todos los detalles de ejecución son capturados y están disponibles para revisión incluso después de que los flujos de trabajo se completen, ayudando con la depuración y optimización.
+
+
+## Principios clave de ejecución
+
+Entender estos principios fundamentales te ayudará a construir mejores flujos de trabajo:
+
+1. **Ejecución basada en dependencias**: Los bloques solo se ejecutan cuando todas sus dependencias han completado
+2. **Paralelización automática**: Los bloques independientes se ejecutan simultáneamente sin configuración
+3. **Flujo inteligente de datos**: Las salidas fluyen automáticamente a los bloques conectados
+4. **Manejo de errores**: Los bloques fallidos detienen su ruta de ejecución pero no afectan rutas independientes
+5. **Persistencia de estado**: Todas las salidas de bloques y detalles de ejecución se conservan para depuración
+
+## Próximos pasos
+
+Ahora que entiendes los conceptos básicos de ejecución, explora:
+- **[Tipos de bloques](/blocks)** - Aprende sobre las capacidades específicas de los bloques
+- **[Registro](/execution/logging)** - Monitorea ejecuciones de flujos de trabajo y depura problemas
+- **[Cálculo de costos](/execution/costs)** - Comprende y optimiza los costos de flujos de trabajo
+- **[Disparadores](/triggers)** - Configura diferentes formas de ejecutar tus flujos de trabajo
diff --git a/apps/docs/content/docs/es/execution/costs.mdx b/apps/docs/content/docs/es/execution/costs.mdx
new file mode 100644
index 0000000000..78daf6600b
--- /dev/null
+++ b/apps/docs/content/docs/es/execution/costs.mdx
@@ -0,0 +1,186 @@
+---
+title: Cálculo de costos
+---
+
+import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+
+Sim calcula automáticamente los costos de todas las ejecuciones de flujos de trabajo, proporcionando precios transparentes basados en el uso de modelos de IA y cargos de ejecución. Entender estos costos te ayuda a optimizar los flujos de trabajo y gestionar tu presupuesto de manera efectiva.
+
+## Cómo se calculan los costos
+
+Cada ejecución de flujo de trabajo incluye dos componentes de costo:
+
+**Cargo base por ejecución**: $0.001 por ejecución
+
+**Uso de modelos de IA**: Costo variable basado en el consumo de tokens
+
+```javascript
+modelCost = (inputTokens × inputPrice + outputTokens × outputPrice) / 1,000,000
+totalCost = baseExecutionCharge + modelCost
+```
+
+
+ Los precios de los modelos de IA son por millón de tokens. El cálculo divide por 1.000.000 para obtener el costo real. Los flujos de trabajo sin bloques de IA solo incurren en el cargo base de ejecución.
+
+
+## Desglose de modelos en los registros
+
+Para flujos de trabajo que utilizan bloques de IA, puedes ver información detallada de costos en los registros:
+
+
+
+
+
+El desglose del modelo muestra:
+- **Uso de tokens**: Recuentos de tokens de entrada y salida para cada modelo
+- **Desglose de costos**: Costos individuales por modelo y operación
+- **Distribución de modelos**: Qué modelos se utilizaron y cuántas veces
+- **Costo total**: Costo agregado para toda la ejecución del flujo de trabajo
+
+## Opciones de precios
+
+
+
+ **Modelos alojados** - Sim proporciona claves API con un multiplicador de precio de 2,5x:
+
+ | Modelo | Precio base (Entrada/Salida) | Precio alojado (Entrada/Salida) |
+ |-------|---------------------------|----------------------------|
+ | GPT-4o | $2.50 / $10.00 | $6.25 / $25.00 |
+ | GPT-4.1 | $2.00 / $8.00 | $5.00 / $20.00 |
+ | o1 | $15.00 / $60.00 | $37.50 / $150.00 |
+ | o3 | $2.00 / $8.00 | $5.00 / $20.00 |
+ | Claude 3.5 Sonnet | $3.00 / $15.00 | $7.50 / $37.50 |
+ | Claude Opus 4.0 | $15.00 / $75.00 | $37.50 / $187.50 |
+
+ *El multiplicador de 2,5x cubre los costos de infraestructura y gestión de API.*
+
+
+
+ **Tus propias claves API** - Usa cualquier modelo con precio base:
+
+ | Proveedor | Modelos | Entrada / Salida |
+ |----------|---------|----------------|
+ | Google | Gemini 2.5 | $0.15 / $0.60 |
+ | Deepseek | V3, R1 | $0.75 / $1.00 |
+ | xAI | Grok 4, Grok 3 | $5.00 / $25.00 |
+ | Groq | Llama 4 Scout | $0.40 / $0.60 |
+ | Cerebras | Llama 3.3 70B | $0.94 / $0.94 |
+ | Ollama | Modelos locales | Gratis |
+
+ *Paga directamente a los proveedores sin recargo*
+
+
+
+
+ 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.
+
+
+## Estrategias de optimización de costos
+
+
+
+ Elige modelos según la complejidad de la tarea. Las tareas simples pueden usar GPT-4.1-nano ($0.10/$0.40) mientras que el razonamiento complejo podría necesitar o1 o Claude Opus.
+
+
+
+ Los prompts bien estructurados y concisos reducen el uso de tokens sin sacrificar la calidad.
+
+
+
+ Usa Ollama para tareas no críticas para eliminar por completo los costos de API.
+
+
+
+ Almacena resultados frecuentemente utilizados en variables o archivos para evitar llamadas repetidas al modelo de IA.
+
+
+
+ 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
+
+### Seguimiento programático del uso
+
+Puedes consultar tu uso actual y límites de forma programática utilizando la API:
+
+**Endpoint:**
+
+```text
+GET /api/users/me/usage-limits
+```
+
+**Autenticación:**
+- Incluye tu clave API en el encabezado `X-API-Key`
+
+**Ejemplo de solicitud:**
+
+```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:**
+
+```json
+{
+ "success": true,
+ "rateLimit": {
+ "sync": { "isLimited": false, "limit": 10, "remaining": 10, "resetAt": "2025-09-08T22:51:55.999Z" },
+ "async": { "isLimited": false, "limit": 50, "remaining": 50, "resetAt": "2025-09-08T22:51:56.155Z" },
+ "authType": "api"
+ },
+ "usage": {
+ "currentPeriodCost": 12.34,
+ "limit": 100,
+ "plan": "pro"
+ }
+}
+```
+
+**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 de organización agrupados (Equipo/Empresa)
+- `plan` es el plan activo de mayor prioridad asociado a tu usuario
+
+## Límites del plan
+
+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 síncronos, 10 asíncronos |
+| **Pro** | $100 | 10 síncronos, 50 asíncronos |
+| **Equipo** | $500 (agrupado) | 50 síncronos, 100 asíncronos |
+| **Empresa** | Personalizado | Personalizado |
+
+## Mejores prácticas para la gestión de costos
+
+1. **Monitorear regularmente**: Revisa tu panel de uso frecuentemente 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
+
+## 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 monitoreo programático de costos
+- Consulta las [técnicas de optimización de flujo de trabajo](/blocks) para reducir costos
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/execution/index.mdx b/apps/docs/content/docs/es/execution/index.mdx
new file mode 100644
index 0000000000..1eea25ff27
--- /dev/null
+++ b/apps/docs/content/docs/es/execution/index.mdx
@@ -0,0 +1,136 @@
+---
+title: Ejecución
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Card, Cards } from 'fumadocs-ui/components/card'
+
+El motor de ejecución de Sim da vida a tus flujos de trabajo procesando bloques en el orden correcto, gestionando el flujo de datos y manejando errores con elegancia, para que puedas entender exactamente cómo se ejecutan los flujos de trabajo en Sim.
+
+
+ Cada ejecución de flujo de trabajo sigue una ruta determinista basada en tus conexiones de bloques y lógica, asegurando resultados predecibles y confiables.
+
+
+## Resumen de la documentación
+
+
+
+ Aprende sobre el flujo de ejecución fundamental, tipos de bloques y cómo fluyen los datos a través de tu
+ flujo de trabajo
+
+
+
+ Monitorea las ejecuciones de flujos de trabajo con registro completo y visibilidad en tiempo real
+
+
+
+ Comprende cómo se calculan y optimizan los costos de ejecución de flujos de trabajo
+
+
+
+ Accede a registros de ejecución y configura webhooks programáticamente a través de API REST
+
+
+
+## Conceptos clave
+
+### Ejecución topológica
+Los bloques se ejecutan en orden de dependencia, similar a cómo una hoja de cálculo recalcula celdas. El motor de ejecución determina automáticamente qué bloques pueden ejecutarse basándose en las dependencias completadas.
+
+### Seguimiento de rutas
+El motor rastrea activamente las rutas de ejecución a través de tu flujo de trabajo. Los bloques de enrutador y condición actualizan dinámicamente estas rutas, asegurando que solo se ejecuten los bloques relevantes.
+
+### Procesamiento basado en capas
+En lugar de ejecutar bloques uno por uno, el motor identifica capas de bloques que pueden ejecutarse en paralelo, optimizando el rendimiento para flujos de trabajo complejos.
+
+### Contexto de ejecución
+Cada flujo de trabajo mantiene un contexto enriquecido durante la ejecución que contiene:
+- Salidas y estados de bloques
+- Rutas de ejecución activas
+- Seguimiento de iteraciones de bucle y paralelas
+- Variables de entorno
+- Decisiones de enrutamiento
+
+## Disparadores de ejecución
+
+Los flujos de trabajo pueden ejecutarse a través de múltiples canales:
+
+- **Manual**: Prueba y depura directamente en el editor
+- **Desplegar como API**: Crea un punto de conexión HTTP protegido con claves API
+- **Desplegar como Chat**: Crea una interfaz conversacional en un subdominio personalizado
+- **Webhooks**: Responde a eventos externos de servicios de terceros
+- **Programado**: Ejecuta en un horario recurrente usando expresiones cron
+
+### Desplegar como API
+
+Cuando despliegas un flujo de trabajo como API, Sim:
+- Crea un punto de conexión HTTP único: `https://sim.ai/api/workflows/{workflowId}/execute`
+- Genera una clave API para autenticación
+- Acepta solicitudes POST con cargas útiles JSON
+- Devuelve los resultados de ejecución del flujo de trabajo como JSON
+
+Ejemplo de llamada API:
+
+```bash
+curl -X POST https://sim.ai/api/workflows/your-workflow-id/execute \
+ -H "X-API-Key: your-api-key" \
+ -H "Content-Type: application/json" \
+ -d '{"input": "your data here"}'
+```
+
+### Desplegar como Chat
+
+El despliegue de chat crea una interfaz conversacional para tu flujo de trabajo:
+- Alojado en un subdominio personalizado: `https://your-name.sim.ai`
+- Autenticación opcional (pública, con contraseña o basada en correo electrónico)
+- Interfaz de usuario personalizable con tu marca
+- Respuestas en streaming para interacción en tiempo real
+- Perfecto para asistentes de IA, bots de soporte o herramientas interactivas
+
+Cada método de despliegue pasa datos al bloque inicial de tu flujo de trabajo, comenzando el flujo de ejecución.
+
+## Ejecución programática
+
+Ejecuta flujos de trabajo desde tus aplicaciones usando nuestros SDK oficiales:
+
+```bash
+# TypeScript/JavaScript
+npm install simstudio-ts-sdk
+
+# Python
+pip install simstudio-sdk
+```
+
+```typescript
+// TypeScript Example
+import { SimStudioClient } from 'simstudio-ts-sdk';
+
+const client = new SimStudioClient({
+ apiKey: 'your-api-key'
+});
+
+const result = await client.executeWorkflow('workflow-id', {
+ input: { message: 'Hello' }
+});
+```
+
+## Mejores prácticas
+
+### Diseño para fiabilidad
+- Maneja los errores con elegancia mediante rutas de respaldo apropiadas
+- Usa variables de entorno para datos sensibles
+- Añade registro en bloques de Función para depuración
+
+### Optimiza el rendimiento
+- Minimiza las llamadas a API externas cuando sea posible
+- Usa ejecución paralela para operaciones independientes
+- Almacena en caché los resultados con bloques de Memoria cuando sea apropiado
+
+### Monitorea las ejecuciones
+- Revisa los registros regularmente para entender patrones de rendimiento
+- Realiza seguimiento de costos para el uso de modelos de IA
+- Usa instantáneas de flujo de trabajo para depurar problemas
+
+## ¿Qué sigue?
+
+Comienza con [Conceptos básicos de ejecución](/execution/basics) para entender cómo funcionan los flujos de trabajo, luego explora [Registro](/execution/logging) para monitorear tus ejecuciones y [Cálculo de costos](/execution/costs) para optimizar tu gasto.
diff --git a/apps/docs/content/docs/es/execution/logging.mdx b/apps/docs/content/docs/es/execution/logging.mdx
new file mode 100644
index 0000000000..2b1705770b
--- /dev/null
+++ b/apps/docs/content/docs/es/execution/logging.mdx
@@ -0,0 +1,150 @@
+---
+title: Registro
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Image } from '@/components/ui/image'
+
+Sim proporciona un registro completo para todas las ejecuciones de flujos de trabajo, dándote visibilidad total sobre cómo se ejecutan tus flujos de trabajo, qué datos fluyen a través de ellos y dónde podrían ocurrir problemas.
+
+## Sistema de registro
+
+Sim ofrece dos interfaces de registro complementarias para adaptarse a diferentes flujos de trabajo y casos de uso:
+
+### Consola en tiempo real
+
+Durante la ejecución manual o por chat del flujo de trabajo, los registros aparecen en tiempo real en el panel de Consola en el lado derecho del editor de flujo de trabajo:
+
+
+
+
+
+La consola muestra:
+- Progreso de ejecución de bloques con resaltado del bloque activo
+- Resultados en tiempo real a medida que se completan los bloques
+- Tiempo de ejecución para cada bloque
+- Indicadores de estado de éxito/error
+
+### Página de registros
+
+Todas las ejecuciones de flujos de trabajo, ya sean activadas manualmente, a través de API, Chat, Programación o Webhook, se registran en la página dedicada de Registros:
+
+
+
+
+
+La página de Registros proporciona:
+- Filtrado completo por rango de tiempo, estado, tipo de activación, carpeta y flujo de trabajo
+- Funcionalidad de búsqueda en todos los registros
+- Modo en vivo para actualizaciones en tiempo real
+- Retención de registros de 7 días (ampliable para una retención más larga)
+
+## Barra lateral de detalles de registro
+
+Al hacer clic en cualquier entrada de registro se abre una vista detallada en la barra lateral:
+
+
+
+
+
+### Entrada/Salida de bloque
+
+Visualiza el flujo de datos completo para cada bloque con pestañas para cambiar entre:
+
+
+
+ **Pestaña de salida** muestra el resultado de la ejecución del bloque:
+ - Datos estructurados con formato JSON
+ - Renderizado de Markdown para contenido generado por IA
+ - Botón de copiar para fácil extracción de datos
+
+
+
+ **Pestaña de entrada** muestra lo que se pasó al bloque:
+ - Valores de variables resueltos
+ - Salidas referenciadas de otros bloques
+ - Variables de entorno utilizadas
+ - Las claves API se redactan automáticamente por seguridad
+
+
+
+### Cronología de ejecución
+
+Para los registros a nivel de flujo de trabajo, visualiza métricas detalladas de ejecución:
+- Marcas de tiempo de inicio y fin
+- Duración total del flujo de trabajo
+- Tiempos de ejecución de bloques individuales
+- Identificación de cuellos de botella de rendimiento
+
+## Instantáneas del flujo de trabajo
+
+Para cualquier ejecución registrada, haz clic en "Ver instantánea" para ver el estado exacto del flujo de trabajo en el momento de la ejecución:
+
+
+
+
+
+La instantánea proporciona:
+- Lienzo congelado que muestra la estructura del flujo de trabajo
+- Estados de los bloques y conexiones tal como estaban durante la ejecución
+- Haz clic en cualquier bloque para ver sus entradas y salidas
+- Útil para depurar flujos de trabajo que han sido modificados desde entonces
+
+
+ Las instantáneas de flujo de trabajo solo están disponibles para ejecuciones posteriores a la introducción del sistema mejorado de registro. Los registros migrados más antiguos muestran un mensaje de "Estado registrado no encontrado".
+
+
+## Retención de registros
+
+- **Plan gratuito**: 7 días de retención de registros
+- **Plan pro**: 30 días de retención de registros
+- **Plan de equipo**: 90 días de retención de registros
+- **Plan empresarial**: Períodos de retención personalizados disponibles
+
+## Mejores prácticas
+
+### Para desarrollo
+- Utiliza la consola en tiempo real para obtener retroalimentación inmediata durante las pruebas
+- Verifica las entradas y salidas de los bloques para comprobar el flujo de datos
+- Usa instantáneas del flujo de trabajo para comparar versiones funcionales vs. defectuosas
+
+### Para producción
+- Supervisa regularmente la página de registros para detectar errores o problemas de rendimiento
+- Configura filtros para centrarte en flujos de trabajo específicos o períodos de tiempo
+- Utiliza el modo en vivo durante implementaciones críticas para observar las ejecuciones en tiempo real
+
+### Para depuración
+- Siempre verifica la cronología de ejecución para identificar bloques lentos
+- Compara las entradas entre ejecuciones exitosas y fallidas
+- Utiliza instantáneas del flujo de trabajo para ver el estado exacto cuando ocurrieron los problemas
+
+## Próximos pasos
+
+- Aprende sobre [Cálculo de costos](/execution/costs) para entender los precios de los flujos de trabajo
+- Explora la [API externa](/execution/api) para acceso programático a los registros
+- Configura [notificaciones por Webhook](/execution/api#webhook-subscriptions) para alertas en tiempo real
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/getting-started/index.mdx b/apps/docs/content/docs/es/getting-started/index.mdx
new file mode 100644
index 0000000000..824b69b624
--- /dev/null
+++ b/apps/docs/content/docs/es/getting-started/index.mdx
@@ -0,0 +1,193 @@
+---
+title: Primeros pasos
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Card, Cards } from 'fumadocs-ui/components/card'
+import { File, Files, Folder } from 'fumadocs-ui/components/files'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import {
+ AgentIcon,
+ ApiIcon,
+ ChartBarIcon,
+ CodeIcon,
+ ConditionalIcon,
+ ConnectIcon,
+ ExaAIIcon,
+ FirecrawlIcon,
+ GmailIcon,
+ NotionIcon,
+ PerplexityIcon,
+ SlackIcon,
+} from '@/components/icons'
+import { Video } from '@/components/ui/video'
+import { Image } from '@/components/ui/image'
+
+Este tutorial te guiará en la creación de tu primer flujo de trabajo de IA en Sim. Crearemos un agente de investigación de personas que puede encontrar información sobre individuos utilizando herramientas de búsqueda LLM de última generación.
+
+
+ Este tutorial dura aproximadamente 10 minutos y cubre los conceptos esenciales para crear flujos de trabajo en Sim.
+
+
+## Lo que vamos a construir
+
+Un agente de investigación de personas que:
+1. Recibe el nombre de una persona a través de la interfaz de chat
+2. Utiliza un agente de IA con capacidades avanzadas de búsqueda
+3. Busca en la web utilizando herramientas de búsqueda LLM de última generación (Exa y Linkup)
+4. Extrae información estructurada utilizando un formato de respuesta
+5. Devuelve datos completos sobre la persona
+
+
+
+## Tutorial paso a paso
+
+
+
+ Abre Sim y haz clic en "Nuevo flujo de trabajo" en el panel de control. Nómbralo "Primeros pasos".
+
+ Cuando creas un nuevo flujo de trabajo, automáticamente incluye un **bloque de Inicio** - este es el punto de entrada que recibe la entrada de los usuarios. Para este ejemplo, activaremos el flujo de trabajo a través del chat, así que no necesitamos configurar nada en el bloque de Inicio.
+
+ Ahora arrastra un **Bloque de Agente** al lienzo desde el panel de bloques a la izquierda.
+
+ Configura el Bloque de Agente:
+ - **Modelo**: Selecciona "OpenAI GPT-4o"
+ - **Prompt del sistema**: "Eres un agente de investigación de personas. Cuando te den el nombre de una persona, utiliza tus herramientas de búsqueda disponibles para encontrar información completa sobre ellos, incluyendo su ubicación, profesión, formación académica y otros detalles relevantes".
+ - **Prompt del usuario**: Arrastra la conexión desde la salida del bloque de Inicio a este campo (esto conecta `` al prompt del usuario)
+
+
+
+
+
+
+
+ Vamos a mejorar nuestro agente con herramientas para obtener mejores capacidades. Haz clic en el bloque de Agente para seleccionarlo.
+
+ En la sección de **Herramientas**:
+ - Haz clic en **Añadir herramienta**
+ - Selecciona **Exa** de las herramientas disponibles
+ - Selecciona **Linkup** de las herramientas disponibles
+ - Añade tus claves API para ambas herramientas (esto permite al agente buscar en la web y acceder a información adicional)
+
+
+
+
+
+
+
+ Ahora vamos a probar nuestro flujo de trabajo. Ve al **panel de Chat** en el lado derecho de la pantalla.
+
+ En el panel de chat:
+ - Haz clic en el menú desplegable y selecciona `agent1.content` (esto nos mostrará la salida de nuestro agente)
+ - Introduce un mensaje de prueba como: "John es un ingeniero de software de San Francisco que estudió Informática en la Universidad de Stanford".
+ - Haz clic en "Enviar" para ejecutar el flujo de trabajo
+
+ Deberías ver la respuesta del agente analizando a la persona descrita en tu texto.
+
+
+
+
+
+
+
+ Ahora hagamos que nuestro agente devuelva datos estructurados. Haz clic en el bloque de Agente para seleccionarlo.
+
+ En la sección de **Formato de respuesta**:
+ - Haz clic en el **icono de varita mágica** (✨) junto al campo de esquema
+ - En el prompt que aparece, escribe: "crear un esquema llamado persona, que contenga ubicación, profesión y educación"
+ - La IA generará automáticamente un esquema JSON para ti
+
+
+
+
+
+
+
+ Vuelve al **panel de Chat**.
+
+ Como hemos añadido un formato de respuesta, ahora hay nuevas opciones de salida disponibles:
+ - Haz clic en el menú desplegable y selecciona la nueva opción de salida estructurada (el esquema que acabamos de crear)
+ - Introduce un nuevo mensaje de prueba como: "Sarah es una gerente de marketing de Nueva York que tiene un MBA de la Escuela de Negocios de Harvard".
+ - Haz clic en "Enviar" para ejecutar el flujo de trabajo de nuevo
+
+ Ahora deberías ver una salida JSON estructurada con la información de la persona organizada en campos de ubicación, profesión y educación.
+
+
+
+
+
+
+
+## Lo que acabas de construir
+
+¡Felicidades! Has creado tu primer flujo de trabajo de IA que:
+- ✅ Recibe entrada de texto a través de la interfaz de chat
+- ✅ Utiliza IA para extraer información de texto no estructurado
+- ✅ Integra herramientas externas (Exa y Linkup) para capacidades mejoradas
+- ✅ Devuelve datos JSON estructurados utilizando esquemas generados por IA
+- ✅ Demuestra pruebas e iteración de flujos de trabajo
+- ✅ Muestra el poder de la construcción visual de flujos de trabajo
+
+## Conceptos clave que has aprendido
+
+### Tipos de bloques utilizados
+
+
+ }
+ annotation="Punto de entrada para la entrada del usuario (incluido automáticamente)"
+ />
+ }
+ annotation="Modelo de IA para procesamiento y análisis de texto"
+ />
+
+
+### Conceptos fundamentales del flujo de trabajo
+
+**Flujo de datos**: Las variables fluyen entre bloques arrastrando conexiones
+
+**Interfaz de chat**: Prueba flujos de trabajo en tiempo real usando el panel de chat con diferentes opciones de salida
+
+**Integración de herramientas**: Mejora las capacidades del agente añadiendo herramientas externas como Exa y Linkup
+
+**Referencias de variables**: Accede a las salidas de los bloques usando la sintaxis ``
+
+**Salida estructurada**: Utiliza esquemas JSON para obtener datos consistentes y estructurados de la IA
+
+**Esquemas generados por IA**: Usa la varita mágica (✨) para generar esquemas con lenguaje natural
+
+**Desarrollo iterativo**: Prueba, modifica y vuelve a probar flujos de trabajo fácilmente
+
+## Próximos pasos
+
+
+
+ Aprende sobre bloques de API, Función y Condición
+
+
+ Integra con servicios externos como Gmail, Slack y Notion
+
+
+ Usa bloques de Función para procesamiento personalizado de datos
+
+
+ Haz que tu flujo de trabajo sea accesible a través de API REST
+
+
+
+## ¿Necesitas ayuda?
+
+**¿Atascado en algún paso?** Consulta nuestra [documentación de Bloques](/blocks) para explicaciones detalladas de cada componente.
+
+**¿Quieres ver más ejemplos?** Explora nuestra [documentación de Herramientas](/tools) para ver qué integraciones están disponibles.
+
+**¿Listo para implementar?** Aprende sobre [Ejecución e Implementación](/execution) para activar tus flujos de trabajo.
diff --git a/apps/docs/content/docs/es/index.mdx b/apps/docs/content/docs/es/index.mdx
new file mode 100644
index 0000000000..4c4ba1ed43
--- /dev/null
+++ b/apps/docs/content/docs/es/index.mdx
@@ -0,0 +1,60 @@
+---
+title: Documentación
+---
+
+import { Card, Cards } from 'fumadocs-ui/components/card'
+
+# Documentación de Sim
+
+Bienvenido a Sim, un constructor visual de flujos de trabajo para aplicaciones de IA. Crea potentes agentes de IA, flujos de trabajo de automatización y canales de procesamiento de datos conectando bloques en un lienzo.
+
+## Inicio rápido
+
+
+
+ Aprende lo que puedes construir con Sim
+
+
+ Crea tu primer flujo de trabajo en 10 minutos
+
+
+ Aprende sobre los bloques de construcción
+
+
+ Explora más de 80 integraciones incorporadas
+
+
+
+## Conceptos fundamentales
+
+
+
+ Comprende cómo fluyen los datos entre bloques
+
+
+ Trabaja con variables de flujo de trabajo y de entorno
+
+
+ Monitoriza las ejecuciones de flujos de trabajo y gestiona costos
+
+
+ Inicia flujos de trabajo mediante API, webhooks o programaciones
+
+
+
+## Características avanzadas
+
+
+
+ Configura roles y permisos de espacio de trabajo
+
+
+ Define flujos de trabajo como código
+
+
+ Conecta servicios externos con el Protocolo de Contexto de Modelo
+
+
+ Integra Sim en tus aplicaciones
+
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/introduction/index.mdx b/apps/docs/content/docs/es/introduction/index.mdx
new file mode 100644
index 0000000000..7d248a4655
--- /dev/null
+++ b/apps/docs/content/docs/es/introduction/index.mdx
@@ -0,0 +1,93 @@
+---
+title: Introducción
+---
+
+import { Card, Cards } from 'fumadocs-ui/components/card'
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+Sim es un constructor visual de flujos de trabajo para aplicaciones de IA que te permite crear flujos de trabajo de agentes de IA de forma visual. Crea agentes de IA potentes, flujos de trabajo de automatización y pipelines de procesamiento de datos conectando bloques en un lienzo—sin necesidad de código.
+
+
+
+
+
+## Lo Que Puedes Crear
+
+**Asistentes de IA y Chatbots**
+Crea agentes inteligentes que pueden buscar en la web, acceder a tu calendario, enviar correos electrónicos e interactuar con tus herramientas de negocio.
+
+**Automatización de Procesos de Negocio**
+Automatiza tareas repetitivas como entrada de datos, generación de informes, respuestas de soporte al cliente y creación de contenido.
+
+**Procesamiento y Análisis de Datos**
+Extrae información de documentos, analiza conjuntos de datos, genera informes y sincroniza datos entre sistemas.
+
+**Flujos de Trabajo de Integración de API**
+Conecta múltiples servicios en endpoints unificados, orquesta lógica de negocio compleja y maneja automatización basada en eventos.
+
+## Cómo Funciona
+
+**Lienzo Visual**
+Arrastra y suelta bloques para crear flujos de trabajo. Conecta modelos de IA, bases de datos, APIs y herramientas de negocio con conexiones simples de apuntar y hacer clic.
+
+**Bloques Inteligentes**
+Elige entre bloques de procesamiento (agentes de IA, APIs, funciones), bloques de lógica (condiciones, bucles, enrutadores) y bloques de salida (respuestas, evaluadores).
+
+**Múltiples Disparadores**
+Inicia flujos de trabajo a través de interfaz de chat, API REST, webhooks, trabajos programados o eventos externos de servicios como Slack y GitHub.
+
+**Colaboración en Equipo**
+Trabaja simultáneamente con miembros del equipo en el mismo flujo de trabajo con edición en tiempo real y gestión de permisos.
+
+## Próximos Pasos
+
+¿Listo para crear tu primer flujo de trabajo de IA?
+
+
+
+ Crea tu primer flujo de trabajo en 10 minutos
+
+
+ Aprende sobre los bloques de construcción
+
+
+ Explora más de 60 integraciones integradas
+
+
+ Configura roles y permisos del espacio de trabajo
+
+
+
+¿Necesitas algo personalizado? Usa nuestra [integración MCP](/mcp) para conectar cualquier servicio externo.
+
+## Opciones de implementación
+
+**Alojado en la nube**: Comienza al instante en [sim.ai](https://sim.ai) con infraestructura gestionada, escalado automático y monitorización integrada.
+
+**Autoalojado**: Implementa en tu propia infraestructura usando Docker, con soporte para modelos de IA locales a través de Ollama para una privacidad completa de datos.
+
+## Próximos pasos
+
+¿Listo para construir tu primer flujo de trabajo de IA?
+
+
+
+ Crea tu primer flujo de trabajo en 10 minutos
+
+
+ Aprende sobre los componentes básicos
+
+
+ Explora más de 60 integraciones incorporadas
+
+
+ Configura roles y permisos del espacio de trabajo
+
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/knowledgebase/index.mdx b/apps/docs/content/docs/es/knowledgebase/index.mdx
new file mode 100644
index 0000000000..3a04aa5984
--- /dev/null
+++ b/apps/docs/content/docs/es/knowledgebase/index.mdx
@@ -0,0 +1,113 @@
+---
+title: Base de conocimientos
+---
+
+import { Video } from '@/components/ui/video'
+import { Image } from '@/components/ui/image'
+
+La base de conocimientos te permite cargar, procesar y buscar a través de tus documentos con búsqueda vectorial inteligente y fragmentación. Los documentos de varios tipos se procesan, incorporan y hacen buscables automáticamente. Tus documentos se fragmentan de manera inteligente, y puedes verlos, editarlos y buscar a través de ellos utilizando consultas en lenguaje natural.
+
+## Carga y procesamiento
+
+Simplemente carga tus documentos para comenzar. Sim los procesa automáticamente en segundo plano, extrayendo texto, creando incrustaciones y dividiéndolos en fragmentos buscables.
+
+
+
+
+
+El sistema maneja todo el proceso por ti:
+
+1. **Extracción de texto**: El contenido se extrae de tus documentos utilizando analizadores especializados para cada tipo de archivo
+2. **Fragmentación inteligente**: Los documentos se dividen en fragmentos significativos con tamaño y superposición configurables
+3. **Generación de incrustaciones**: Se crean incrustaciones vectoriales para capacidades de búsqueda semántica
+4. **Estado del procesamiento**: Sigue el progreso mientras tus documentos son procesados
+
+## Tipos de archivos compatibles
+
+Sim admite archivos PDF, Word (DOC/DOCX), texto plano (TXT), Markdown (MD), HTML, Excel (XLS/XLSX), PowerPoint (PPT/PPTX) y CSV. Los archivos pueden tener hasta 100MB cada uno, con un rendimiento óptimo para archivos de menos de 50MB. Puedes cargar múltiples documentos simultáneamente, y los archivos PDF incluyen procesamiento OCR para documentos escaneados.
+
+## Visualización y edición de fragmentos
+
+Una vez que tus documentos están procesados, puedes ver y editar los fragmentos individuales. Esto te da control total sobre cómo se organiza y busca tu contenido.
+
+
+
+### 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)
+
+### 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
+
+## Procesamiento avanzado de PDF
+
+Para documentos PDF, Sim ofrece capacidades de procesamiento mejoradas:
+
+### Soporte 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
+
+## 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.
+
+
+
+### 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
+
+### 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
+
+## 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:
+
+### 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
+
+### 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
+
+## 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
+
+### 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
+
+## 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
+
+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.
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/knowledgebase/tags.mdx b/apps/docs/content/docs/es/knowledgebase/tags.mdx
new file mode 100644
index 0000000000..b1ab4ec50f
--- /dev/null
+++ b/apps/docs/content/docs/es/knowledgebase/tags.mdx
@@ -0,0 +1,108 @@
+---
+title: Etiquetas y filtrado
+---
+
+import { Video } from '@/components/ui/video'
+
+Las etiquetas proporcionan una forma poderosa de organizar tus documentos y crear filtros precisos para tus búsquedas vectoriales. Al combinar el filtrado basado en etiquetas con la búsqueda semántica, puedes recuperar exactamente el contenido que necesitas de tu base de conocimientos.
+
+## Añadir etiquetas a documentos
+
+Puedes añadir etiquetas personalizadas a cualquier documento en tu base de conocimientos para organizar y categorizar tu contenido para una recuperación más fácil.
+
+
+
+
+
+### Gestión de etiquetas
+- **Etiquetas personalizadas**: Crea tu propio sistema de etiquetas que se adapte a tu flujo de trabajo
+- **Múltiples etiquetas por documento**: Aplica tantas etiquetas como necesites a cada documento, hay 7 espacios para etiquetas disponibles por base de conocimientos que son compartidos por todos los documentos en la base de conocimientos
+- **Organización de etiquetas**: Agrupa documentos relacionados con un etiquetado consistente
+
+### Mejores prácticas para etiquetas
+- **Nomenclatura consistente**: Usa nombres de etiquetas estandarizados en todos tus documentos
+- **Etiquetas descriptivas**: Utiliza nombres de etiquetas claros y significativos
+- **Limpieza regular**: Elimina periódicamente las etiquetas no utilizadas u obsoletas
+
+## Uso de etiquetas en bloques de conocimiento
+
+Las etiquetas se vuelven poderosas cuando se combinan con el bloque de Conocimiento en tus flujos de trabajo. Puedes filtrar tus búsquedas a contenido específico etiquetado, asegurando que tus agentes de IA obtengan la información más relevante.
+
+
+
+
+
+## Modos de búsqueda
+
+El bloque de Conocimiento admite tres modos diferentes de búsqueda dependiendo de lo que proporciones:
+
+### 1. Búsqueda solo por etiquetas
+Cuando **solo proporcionas etiquetas** (sin consulta de búsqueda):
+- **Recuperación directa**: Obtiene todos los documentos que tienen las etiquetas especificadas
+- **Sin búsqueda vectorial**: Los resultados se basan puramente en la coincidencia de etiquetas
+- **Rendimiento rápido**: Recuperación rápida sin procesamiento semántico
+- **Coincidencia exacta**: Solo se devuelven documentos con todas las etiquetas especificadas
+
+**Caso de uso**: Cuando necesitas todos los documentos de una categoría o proyecto específico
+
+### 2. Solo búsqueda vectorial
+Cuando **solo proporcionas una consulta de búsqueda** (sin etiquetas):
+- **Búsqueda semántica**: Encuentra contenido basado en significado y contexto
+- **Base de conocimiento completa**: Busca en todos los documentos
+- **Clasificación por relevancia**: Resultados ordenados por similitud semántica
+- **Lenguaje natural**: Usa preguntas o frases para encontrar contenido relevante
+
+**Caso de uso**: Cuando necesitas el contenido más relevante independientemente de la organización
+
+### 3. Combinación de filtrado por etiquetas + búsqueda vectorial
+Cuando **proporcionas tanto etiquetas como una consulta de búsqueda**:
+1. **Primero**: Filtra documentos solo a aquellos con las etiquetas especificadas
+2. **Luego**: Realiza una búsqueda vectorial dentro de ese subconjunto filtrado
+3. **Resultado**: Contenido semánticamente relevante solo de tus documentos etiquetados
+
+**Caso de uso**: Cuando necesitas contenido relevante de una categoría o proyecto específico
+
+### Configuración de búsqueda
+
+#### Filtrado por etiquetas
+- **Múltiples etiquetas**: Usa múltiples etiquetas para lógica OR (el documento debe tener una o más de las etiquetas)
+- **Combinaciones de etiquetas**: Mezcla diferentes tipos de etiquetas para un filtrado preciso
+- **Sensibilidad a mayúsculas**: La coincidencia de etiquetas no distingue entre mayúsculas y minúsculas
+- **Coincidencia parcial**: Se requiere coincidencia exacta del nombre de la etiqueta
+
+#### Parámetros de búsqueda vectorial
+- **Complejidad de consulta**: Las preguntas en lenguaje natural funcionan mejor
+- **Límites de resultados**: Configura cuántos fragmentos recuperar
+- **Umbral de relevancia**: Establece puntuaciones mínimas de similitud
+- **Ventana de contexto**: Ajusta el tamaño del fragmento para tu caso de uso
+
+## Integración con flujos de trabajo
+
+### Configuración del bloque de conocimiento
+1. **Seleccionar base de conocimiento**: Elige qué base de conocimiento buscar
+2. **Añadir etiquetas**: Especifica etiquetas de filtrado (opcional)
+3. **Introducir consulta**: Añade tu consulta de búsqueda (opcional)
+4. **Configurar resultados**: Establece el número de fragmentos a recuperar
+5. **Probar búsqueda**: Vista previa de resultados antes de usar en el flujo de trabajo
+
+### Uso dinámico de etiquetas
+- **Etiquetas variables**: Usa variables de flujo de trabajo como valores de etiquetas
+- **Filtrado condicional**: Aplica diferentes etiquetas según la lógica del flujo de trabajo
+- **Búsqueda contextual**: Ajusta las etiquetas según el contexto de la conversación
+- **Filtrado en múltiples pasos**: Refina las búsquedas a través de los pasos del flujo de trabajo
+
+### Optimización del rendimiento
+- **Filtrado eficiente**: El filtrado por etiquetas ocurre antes de la búsqueda vectorial para un mejor rendimiento
+- **Almacenamiento en caché**: Las combinaciones de etiquetas utilizadas con frecuencia se almacenan en caché para mayor velocidad
+- **Procesamiento paralelo**: Múltiples búsquedas de etiquetas pueden ejecutarse simultáneamente
+- **Gestión de recursos**: Optimización automática de los recursos de búsqueda
+
+## Primeros pasos con etiquetas
+
+1. **Planifica tu estructura de etiquetas**: Decide convenciones de nomenclatura consistentes
+2. **Comienza a etiquetar**: Añade etiquetas relevantes a tus documentos existentes
+3. **Prueba combinaciones**: Experimenta con combinaciones de etiquetas + consultas de búsqueda
+4. **Integra en flujos de trabajo**: Usa el bloque de Conocimiento con tu estrategia de etiquetado
+5. **Refina con el tiempo**: Ajusta tu enfoque de etiquetado basándote en los resultados de búsqueda
+
+Las etiquetas transforman tu base de conocimiento de un simple almacén de documentos a un sistema de inteligencia organizado con precisión que tus flujos de trabajo de IA pueden navegar con precisión quirúrgica.
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/mcp/index.mdx b/apps/docs/content/docs/es/mcp/index.mdx
new file mode 100644
index 0000000000..53a087e5b7
--- /dev/null
+++ b/apps/docs/content/docs/es/mcp/index.mdx
@@ -0,0 +1,140 @@
+---
+title: MCP (Protocolo de Contexto de Modelo)
+---
+
+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.
+
+## ¿Qué es MCP?
+
+MCP es un estándar abierto que permite a los asistentes de IA conectarse de forma segura a fuentes de datos y herramientas externas. Proporciona una forma estandarizada para:
+
+- Conectar a bases de datos, APIs y sistemas de archivos
+- Acceder a datos en tiempo real desde servicios externos
+- Ejecutar herramientas y scripts personalizados
+- Mantener un acceso seguro y controlado a recursos externos
+
+## Añadir servidores MCP
+
+Los servidores MCP proporcionan colecciones de herramientas que tus agentes pueden utilizar. Puedes añadir servidores MCP de dos maneras:
+
+### Desde la configuración del espacio de trabajo
+
+Configura los servidores MCP a nivel de espacio de trabajo para que todos los miembros del equipo puedan utilizarlos:
+
+
+
+
+
+1. Navega a la configuración de tu espacio de trabajo
+2. Ve a la sección **Servidores MCP**
+3. Haz clic en **Añadir servidor MCP**
+4. Introduce los detalles de configuración del servidor
+5. Guarda la configuración
+
+
+Los servidores MCP configurados en la configuración del espacio de trabajo están disponibles para todos los miembros del espacio de trabajo según sus niveles de permisos.
+
+
+### Desde la configuración del agente
+
+También puedes añadir y configurar servidores MCP directamente desde un bloque de agente:
+
+
+
+
+
+Esto es útil cuando necesitas configurar rápidamente una integración específica para un flujo de trabajo particular.
+
+## Uso de herramientas MCP en agentes
+
+Una vez que los servidores MCP están configurados, sus herramientas quedan disponibles dentro de tus bloques de agente:
+
+
+
+
+
+1. Abre un bloque de **Agente**
+2. En la sección de **Herramientas**, verás las herramientas MCP disponibles
+3. Selecciona las herramientas que quieres que el agente utilice
+4. El agente ahora puede acceder a estas herramientas durante la ejecución
+
+## 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:
+
+
+
+
+
+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
+
+**Usa el 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
+
+**Usa el bloque de herramienta MCP cuando:**
+- 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
+
+La funcionalidad MCP requiere permisos específicos del espacio de trabajo:
+
+| Acción | Permiso requerido |
+|--------|-------------------|
+| Configurar servidores MCP en ajustes | **Admin** |
+| Usar herramientas MCP en agentes | **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 de bases de datos
+Conéctate a 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 Sim incorporadas.
+
+### 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.
+
+### Acceso a datos en tiempo real
+Obtén datos en vivo de sistemas externos durante la ejecución del flujo de trabajo.
+
+## 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
+- Utiliza variables de entorno para datos de configuración sensibles
+- Revisa las capacidades del servidor MCP antes de conceder 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
+
+### 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
+- Asegúrate de que la autenticación requerida esté configurada
+
+### Errores de permisos
+- Confirma tu nivel de permiso 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
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/permissions/roles-and-permissions.mdx b/apps/docs/content/docs/es/permissions/roles-and-permissions.mdx
new file mode 100644
index 0000000000..ff75ae6196
--- /dev/null
+++ b/apps/docs/content/docs/es/permissions/roles-and-permissions.mdx
@@ -0,0 +1,161 @@
+---
+title: Roles y permisos
+---
+
+import { Video } from '@/components/ui/video'
+
+Cuando invitas a miembros del equipo a tu organización o espacio de trabajo, necesitarás elegir qué nivel de acceso otorgarles. Esta guía explica lo que permite hacer cada nivel de permiso, ayudándote a entender los roles del equipo y qué acceso proporciona cada nivel de permiso.
+
+## Cómo invitar a alguien a un espacio de trabajo
+
+
+
+
+
+## Niveles de permiso del espacio de trabajo
+
+Al invitar a alguien a un espacio de trabajo, puedes asignar uno de tres niveles de permiso:
+
+| Permiso | Lo que pueden hacer |
+|------------|------------------|
+| **Lectura** | Ver flujos de trabajo, ver resultados de ejecución, pero no pueden realizar ningún cambio |
+| **Escritura** | Crear y editar flujos de trabajo, ejecutar flujos de trabajo, gestionar variables de entorno |
+| **Administrador** | Todo lo que puede hacer Escritura, además de invitar/eliminar usuarios y gestionar la configuración del espacio de trabajo |
+
+## Lo que puede hacer cada nivel de permiso
+
+Aquí hay un desglose detallado de lo que los usuarios pueden hacer con cada nivel de permiso:
+
+### Permiso de lectura
+**Perfecto para:** Interesados, observadores o miembros del equipo que necesitan visibilidad pero no deberían hacer cambios
+
+**Lo que pueden hacer:**
+- Ver todos los flujos de trabajo en el espacio de trabajo
+- Ver resultados y registros de ejecución de flujos de trabajo
+- Explorar configuraciones y ajustes de flujos de trabajo
+- Ver variables de entorno (pero no editarlas)
+
+**Lo que no pueden hacer:**
+- Crear, editar o eliminar flujos de trabajo
+- Ejecutar o implementar flujos de trabajo
+- Cambiar cualquier configuración del espacio de trabajo
+- Invitar a otros usuarios
+
+### Permiso de escritura
+**Perfecto para:** Desarrolladores, creadores de contenido o miembros del equipo que trabajan activamente en automatización
+
+**Lo que pueden hacer:**
+- Todo lo que pueden hacer los usuarios de Lectura, además de:
+- Crear, editar y eliminar flujos de trabajo
+- Ejecutar e implementar flujos de trabajo
+- Añadir, editar y eliminar variables de entorno del espacio de trabajo
+- Usar todas las herramientas e integraciones disponibles
+- Colaborar en tiempo real en la edición de flujos de trabajo
+
+**Lo que no pueden hacer:**
+- Invitar o eliminar usuarios del espacio de trabajo
+- Cambiar la configuración del espacio de trabajo
+- Eliminar el espacio de trabajo
+
+### Permiso de administrador
+**Perfecto para:** Líderes de equipo, gerentes de proyecto o líderes técnicos que necesitan gestionar el espacio de trabajo
+
+**Lo que pueden hacer:**
+- Todo lo que los usuarios con permiso de escritura pueden hacer, además de:
+- Invitar a nuevos usuarios al espacio de trabajo con cualquier nivel de permiso
+- Eliminar usuarios del espacio de trabajo
+- Gestionar la configuración e integraciones del espacio de trabajo
+- Configurar conexiones con herramientas externas
+- Eliminar flujos de trabajo creados por otros usuarios
+
+**Lo que no pueden hacer:**
+- Eliminar el espacio de trabajo (solo el propietario del espacio de trabajo puede hacer esto)
+- Eliminar al propietario del espacio de trabajo
+
+---
+
+## Propietario del espacio de trabajo vs administrador
+
+Cada espacio de trabajo tiene un **Propietario** (la persona que lo creó) además de cualquier número de **Administradores**.
+
+### Propietario del espacio de trabajo
+- Tiene todos los permisos de administrador
+- Puede eliminar el espacio de trabajo
+- No puede ser eliminado del espacio de trabajo
+- Puede transferir la propiedad a otro usuario
+
+### Administrador del espacio de trabajo
+- Puede hacer todo excepto eliminar el espacio de trabajo o eliminar al propietario
+- Puede ser eliminado del espacio de trabajo por el propietario u otros administradores
+
+---
+
+## Escenarios comunes
+
+### Añadir un nuevo desarrollador a tu equipo
+1. **Nivel de organización**: Invítalo como **Miembro de la organización**
+2. **Nivel de espacio de trabajo**: Dale permiso de **Escritura** para que pueda crear y editar flujos de trabajo
+
+### Añadir un gerente de proyecto
+1. **Nivel de organización**: Invítalo como **Miembro de la organización**
+2. **Nivel de espacio de trabajo**: Dale permiso de **Administrador** para que pueda gestionar el equipo y ver todo
+
+### Añadir un interesado o cliente
+1. **Nivel de organización**: Invítalo como **Miembro de la organización**
+2. **Nivel de espacio de trabajo**: Dale permiso de **Lectura** para que pueda ver el progreso pero no hacer cambios
+
+---
+
+## Variables de entorno
+
+Los usuarios pueden crear dos tipos de variables de entorno:
+
+### Variables de entorno personales
+- Solo visibles para el usuario individual
+- Disponibles en todos los flujos de trabajo que ejecutan
+- Gestionadas en la configuración del usuario
+
+### Variables de entorno del espacio de trabajo
+- **Permiso de lectura**: Puede ver nombres y valores de variables
+- **Permiso de escritura/administración**: Puede añadir, editar y eliminar variables
+- Disponibles para todos los miembros del espacio de trabajo
+- Si una variable personal tiene el mismo nombre que una variable del espacio de trabajo, la personal tiene prioridad
+
+---
+
+## Mejores prácticas
+
+### Comienza con permisos mínimos
+Otorga a los usuarios el nivel de permiso más bajo que necesiten para hacer su trabajo. Siempre puedes aumentar los permisos más tarde.
+
+### Usa la estructura de la organización sabiamente
+- Haz que los líderes de equipo de confianza sean **Administradores de la organización**
+- La mayoría de los miembros del equipo deberían ser **Miembros de la organización**
+- Reserva los permisos de **Administrador** del espacio de trabajo para personas que necesiten gestionar usuarios
+
+### Revisa los permisos regularmente
+Revisa periódicamente quién tiene acceso a qué, especialmente cuando los miembros del equipo cambian de roles o dejan la empresa.
+
+### Seguridad de las variables de entorno
+- Usa variables de entorno personales para claves API sensibles
+- Usa variables de entorno del espacio de trabajo para configuración compartida
+- Audita regularmente quién tiene acceso a variables sensibles
+
+---
+
+## Roles de la organización
+
+Al invitar a alguien a tu organización, puedes asignar uno de dos roles:
+
+### Administrador de la organización
+**Lo que pueden hacer:**
+- Invitar y eliminar miembros del equipo de la organización
+- Crear nuevos espacios de trabajo
+- Gestionar la facturación y configuración de suscripción
+- Acceder a todos los espacios de trabajo dentro de la organización
+
+### Miembro de la organización
+**Lo que pueden hacer:**
+- Acceder a espacios de trabajo a los que han sido específicamente invitados
+- Ver la lista de miembros de la organización
+- No pueden invitar a nuevas personas ni gestionar la configuración de la organización
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/sdks/python.mdx b/apps/docs/content/docs/es/sdks/python.mdx
new file mode 100644
index 0000000000..4203006117
--- /dev/null
+++ b/apps/docs/content/docs/es/sdks/python.mdx
@@ -0,0 +1,412 @@
+---
+title: Python SDK
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Card, Cards } from 'fumadocs-ui/components/card'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+
+El SDK oficial de Python para Sim te permite ejecutar flujos de trabajo programáticamente desde tus aplicaciones Python utilizando el SDK oficial de Python.
+
+
+ El SDK de Python es compatible con Python 3.8+ y proporciona ejecución sincrónica de flujos de trabajo. Todas las ejecuciones de flujos de trabajo son actualmente sincrónicas.
+
+
+## Instalación
+
+Instala el SDK usando pip:
+
+```bash
+pip install simstudio-sdk
+```
+
+## Inicio rápido
+
+Aquí tienes un ejemplo sencillo para empezar:
+
+```python
+from simstudio import SimStudioClient
+
+# Initialize the client
+client = SimStudioClient(
+ api_key="your-api-key-here",
+ base_url="https://sim.ai" # optional, defaults to https://sim.ai
+)
+
+# Execute a workflow
+try:
+ result = client.execute_workflow("workflow-id")
+ print("Workflow executed successfully:", result)
+except Exception as error:
+ print("Workflow execution failed:", error)
+```
+
+## Referencia de la API
+
+### SimStudioClient
+
+#### Constructor
+
+```python
+SimStudioClient(api_key: str, base_url: str = "https://sim.ai")
+```
+
+**Parámetros:**
+- `api_key` (str): Tu clave API de Sim
+- `base_url` (str, opcional): URL base para la API de Sim
+
+#### Métodos
+
+##### execute_workflow()
+
+Ejecuta un flujo de trabajo con datos de entrada opcionales.
+
+```python
+result = client.execute_workflow(
+ "workflow-id",
+ input_data={"message": "Hello, world!"},
+ timeout=30.0 # 30 seconds
+)
+```
+
+**Parámetros:**
+- `workflow_id` (str): El ID del flujo de trabajo a ejecutar
+- `input_data` (dict, opcional): Datos de entrada para pasar al flujo de trabajo
+- `timeout` (float, opcional): Tiempo de espera en segundos (predeterminado: 30.0)
+
+**Devuelve:** `WorkflowExecutionResult`
+
+##### get_workflow_status()
+
+Obtiene el estado de un flujo de trabajo (estado de implementación, etc.).
+
+```python
+status = client.get_workflow_status("workflow-id")
+print("Is deployed:", status.is_deployed)
+```
+
+**Parámetros:**
+- `workflow_id` (str): El ID del flujo de trabajo
+
+**Devuelve:** `WorkflowStatus`
+
+##### validate_workflow()
+
+Valida que un flujo de trabajo esté listo para su ejecución.
+
+```python
+is_ready = client.validate_workflow("workflow-id")
+if is_ready:
+ # Workflow is deployed and ready
+ pass
+```
+
+**Parámetros:**
+- `workflow_id` (str): El ID del flujo de trabajo
+
+**Devuelve:** `bool`
+
+##### execute_workflow_sync()
+
+
+ Actualmente, este método es idéntico a `execute_workflow()` ya que todas las ejecuciones son síncronas. Este método se proporciona para compatibilidad futura cuando se añada la ejecución asíncrona.
+
+
+Ejecuta un flujo de trabajo (actualmente síncrono, igual que `execute_workflow()`).
+
+```python
+result = client.execute_workflow_sync(
+ "workflow-id",
+ input_data={"data": "some input"},
+ timeout=60.0
+)
+```
+
+**Parámetros:**
+- `workflow_id` (str): El ID del flujo de trabajo a ejecutar
+- `input_data` (dict, opcional): Datos de entrada para pasar al flujo de trabajo
+- `timeout` (float): Tiempo de espera para la solicitud inicial en segundos
+
+**Devuelve:** `WorkflowExecutionResult`
+
+##### set_api_key()
+
+Actualiza la clave API.
+
+```python
+client.set_api_key("new-api-key")
+```
+
+##### set_base_url()
+
+Actualiza la URL base.
+
+```python
+client.set_base_url("https://my-custom-domain.com")
+```
+
+##### close()
+
+Cierra la sesión HTTP subyacente.
+
+```python
+client.close()
+```
+
+## Clases de datos
+
+### WorkflowExecutionResult
+
+```python
+@dataclass
+class WorkflowExecutionResult:
+ success: bool
+ output: Optional[Any] = None
+ error: Optional[str] = None
+ logs: Optional[List[Any]] = None
+ metadata: Optional[Dict[str, Any]] = None
+ trace_spans: Optional[List[Any]] = None
+ total_duration: Optional[float] = None
+```
+
+### WorkflowStatus
+
+```python
+@dataclass
+class WorkflowStatus:
+ is_deployed: bool
+ deployed_at: Optional[str] = None
+ is_published: bool = False
+ needs_redeployment: bool = False
+```
+
+### SimStudioError
+
+```python
+class SimStudioError(Exception):
+ def __init__(self, message: str, code: Optional[str] = None, status: Optional[int] = None):
+ super().__init__(message)
+ self.code = code
+ self.status = status
+```
+
+## Ejemplos
+
+### Ejecución básica de flujo de trabajo
+
+
+
+ Configura el SimStudioClient con tu clave API.
+
+
+ Comprueba si el flujo de trabajo está desplegado y listo para su ejecución.
+
+
+ Ejecuta el flujo de trabajo con tus datos de entrada.
+
+
+ Procesa el resultado de la ejecución y maneja cualquier error.
+
+
+
+```python
+import os
+from simstudio import SimStudioClient
+
+client = SimStudioClient(api_key=os.getenv("SIMSTUDIO_API_KEY"))
+
+def run_workflow():
+ try:
+ # Check if workflow is ready
+ is_ready = client.validate_workflow("my-workflow-id")
+ if not is_ready:
+ raise Exception("Workflow is not deployed or ready")
+
+ # Execute the workflow
+ result = client.execute_workflow(
+ "my-workflow-id",
+ input_data={
+ "message": "Process this data",
+ "user_id": "12345"
+ }
+ )
+
+ if result.success:
+ print("Output:", result.output)
+ print("Duration:", result.metadata.get("duration") if result.metadata else None)
+ else:
+ print("Workflow failed:", result.error)
+
+ except Exception as error:
+ print("Error:", error)
+
+run_workflow()
+```
+
+### Manejo de errores
+
+Maneja diferentes tipos de errores que pueden ocurrir durante la ejecución del flujo de trabajo:
+
+```python
+from simstudio import SimStudioClient, SimStudioError
+import os
+
+client = SimStudioClient(api_key=os.getenv("SIMSTUDIO_API_KEY"))
+
+def execute_with_error_handling():
+ try:
+ result = client.execute_workflow("workflow-id")
+ return result
+ except SimStudioError as error:
+ if error.code == "UNAUTHORIZED":
+ print("Invalid API key")
+ elif error.code == "TIMEOUT":
+ print("Workflow execution timed out")
+ elif error.code == "USAGE_LIMIT_EXCEEDED":
+ print("Usage limit exceeded")
+ elif error.code == "INVALID_JSON":
+ print("Invalid JSON in request body")
+ else:
+ print(f"Workflow error: {error}")
+ raise
+ except Exception as error:
+ print(f"Unexpected error: {error}")
+ raise
+```
+
+### Uso del administrador de contexto
+
+Usa el cliente como un administrador de contexto para manejar automáticamente la limpieza de recursos:
+
+```python
+from simstudio import SimStudioClient
+import os
+
+# Using context manager to automatically close the session
+with SimStudioClient(api_key=os.getenv("SIMSTUDIO_API_KEY")) as client:
+ result = client.execute_workflow("workflow-id")
+ print("Result:", result)
+# Session is automatically closed here
+```
+
+### Ejecución por lotes de flujos de trabajo
+
+Ejecuta múltiples flujos de trabajo de manera eficiente:
+
+```python
+from simstudio import SimStudioClient
+import os
+
+client = SimStudioClient(api_key=os.getenv("SIMSTUDIO_API_KEY"))
+
+def execute_workflows_batch(workflow_data_pairs):
+ """Execute multiple workflows with different input data."""
+ results = []
+
+ for workflow_id, input_data in workflow_data_pairs:
+ try:
+ # Validate workflow before execution
+ if not client.validate_workflow(workflow_id):
+ print(f"Skipping {workflow_id}: not deployed")
+ continue
+
+ result = client.execute_workflow(workflow_id, input_data)
+ results.append({
+ "workflow_id": workflow_id,
+ "success": result.success,
+ "output": result.output,
+ "error": result.error
+ })
+
+ except Exception as error:
+ results.append({
+ "workflow_id": workflow_id,
+ "success": False,
+ "error": str(error)
+ })
+
+ return results
+
+# Example usage
+workflows = [
+ ("workflow-1", {"type": "analysis", "data": "sample1"}),
+ ("workflow-2", {"type": "processing", "data": "sample2"}),
+]
+
+results = execute_workflows_batch(workflows)
+for result in results:
+ print(f"Workflow {result['workflow_id']}: {'Success' if result['success'] else 'Failed'}")
+```
+
+### Configuración del entorno
+
+Configura el cliente usando variables de entorno:
+
+
+
+
+ ```python
+ import os
+ from simstudio import SimStudioClient
+
+ # Development configuration
+ client = SimStudioClient(
+ api_key=os.getenv("SIMSTUDIO_API_KEY"),
+ base_url=os.getenv("SIMSTUDIO_BASE_URL", "https://sim.ai")
+ )
+ ```
+
+
+
+
+ ```python
+ import os
+ from simstudio import SimStudioClient
+
+ # Production configuration with error handling
+ api_key = os.getenv("SIMSTUDIO_API_KEY")
+ if not api_key:
+ raise ValueError("SIMSTUDIO_API_KEY environment variable is required")
+
+ client = SimStudioClient(
+ api_key=api_key,
+ base_url=os.getenv("SIMSTUDIO_BASE_URL", "https://sim.ai")
+ )
+ ```
+
+
+
+
+## Obtener tu clave API
+
+
+
+ Navega a [Sim](https://sim.ai) e inicia sesión en tu cuenta.
+
+
+ Navega al flujo de trabajo que quieres ejecutar programáticamente.
+
+
+ Haz clic en "Deploy" para desplegar tu flujo de trabajo si aún no ha sido desplegado.
+
+
+ Durante el proceso de despliegue, selecciona o crea una clave API.
+
+
+ Copia la clave API para usarla en tu aplicación Python.
+
+
+
+
+ Mantén tu clave API segura y nunca la incluyas en el control de versiones. Utiliza variables de entorno o gestión de configuración segura.
+
+
+## Requisitos
+
+- Python 3.8+
+- requests >= 2.25.0
+
+## Licencia
+
+Apache-2.0
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/sdks/typescript.mdx b/apps/docs/content/docs/es/sdks/typescript.mdx
new file mode 100644
index 0000000000..410554d7b7
--- /dev/null
+++ b/apps/docs/content/docs/es/sdks/typescript.mdx
@@ -0,0 +1,607 @@
+---
+title: TypeScript/JavaScript SDK
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Card, Cards } from 'fumadocs-ui/components/card'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+
+El SDK oficial de TypeScript/JavaScript para Sim proporciona seguridad de tipos completa y es compatible tanto con entornos Node.js como con navegadores, lo que te permite ejecutar flujos de trabajo de forma programática desde tus aplicaciones Node.js, aplicaciones web y otros entornos JavaScript. Todas las ejecuciones de flujos de trabajo son actualmente síncronas.
+
+
+ El SDK de TypeScript proporciona seguridad de tipos completa y es compatible tanto con entornos Node.js como con navegadores. Todas las ejecuciones de flujos de trabajo son actualmente síncronas.
+
+
+## Instalación
+
+Instala el SDK usando tu gestor de paquetes preferido:
+
+
+
+
+ ```bash
+ npm install simstudio-ts-sdk
+ ```
+
+
+
+
+ ```bash
+ yarn add simstudio-ts-sdk
+ ```
+
+
+
+
+ ```bash
+ bun add simstudio-ts-sdk
+ ```
+
+
+
+
+## Inicio rápido
+
+Aquí tienes un ejemplo sencillo para empezar:
+
+```typescript
+import { SimStudioClient } from 'simstudio-ts-sdk';
+
+// Initialize the client
+const client = new SimStudioClient({
+ apiKey: 'your-api-key-here',
+ baseUrl: 'https://sim.ai' // optional, defaults to https://sim.ai
+});
+
+// Execute a workflow
+try {
+ const result = await client.executeWorkflow('workflow-id');
+ console.log('Workflow executed successfully:', result);
+} catch (error) {
+ console.error('Workflow execution failed:', error);
+}
+```
+
+## Referencia de la API
+
+### SimStudioClient
+
+#### Constructor
+
+```typescript
+new SimStudioClient(config: SimStudioConfig)
+```
+
+**Configuración:**
+- `config.apiKey` (string): Tu clave API de Sim
+- `config.baseUrl` (string, opcional): URL base para la API de Sim (por defecto es `https://sim.ai`)
+
+#### Métodos
+
+##### executeWorkflow()
+
+Ejecuta un flujo de trabajo con datos de entrada opcionales.
+
+```typescript
+const result = await client.executeWorkflow('workflow-id', {
+ input: { message: 'Hello, world!' },
+ timeout: 30000 // 30 seconds
+});
+```
+
+**Parámetros:**
+- `workflowId` (string): El ID del flujo de trabajo a ejecutar
+- `options` (ExecutionOptions, opcional):
+ - `input` (any): Datos de entrada para pasar al flujo de trabajo
+ - `timeout` (number): Tiempo de espera en milisegundos (predeterminado: 30000)
+
+**Devuelve:** `Promise`
+
+##### getWorkflowStatus()
+
+Obtener el estado de un flujo de trabajo (estado de implementación, etc.).
+
+```typescript
+const status = await client.getWorkflowStatus('workflow-id');
+console.log('Is deployed:', status.isDeployed);
+```
+
+**Parámetros:**
+- `workflowId` (string): El ID del flujo de trabajo
+
+**Devuelve:** `Promise`
+
+##### validateWorkflow()
+
+Validar que un flujo de trabajo está listo para su ejecución.
+
+```typescript
+const isReady = await client.validateWorkflow('workflow-id');
+if (isReady) {
+ // Workflow is deployed and ready
+}
+```
+
+**Parámetros:**
+- `workflowId` (string): El ID del flujo de trabajo
+
+**Devuelve:** `Promise`
+
+##### executeWorkflowSync()
+
+
+ Actualmente, este método es idéntico a `executeWorkflow()` ya que todas las ejecuciones son síncronas. Este método se proporciona para compatibilidad futura cuando se añada la ejecución asíncrona.
+
+
+Ejecutar un flujo de trabajo (actualmente síncrono, igual que `executeWorkflow()`).
+
+```typescript
+const result = await client.executeWorkflowSync('workflow-id', {
+ input: { data: 'some input' },
+ timeout: 60000
+});
+```
+
+**Parámetros:**
+- `workflowId` (string): El ID del flujo de trabajo a ejecutar
+- `options` (ExecutionOptions, opcional):
+ - `input` (any): Datos de entrada para pasar al flujo de trabajo
+ - `timeout` (number): Tiempo de espera para la solicitud inicial en milisegundos
+
+**Devuelve:** `Promise`
+
+##### setApiKey()
+
+Actualizar la clave API.
+
+```typescript
+client.setApiKey('new-api-key');
+```
+
+##### setBaseUrl()
+
+Actualizar la URL base.
+
+```typescript
+client.setBaseUrl('https://my-custom-domain.com');
+```
+
+## Tipos
+
+### WorkflowExecutionResult
+
+```typescript
+interface WorkflowExecutionResult {
+ success: boolean;
+ output?: any;
+ error?: string;
+ logs?: any[];
+ metadata?: {
+ duration?: number;
+ executionId?: string;
+ [key: string]: any;
+ };
+ traceSpans?: any[];
+ totalDuration?: number;
+}
+```
+
+### WorkflowStatus
+
+```typescript
+interface WorkflowStatus {
+ isDeployed: boolean;
+ deployedAt?: string;
+ isPublished: boolean;
+ needsRedeployment: boolean;
+}
+```
+
+### SimStudioError
+
+```typescript
+class SimStudioError extends Error {
+ code?: string;
+ status?: number;
+}
+```
+
+## Ejemplos
+
+### Ejecución básica de flujo de trabajo
+
+
+
+ Configura el SimStudioClient con tu clave API.
+
+
+ Comprueba si el flujo de trabajo está implementado y listo para su ejecución.
+
+
+ Ejecuta el flujo de trabajo con tus datos de entrada.
+
+
+ Procesa el resultado de la ejecución y maneja cualquier error.
+
+
+
+```typescript
+import { SimStudioClient } from 'simstudio-ts-sdk';
+
+const client = new SimStudioClient({
+ apiKey: process.env.SIMSTUDIO_API_KEY!
+});
+
+async function runWorkflow() {
+ try {
+ // Check if workflow is ready
+ const isReady = await client.validateWorkflow('my-workflow-id');
+ if (!isReady) {
+ throw new Error('Workflow is not deployed or ready');
+ }
+
+ // Execute the workflow
+ const result = await client.executeWorkflow('my-workflow-id', {
+ input: {
+ message: 'Process this data',
+ userId: '12345'
+ }
+ });
+
+ if (result.success) {
+ console.log('Output:', result.output);
+ console.log('Duration:', result.metadata?.duration);
+ } else {
+ console.error('Workflow failed:', result.error);
+ }
+ } catch (error) {
+ console.error('Error:', error);
+ }
+}
+
+runWorkflow();
+```
+
+### Manejo de errores
+
+Maneja diferentes tipos de errores que pueden ocurrir durante la ejecución del flujo de trabajo:
+
+```typescript
+import { SimStudioClient, SimStudioError } from 'simstudio-ts-sdk';
+
+const client = new SimStudioClient({
+ apiKey: process.env.SIMSTUDIO_API_KEY!
+});
+
+async function executeWithErrorHandling() {
+ try {
+ const result = await client.executeWorkflow('workflow-id');
+ return result;
+ } catch (error) {
+ if (error instanceof SimStudioError) {
+ switch (error.code) {
+ case 'UNAUTHORIZED':
+ console.error('Invalid API key');
+ break;
+ case 'TIMEOUT':
+ console.error('Workflow execution timed out');
+ break;
+ case 'USAGE_LIMIT_EXCEEDED':
+ console.error('Usage limit exceeded');
+ break;
+ case 'INVALID_JSON':
+ console.error('Invalid JSON in request body');
+ break;
+ default:
+ console.error('Workflow error:', error.message);
+ }
+ } else {
+ console.error('Unexpected error:', error);
+ }
+ throw error;
+ }
+}
+```
+
+### Configuración del entorno
+
+Configura el cliente usando variables de entorno:
+
+
+
+
+ ```typescript
+ import { SimStudioClient } from 'simstudio-ts-sdk';
+
+ // Development configuration
+ const apiKey = process.env.SIMSTUDIO_API_KEY;
+ if (!apiKey) {
+ throw new Error('SIMSTUDIO_API_KEY environment variable is required');
+ }
+
+ const client = new SimStudioClient({
+ apiKey,
+ baseUrl: process.env.SIMSTUDIO_BASE_URL // optional
+ });
+ ```
+
+
+
+
+ ```typescript
+ import { SimStudioClient } from 'simstudio-ts-sdk';
+
+ // Production configuration with validation
+ const apiKey = process.env.SIMSTUDIO_API_KEY;
+ if (!apiKey) {
+ throw new Error('SIMSTUDIO_API_KEY environment variable is required');
+ }
+
+ const client = new SimStudioClient({
+ apiKey,
+ baseUrl: process.env.SIMSTUDIO_BASE_URL || 'https://sim.ai'
+ });
+ ```
+
+
+
+
+### Integración con Express de Node.js
+
+Integración con un servidor Express.js:
+
+```typescript
+import express from 'express';
+import { SimStudioClient } from 'simstudio-ts-sdk';
+
+const app = express();
+const client = new SimStudioClient({
+ apiKey: process.env.SIMSTUDIO_API_KEY!
+});
+
+app.use(express.json());
+
+app.post('/execute-workflow', async (req, res) => {
+ try {
+ const { workflowId, input } = req.body;
+
+ const result = await client.executeWorkflow(workflowId, {
+ input,
+ timeout: 60000
+ });
+
+ res.json({
+ success: true,
+ data: result
+ });
+ } catch (error) {
+ console.error('Workflow execution error:', error);
+ res.status(500).json({
+ success: false,
+ error: error instanceof Error ? error.message : 'Unknown error'
+ });
+ }
+});
+
+app.listen(3000, () => {
+ console.log('Server running on port 3000');
+});
+```
+
+### Ruta API de Next.js
+
+Uso con rutas API de Next.js:
+
+```typescript
+// pages/api/workflow.ts or app/api/workflow/route.ts
+import { NextApiRequest, NextApiResponse } from 'next';
+import { SimStudioClient } from 'simstudio-ts-sdk';
+
+const client = new SimStudioClient({
+ apiKey: process.env.SIMSTUDIO_API_KEY!
+});
+
+export default async function handler(
+ req: NextApiRequest,
+ res: NextApiResponse
+) {
+ if (req.method !== 'POST') {
+ return res.status(405).json({ error: 'Method not allowed' });
+ }
+
+ try {
+ const { workflowId, input } = req.body;
+
+ const result = await client.executeWorkflow(workflowId, {
+ input,
+ timeout: 30000
+ });
+
+ res.status(200).json(result);
+ } catch (error) {
+ console.error('Error executing workflow:', error);
+ res.status(500).json({
+ error: 'Failed to execute workflow'
+ });
+ }
+}
+```
+
+### Uso del navegador
+
+Uso en el navegador (con la configuración CORS adecuada):
+
+```typescript
+import { SimStudioClient } from 'simstudio-ts-sdk';
+
+// Note: In production, use a proxy server to avoid exposing API keys
+const client = new SimStudioClient({
+ apiKey: 'your-public-api-key', // Use with caution in browser
+ baseUrl: 'https://sim.ai'
+});
+
+async function executeClientSideWorkflow() {
+ try {
+ const result = await client.executeWorkflow('workflow-id', {
+ input: {
+ userInput: 'Hello from browser'
+ }
+ });
+
+ console.log('Workflow result:', result);
+
+ // Update UI with result
+ document.getElementById('result')!.textContent =
+ JSON.stringify(result.output, null, 2);
+ } catch (error) {
+ console.error('Error:', error);
+ }
+}
+
+// Attach to button click
+document.getElementById('executeBtn')?.addEventListener('click', executeClientSideWorkflow);
+```
+
+
+ Cuando uses el SDK en el navegador, ten cuidado de no exponer claves API sensibles. Considera usar un proxy de backend o claves API públicas con permisos limitados.
+
+
+### Ejemplo de hook de React
+
+Crea un hook personalizado de React para la ejecución del flujo de trabajo:
+
+```typescript
+import { useState, useCallback } from 'react';
+import { SimStudioClient, WorkflowExecutionResult } from 'simstudio-ts-sdk';
+
+const client = new SimStudioClient({
+ apiKey: process.env.NEXT_PUBLIC_SIMSTUDIO_API_KEY!
+});
+
+interface UseWorkflowResult {
+ result: WorkflowExecutionResult | null;
+ loading: boolean;
+ error: Error | null;
+ executeWorkflow: (workflowId: string, input?: any) => Promise;
+}
+
+export function useWorkflow(): UseWorkflowResult {
+ const [result, setResult] = useState(null);
+ const [loading, setLoading] = useState(false);
+ const [error, setError] = useState(null);
+
+ const executeWorkflow = useCallback(async (workflowId: string, input?: any) => {
+ setLoading(true);
+ setError(null);
+ setResult(null);
+
+ try {
+ const workflowResult = await client.executeWorkflow(workflowId, {
+ input,
+ timeout: 30000
+ });
+ setResult(workflowResult);
+ } catch (err) {
+ setError(err instanceof Error ? err : new Error('Unknown error'));
+ } finally {
+ setLoading(false);
+ }
+ }, []);
+
+ return {
+ result,
+ loading,
+ error,
+ executeWorkflow
+ };
+}
+
+// Usage in component
+function WorkflowComponent() {
+ const { result, loading, error, executeWorkflow } = useWorkflow();
+
+ const handleExecute = () => {
+ executeWorkflow('my-workflow-id', {
+ message: 'Hello from React!'
+ });
+ };
+
+ return (
+
+
+ {loading ? 'Executing...' : 'Execute Workflow'}
+
+
+ {error &&
Error: {error.message}
}
+ {result && (
+
+
Result:
+
{JSON.stringify(result, null, 2)}
+
+ )}
+
+ );
+}
+```
+
+## Obtener tu clave API
+
+
+
+ Navega a [Sim](https://sim.ai) e inicia sesión en tu cuenta.
+
+
+ Navega al flujo de trabajo que quieres ejecutar programáticamente.
+
+
+ Haz clic en "Deploy" para desplegar tu flujo de trabajo si aún no ha sido desplegado.
+
+
+ Durante el proceso de despliegue, selecciona o crea una clave API.
+
+
+ Copia la clave API para usarla en tu aplicación TypeScript/JavaScript.
+
+
+
+
+ Mantén tu clave API segura y nunca la incluyas en el control de versiones. Usa variables de entorno o gestión de configuración segura.
+
+
+## Requisitos
+
+- Node.js 16+
+- TypeScript 5.0+ (para proyectos TypeScript)
+
+## Soporte para TypeScript
+
+El SDK está escrito en TypeScript y proporciona seguridad de tipos completa:
+
+```typescript
+import {
+ SimStudioClient,
+ WorkflowExecutionResult,
+ WorkflowStatus,
+ SimStudioError
+} from 'simstudio-ts-sdk';
+
+// Type-safe client initialization
+const client: SimStudioClient = new SimStudioClient({
+ apiKey: process.env.SIMSTUDIO_API_KEY!
+});
+
+// Type-safe workflow execution
+const result: WorkflowExecutionResult = await client.executeWorkflow('workflow-id', {
+ input: {
+ message: 'Hello, TypeScript!'
+ }
+});
+
+// Type-safe status checking
+const status: WorkflowStatus = await client.getWorkflowStatus('workflow-id');
+```
+
+## Licencia
+
+Apache-2.0
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/tools/airtable.mdx b/apps/docs/content/docs/es/tools/airtable.mdx
new file mode 100644
index 0000000000..3ff9df2e57
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/airtable.mdx
@@ -0,0 +1,161 @@
+---
+title: Airtable
+description: Lee, crea y actualiza Airtable
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Airtable](https://airtable.com/) es una potente plataforma basada en la nube que combina la funcionalidad de una base de datos con la simplicidad de una hoja de cálculo. Permite a los usuarios crear bases de datos flexibles para organizar, almacenar y colaborar con información.
+
+Con Airtable, puedes:
+
+- **Crear bases de datos personalizadas**: Construye soluciones a medida para gestión de proyectos, calendarios de contenido, seguimiento de inventario y más
+- **Visualizar datos**: Ve tu información como una cuadrícula, tablero kanban, calendario o galería
+- **Automatizar flujos de trabajo**: Configura disparadores y acciones para automatizar tareas repetitivas
+- **Integrar con otras herramientas**: Conéctate con cientos de otras aplicaciones a través de integraciones nativas y APIs
+
+En Sim, la integración de Airtable permite a tus agentes interactuar con tus bases de Airtable de forma programática. Esto permite operaciones de datos fluidas como recuperar información, crear nuevos registros y actualizar datos existentes, todo dentro de los flujos de trabajo de tu agente. Utiliza Airtable como una fuente o destino de datos dinámico para tus agentes, permitiéndoles acceder y manipular información estructurada como parte de sus procesos de toma de decisiones y ejecución de tareas.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Airtable para gestionar registros de tablas. Listar, obtener, crear,
+
+## Herramientas
+
+### `airtable_list_records`
+
+Leer registros de una tabla de Airtable
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `baseId` | string | Sí | ID de la base de Airtable |
+| `tableId` | string | Sí | ID de la tabla |
+| `maxRecords` | number | No | Número máximo de registros a devolver |
+| `filterFormula` | string | No | Fórmula para filtrar registros \(p. ej., "\(\{Nombre del campo\} = \'Valor\'\)"\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `records` | json | Array de registros de Airtable recuperados |
+
+### `airtable_get_record`
+
+Recuperar un solo registro de una tabla de Airtable por su ID
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `baseId` | string | Sí | ID de la base de Airtable |
+| `tableId` | string | Sí | ID o nombre de la tabla |
+| `recordId` | string | Sí | ID del registro a recuperar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `record` | json | Registro de Airtable recuperado con id, createdTime y campos |
+| `metadata` | json | Metadatos de la operación incluyendo el recuento de registros |
+
+### `airtable_create_records`
+
+Escribir nuevos registros en una tabla de Airtable
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `baseId` | string | Sí | ID de la base de Airtable |
+| `tableId` | string | Sí | ID o nombre de la tabla |
+| `records` | json | Sí | Array de registros para crear, cada uno con un objeto `fields` |
+| `fields` | string | No | Sin descripción |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `records` | json | Array de registros de Airtable creados |
+
+### `airtable_update_record`
+
+Actualizar un registro existente en una tabla de Airtable por ID
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `baseId` | string | Sí | ID de la base de Airtable |
+| `tableId` | string | Sí | ID o nombre de la tabla |
+| `recordId` | string | Sí | ID del registro a actualizar |
+| `fields` | json | Sí | Un objeto que contiene los nombres de los campos y sus nuevos valores |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `record` | json | Registro de Airtable actualizado con id, createdTime y campos |
+| `metadata` | json | Metadatos de la operación incluyendo el recuento de registros y los nombres de campos actualizados |
+
+### `airtable_update_multiple_records`
+
+Actualizar múltiples registros existentes en una tabla de Airtable
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `baseId` | string | Sí | ID de la base de Airtable |
+| `tableId` | string | Sí | ID o nombre de la tabla |
+| `records` | json | Sí | Array de registros para actualizar, cada uno con un `id` y un objeto `fields` |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `records` | json | Array de registros de Airtable actualizados |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `airtable`
diff --git a/apps/docs/content/docs/es/tools/arxiv.mdx b/apps/docs/content/docs/es/tools/arxiv.mdx
new file mode 100644
index 0000000000..83e02f55cd
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/arxiv.mdx
@@ -0,0 +1,109 @@
+---
+title: ArXiv
+description: Busca y recupera artículos académicos de ArXiv
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[ArXiv](https://arxiv.org/) es un repositorio gratuito de acceso abierto de artículos científicos en campos como física, matemáticas, informática, biología cuantitativa, finanzas cuantitativas, estadística, ingeniería eléctrica, ciencias de sistemas y economía. ArXiv proporciona una amplia colección de preprints y artículos publicados, convirtiéndolo en un recurso primario para investigadores y profesionales de todo el mundo.
+
+Con ArXiv, puedes:
+
+- **Buscar artículos académicos**: Encuentra investigaciones por palabras clave, nombres de autores, títulos, categorías y más
+- **Recuperar metadatos de artículos**: Accede a resúmenes, listas de autores, fechas de publicación y otra información bibliográfica
+- **Descargar PDFs completos**: Obtén el texto completo de la mayoría de los artículos para un estudio en profundidad
+- **Explorar contribuciones de autores**: Visualiza todos los artículos de un autor específico
+- **Mantenerte actualizado**: Descubre las últimas publicaciones y temas tendencia en tu campo
+
+En Sim, la integración con ArXiv permite a tus agentes buscar, recuperar y analizar artículos científicos de ArXiv de forma programática. Esto te permite automatizar revisiones de literatura, crear asistentes de investigación o incorporar conocimiento científico actualizado en tus flujos de trabajo con agentes. Utiliza ArXiv como una fuente dinámica de datos para investigación, descubrimiento y extracción de conocimiento dentro de tus proyectos de Sim.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Busca artículos académicos, recupera metadatos, descarga artículos y accede a la amplia colección de investigación científica en ArXiv.
+
+## Herramientas
+
+### `arxiv_search`
+
+Busca artículos académicos en ArXiv por palabras clave, autores, títulos u otros campos.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `searchQuery` | string | Sí | La consulta de búsqueda a ejecutar |
+| `searchField` | string | No | Campo en el que buscar: all (todos), ti (título), au (autor), abs (resumen), co (comentario), jr (revista), cat (categoría), rn (número de informe) |
+| `maxResults` | number | No | Número máximo de resultados a devolver (predeterminado: 10, máximo: 2000) |
+| `sortBy` | string | No | Ordenar por: relevance (relevancia), lastUpdatedDate (fecha de última actualización), submittedDate (fecha de envío) (predeterminado: relevance) |
+| `sortOrder` | string | No | Orden de clasificación: ascending (ascendente), descending (descendente) (predeterminado: descending) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `papers` | json | Array de artículos que coinciden con la consulta de búsqueda |
+
+### `arxiv_get_paper`
+
+Obtén información detallada sobre un artículo específico de ArXiv mediante su ID.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `paperId` | string | Sí | ID del artículo de ArXiv (p. ej., "1706.03762") |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `paper` | json | Información detallada sobre el artículo de ArXiv solicitado |
+
+### `arxiv_get_author_papers`
+
+Busca artículos de un autor específico en ArXiv.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `authorName` | string | Sí | Nombre del autor a buscar |
+| `maxResults` | number | No | Número máximo de resultados a devolver (predeterminado: 10, máximo: 2000) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `authorPapers` | json | Array de artículos escritos por el autor especificado |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `arxiv`
diff --git a/apps/docs/content/docs/es/tools/browser_use.mdx b/apps/docs/content/docs/es/tools/browser_use.mdx
new file mode 100644
index 0000000000..45452302f3
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/browser_use.mdx
@@ -0,0 +1,90 @@
+---
+title: Uso del navegador
+description: Ejecutar tareas de automatización del navegador
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[BrowserUse](https://browser-use.com/) es una potente plataforma de automatización de navegador que te permite crear y ejecutar tareas de navegador de forma programática. Proporciona una manera de automatizar interacciones web mediante instrucciones en lenguaje natural, permitiéndote navegar por sitios web, completar formularios, extraer datos y realizar secuencias complejas de acciones sin escribir código.
+
+Con BrowserUse, puedes:
+
+- **Automatizar interacciones web**: Navegar a sitios web, hacer clic en botones, completar formularios y realizar otras acciones de navegador
+- **Extraer datos**: Obtener contenido de sitios web, incluyendo texto, imágenes y datos estructurados
+- **Ejecutar flujos de trabajo complejos**: Encadenar múltiples acciones para completar tareas web sofisticadas
+- **Monitorear la ejecución de tareas**: Observar la ejecución de tareas de navegador en tiempo real con retroalimentación visual
+- **Procesar resultados programáticamente**: Recibir salidas estructuradas de tareas de automatización web
+
+En Sim, la integración de BrowserUse permite a tus agentes interactuar con la web como si fueran usuarios humanos. Esto posibilita escenarios como investigación, recopilación de datos, envío de formularios y pruebas web, todo a través de simples instrucciones en lenguaje natural. Tus agentes pueden recopilar información de sitios web, interactuar con aplicaciones web y realizar acciones que normalmente requerirían navegación manual, ampliando sus capacidades para incluir toda la web como recurso.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Ejecuta tareas de automatización de navegador con BrowserUse para navegar por la web, extraer datos y realizar acciones como si un usuario real estuviera interactuando con el navegador. La tarea se ejecuta de forma asíncrona y el bloque realizará sondeos hasta completarse antes de devolver los resultados.
+
+## Herramientas
+
+### `browser_use_run_task`
+
+Ejecuta una tarea de automatización de navegador usando BrowserUse
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `task` | string | Sí | Qué debe hacer el agente de navegador |
+| `variables` | json | No | Variables opcionales para usar como secretos \(formato: \{key: value\}\) |
+| `format` | string | No | Sin descripción |
+| `save_browser_data` | boolean | No | Si se deben guardar los datos del navegador |
+| `model` | string | No | Modelo LLM a utilizar \(predeterminado: gpt-4o\) |
+| `apiKey` | string | Sí | Clave API para la API de BrowserUse |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `id` | string | Identificador de ejecución de tarea |
+| `success` | boolean | Estado de finalización de tarea |
+| `output` | json | Datos de salida de la tarea |
+| `steps` | json | Pasos de ejecución realizados |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `browser_use`
diff --git a/apps/docs/content/docs/es/tools/clay.mdx b/apps/docs/content/docs/es/tools/clay.mdx
new file mode 100644
index 0000000000..35cfdeeecb
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/clay.mdx
@@ -0,0 +1,226 @@
+---
+title: Clay
+description: Poblar libro de trabajo de Clay
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Clay](https://www.clay.com/) es una plataforma de enriquecimiento de datos y automatización de flujos de trabajo que ayuda a los equipos a agilizar la generación de leads, la investigación y las operaciones de datos a través de integraciones potentes y entradas flexibles.
+
+Aprende a usar la herramienta Clay en Sim para insertar datos sin problemas en un libro de trabajo de Clay a través de disparadores webhook. Este tutorial te guía a través de la configuración de un webhook, la asignación de datos y la automatización de actualizaciones en tiempo real para tus libros de trabajo de Clay. ¡Perfecto para agilizar la generación de leads y el enriquecimiento de datos directamente desde tu flujo de trabajo!
+
+VIDEO
+
+Con Clay, puedes:
+
+- **Enriquecer salidas de agentes**: Alimenta automáticamente los datos de tu agente Sim en tablas de Clay para un seguimiento y análisis estructurado
+- **Activar flujos de trabajo mediante webhooks**: Usa el soporte de webhook de Clay para iniciar tareas de agentes Sim desde Clay
+- **Aprovechar bucles de datos**: Itera sin problemas sobre filas de datos enriquecidos con agentes que operan en conjuntos de datos dinámicos
+
+En Sim, la integración con Clay permite que tus agentes envíen datos estructurados a tablas de Clay a través de webhooks. Esto facilita la recopilación, el enriquecimiento y la gestión de salidas dinámicas como leads, resúmenes de investigación o elementos de acción, todo en una interfaz colaborativa similar a una hoja de cálculo. Tus agentes pueden poblar filas en tiempo real, permitiendo flujos de trabajo asincrónicos donde los conocimientos generados por IA son capturados, revisados y utilizados por tu equipo. Ya sea que estés automatizando investigaciones, enriqueciendo datos de CRM o haciendo seguimiento de resultados operativos, Clay se convierte en una capa de datos viva que interactúa inteligentemente con tus agentes. Al conectar Sim con Clay, obtienes una forma poderosa de operacionalizar los resultados de los agentes, recorrer conjuntos de datos con precisión y mantener un registro limpio y auditable del trabajo impulsado por IA.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Poblar libro de trabajo de Clay con datos usando JSON o texto plano. Permite comunicación directa y notificaciones con confirmación de canal.
+
+## Herramientas
+
+### `clay_populate`
+
+Poblar Clay con datos de un archivo JSON. Permite comunicación directa y notificaciones con seguimiento de marca de tiempo y confirmación de canal.
+
+#### Entrada
+
+| Parámetro | Tipo | Requerido | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `webhookURL` | string | Sí | La URL del webhook para poblar |
+| `data` | json | Sí | Los datos para poblar |
+| `authToken` | string | Sí | Token de autenticación para la autenticación del webhook de Clay |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | json | Resultados de la operación de poblado de Clay incluyendo datos de respuesta del webhook de Clay |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `clay`
diff --git a/apps/docs/content/docs/es/tools/confluence.mdx b/apps/docs/content/docs/es/tools/confluence.mdx
new file mode 100644
index 0000000000..d828ba0e52
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/confluence.mdx
@@ -0,0 +1,97 @@
+---
+title: Confluence
+description: Interactúa con Confluence
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Confluence](https://www.atlassian.com/software/confluence) es la potente plataforma de colaboración en equipo y gestión del conocimiento de Atlassian. Sirve como un espacio de trabajo centralizado donde los equipos pueden crear, organizar y compartir información entre departamentos y organizaciones.
+
+Con Confluence, puedes:
+
+- **Crear documentación estructurada**: Construir wikis completas, planes de proyectos y bases de conocimiento con formato enriquecido
+- **Colaborar en tiempo real**: Trabajar juntos en documentos con compañeros de equipo, con comentarios, menciones y capacidades de edición
+- **Organizar la información jerárquicamente**: Estructurar el contenido con espacios, páginas y jerarquías anidadas para una navegación intuitiva
+- **Integrar con otras herramientas**: Conectar con Jira, Trello y otros productos de Atlassian para una integración fluida del flujo de trabajo
+- **Controlar permisos de acceso**: Gestionar quién puede ver, editar o comentar contenido específico
+
+En Sim, la integración con Confluence permite a tus agentes acceder y aprovechar la base de conocimientos de tu organización. Los agentes pueden recuperar información de las páginas de Confluence, buscar contenido específico e incluso actualizar la documentación cuando sea necesario. Esto permite que tus flujos de trabajo incorporen el conocimiento colectivo almacenado en tu instancia de Confluence, haciendo posible crear agentes que puedan consultar documentación interna, seguir procedimientos establecidos y mantener recursos de información actualizados como parte de sus operaciones.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Conéctate a espacios de trabajo de Confluence para recuperar y buscar documentación. Accede al contenido de las páginas, metadatos e integra la documentación de Confluence en tus flujos de trabajo.
+
+## Herramientas
+
+### `confluence_retrieve`
+
+Recupera contenido de las páginas de Confluence utilizando la API de Confluence.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `domain` | string | Sí | Tu dominio de Confluence \(p. ej., tuempresa.atlassian.net\) |
+| `pageId` | string | Sí | ID de la página de Confluence a recuperar |
+| `cloudId` | string | No | ID de Confluence Cloud para la instancia. Si no se proporciona, se obtendrá utilizando el dominio. |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `ts` | string | Marca de tiempo de la recuperación |
+| `pageId` | string | ID de la página de Confluence |
+| `content` | string | Contenido de la página con etiquetas HTML eliminadas |
+| `title` | string | Título de la página |
+
+### `confluence_update`
+
+Actualiza una página de Confluence utilizando la API de Confluence.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `domain` | string | Sí | Tu dominio de Confluence \(p. ej., tuempresa.atlassian.net\) |
+| `pageId` | string | Sí | ID de la página de Confluence a actualizar |
+| `title` | string | No | Nuevo título para la página |
+| `content` | string | No | Nuevo contenido para la página en formato de almacenamiento de Confluence |
+| `version` | number | No | Número de versión de la página \(requerido para prevenir conflictos\) |
+| `cloudId` | string | No | ID de Confluence Cloud para la instancia. Si no se proporciona, se obtendrá utilizando el dominio. |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `ts` | string | Marca de tiempo de actualización |
+| `pageId` | string | ID de página de Confluence |
+| `title` | string | Título de página actualizado |
+| `success` | boolean | Estado de éxito de la operación de actualización |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `confluence`
diff --git a/apps/docs/content/docs/es/tools/discord.mdx b/apps/docs/content/docs/es/tools/discord.mdx
new file mode 100644
index 0000000000..802763f4f0
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/discord.mdx
@@ -0,0 +1,141 @@
+---
+title: Discord
+description: Interactúa con Discord
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Discord](https://discord.com) es una potente plataforma de comunicación que te permite conectar con amigos, comunidades y equipos. Ofrece una variedad de funciones para la colaboración en equipo, incluyendo canales de texto, canales de voz y videollamadas.
+
+Con una cuenta o bot de Discord, puedes:
+
+- **Enviar mensajes**: Enviar mensajes a un canal específico
+- **Obtener mensajes**: Obtener mensajes de un canal específico
+- **Obtener servidor**: Obtener información sobre un servidor específico
+- **Obtener usuario**: Obtener información sobre un usuario específico
+
+En Sim, la integración con Discord permite a tus agentes acceder y aprovechar los servidores de Discord de tu organización. Los agentes pueden recuperar información de los canales de Discord, buscar usuarios específicos, obtener información del servidor y enviar mensajes. Esto permite que tus flujos de trabajo se integren con tus comunidades de Discord, automaticen notificaciones y creen experiencias interactivas.
+
+> **Importante:** Para leer el contenido de los mensajes, tu bot de Discord necesita tener habilitado el "Message Content Intent" en el Portal de Desarrolladores de Discord. Sin este permiso, seguirás recibiendo los metadatos del mensaje pero el campo de contenido aparecerá vacío.
+
+Los componentes de Discord en Sim utilizan una carga diferida eficiente, obteniendo datos solo cuando es necesario para minimizar las llamadas a la API y evitar limitaciones de tasa. La actualización de tokens ocurre automáticamente en segundo plano para mantener tu conexión.
+
+### Configuración de tu bot de Discord
+
+1. Ve al [Portal de Desarrolladores de Discord](https://discord.com/developers/applications)
+2. Crea una nueva aplicación y navega a la pestaña "Bot"
+3. Crea un bot y copia tu token de bot
+4. En "Privileged Gateway Intents", habilita el **Message Content Intent** para leer el contenido de los mensajes
+5. Invita a tu bot a tus servidores con los permisos apropiados
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Conéctate a Discord para enviar mensajes, gestionar canales e interactuar con servidores. Automatiza notificaciones, gestión de comunidad e integra Discord en tus flujos de trabajo.
+
+## Herramientas
+
+### `discord_send_message`
+
+Enviar un mensaje a un canal de Discord
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `botToken` | string | Sí | El token del bot para autenticación |
+| `channelId` | string | Sí | El ID del canal de Discord donde enviar el mensaje |
+| `content` | string | No | El contenido de texto del mensaje |
+| `serverId` | string | Sí | El ID del servidor de Discord \(ID del guild\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de éxito o error |
+| `data` | object | Datos del mensaje de Discord |
+
+### `discord_get_messages`
+
+Recuperar mensajes de un canal de Discord
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `botToken` | string | Sí | El token del bot para autenticación |
+| `channelId` | string | Sí | El ID del canal de Discord del que recuperar mensajes |
+| `limit` | number | No | Número máximo de mensajes a recuperar \(predeterminado: 10, máx: 100\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de éxito o error |
+| `messages` | array | Array de mensajes de Discord con metadatos completos |
+
+### `discord_get_server`
+
+Recuperar información sobre un servidor de Discord (guild)
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `botToken` | string | Sí | El token del bot para autenticación |
+| `serverId` | string | Sí | El ID del servidor de Discord \(ID del guild\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de éxito o error |
+| `data` | object | Información del servidor de Discord \(guild\) |
+
+### `discord_get_user`
+
+Recuperar información sobre un usuario de Discord
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `botToken` | string | Sí | Token del bot de Discord para autenticación |
+| `userId` | string | Sí | El ID del usuario de Discord |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de éxito o error |
+| `data` | object | Información del usuario de Discord |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `discord`
diff --git a/apps/docs/content/docs/es/tools/elevenlabs.mdx b/apps/docs/content/docs/es/tools/elevenlabs.mdx
new file mode 100644
index 0000000000..28cb6e8605
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/elevenlabs.mdx
@@ -0,0 +1,67 @@
+---
+title: ElevenLabs
+description: Convertir TTS usando ElevenLabs
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[ElevenLabs](https://elevenlabs.io/) es una plataforma de texto a voz de última generación que crea voces de IA increíblemente naturales y expresivas. Ofrece algunas de las voces sintéticas más realistas y emocionalmente matizadas disponibles actualmente, lo que la hace ideal para crear contenido de audio realista.
+
+Con ElevenLabs, puedes:
+
+- **Generar voz de sonido natural**: Crear audio casi indistinguible del habla humana
+- **Elegir entre diversas opciones de voz**: Acceder a una biblioteca de voces prediseñadas con diferentes acentos, tonos y características
+- **Clonar voces**: Crear voces personalizadas basadas en muestras de audio (con los permisos adecuados)
+- **Controlar parámetros del habla**: Ajustar estabilidad, claridad y tono emocional para perfeccionar el resultado
+- **Añadir emociones realistas**: Incorporar emociones de sonido natural como felicidad, tristeza o entusiasmo
+
+En Sim, la integración de ElevenLabs permite a tus agentes convertir texto en voz realista, mejorando la interactividad y el compromiso de tus aplicaciones. Esto es particularmente valioso para crear asistentes de voz, generar contenido de audio, desarrollar aplicaciones accesibles o construir interfaces conversacionales que se sientan más humanas. La integración te permite incorporar sin problemas las capacidades avanzadas de síntesis de voz de ElevenLabs en los flujos de trabajo de tus agentes, cerrando la brecha entre la IA basada en texto y la comunicación humana natural.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Genera voz realista a partir de texto usando las voces de ElevenLabs.
+
+## Herramientas
+
+### `elevenlabs_tts`
+
+Convertir TTS usando voces de ElevenLabs
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `text` | string | Sí | El texto a convertir en voz |
+| `voiceId` | string | Sí | El ID de la voz a utilizar |
+| `modelId` | string | No | El ID del modelo a utilizar \(por defecto es eleven_monolingual_v1\) |
+| `apiKey` | string | Sí | Tu clave API de ElevenLabs |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `audioUrl` | string | La URL del audio generado |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `elevenlabs`
diff --git a/apps/docs/content/docs/es/tools/exa.mdx b/apps/docs/content/docs/es/tools/exa.mdx
new file mode 100644
index 0000000000..435d609daf
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/exa.mdx
@@ -0,0 +1,148 @@
+---
+title: Exa
+description: Busca con Exa AI
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Exa](https://exa.ai/) es un motor de búsqueda impulsado por IA diseñado específicamente para desarrolladores e investigadores, que proporciona información altamente relevante y actualizada de toda la web. Combina capacidades avanzadas de búsqueda semántica con comprensión de IA para ofrecer resultados más precisos y contextualmente relevantes que los motores de búsqueda tradicionales.
+
+Con Exa, puedes:
+
+- **Buscar con lenguaje natural**: Encuentra información utilizando consultas y preguntas conversacionales
+- **Obtener resultados precisos**: Recibe resultados de búsqueda altamente relevantes con comprensión semántica
+- **Acceder a información actualizada**: Obtén información actual de toda la web
+- **Encontrar contenido similar**: Descubre recursos relacionados basados en similitud de contenido
+- **Extraer contenidos de páginas web**: Recupera y procesa el texto completo de páginas web
+- **Responder preguntas con citas**: Haz preguntas y recibe respuestas directas con fuentes de apoyo
+- **Realizar tareas de investigación**: Automatiza flujos de trabajo de investigación de múltiples pasos para recopilar, sintetizar y resumir información
+
+En Sim, la integración de Exa permite a tus agentes buscar información en la web, recuperar contenido de URLs específicas, encontrar recursos similares, responder preguntas con citas y realizar tareas de investigación, todo de forma programática a través de llamadas a la API. Esto permite a tus agentes acceder a información en tiempo real desde internet, mejorando su capacidad para proporcionar respuestas precisas, actuales y relevantes. La integración es particularmente valiosa para tareas de investigación, recopilación de información, descubrimiento de contenido y respuesta a preguntas que requieren información actualizada de toda la web.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Busca en la web, recupera contenido, encuentra enlaces similares y responde preguntas utilizando las potentes capacidades de búsqueda con IA de Exa.
+
+## Herramientas
+
+### `exa_search`
+
+Busca en la web usando Exa AI. Devuelve resultados de búsqueda relevantes con títulos, URLs y fragmentos de texto.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ---------- | ----------- |
+| `query` | string | Sí | La consulta de búsqueda a ejecutar |
+| `numResults` | number | No | Número de resultados a devolver \(predeterminado: 10, máximo: 25\) |
+| `useAutoprompt` | boolean | No | Si se debe usar autoprompt para mejorar la consulta \(predeterminado: false\) |
+| `type` | string | No | Tipo de búsqueda: neural, keyword, auto o fast \(predeterminado: auto\) |
+| `apiKey` | string | Sí | Clave API de Exa AI |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `results` | array | Resultados de búsqueda con títulos, URLs y fragmentos de texto |
+
+### `exa_get_contents`
+
+Recupera el contenido de páginas web usando Exa AI. Devuelve el título, contenido de texto y resúmenes opcionales para cada URL.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ---------- | ----------- |
+| `urls` | string | Sí | Lista de URLs separadas por comas para recuperar contenido |
+| `text` | boolean | No | Si es true, devuelve el texto completo de la página con configuración predeterminada. Si es false, desactiva la devolución de texto. |
+| `summaryQuery` | string | No | Consulta para guiar la generación del resumen |
+| `apiKey` | string | Sí | Clave API de Exa AI |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `results` | array | Contenido recuperado de URLs con título, texto y resúmenes |
+
+### `exa_find_similar_links`
+
+Encuentra páginas web similares a una URL determinada utilizando Exa AI. Devuelve una lista de enlaces similares con títulos y fragmentos de texto.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `url` | string | Sí | La URL para encontrar enlaces similares |
+| `numResults` | number | No | Número de enlaces similares a devolver \(predeterminado: 10, máximo: 25\) |
+| `text` | boolean | No | Si se debe incluir el texto completo de las páginas similares |
+| `apiKey` | string | Sí | Clave API de Exa AI |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `similarLinks` | array | Enlaces similares encontrados con títulos, URLs y fragmentos de texto |
+
+### `exa_answer`
+
+Obtén una respuesta generada por IA a una pregunta con citas de la web utilizando Exa AI.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `query` | string | Sí | La pregunta a responder |
+| `text` | boolean | No | Si se debe incluir el texto completo de la respuesta |
+| `apiKey` | string | Sí | Clave API de Exa AI |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `answer` | string | Respuesta generada por IA a la pregunta |
+| `citations` | array | Fuentes y citas para la respuesta |
+
+### `exa_research`
+
+Realiza investigaciones exhaustivas utilizando IA para generar informes detallados con citas
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `query` | string | Sí | Consulta o tema de investigación |
+| `includeText` | boolean | No | Incluir contenido de texto completo en los resultados |
+| `apiKey` | string | Sí | Clave API de Exa AI |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `research` | array | Hallazgos de investigación exhaustivos con citas y resúmenes |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `exa`
diff --git a/apps/docs/content/docs/es/tools/file.mdx b/apps/docs/content/docs/es/tools/file.mdx
new file mode 100644
index 0000000000..96e43a5957
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/file.mdx
@@ -0,0 +1,77 @@
+---
+title: Archivo
+description: Leer y analizar múltiples archivos
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+La herramienta de análisis de archivos proporciona una forma potente de extraer y procesar contenido de varios formatos de archivo, facilitando la incorporación de datos de documentos en los flujos de trabajo de tu agente. Esta herramienta es compatible con múltiples formatos de archivo y puede manejar archivos de hasta 200MB de tamaño.
+
+Con el analizador de archivos, puedes:
+
+- **Procesar múltiples formatos de archivo**: Extraer texto de PDFs, CSVs, documentos Word (DOCX), archivos de texto y más
+- **Manejar archivos grandes**: Procesar documentos de hasta 200MB de tamaño
+- **Analizar archivos desde URLs**: Extraer directamente contenido de archivos alojados en línea proporcionando sus URLs
+- **Procesar múltiples archivos a la vez**: Subir y analizar varios archivos en una sola operación
+- **Extraer datos estructurados**: Mantener el formato y la estructura de los documentos originales cuando sea posible
+
+La herramienta de análisis de archivos es particularmente útil para escenarios donde tus agentes necesitan trabajar con contenido de documentos, como analizar informes, extraer datos de hojas de cálculo o procesar texto de varias fuentes de documentos. Simplifica el proceso de hacer que el contenido de documentos esté disponible para tus agentes, permitiéndoles trabajar con información almacenada en archivos tan fácilmente como con entrada de texto directa.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Sube y extrae contenido de formatos de archivos estructurados, incluyendo PDFs, hojas de cálculo CSV y documentos Word (DOCX). Puedes proporcionar una URL a un archivo o subir archivos directamente. Analizadores especializados extraen texto y metadatos de cada formato. Puedes subir múltiples archivos a la vez y acceder a ellos individualmente o como un documento combinado.
+
+## Herramientas
+
+### `file_parser`
+
+Analiza uno o más archivos subidos o archivos desde URLs (texto, PDF, CSV, imágenes, etc.)
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `filePath` | string | Sí | Ruta al archivo\(s\). Puede ser una única ruta, URL o un array de rutas. |
+| `fileType` | string | No | Tipo de archivo a analizar \(auto-detectado si no se especifica\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `files` | array | Array de archivos analizados |
+| `combinedContent` | string | Contenido combinado de todos los archivos analizados |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `file`
diff --git a/apps/docs/content/docs/es/tools/firecrawl.mdx b/apps/docs/content/docs/es/tools/firecrawl.mdx
new file mode 100644
index 0000000000..d5b58fc024
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/firecrawl.mdx
@@ -0,0 +1,124 @@
+---
+title: Firecrawl
+description: Rastrea o busca en la web
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Firecrawl](https://firecrawl.dev/) es una potente API de extracción de contenido y web scraping que se integra perfectamente en Sim, permitiendo a los desarrolladores extraer contenido limpio y estructurado de cualquier sitio web. Esta integración proporciona una forma sencilla de transformar páginas web en formatos de datos utilizables como Markdown y HTML, preservando el contenido esencial.
+
+Con Firecrawl en Sim, puedes:
+
+- **Extraer contenido limpio**: Eliminar anuncios, elementos de navegación y otras distracciones para obtener solo el contenido principal
+- **Convertir a formatos estructurados**: Transformar páginas web en Markdown, HTML o JSON
+- **Capturar metadatos**: Extraer metadatos SEO, etiquetas Open Graph y otra información de la página
+- **Manejar sitios con uso intensivo de JavaScript**: Procesar contenido de aplicaciones web modernas que dependen de JavaScript
+- **Filtrar contenido**: Enfocarse en partes específicas de una página usando selectores CSS
+- **Procesar a escala**: Manejar necesidades de scraping de alto volumen con una API confiable
+- **Buscar en la web**: Realizar búsquedas web inteligentes y obtener resultados estructurados
+- **Rastrear sitios completos**: Rastrear múltiples páginas de un sitio web y agregar su contenido
+
+En Sim, la integración de Firecrawl permite a tus agentes acceder y procesar contenido web de forma programática como parte de sus flujos de trabajo. Las operaciones compatibles incluyen:
+
+- **Scrape**: Extraer contenido estructurado (Markdown, HTML, metadatos) de una sola página web.
+- **Search**: Buscar información en la web utilizando las capacidades de búsqueda inteligente de Firecrawl.
+- **Crawl**: Rastrear múltiples páginas de un sitio web, devolviendo contenido estructurado y metadatos para cada página.
+
+Esto permite a tus agentes recopilar información de sitios web, extraer datos estructurados y utilizar esa información para tomar decisiones o generar ideas, todo sin tener que navegar por las complejidades del análisis de HTML crudo o la automatización del navegador. Simplemente configura el bloque Firecrawl con tu clave API, selecciona la operación (Scrape, Search o Crawl) y proporciona los parámetros relevantes. Tus agentes pueden comenzar inmediatamente a trabajar con contenido web en un formato limpio y estructurado.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Extrae contenido de cualquier sitio web con web scraping avanzado o busca información en la web. Obtén datos limpios y estructurados de páginas web con opciones para centrarte en el contenido principal, o busca información de forma inteligente a través de la web.
+
+## Herramientas
+
+### `firecrawl_scrape`
+
+Extrae contenido estructurado de páginas web con soporte integral de metadatos. Convierte el contenido a markdown o HTML mientras captura metadatos SEO, etiquetas Open Graph e información de la página.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `url` | string | Sí | La URL de la que extraer contenido |
+| `scrapeOptions` | json | No | Opciones para la extracción de contenido |
+| `apiKey` | string | Sí | Clave API de Firecrawl |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `markdown` | string | Contenido de la página en formato markdown |
+| `html` | string | Contenido HTML sin procesar de la página |
+| `metadata` | object | Metadatos de la página incluyendo información SEO y Open Graph |
+
+### `firecrawl_search`
+
+Busca información en la web usando Firecrawl
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `query` | string | Sí | La consulta de búsqueda a utilizar |
+| `apiKey` | string | Sí | Clave API de Firecrawl |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `data` | array | Datos de resultados de búsqueda |
+
+### `firecrawl_crawl`
+
+Rastrea sitios web completos y extrae contenido estructurado de todas las páginas accesibles
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `url` | string | Sí | La URL del sitio web a rastrear |
+| `limit` | number | No | Número máximo de páginas a rastrear \(predeterminado: 100\) |
+| `onlyMainContent` | boolean | No | Extraer solo el contenido principal de las páginas |
+| `apiKey` | string | Sí | Clave API de Firecrawl |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `pages` | array | Array de páginas rastreadas con su contenido y metadatos |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `firecrawl`
diff --git a/apps/docs/content/docs/es/tools/generic_webhook.mdx b/apps/docs/content/docs/es/tools/generic_webhook.mdx
new file mode 100644
index 0000000000..20850b3394
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/generic_webhook.mdx
@@ -0,0 +1,28 @@
+---
+title: Webhook
+description: Recibe webhooks desde cualquier servicio
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+ `}
+/>
+
+## Notas
+
+- Categoría: `triggers`
+- Tipo: `generic_webhook`
diff --git a/apps/docs/content/docs/es/tools/github.mdx b/apps/docs/content/docs/es/tools/github.mdx
new file mode 100644
index 0000000000..af34e507d7
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/github.mdx
@@ -0,0 +1,130 @@
+---
+title: GitHub
+description: Interactúa con GitHub o activa flujos de trabajo desde eventos de GitHub
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[GitHub](https://github.com/) es la plataforma líder mundial para el desarrollo de software y control de versiones usando Git. Proporciona un entorno colaborativo donde los desarrolladores pueden alojar y revisar código, gestionar proyectos y construir software juntos.
+
+Con GitHub, puedes:
+
+- **Alojar repositorios**: Almacena tu código en repositorios públicos o privados con control de versiones
+- **Colaborar en el código**: Usa pull requests para proponer cambios, revisar código y fusionar contribuciones
+- **Seguimiento de problemas**: Crea, asigna y gestiona issues para organizar el trabajo y seguir errores
+- **Automatizar flujos de trabajo**: Usa GitHub Actions para construir, probar y desplegar código automáticamente
+- **Gestionar proyectos**: Organiza el trabajo con tableros de proyectos, hitos y seguimiento de tareas
+- **Documentar código**: Crea y mantén documentación con GitHub Pages y wikis
+
+En Sim, la integración con GitHub permite a tus agentes interactuar directamente con repositorios y flujos de trabajo de GitHub. Esto posibilita potentes escenarios de automatización como asistencia en revisión de código, gestión de solicitudes de extracción, seguimiento de problemas y exploración de repositorios. Tus agentes pueden obtener datos del repositorio, analizar cambios en el código, publicar comentarios en solicitudes de extracción y realizar otras operaciones de GitHub de forma programática. Esta integración cierra la brecha entre tus flujos de trabajo de IA y tus procesos de desarrollo, permitiendo una colaboración fluida entre tus agentes y tu equipo de desarrollo.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Accede a repositorios de GitHub, solicitudes de extracción y comentarios a través de la API de GitHub. Automatiza revisiones de código, gestión de PR e interacciones con repositorios dentro de tu flujo de trabajo. Activa flujos de trabajo desde eventos de GitHub como push, solicitudes de extracción y problemas.
+
+## Herramientas
+
+### `github_pr`
+
+Obtener detalles de PR incluyendo diferencias y archivos modificados
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `owner` | string | Sí | Propietario del repositorio |
+| `repo` | string | Sí | Nombre del repositorio |
+| `pullNumber` | number | Sí | Número de la solicitud de extracción |
+| `apiKey` | string | Sí | Token de API de GitHub |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Resumen de PR legible para humanos |
+| `metadata` | object | Metadatos detallados de PR incluyendo cambios en archivos |
+
+### `github_comment`
+
+Crear comentarios en PRs de GitHub
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `owner` | string | Sí | Propietario del repositorio |
+| `repo` | string | Sí | Nombre del repositorio |
+| `body` | string | Sí | Contenido del comentario |
+| `pullNumber` | number | Sí | Número de la solicitud de extracción |
+| `path` | string | No | Ruta del archivo para el comentario de revisión |
+| `position` | number | No | Número de línea para el comentario de revisión |
+| `commentType` | string | No | Tipo de comentario \(pr_comment o file_comment\) |
+| `line` | number | No | Número de línea para el comentario de revisión |
+| `side` | string | No | Lado del diff \(LEFT o RIGHT\) |
+| `commitId` | string | No | El SHA del commit sobre el que comentar |
+| `apiKey` | string | Sí | Token de API de GitHub |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Confirmación de comentario legible para humanos |
+| `metadata` | object | Metadatos del comentario |
+
+### `github_repo_info`
+
+Recupera metadatos completos del repositorio de GitHub, incluyendo estrellas, bifurcaciones, problemas y lenguaje principal. Compatible con repositorios públicos y privados con autenticación opcional.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `owner` | string | Sí | Propietario del repositorio \(usuario u organización\) |
+| `repo` | string | Sí | Nombre del repositorio |
+| `apiKey` | string | Sí | Token de acceso personal de GitHub |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Resumen del repositorio legible para humanos |
+| `metadata` | object | Metadatos del repositorio |
+
+### `github_latest_commit`
+
+Recupera el último commit de un repositorio de GitHub
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `owner` | string | Sí | Propietario del repositorio \(usuario u organización\) |
+| `repo` | string | Sí | Nombre del repositorio |
+| `branch` | string | No | Nombre de la rama \(por defecto, la rama predeterminada del repositorio\) |
+| `apiKey` | string | Sí | Token de API de GitHub |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Resumen del commit legible para humanos |
+| `metadata` | object | Metadatos del commit |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `github`
diff --git a/apps/docs/content/docs/es/tools/gmail.mdx b/apps/docs/content/docs/es/tools/gmail.mdx
new file mode 100644
index 0000000000..d67e460e75
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/gmail.mdx
@@ -0,0 +1,142 @@
+---
+title: Gmail
+description: Envía Gmail o activa flujos de trabajo desde eventos de Gmail
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Gmail](https://gmail.com) es el popular servicio de correo electrónico de Google que proporciona una plataforma robusta para enviar, recibir y gestionar comunicaciones por correo electrónico. Con más de 1.800 millones de usuarios activos en todo el mundo, Gmail ofrece una experiencia rica en funciones con potentes capacidades de búsqueda, herramientas de organización y opciones de integración.
+
+Con Gmail, puedes:
+
+- **Enviar y recibir correos electrónicos**: Comunícate con contactos a través de una interfaz limpia e intuitiva
+- **Organizar mensajes**: Usa etiquetas, carpetas y filtros para mantener tu bandeja de entrada organizada
+- **Buscar eficientemente**: Encuentra mensajes específicos rápidamente con la potente tecnología de búsqueda de Google
+- **Automatizar flujos de trabajo**: Crea filtros y reglas para procesar automáticamente los correos entrantes
+- **Acceder desde cualquier lugar**: Usa Gmail en diferentes dispositivos con contenido y configuraciones sincronizados
+- **Integrar con otros servicios**: Conéctate con Google Calendar, Drive y otras herramientas de productividad
+
+En Sim, la integración de Gmail permite a tus agentes enviar, leer y buscar correos electrónicos de forma programática. Esto permite potentes escenarios de automatización como enviar notificaciones, procesar mensajes entrantes, extraer información de correos electrónicos y gestionar flujos de comunicación. Tus agentes pueden redactar y enviar correos electrónicos personalizados, buscar mensajes específicos utilizando la sintaxis de consulta de Gmail y extraer contenido de correos electrónicos para usarlo en otras partes de tu flujo de trabajo. Próximamente, los agentes también podrán escuchar nuevos correos electrónicos en tiempo real, permitiendo flujos de trabajo receptivos que pueden activar acciones basadas en mensajes entrantes. Esta integración cierra la brecha entre tus flujos de trabajo de IA y las comunicaciones por correo electrónico, permitiendo una interacción perfecta con una de las plataformas de comunicación más utilizadas del mundo.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integración completa con Gmail mediante autenticación OAuth. Envía mensajes de correo electrónico, lee contenido de correos y activa flujos de trabajo a partir de eventos de Gmail como nuevos correos y cambios de etiquetas.
+
+## Herramientas
+
+### `gmail_send`
+
+Enviar correos electrónicos usando Gmail
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `to` | string | Sí | Dirección de correo electrónico del destinatario |
+| `subject` | string | Sí | Asunto del correo electrónico |
+| `body` | string | Sí | Contenido del cuerpo del correo electrónico |
+| `cc` | string | No | Destinatarios en CC \(separados por comas\) |
+| `bcc` | string | No | Destinatarios en CCO \(separados por comas\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Mensaje de éxito |
+| `metadata` | object | Metadatos del correo electrónico |
+
+### `gmail_draft`
+
+Crear borradores de correos electrónicos usando Gmail
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `to` | string | Sí | Dirección de correo electrónico del destinatario |
+| `subject` | string | Sí | Asunto del correo electrónico |
+| `body` | string | Sí | Contenido del cuerpo del correo electrónico |
+| `cc` | string | No | Destinatarios en CC \(separados por comas\) |
+| `bcc` | string | No | Destinatarios en CCO \(separados por comas\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Mensaje de éxito |
+| `metadata` | object | Metadatos del borrador |
+
+### `gmail_read`
+
+Leer correos electrónicos de Gmail
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `messageId` | string | No | ID del mensaje a leer |
+| `folder` | string | No | Carpeta/etiqueta desde donde leer los correos |
+| `unreadOnly` | boolean | No | Recuperar solo mensajes no leídos |
+| `maxResults` | number | No | Número máximo de mensajes a recuperar \(predeterminado: 1, máximo: 10\) |
+| `includeAttachments` | boolean | No | Descargar e incluir archivos adjuntos del correo |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Contenido de texto del correo electrónico |
+| `metadata` | json | Metadatos del correo electrónico |
+| `attachments` | file[] | Archivos adjuntos del correo electrónico |
+
+### `gmail_search`
+
+Buscar correos electrónicos en Gmail
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `query` | string | Sí | Consulta de búsqueda para correos electrónicos |
+| `maxResults` | number | No | Número máximo de resultados a devolver |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Resumen de resultados de búsqueda |
+| `metadata` | object | Metadatos de búsqueda |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `gmail`
diff --git a/apps/docs/content/docs/es/tools/google_calendar.mdx b/apps/docs/content/docs/es/tools/google_calendar.mdx
new file mode 100644
index 0000000000..1f153b4dde
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/google_calendar.mdx
@@ -0,0 +1,204 @@
+---
+title: Google Calendar
+description: Gestionar eventos de Google Calendar
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Google Calendar](https://calendar.google.com) es el potente servicio de calendario y programación de Google que proporciona una plataforma completa para gestionar eventos, reuniones y citas. Con una integración perfecta en todo el ecosistema de Google y una adopción generalizada, Google Calendar ofrece funciones robustas tanto para necesidades de programación personales como profesionales.
+
+Con Google Calendar, puedes:
+
+- **Crear y gestionar eventos**: Programar reuniones, citas y recordatorios con información detallada
+- **Enviar invitaciones de calendario**: Notificar y coordinar automáticamente con los asistentes mediante invitaciones por correo electrónico
+- **Creación de eventos con lenguaje natural**: Añadir eventos rápidamente usando lenguaje conversacional como "Reunión con Juan mañana a las 3pm"
+- **Ver y buscar eventos**: Encontrar y acceder fácilmente a tus eventos programados en múltiples calendarios
+- **Gestionar múltiples calendarios**: Organizar diferentes tipos de eventos en varios calendarios
+
+En Sim, la integración con Google Calendar permite a tus agentes crear, leer y gestionar eventos de calendario de forma programática. Esto permite potentes escenarios de automatización como programar reuniones, enviar invitaciones de calendario, comprobar disponibilidad y gestionar detalles de eventos. Tus agentes pueden crear eventos con entrada en lenguaje natural, enviar invitaciones de calendario automatizadas a los asistentes, recuperar información de eventos y listar próximos eventos. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la gestión de calendarios, permitiendo una automatización de programación y coordinación perfecta con una de las plataformas de calendario más utilizadas del mundo.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Google Calendar para crear, leer, actualizar y listar eventos del calendario dentro de tu flujo de trabajo. Automatiza la programación, verifica la disponibilidad y gestiona eventos utilizando autenticación OAuth. Las invitaciones por correo electrónico se envían de forma asíncrona y la entrega depende de la configuración de Google Calendar de los destinatarios.
+
+## Herramientas
+
+### `google_calendar_create`
+
+Crear un nuevo evento en Google Calendar
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `calendarId` | string | No | ID del calendario \(por defecto es el primario\) |
+| `summary` | string | Sí | Título/resumen del evento |
+| `description` | string | No | Descripción del evento |
+| `location` | string | No | Ubicación del evento |
+| `startDateTime` | string | Sí | Fecha y hora de inicio \(formato RFC3339, p. ej., 2025-06-03T10:00:00-08:00\) |
+| `endDateTime` | string | Sí | Fecha y hora de finalización \(formato RFC3339, p. ej., 2025-06-03T11:00:00-08:00\) |
+| `timeZone` | string | No | Zona horaria \(p. ej., America/Los_Angeles\) |
+| `attendees` | array | No | Array de direcciones de correo electrónico de los asistentes |
+| `sendUpdates` | string | No | Cómo enviar actualizaciones a los asistentes: all, externalOnly o none |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Mensaje de confirmación de creación del evento |
+| `metadata` | json | Metadatos del evento creado incluyendo ID, estado y detalles |
+
+### `google_calendar_list`
+
+Listar eventos de Google Calendar
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `calendarId` | string | No | ID del calendario \(por defecto es el primario\) |
+| `timeMin` | string | No | Límite inferior para eventos \(marca de tiempo RFC3339, p. ej., 2025-06-03T00:00:00Z\) |
+| `timeMax` | string | No | Límite superior para eventos \(marca de tiempo RFC3339, p. ej., 2025-06-04T00:00:00Z\) |
+| `orderBy` | string | No | Orden de los eventos devueltos \(startTime o updated\) |
+| `showDeleted` | boolean | No | Incluir eventos eliminados |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Resumen del recuento de eventos encontrados |
+| `metadata` | json | Lista de eventos con tokens de paginación y detalles del evento |
+
+### `google_calendar_get`
+
+Obtener un evento específico de Google Calendar
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `calendarId` | string | No | ID del calendario (predeterminado: primario) |
+| `eventId` | string | Sí | ID del evento a recuperar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Mensaje de confirmación de recuperación del evento |
+| `metadata` | json | Detalles del evento incluyendo ID, estado, horarios y asistentes |
+
+### `google_calendar_quick_add`
+
+Crear eventos a partir de texto en lenguaje natural
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `calendarId` | string | No | ID del calendario (predeterminado: primario) |
+| `text` | string | Sí | Texto en lenguaje natural que describe el evento (p. ej., "Reunión con Juan mañana a las 3pm") |
+| `attendees` | array | No | Array de direcciones de correo electrónico de los asistentes (también se acepta cadena separada por comas) |
+| `sendUpdates` | string | No | Cómo enviar actualizaciones a los asistentes: all, externalOnly o none |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Mensaje de confirmación de creación del evento a partir de lenguaje natural |
+| `metadata` | json | Metadatos del evento creado incluyendo detalles analizados |
+
+### `google_calendar_invite`
+
+Invitar asistentes a un evento existente de Google Calendar
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `calendarId` | string | No | ID del calendario \(por defecto es el primario\) |
+| `eventId` | string | Sí | ID del evento al que invitar asistentes |
+| `attendees` | array | Sí | Array de direcciones de correo electrónico de los asistentes a invitar |
+| `sendUpdates` | string | No | Cómo enviar actualizaciones a los asistentes: all, externalOnly, o none |
+| `replaceExisting` | boolean | No | Si reemplazar a los asistentes existentes o añadirlos \(por defecto es false\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Mensaje de confirmación de invitación a asistentes con estado de entrega de correo electrónico |
+| `metadata` | json | Metadatos actualizados del evento incluyendo lista de asistentes y detalles |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `google_calendar`
diff --git a/apps/docs/content/docs/es/tools/google_docs.mdx b/apps/docs/content/docs/es/tools/google_docs.mdx
new file mode 100644
index 0000000000..846700e402
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/google_docs.mdx
@@ -0,0 +1,144 @@
+---
+title: Google Docs
+description: Lee, escribe y crea documentos
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Google Docs](https://docs.google.com) es un potente servicio de creación y edición de documentos basado en la nube que permite a los usuarios crear, editar y colaborar en documentos en tiempo real. Como parte de la suite de productividad de Google, Google Docs ofrece una plataforma versátil para documentos de texto con sólidas capacidades de formato, comentarios y compartición.
+
+Aprende cómo integrar la herramienta "Leer" de Google Docs en Sim para obtener datos de tus documentos sin esfuerzo e integrarlos en tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Docs, la configuración de lecturas de datos y el uso de esa información para automatizar procesos en tiempo real. Perfecto para sincronizar datos en vivo con tus agentes.
+
+VIDEO
+
+Aprende cómo integrar la herramienta "Actualizar" de Google Docs en Sim para añadir contenido en tus documentos sin esfuerzo a través de tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Docs, la configuración de escrituras de datos y el uso de esa información para automatizar actualizaciones de documentos de manera fluida. Perfecto para mantener documentación dinámica en tiempo real con un mínimo esfuerzo.
+
+VIDEO
+
+Aprende cómo integrar la herramienta "Crear" de Google Docs en Sim para generar nuevos documentos sin esfuerzo a través de tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Docs, la configuración de creación de documentos y el uso de datos de flujo de trabajo para poblar contenido automáticamente. Perfecto para agilizar la generación de documentos y mejorar la productividad.
+
+VIDEO
+
+Con Google Docs, puedes:
+
+- **Crear y editar documentos**: Desarrolla documentos de texto con opciones completas de formato
+- **Colaborar en tiempo real**: Trabaja simultáneamente con múltiples usuarios en el mismo documento
+- **Seguir los cambios**: Visualiza el historial de revisiones y restaura versiones anteriores
+- **Comentar y sugerir**: Proporciona retroalimentación y propón ediciones sin cambiar el contenido original
+- **Acceder desde cualquier lugar**: Usa Google Docs en diferentes dispositivos con sincronización automática en la nube
+- **Trabajar sin conexión**: Continúa trabajando sin conexión a internet con cambios que se sincronizan al volver a conectarte
+- **Integrar con otros servicios**: Conéctate con Google Drive, Sheets, Slides y aplicaciones de terceros
+
+En Sim, la integración con Google Docs permite a tus agentes interactuar directamente con el contenido de los documentos de forma programática. Esto permite potentes escenarios de automatización como creación de documentos, extracción de contenido, edición colaborativa y gestión de documentos. Tus agentes pueden leer documentos existentes para extraer información, escribir en documentos para actualizar contenido y crear nuevos documentos desde cero. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la gestión de documentos, permitiendo una interacción perfecta con una de las plataformas de documentos más utilizadas del mundo. Al conectar Sim con Google Docs, puedes automatizar flujos de trabajo de documentos, generar informes, extraer información de documentos y mantener la documentación, todo a través de tus agentes inteligentes.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Google Docs para gestionar documentos. Lee contenido de documentos existentes, escribe en documentos y crea nuevos documentos utilizando autenticación OAuth. Compatible con manipulación de contenido de texto para la creación y edición de documentos.
+
+## Herramientas
+
+### `google_docs_read`
+
+Leer contenido de un documento de Google Docs
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `documentId` | string | Sí | El ID del documento a leer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Contenido de texto extraído del documento |
+| `metadata` | json | Metadatos del documento incluyendo ID, título y URL |
+
+### `google_docs_write`
+
+Escribir o actualizar contenido en un documento de Google Docs
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `documentId` | string | Sí | El ID del documento en el que escribir |
+| `content` | string | Sí | El contenido a escribir en el documento |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `updatedContent` | boolean | Indica si el contenido del documento se actualizó correctamente |
+| `metadata` | json | Metadatos del documento actualizado incluyendo ID, título y URL |
+
+### `google_docs_create`
+
+Crear un nuevo documento de Google Docs
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `title` | string | Sí | El título del documento a crear |
+| `content` | string | No | El contenido del documento a crear |
+| `folderSelector` | string | No | Seleccionar la carpeta donde crear el documento |
+| `folderId` | string | No | El ID de la carpeta donde crear el documento \(uso interno\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `metadata` | json | Metadatos del documento creado, incluyendo ID, título y URL |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `google_docs`
diff --git a/apps/docs/content/docs/es/tools/google_drive.mdx b/apps/docs/content/docs/es/tools/google_drive.mdx
new file mode 100644
index 0000000000..3079b5a012
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/google_drive.mdx
@@ -0,0 +1,140 @@
+---
+title: Google Drive
+description: Crear, subir y listar archivos
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Google Drive](https://drive.google.com) es el servicio de almacenamiento en la nube y sincronización de archivos de Google que permite a los usuarios almacenar archivos, sincronizarlos entre dispositivos y compartirlos con otros. Como componente central del ecosistema de productividad de Google, Google Drive ofrece capacidades robustas de almacenamiento, organización y colaboración.
+
+Aprende cómo integrar la herramienta Google Drive en Sim para extraer información de tu Drive sin esfuerzo a través de tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Drive, la configuración de la recuperación de datos y el uso de documentos y archivos almacenados para mejorar la automatización. Perfecto para sincronizar datos importantes con tus agentes en tiempo real.
+
+VIDEO
+
+Con Google Drive, puedes:
+
+- **Almacenar archivos en la nube**: Sube y accede a tus archivos desde cualquier lugar con acceso a internet
+- **Organizar contenido**: Crea carpetas, usa códigos de color e implementa convenciones de nomenclatura
+- **Compartir y colaborar**: Controla los permisos de acceso y trabaja simultáneamente en archivos
+- **Buscar eficientemente**: Encuentra archivos rápidamente con la potente tecnología de búsqueda de Google
+- **Acceder desde varios dispositivos**: Usa Google Drive en plataformas de escritorio, móviles y web
+- **Integrar con otros servicios**: Conéctate con Google Docs, Sheets, Slides y aplicaciones de terceros
+
+En Sim, la integración con Google Drive permite a tus agentes interactuar directamente con tu almacenamiento en la nube de forma programática. Esto permite potentes escenarios de automatización como gestión de archivos, organización de contenido y flujos de trabajo de documentos. Tus agentes pueden subir nuevos archivos a carpetas específicas, descargar archivos existentes para procesar su contenido y listar el contenido de carpetas para navegar por la estructura de almacenamiento. Esta integración cierra la brecha entre tus flujos de trabajo de IA y tu sistema de gestión de documentos, permitiendo operaciones de archivos sin intervención manual. Al conectar Sim con Google Drive, puedes automatizar flujos de trabajo basados en archivos, gestionar documentos de manera inteligente e incorporar operaciones de almacenamiento en la nube a las capacidades de tu agente.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Google Drive para gestionar archivos y carpetas. Sube nuevos archivos, obtén contenido de archivos existentes, crea nuevas carpetas y lista el contenido de carpetas utilizando autenticación OAuth. Compatible con operaciones de archivos con tipos MIME personalizados y organización de carpetas.
+
+## Herramientas
+
+### `google_drive_upload`
+
+Subir un archivo a Google Drive
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `fileName` | string | Sí | El nombre del archivo a subir |
+| `content` | string | Sí | El contenido del archivo a subir |
+| `mimeType` | string | No | El tipo MIME del archivo a subir |
+| `folderSelector` | string | No | Selecciona la carpeta donde subir el archivo |
+| `folderId` | string | No | El ID de la carpeta donde subir el archivo \(uso interno\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `file` | json | Metadatos del archivo subido incluyendo ID, nombre y enlaces |
+
+### `google_drive_create_folder`
+
+Crear una nueva carpeta en Google Drive
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `fileName` | string | Sí | Nombre de la carpeta a crear |
+| `folderSelector` | string | No | Seleccionar la carpeta principal donde crear la carpeta |
+| `folderId` | string | No | ID de la carpeta principal \(uso interno\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `file` | json | Metadatos de la carpeta creada incluyendo ID, nombre e información de la carpeta principal |
+
+### `google_drive_list`
+
+Listar archivos y carpetas en Google Drive
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `folderSelector` | string | No | Seleccionar la carpeta de la que listar archivos |
+| `folderId` | string | No | El ID de la carpeta de la que listar archivos \(uso interno\) |
+| `query` | string | No | Una consulta para filtrar los archivos |
+| `pageSize` | number | No | El número de archivos a devolver |
+| `pageToken` | string | No | El token de página para usar en la paginación |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `files` | json | Array de objetos de metadatos de archivos de la carpeta especificada |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `google_drive`
diff --git a/apps/docs/content/docs/es/tools/google_search.mdx b/apps/docs/content/docs/es/tools/google_search.mdx
new file mode 100644
index 0000000000..12d424153e
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/google_search.mdx
@@ -0,0 +1,86 @@
+---
+title: Búsqueda de Google
+description: Buscar en la web
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Google Search](https://www.google.com) es el motor de búsqueda más utilizado del mundo, que proporciona acceso a miles de millones de páginas web y fuentes de información. Google Search utiliza algoritmos sofisticados para ofrecer resultados de búsqueda relevantes basados en las consultas de los usuarios, lo que lo convierte en una herramienta esencial para encontrar información en internet.
+
+Aprende cómo integrar la herramienta de Google Search en Sim para obtener sin esfuerzo resultados de búsqueda en tiempo real a través de tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Search, la configuración de consultas de búsqueda y el uso de datos en vivo para mejorar la automatización. Perfecto para potenciar tus agentes con información actualizada y toma de decisiones más inteligente.
+
+VIDEO
+
+Con Google Search, puedes:
+
+- **Encontrar información relevante**: Accede a miles de millones de páginas web con los potentes algoritmos de búsqueda de Google
+- **Obtener resultados específicos**: Utiliza operadores de búsqueda para refinar y dirigir tus consultas
+- **Descubrir contenido diverso**: Encuentra texto, imágenes, videos, noticias y otros tipos de contenido
+- **Acceder a gráficos de conocimiento**: Obtén información estructurada sobre personas, lugares y cosas
+- **Utilizar funciones de búsqueda**: Aprovecha herramientas de búsqueda especializadas como calculadoras, convertidores de unidades y más
+
+En Sim, la integración de Google Search permite a tus agentes buscar en la web de forma programática e incorporar resultados de búsqueda en sus flujos de trabajo. Esto permite escenarios de automatización potentes como investigación, verificación de hechos, recopilación de datos y síntesis de información. Tus agentes pueden formular consultas de búsqueda, recuperar resultados relevantes y extraer información de esos resultados para tomar decisiones o generar ideas. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la vasta información disponible en la web, permitiendo a tus agentes acceder a información actualizada de toda internet. Al conectar Sim con Google Search, puedes crear agentes que se mantengan informados con la información más reciente, verifiquen hechos, realicen investigaciones y proporcionen a los usuarios contenido web relevante, todo sin salir de tu flujo de trabajo.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Busca en la web utilizando la API de Google Custom Search, que proporciona resultados de búsqueda de alta calidad de toda internet o de un sitio específico definido por un ID de motor de búsqueda personalizado.
+
+## Herramientas
+
+### `google_search`
+
+Buscar en la web con la API de Custom Search
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `query` | string | Sí | La consulta de búsqueda a ejecutar |
+| `searchEngineId` | string | Sí | ID del motor de búsqueda personalizado |
+| `num` | string | No | Número de resultados a devolver \(predeterminado: 10, máximo: 10\) |
+| `apiKey` | string | Sí | Clave de API de Google |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `items` | array | Array de resultados de búsqueda de Google |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `google_search`
diff --git a/apps/docs/content/docs/es/tools/google_sheets.mdx b/apps/docs/content/docs/es/tools/google_sheets.mdx
new file mode 100644
index 0000000000..2d70c8759d
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/google_sheets.mdx
@@ -0,0 +1,197 @@
+---
+title: Google Sheets
+description: Leer, escribir y actualizar datos
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Google Sheets](https://sheets.google.com) es una potente aplicación de hojas de cálculo basada en la nube que permite a los usuarios crear, editar y colaborar en hojas de cálculo en tiempo real. Como parte del conjunto de productividad de Google, Google Sheets ofrece una plataforma versátil para la organización, análisis y visualización de datos con sólidas capacidades de formato, fórmulas y opciones para compartir.
+
+Aprende cómo integrar la herramienta "Leer" de Google Sheets en Sim para obtener datos de tus hojas de cálculo sin esfuerzo e integrarlos en tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Sheets, la configuración de lecturas de datos y el uso de esa información para automatizar procesos en tiempo real. Perfecto para sincronizar datos en vivo con tus agentes.
+
+VIDEO
+
+Descubre cómo usar la herramienta "Escribir" de Google Sheets en Sim para enviar automáticamente datos desde tus flujos de trabajo a tus hojas de cálculo de Google. Este tutorial cubre la configuración de la integración, la configuración de operaciones de escritura y la actualización de tus hojas sin problemas a medida que se ejecutan los flujos de trabajo. Perfecto para mantener registros en tiempo real sin entrada manual.
+
+VIDEO
+
+Explora cómo aprovechar la herramienta "Actualizar" de Google Sheets en Sim para modificar entradas existentes en tus hojas de cálculo basadas en la ejecución del flujo de trabajo. Este tutorial demuestra cómo configurar la lógica de actualización, mapear campos de datos y sincronizar cambios instantáneamente. Perfecto para mantener tus datos actualizados y consistentes.
+
+VIDEO
+
+Aprende a usar la herramienta "Añadir" de Google Sheets en Sim para agregar sin esfuerzo nuevas filas de datos a tus hojas de cálculo durante la ejecución del flujo de trabajo. Este tutorial te guía a través de la configuración de la integración, la configuración de acciones de añadir y asegurando un crecimiento fluido de datos. ¡Perfecto para expandir registros sin esfuerzo manual!
+
+VIDEO
+
+Con Google Sheets, puedes:
+
+- **Crear y editar hojas de cálculo**: Desarrolla documentos basados en datos con opciones completas de formato y cálculo
+- **Colaborar en tiempo real**: Trabaja simultáneamente con múltiples usuarios en la misma hoja de cálculo
+- **Analizar datos**: Usa fórmulas, funciones y tablas dinámicas para procesar y entender tus datos
+- **Visualizar información**: Crea gráficos, diagramas y formato condicional para representar datos visualmente
+- **Acceder desde cualquier lugar**: Usa Google Sheets en diferentes dispositivos con sincronización automática en la nube
+- **Trabajar sin conexión**: Continúa trabajando sin conexión a internet con cambios que se sincronizan cuando vuelves a estar en línea
+- **Integrar con otros servicios**: Conéctate con Google Drive, Forms y aplicaciones de terceros
+
+En Sim, la integración con Google Sheets permite a tus agentes interactuar directamente con datos de hojas de cálculo de forma programática. Esto permite potentes escenarios de automatización como extracción de datos, análisis, informes y gestión. Tus agentes pueden leer hojas de cálculo existentes para extraer información, escribir en hojas de cálculo para actualizar datos y crear nuevas hojas de cálculo desde cero. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la gestión de datos, permitiendo una interacción fluida con datos estructurados. Al conectar Sim con Google Sheets, puedes automatizar flujos de trabajo de datos, generar informes, extraer información de los datos y mantener información actualizada - todo a través de tus agentes inteligentes. La integración admite varios formatos de datos y especificaciones de rangos, haciéndola lo suficientemente flexible para manejar diversas necesidades de gestión de datos mientras mantiene la naturaleza colaborativa y accesible de Google Sheets.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Google Sheets para gestionar datos de hojas de cálculo. Lee datos de rangos específicos, escribe nuevos datos, actualiza celdas existentes y añade datos al final de las hojas utilizando autenticación OAuth. Compatible con varios formatos de entrada y salida para un manejo flexible de datos.
+
+## Herramientas
+
+### `google_sheets_read`
+
+Leer datos de una hoja de cálculo de Google Sheets
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo de la que leer |
+| `range` | string | No | El rango de celdas del que leer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `data` | json | Datos de la hoja incluyendo rango y valores de celdas |
+| `metadata` | json | Metadatos de la hoja de cálculo incluyendo ID y URL |
+
+### `google_sheets_write`
+
+Escribir datos en una hoja de cálculo de Google Sheets
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo en la que escribir |
+| `range` | string | No | El rango de celdas en el que escribir |
+| `values` | array | Sí | Los datos a escribir en la hoja de cálculo |
+| `valueInputOption` | string | No | El formato de los datos a escribir |
+| `includeValuesInResponse` | boolean | No | Si se deben incluir los valores escritos en la respuesta |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `updatedRange` | string | Rango de celdas que fueron actualizadas |
+| `updatedRows` | number | Número de filas actualizadas |
+| `updatedColumns` | number | Número de columnas actualizadas |
+| `updatedCells` | number | Número de celdas actualizadas |
+| `metadata` | json | Metadatos de la hoja de cálculo incluyendo ID y URL |
+
+### `google_sheets_update`
+
+Actualizar datos en una hoja de cálculo de Google Sheets
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo a actualizar |
+| `range` | string | No | El rango de celdas a actualizar |
+| `values` | array | Sí | Los datos para actualizar en la hoja de cálculo |
+| `valueInputOption` | string | No | El formato de los datos a actualizar |
+| `includeValuesInResponse` | boolean | No | Si se deben incluir los valores actualizados en la respuesta |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `updatedRange` | string | Rango de celdas que fueron actualizadas |
+| `updatedRows` | number | Número de filas actualizadas |
+| `updatedColumns` | number | Número de columnas actualizadas |
+| `updatedCells` | number | Número de celdas actualizadas |
+| `metadata` | json | Metadatos de la hoja de cálculo incluyendo ID y URL |
+
+### `google_sheets_append`
+
+Añadir datos al final de una hoja de cálculo de Google Sheets
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo a la que añadir datos |
+| `range` | string | No | El rango de celdas después del cual añadir datos |
+| `values` | array | Sí | Los datos a añadir a la hoja de cálculo |
+| `valueInputOption` | string | No | El formato de los datos a añadir |
+| `insertDataOption` | string | No | Cómo insertar los datos \(OVERWRITE o INSERT_ROWS\) |
+| `includeValuesInResponse` | boolean | No | Si se deben incluir los valores añadidos en la respuesta |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `tableRange` | string | Rango de la tabla donde se añadieron los datos |
+| `updatedRange` | string | Rango de celdas que fueron actualizadas |
+| `updatedRows` | number | Número de filas actualizadas |
+| `updatedColumns` | number | Número de columnas actualizadas |
+| `updatedCells` | number | Número de celdas actualizadas |
+| `metadata` | json | Metadatos de la hoja de cálculo incluyendo ID y URL |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `google_sheets`
diff --git a/apps/docs/content/docs/es/tools/huggingface.mdx b/apps/docs/content/docs/es/tools/huggingface.mdx
new file mode 100644
index 0000000000..f081a004a0
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/huggingface.mdx
@@ -0,0 +1,98 @@
+---
+title: Hugging Face
+description: Usa la API de Inferencia de Hugging Face
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[HuggingFace](https://huggingface.co/) es una plataforma líder de IA que proporciona acceso a miles de modelos de aprendizaje automático preentrenados y potentes capacidades de inferencia. Con su extenso centro de modelos y una API robusta, HuggingFace ofrece herramientas completas tanto para investigación como para aplicaciones de IA en producción.
+Con HuggingFace, puedes:
+
+Acceder a modelos preentrenados: Utiliza modelos para generación de texto, traducción, procesamiento de imágenes y más
+Generar completados de IA: Crea contenido utilizando modelos de lenguaje de última generación a través de la API de Inferencia
+Procesamiento de lenguaje natural: Procesa y analiza texto con modelos especializados de PLN
+Implementar a escala: Aloja y sirve modelos para aplicaciones en producción
+Personalizar modelos: Ajusta modelos existentes para casos de uso específicos
+
+En Sim, la integración con HuggingFace permite a tus agentes generar completados programáticamente utilizando la API de Inferencia de HuggingFace. Esto permite potentes escenarios de automatización como generación de contenido, análisis de texto, completado de código y escritura creativa. Tus agentes pueden generar completados con indicaciones en lenguaje natural, acceder a modelos especializados para diferentes tareas e integrar contenido generado por IA en flujos de trabajo. Esta integración cierra la brecha entre tus flujos de trabajo de IA y las capacidades de aprendizaje automático, permitiendo una automatización fluida impulsada por IA con una de las plataformas de ML más completas del mundo.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Genera completados utilizando la API de Inferencia de Hugging Face con acceso a varios modelos de código abierto. Aprovecha modelos de IA de vanguardia para completados de chat, generación de contenido y conversaciones impulsadas por IA con parámetros personalizables.
+
+## Herramientas
+
+### `huggingface_chat`
+
+Genera completados utilizando la API de Inferencia de Hugging Face
+
+#### Entrada
+
+| Parámetro | Tipo | Requerido | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `systemPrompt` | string | No | Indicación del sistema para guiar el comportamiento del modelo |
+| `content` | string | Sí | El contenido del mensaje del usuario para enviar al modelo |
+| `provider` | string | Sí | El proveedor a utilizar para la solicitud de API \(p. ej., novita, cerebras, etc.\) |
+| `model` | string | Sí | Modelo a utilizar para completados de chat \(p. ej., deepseek/deepseek-v3-0324\) |
+| `maxTokens` | number | No | Número máximo de tokens a generar |
+| `temperature` | number | No | Temperatura de muestreo \(0-2\). Valores más altos hacen que la salida sea más aleatoria |
+| `apiKey` | string | Sí | Token de API de Hugging Face |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Resultados del completado del chat |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `huggingface`
diff --git a/apps/docs/content/docs/es/tools/hunter.mdx b/apps/docs/content/docs/es/tools/hunter.mdx
new file mode 100644
index 0000000000..6c4f695ce5
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/hunter.mdx
@@ -0,0 +1,206 @@
+---
+title: Hunter io
+description: Encuentra y verifica direcciones de correo electrónico profesionales
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Hunter.io](https://hunter.io/) es una plataforma líder para encontrar y verificar direcciones de correo electrónico profesionales, descubrir empresas y enriquecer datos de contacto. Hunter.io proporciona APIs robustas para búsqueda de dominios, búsqueda de correos electrónicos, verificación y descubrimiento de empresas, convirtiéndola en una herramienta esencial para ventas, reclutamiento y desarrollo de negocios.
+
+Con Hunter.io, puedes:
+
+- **Encontrar direcciones de correo electrónico por dominio:** Busca todas las direcciones de correo electrónico disponibles públicamente asociadas con un dominio de empresa específico.
+- **Descubrir empresas:** Utiliza filtros avanzados y búsqueda potenciada por IA para encontrar empresas que coincidan con tus criterios.
+- **Encontrar una dirección de correo electrónico específica:** Localiza la dirección de correo electrónico más probable para una persona en una empresa utilizando su nombre y dominio.
+- **Verificar direcciones de correo electrónico:** Comprueba la entregabilidad y validez de cualquier dirección de correo electrónico.
+- **Enriquecer datos de empresa:** Obtén información detallada sobre empresas, incluyendo tamaño, tecnologías utilizadas y más.
+
+En Sim, la integración con Hunter.io permite a tus agentes buscar y verificar direcciones de correo electrónico de forma programática, descubrir empresas y enriquecer datos de contacto utilizando la API de Hunter.io. Esto te permite automatizar la generación de leads, el enriquecimiento de contactos y la verificación de correos electrónicos directamente dentro de tus flujos de trabajo. Tus agentes pueden aprovechar las herramientas de Hunter.io para agilizar el alcance, mantener tu CRM actualizado y potenciar escenarios de automatización inteligente para ventas, reclutamiento y más.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Busca direcciones de correo electrónico, verifica su entregabilidad, descubre empresas y enriquece datos de contacto utilizando las potentes capacidades de búsqueda de correos electrónicos de Hunter.io.
+
+## Herramientas
+
+### `hunter_discover`
+
+Devuelve empresas que coinciden con un conjunto de criterios utilizando la búsqueda potenciada por IA de Hunter.io.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `query` | string | No | Consulta de búsqueda en lenguaje natural para empresas |
+| `domain` | string | No | Nombres de dominio de empresas para filtrar |
+| `headcount` | string | No | Filtro de tamaño de empresa \(p. ej., "1-10", "11-50"\) |
+| `company_type` | string | No | Tipo de organización |
+| `technology` | string | No | Tecnología utilizada por las empresas |
+| `apiKey` | string | Sí | Clave API de Hunter.io |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `results` | array | Array de empresas que coinciden con los criterios de búsqueda, cada una contiene dominio, nombre, recuento de personal, tecnologías y email_count |
+
+### `hunter_domain_search`
+
+Devuelve todas las direcciones de correo electrónico encontradas utilizando un nombre de dominio dado, con fuentes.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `domain` | string | Sí | Nombre de dominio para buscar direcciones de correo electrónico |
+| `limit` | number | No | Máximo de direcciones de correo electrónico a devolver \(predeterminado: 10\) |
+| `offset` | number | No | Número de direcciones de correo electrónico a omitir |
+| `type` | string | No | Filtro para correos personales o genéricos |
+| `seniority` | string | No | Filtrar por nivel de antigüedad: junior, senior o ejecutivo |
+| `department` | string | No | Filtrar por departamentos específicos \(p. ej., ventas, marketing\) |
+| `apiKey` | string | Sí | Clave API de Hunter.io |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `domain` | string | El nombre de dominio buscado |
+| `disposable` | boolean | Si el dominio acepta direcciones de correo desechables |
+| `webmail` | boolean | Si el dominio es un proveedor de webmail |
+| `accept_all` | boolean | Si el dominio acepta todas las direcciones de correo |
+| `pattern` | string | El patrón de correo electrónico utilizado por la organización |
+| `organization` | string | El nombre de la organización |
+| `description` | string | Descripción de la organización |
+| `industry` | string | Sector de la organización |
+| `twitter` | string | Perfil de Twitter de la organización |
+| `facebook` | string | Perfil de Facebook de la organización |
+| `linkedin` | string | Perfil de LinkedIn de la organización |
+| `instagram` | string | Perfil de Instagram de la organización |
+| `youtube` | string | Canal de YouTube de la organización |
+| `technologies` | array | Array de tecnologías utilizadas por la organización |
+| `country` | string | País donde se encuentra la organización |
+| `state` | string | Estado donde se encuentra la organización |
+| `city` | string | Ciudad donde se encuentra la organización |
+| `postal_code` | string | Código postal de la organización |
+| `street` | string | Dirección de la organización |
+| `emails` | array | Array de direcciones de correo encontradas para el dominio, cada una contiene valor, tipo, confianza, fuentes y detalles de la persona |
+
+### `hunter_email_finder`
+
+Encuentra la dirección de correo electrónico más probable para una persona dado su nombre y el dominio de la empresa.
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `domain` | string | Yes | Nombre del dominio de la empresa |
+| `first_name` | string | Yes | Nombre de la persona |
+| `last_name` | string | Yes | Apellido de la persona |
+| `company` | string | No | Nombre de la empresa |
+| `apiKey` | string | Yes | Clave API de Hunter.io |
+
+#### Output
+
+| Parameter | Type | Description |
+| --------- | ---- | ----------- |
+| `email` | string | La dirección de correo electrónico encontrada |
+| `score` | number | Puntuación de confianza para la dirección de correo electrónico encontrada |
+| `sources` | array | Array de fuentes donde se encontró el correo electrónico, cada una contiene domain, uri, extracted_on, last_seen_on y still_on_page |
+| `verification` | object | Información de verificación que contiene fecha y estado |
+
+### `hunter_email_verifier`
+
+Verifica la entregabilidad de una dirección de correo electrónico y proporciona un estado de verificación detallado.
+
+#### Input
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `email` | string | Yes | La dirección de correo electrónico a verificar |
+| `apiKey` | string | Yes | Clave API de Hunter.io |
+
+#### Output
+
+| Parameter | Type | Description |
+| --------- | ---- | ----------- |
+| `result` | string | Resultado de entregabilidad: deliverable, undeliverable o risky |
+| `score` | number | Puntuación de confianza para el resultado de verificación |
+| `email` | string | La dirección de correo electrónico verificada |
+| `regexp` | boolean | Si el correo electrónico sigue un patrón regex válido |
+| `gibberish` | boolean | Si el correo electrónico parece ser incoherente |
+| `disposable` | boolean | Si el correo electrónico es de un proveedor de correo desechable |
+| `webmail` | boolean | Si el correo electrónico es de un proveedor de webmail |
+| `mx_records` | boolean | Si existen registros MX para el dominio |
+| `smtp_server` | boolean | Si el servidor SMTP es accesible |
+| `smtp_check` | boolean | Si la comprobación SMTP fue exitosa |
+| `accept_all` | boolean | Si el dominio acepta todas las direcciones de correo electrónico |
+| `block` | boolean | Si el correo electrónico está bloqueado |
+| `status` | string | Estado de verificación: valid, invalid, accept_all, webmail, disposable o unknown |
+| `sources` | array | Array de fuentes donde se encontró el correo electrónico |
+
+### `hunter_companies_find`
+
+Enriquece los datos de la empresa utilizando el nombre de dominio.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `domain` | string | Sí | Dominio para encontrar datos de la empresa |
+| `apiKey` | string | Sí | Clave API de Hunter.io |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `person` | object | Información de la persona \(indefinido para la herramienta companies_find\) |
+| `company` | object | Información de la empresa incluyendo nombre, dominio, industria, tamaño, país, linkedin y twitter |
+
+### `hunter_email_count`
+
+Devuelve el número total de direcciones de correo electrónico encontradas para un dominio o empresa.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `domain` | string | No | Dominio para contar correos electrónicos \(obligatorio si no se proporciona la empresa\) |
+| `company` | string | No | Nombre de la empresa para contar correos electrónicos \(obligatorio si no se proporciona el dominio\) |
+| `type` | string | No | Filtro para correos personales o genéricos solamente |
+| `apiKey` | string | Sí | Clave API de Hunter.io |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `total` | number | Número total de direcciones de correo electrónico encontradas |
+| `personal_emails` | number | Número de direcciones de correo electrónico personales encontradas |
+| `generic_emails` | number | Número de direcciones de correo electrónico genéricas encontradas |
+| `department` | object | Desglose de direcciones de correo electrónico por departamento \(ejecutivo, ti, finanzas, gestión, ventas, legal, soporte, rrhh, marketing, comunicación\) |
+| `seniority` | object | Desglose de direcciones de correo electrónico por nivel de antigüedad \(junior, senior, ejecutivo\) |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `hunter`
diff --git a/apps/docs/content/docs/es/tools/image_generator.mdx b/apps/docs/content/docs/es/tools/image_generator.mdx
new file mode 100644
index 0000000000..c6ce37709d
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/image_generator.mdx
@@ -0,0 +1,79 @@
+---
+title: Generador de imágenes
+description: Generar imágenes
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[DALL-E](https://openai.com/dall-e-3) es el sistema avanzado de IA de OpenAI diseñado para generar imágenes y arte realistas a partir de descripciones en lenguaje natural. Como modelo de generación de imágenes de última generación, DALL-E puede crear visuales detallados y creativos basados en indicaciones textuales, permitiendo a los usuarios transformar sus ideas en contenido visual sin necesidad de habilidades artísticas.
+
+Con DALL-E, puedes:
+
+- **Generar imágenes realistas**: Crear visuales fotorrealistas a partir de descripciones textuales
+- **Diseñar arte conceptual**: Transformar ideas abstractas en representaciones visuales
+- **Producir variaciones**: Generar múltiples interpretaciones de la misma indicación
+- **Controlar el estilo artístico**: Especificar estilos artísticos, medios y estéticas visuales
+- **Crear escenas detalladas**: Describir escenas complejas con múltiples elementos y relaciones
+- **Visualizar productos**: Generar maquetas de productos y conceptos de diseño
+- **Ilustrar ideas**: Convertir conceptos escritos en ilustraciones visuales
+
+En Sim, la integración con DALL-E permite a tus agentes generar imágenes de forma programática como parte de sus flujos de trabajo. Esto permite potentes escenarios de automatización como creación de contenido, diseño visual e ideación creativa. Tus agentes pueden formular instrucciones detalladas, generar imágenes correspondientes e incorporar estos elementos visuales en sus resultados o procesos posteriores. Esta integración cierra la brecha entre el procesamiento del lenguaje natural y la creación de contenido visual, permitiendo que tus agentes se comuniquen no solo a través de texto sino también mediante imágenes convincentes. Al conectar Sim con DALL-E, puedes crear agentes que produzcan contenido visual bajo demanda, ilustren conceptos, generen recursos de diseño y mejoren las experiencias de usuario con elementos visuales enriquecidos - todo sin requerir intervención humana en el proceso creativo.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Crea imágenes de alta calidad utilizando los modelos de generación de imágenes de OpenAI. Configura resolución, calidad, estilo y otros parámetros para obtener exactamente la imagen que necesitas.
+
+## Herramientas
+
+### `openai_image`
+
+Generar imágenes usando OpenAI
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `model` | string | Sí | El modelo a utilizar \(gpt-image-1 o dall-e-3\) |
+| `prompt` | string | Sí | Una descripción textual de la imagen deseada |
+| `size` | string | Sí | El tamaño de las imágenes generadas \(1024x1024, 1024x1792, o 1792x1024\) |
+| `quality` | string | No | La calidad de la imagen \(standard o hd\) |
+| `style` | string | No | El estilo de la imagen \(vivid o natural\) |
+| `background` | string | No | El color de fondo, solo para gpt-image-1 |
+| `n` | number | No | El número de imágenes a generar \(1-10\) |
+| `apiKey` | string | Sí | Tu clave API de OpenAI |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Datos de la imagen generada |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `image_generator`
diff --git a/apps/docs/content/docs/es/tools/index.mdx b/apps/docs/content/docs/es/tools/index.mdx
new file mode 100644
index 0000000000..53f195a87b
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/index.mdx
@@ -0,0 +1,71 @@
+---
+title: Herramientas
+description: Herramientas potentes para mejorar tus flujos de trabajo agénticos
+---
+
+import { Card, Cards } from "fumadocs-ui/components/card";
+import { Step, Steps } from "fumadocs-ui/components/steps";
+import { Tab, Tabs } from "fumadocs-ui/components/tabs";
+
+Las herramientas son componentes potentes en Sim que permiten a tus flujos de trabajo interactuar con servicios externos, procesar datos y realizar tareas especializadas. Amplían las capacidades de tus agentes y flujos de trabajo proporcionando acceso a varias APIs y servicios.
+
+## ¿Qué es una herramienta?
+
+Una herramienta es un componente especializado que proporciona una funcionalidad específica o integración con servicios externos. Las herramientas pueden usarse para buscar en la web, interactuar con bases de datos, procesar imágenes, generar texto o imágenes, comunicarse a través de plataformas de mensajería y mucho más.
+
+## Uso de herramientas en flujos de trabajo
+
+Hay dos formas principales de usar herramientas en tus flujos de trabajo de Sim:
+
+
+
+ Como bloques independientes : Las herramientas pueden añadirse como bloques individuales en el lienzo cuando necesitas acceso determinista y directo a su funcionalidad. Esto te da un control preciso sobre cuándo y cómo se llama a la herramienta.
+
+
+ Como herramientas de agente : Las herramientas pueden añadirse a los bloques de Agente haciendo clic en "Añadir herramientas" y configurando los parámetros requeridos. Esto permite a los agentes elegir dinámicamente qué herramientas usar según el contexto y los requisitos de la tarea.
+
+
+
+## Configuración de herramientas
+
+Cada herramienta requiere una configuración específica para funcionar correctamente. Los elementos comunes de configuración incluyen:
+
+- **Claves API**: Muchas herramientas requieren autenticación mediante claves API
+- **Parámetros de conexión**: Endpoints, identificadores de base de datos, etc.
+- **Formato de entrada**: Cómo deben estructurarse los datos para la herramienta
+- **Manejo de salida**: Cómo procesar los resultados de la herramienta
+
+## Herramientas disponibles
+
+Sim proporciona una colección diversa de herramientas para varios propósitos, incluyendo:
+
+- **IA y procesamiento de lenguaje**: OpenAI, ElevenLabs, servicios de traducción
+- **Búsqueda e investigación**: Google Search, Tavily, Exa, Perplexity
+- **Manipulación de documentos**: Google Docs, Google Sheets, Notion, Confluence
+- **Procesamiento de medios**: Vision, Image Generator
+- **Comunicación**: Slack, WhatsApp, Twilio SMS, Gmail
+- **Almacenamiento de datos**: Pinecone, Supabase, Airtable
+- **Desarrollo**: GitHub
+
+Cada herramienta tiene su propia página de documentación dedicada con instrucciones detalladas sobre configuración y uso.
+
+## Resultados de las herramientas
+
+Las herramientas normalmente devuelven datos estructurados que pueden ser procesados por bloques subsiguientes en tu flujo de trabajo. El formato de estos datos varía dependiendo de la herramienta y operación, pero generalmente incluye:
+
+- El contenido principal o resultado
+- Metadatos sobre la operación
+- Información de estado
+
+Consulta la documentación específica de cada herramienta para entender su formato exacto de salida.
+
+## Configuración YAML
+
+Para una configuración detallada del flujo de trabajo en YAML y su sintaxis, consulta la documentación de [Referencia de flujos de trabajo YAML](/yaml). Esto incluye guías completas para:
+
+- **Sintaxis de referencia de bloques**: Cómo conectar y referenciar datos entre bloques
+- **Configuración de herramientas**: Uso de herramientas tanto en bloques independientes como en configuraciones de agentes
+- **Variables de entorno**: Manejo seguro de claves API y credenciales
+- **Ejemplos completos**: Patrones y configuraciones de flujos de trabajo del mundo real
+
+Para parámetros específicos de herramientas y opciones de configuración, consulta la página de documentación individual de cada herramienta.
diff --git a/apps/docs/content/docs/es/tools/jina.mdx b/apps/docs/content/docs/es/tools/jina.mdx
new file mode 100644
index 0000000000..05ca24bc97
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/jina.mdx
@@ -0,0 +1,92 @@
+---
+title: Jina
+description: Convertir contenido de sitios web en texto
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Jina AI](https://jina.ai/) es una potente herramienta de extracción de contenido que se integra perfectamente con Sim para transformar el contenido web en texto limpio y legible. Esta integración permite a los desarrolladores incorporar fácilmente capacidades de procesamiento de contenido web en sus flujos de trabajo basados en agentes.
+
+Jina AI Reader se especializa en extraer el contenido más relevante de las páginas web, eliminando el desorden, la publicidad y los problemas de formato para producir texto limpio y estructurado que está optimizado para modelos de lenguaje y otras tareas de procesamiento de texto.
+
+Con la integración de Jina AI en Sim, puedes:
+
+- **Extraer contenido limpio** de cualquier página web simplemente proporcionando una URL
+- **Procesar diseños web complejos** en texto estructurado y legible
+- **Mantener el contexto importante** mientras eliminas elementos innecesarios
+- **Preparar contenido web** para su posterior procesamiento en tus flujos de trabajo con agentes
+- **Agilizar tareas de investigación** convirtiendo rápidamente la información web en datos utilizables
+
+Esta integración es particularmente valiosa para crear agentes que necesitan recopilar y procesar información de la web, realizar investigaciones o analizar contenido en línea como parte de su flujo de trabajo.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Transforma el contenido web en texto limpio y legible utilizando las capacidades avanzadas de extracción de Jina AI. Extrae contenido significativo de sitios web mientras preservas información importante y opcionalmente recopilas enlaces.
+
+## Herramientas
+
+### `jina_read_url`
+
+Extrae y procesa contenido web en texto limpio y compatible con LLM usando Jina AI Reader. Admite análisis avanzado de contenido, recopilación de enlaces y múltiples formatos de salida con opciones de procesamiento configurables.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `url` | string | Sí | La URL para leer y convertir a markdown |
+| `useReaderLMv2` | boolean | No | Si se debe usar ReaderLM-v2 para mejor calidad |
+| `gatherLinks` | boolean | No | Si se deben recopilar todos los enlaces al final |
+| `jsonResponse` | boolean | No | Si se debe devolver la respuesta en formato JSON |
+| `apiKey` | string | Sí | Tu clave API de Jina AI |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | El contenido extraído de la URL, procesado en texto limpio y compatible con LLM |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `jina`
diff --git a/apps/docs/content/docs/es/tools/jira.mdx b/apps/docs/content/docs/es/tools/jira.mdx
new file mode 100644
index 0000000000..bf4836c7d7
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/jira.mdx
@@ -0,0 +1,140 @@
+---
+title: Jira
+description: Interactúa con Jira
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Jira](https://www.atlassian.com/jira) es una plataforma líder de gestión de proyectos y seguimiento de incidencias que ayuda a los equipos a planificar, rastrear y gestionar proyectos de desarrollo de software ágil de manera efectiva. Como parte de la suite de Atlassian, Jira se ha convertido en el estándar de la industria para equipos de desarrollo de software y profesionales de gestión de proyectos en todo el mundo.
+
+Jira proporciona un conjunto completo de herramientas para gestionar proyectos complejos a través de su sistema de flujo de trabajo flexible y personalizable. Con su robusta API y capacidades de integración, Jira permite a los equipos optimizar sus procesos de desarrollo y mantener una clara visibilidad del progreso del proyecto.
+
+Las características principales de Jira incluyen:
+
+- Gestión de proyectos ágiles: Soporte para metodologías Scrum y Kanban con tableros y flujos de trabajo personalizables
+- Seguimiento de incidencias: Sistema sofisticado de seguimiento para errores, historias, épicas y tareas con informes detallados
+- Automatización de flujos de trabajo: Potentes reglas de automatización para optimizar tareas y procesos repetitivos
+- Búsqueda avanzada: JQL (Jira Query Language) para filtrado e informes complejos de incidencias
+
+En Sim, la integración con Jira permite a tus agentes interactuar sin problemas con tu flujo de trabajo de gestión de proyectos. Esto crea oportunidades para la creación, actualización y seguimiento automatizado de incidencias como parte de tus flujos de trabajo de IA. La integración permite a los agentes crear, recuperar y actualizar incidencias de Jira de forma programática, facilitando tareas automatizadas de gestión de proyectos y asegurando que la información importante sea debidamente rastreada y documentada. Al conectar Sim con Jira, puedes construir agentes inteligentes que mantengan la visibilidad del proyecto mientras automatizan tareas rutinarias de gestión de proyectos, mejorando la productividad del equipo y asegurando un seguimiento consistente del proyecto.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Conéctate a espacios de trabajo de Jira para leer, escribir y actualizar incidencias. Accede a contenido, metadatos e integra la documentación de Jira en tus flujos de trabajo.
+
+## Herramientas
+
+### `jira_retrieve`
+
+Recupera información detallada sobre una incidencia específica de Jira
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
+| `projectId` | string | No | ID del proyecto de Jira \(opcional; no es necesario para recuperar una sola incidencia\). |
+| `issueKey` | string | Sí | Clave de la incidencia de Jira a recuperar \(p. ej., PROJ-123\) |
+| `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 |
+| --------- | ---- | ----------- |
+| `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 |
+
+### `jira_update`
+
+Actualizar 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 | No | ID del proyecto de Jira para actualizar incidencias. Si no se proporciona, se recuperarán todas las incidencias. |
+| `issueKey` | string | Sí | Clave de la incidencia de Jira a actualizar |
+| `summary` | string | No | Nuevo resumen para la incidencia |
+| `description` | string | No | Nueva descripción para la incidencia |
+| `status` | string | No | Nuevo estado para la incidencia |
+| `priority` | string | No | Nueva prioridad para la incidencia |
+| `assignee` | string | No | Nuevo asignado para la incidencia |
+| `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 |
+| --------- | ---- | ----------- |
+| `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 |
+
+### `jira_write`
+
+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. |
+| `issueType` | string | Sí | Tipo de incidencia a crear \(p. ej., Tarea, Historia\) |
+
+#### 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 |
+
+### `jira_bulk_read`
+
+Recuperar múltiples incidencias de Jira en bloque
+
+#### 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 de Jira |
+| `cloudId` | string | No | ID de Jira cloud |
+
+#### Salida
+
+| 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 |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `jira`
diff --git a/apps/docs/content/docs/es/tools/knowledge.mdx b/apps/docs/content/docs/es/tools/knowledge.mdx
new file mode 100644
index 0000000000..01c957d72c
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/knowledge.mdx
@@ -0,0 +1,121 @@
+---
+title: Conocimiento
+description: Usa búsqueda vectorial
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+La base de conocimiento de Sim es una potente función nativa que te permite crear, gestionar y consultar bases de conocimiento personalizadas directamente dentro de la plataforma. Utilizando embeddings de IA avanzados y tecnología de búsqueda vectorial, el bloque de base de conocimiento te permite integrar capacidades de búsqueda inteligente en tus flujos de trabajo, facilitando encontrar y utilizar información relevante en toda tu organización.
+
+El sistema de base de conocimiento proporciona una solución integral para gestionar el conocimiento organizacional a través de su arquitectura flexible y escalable. Con sus capacidades de búsqueda vectorial integradas, los equipos pueden realizar búsquedas semánticas que comprenden el significado y el contexto, yendo más allá de la tradicional coincidencia de palabras clave.
+
+Las características principales de la base de conocimiento incluyen:
+
+- Búsqueda semántica: búsqueda avanzada impulsada por IA que comprende el significado y contexto, no solo palabras clave
+- Embeddings vectoriales: conversión automática de texto en vectores multidimensionales para una coincidencia inteligente de similitud
+- Bases de conocimiento personalizadas: crea y gestiona múltiples bases de conocimiento para diferentes propósitos o departamentos
+- Tipos de contenido flexibles: soporte para varios formatos de documentos y tipos de contenido
+- Actualizaciones en tiempo real: indexación inmediata de nuevo contenido para búsqueda instantánea
+
+En Sim, el bloque de Base de Conocimiento permite a tus agentes realizar búsquedas semánticas inteligentes en tus bases de conocimiento personalizadas. Esto crea oportunidades para la recuperación automatizada de información, recomendaciones de contenido y descubrimiento de conocimiento como parte de tus flujos de trabajo de IA. La integración permite a los agentes buscar y recuperar información relevante de forma programática, facilitando tareas automatizadas de gestión del conocimiento y asegurando que la información importante sea fácilmente accesible. Al aprovechar el bloque de Base de Conocimiento, puedes crear agentes inteligentes que mejoren el descubrimiento de información mientras automatizan tareas rutinarias de gestión del conocimiento, mejorando la eficiencia del equipo y asegurando un acceso consistente al conocimiento organizacional.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Realiza búsquedas vectoriales semánticas en bases de conocimiento, sube fragmentos individuales a documentos existentes o crea nuevos documentos a partir de contenido de texto. Utiliza embeddings avanzados de IA para entender el significado y contexto en las operaciones de búsqueda.
+
+## Herramientas
+
+### `knowledge_search`
+
+Busca contenido similar en una base de conocimiento utilizando similitud vectorial
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `knowledgeBaseId` | string | Sí | ID de la base de conocimiento en la que buscar |
+| `query` | string | No | Texto de consulta de búsqueda \(opcional cuando se usan filtros de etiquetas\) |
+| `topK` | number | No | Número de resultados más similares a devolver \(1-100\) |
+| `tagFilters` | any | No | Array de filtros de etiquetas con propiedades tagName y tagValue |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `results` | array | Array de resultados de búsqueda de la base de conocimiento |
+
+### `knowledge_upload_chunk`
+
+Subir un nuevo fragmento a un documento en una base de conocimiento
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `knowledgeBaseId` | string | Sí | ID de la base de conocimiento que contiene el documento |
+| `documentId` | string | Sí | ID del documento al que se subirá el fragmento |
+| `content` | string | Sí | Contenido del fragmento a subir |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `data` | object | Información sobre el fragmento subido |
+
+### `knowledge_create_document`
+
+Crear un nuevo documento en una base de conocimiento
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `knowledgeBaseId` | string | Sí | ID de la base de conocimiento que contiene el documento |
+| `name` | string | Sí | Nombre del documento |
+| `content` | string | Sí | Contenido del documento |
+| `tag1` | string | No | Valor de etiqueta 1 para el documento |
+| `tag2` | string | No | Valor de etiqueta 2 para el documento |
+| `tag3` | string | No | Valor de etiqueta 3 para el documento |
+| `tag4` | string | No | Valor de etiqueta 4 para el documento |
+| `tag5` | string | No | Valor de etiqueta 5 para el documento |
+| `tag6` | string | No | Valor de etiqueta 6 para el documento |
+| `tag7` | string | No | Valor de etiqueta 7 para el documento |
+| `documentTagsData` | array | No | Datos de etiquetas estructurados con nombres, tipos y valores |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `data` | object | Información sobre el documento creado |
+
+## Notas
+
+- Categoría: `blocks`
+- Tipo: `knowledge`
diff --git a/apps/docs/content/docs/es/tools/linear.mdx b/apps/docs/content/docs/es/tools/linear.mdx
new file mode 100644
index 0000000000..b08d7acbf5
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/linear.mdx
@@ -0,0 +1,87 @@
+---
+title: Linear
+description: Lee y crea incidencias en Linear
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Linear](https://linear.app) es una plataforma líder de gestión de proyectos y seguimiento de incidencias que ayuda a los equipos a planificar, rastrear y gestionar su trabajo de manera efectiva. Como herramienta moderna de gestión de proyectos, Linear se ha vuelto cada vez más popular entre los equipos de desarrollo de software y profesionales de gestión de proyectos por su interfaz simplificada y potentes funcionalidades.
+
+Linear proporciona un conjunto completo de herramientas para gestionar proyectos complejos a través de su sistema de flujo de trabajo flexible y personalizable. Con sus sólidas capacidades de API e integración, Linear permite a los equipos optimizar sus procesos de desarrollo y mantener una clara visibilidad del progreso del proyecto.
+
+Las características principales de Linear incluyen:
+
+- Gestión ágil de proyectos: Soporte para metodologías Scrum y Kanban con tableros y flujos de trabajo personalizables
+- Seguimiento de incidencias: Sistema sofisticado de seguimiento para bugs, historias, épicas y tareas con informes detallados
+- Automatización de flujos de trabajo: Potentes reglas de automatización para optimizar tareas y procesos repetitivos
+- Búsqueda avanzada: Capacidades complejas de filtrado e informes para una gestión eficiente de incidencias
+
+En Sim, la integración con Linear permite a tus agentes interactuar sin problemas con tu flujo de trabajo de gestión de proyectos. Esto crea oportunidades para la creación automatizada de incidencias, actualizaciones y seguimiento como parte de tus flujos de trabajo de IA. La integración permite a los agentes leer incidencias existentes y crear nuevas de forma programática, facilitando tareas automatizadas de gestión de proyectos y asegurando que la información importante sea debidamente rastreada y documentada. Al conectar Sim con Linear, puedes construir agentes inteligentes que mantengan la visibilidad del proyecto mientras automatizan tareas rutinarias de gestión, mejorando la productividad del equipo y asegurando un seguimiento consistente del proyecto.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra con Linear para obtener, filtrar y crear incidencias directamente desde tu flujo de trabajo.
+
+## Herramientas
+
+### `linear_read_issues`
+
+Obtener y filtrar incidencias de Linear
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `teamId` | string | Sí | ID del equipo de Linear |
+| `projectId` | string | Sí | ID del proyecto de Linear |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `issues` | array | Array de incidencias del equipo y proyecto de Linear especificados, cada una contiene id, título, descripción, estado, teamId y projectId |
+
+### `linear_create_issue`
+
+Crear una nueva incidencia en Linear
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `teamId` | string | Sí | ID del equipo de Linear |
+| `projectId` | string | Sí | ID del proyecto de Linear |
+| `title` | string | Sí | Título de la incidencia |
+| `description` | string | No | Descripción de la incidencia |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `issue` | object | La incidencia creada que contiene id, título, descripción, estado, teamId y projectId |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `linear`
diff --git a/apps/docs/content/docs/es/tools/linkup.mdx b/apps/docs/content/docs/es/tools/linkup.mdx
new file mode 100644
index 0000000000..e11bc68e05
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/linkup.mdx
@@ -0,0 +1,72 @@
+---
+title: Linkup
+description: Busca en la web con Linkup
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Linkup](https://linkup.so) es una potente herramienta de búsqueda web que se integra perfectamente con Sim, permitiendo a tus agentes de IA acceder a información actualizada de la web con la atribución adecuada de las fuentes.
+
+Linkup mejora tus agentes de IA proporcionándoles la capacidad de buscar en la web información actual. Cuando se integra en el conjunto de herramientas de tu agente:
+
+- **Acceso a información en tiempo real**: Los agentes pueden recuperar la información más reciente de la web, manteniendo las respuestas actualizadas y relevantes.
+- **Atribución de fuentes**: Toda la información viene con las citas adecuadas, garantizando transparencia y credibilidad.
+- **Implementación sencilla**: Añade Linkup al conjunto de herramientas de tus agentes con una configuración mínima.
+- **Conciencia contextual**: Los agentes pueden utilizar información de la web mientras mantienen su personalidad y estilo conversacional.
+
+Para implementar Linkup en tu agente, simplemente añade la herramienta a la configuración de tu agente. Tu agente podrá entonces buscar en la web siempre que necesite responder preguntas que requieran información actual.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Linkup Search te permite buscar y recuperar información actualizada de la web con atribución de fuentes.
+
+## Herramientas
+
+### `linkup_search`
+
+Busca información en la web usando Linkup
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `q` | string | Sí | La consulta de búsqueda |
+| `depth` | string | Sí | Profundidad de búsqueda \(debe ser "standard" o "deep"\) |
+| `outputType` | string | Sí | Tipo de salida a devolver \(debe ser "sourcedAnswer" o "searchResults"\) |
+| `apiKey` | string | Sí | Introduce tu clave API de Linkup |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `answer` | string | La respuesta con fuentes a la consulta de búsqueda |
+| `sources` | array | Array de fuentes utilizadas para compilar la respuesta, cada una contiene nombre, url y fragmento |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `linkup`
diff --git a/apps/docs/content/docs/es/tools/mem0.mdx b/apps/docs/content/docs/es/tools/mem0.mdx
new file mode 100644
index 0000000000..bf42ff2410
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/mem0.mdx
@@ -0,0 +1,114 @@
+---
+title: Mem0
+description: Gestión de memoria del agente
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Mem0](https://mem0.ai) es un potente sistema de gestión de memoria diseñado específicamente para agentes de IA. Proporciona un almacén de memoria persistente y con capacidad de búsqueda que permite a los agentes recordar interacciones pasadas, aprender de experiencias y mantener el contexto a través de conversaciones y ejecuciones de flujos de trabajo.
+
+Con Mem0, puedes:
+
+- **Almacenar memorias del agente**: Guardar historial de conversaciones, preferencias de usuario y contexto importante
+- **Recuperar información relevante**: Usar búsqueda semántica para encontrar las interacciones pasadas más relevantes
+- **Construir agentes conscientes del contexto**: Permitir que tus agentes hagan referencia a conversaciones pasadas y mantengan la continuidad
+- **Personalizar interacciones**: Adaptar respuestas basadas en el historial y preferencias del usuario
+- **Implementar memoria a largo plazo**: Crear agentes que aprenden y se adaptan con el tiempo
+- **Escalar la gestión de memoria**: Manejar necesidades de memoria para múltiples usuarios y flujos de trabajo complejos
+
+En Sim, la integración con Mem0 permite a tus agentes mantener una memoria persistente a través de las ejecuciones de flujos de trabajo. Esto permite interacciones más naturales y conscientes del contexto donde los agentes pueden recordar conversaciones pasadas, recordar preferencias de usuario y construir sobre interacciones previas. Al conectar Sim con Mem0, puedes crear agentes que se sienten más humanos en su capacidad para recordar y aprender de experiencias pasadas. La integración permite añadir nuevas memorias, buscar memorias existentes semánticamente y recuperar registros específicos de memoria. Esta capacidad de gestión de memoria es esencial para construir agentes sofisticados que puedan mantener el contexto a lo largo del tiempo, personalizar interacciones basadas en el historial del usuario y mejorar continuamente su rendimiento a través del conocimiento acumulado.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Añade, busca, recupera y elimina memorias usando Mem0. Almacena historial de conversaciones, preferencias de usuario y contexto a través de ejecuciones de flujos de trabajo para mejorar las capacidades del agente de IA.
+
+## Herramientas
+
+### `mem0_add_memories`
+
+Añade recuerdos a Mem0 para almacenamiento persistente y recuperación
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `userId` | string | Sí | ID de usuario asociado con el recuerdo |
+| `messages` | json | Sí | Array de objetos de mensaje con rol y contenido |
+| `apiKey` | string | Sí | Tu clave API de Mem0 |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `ids` | array | Array de IDs de recuerdos que fueron creados |
+| `memories` | array | Array de objetos de recuerdos que fueron creados |
+
+### `mem0_search_memories`
+
+Busca recuerdos en Mem0 usando búsqueda semántica
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `userId` | string | Sí | ID de usuario para buscar recuerdos |
+| `query` | string | Sí | Consulta de búsqueda para encontrar recuerdos relevantes |
+| `limit` | number | No | Número máximo de resultados a devolver |
+| `apiKey` | string | Sí | Tu clave API de Mem0 |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `searchResults` | array | Array de resultados de búsqueda con datos de recuerdos, cada uno contiene id, datos y puntuación |
+| `ids` | array | Array de IDs de recuerdos encontrados en los resultados de búsqueda |
+
+### `mem0_get_memories`
+
+Recuperar recuerdos de Mem0 por ID o criterios de filtro
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `userId` | string | Sí | ID de usuario para recuperar recuerdos |
+| `memoryId` | string | No | ID específico del recuerdo a recuperar |
+| `startDate` | string | No | Fecha de inicio para filtrar por created_at \(formato: AAAA-MM-DD\) |
+| `endDate` | string | No | Fecha de fin para filtrar por created_at \(formato: AAAA-MM-DD\) |
+| `limit` | number | No | Número máximo de resultados a devolver |
+| `apiKey` | string | Sí | Tu clave API de Mem0 |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `memories` | array | Array de objetos de recuerdos recuperados |
+| `ids` | array | Array de IDs de recuerdos que fueron recuperados |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `mem0`
diff --git a/apps/docs/content/docs/es/tools/memory.mdx b/apps/docs/content/docs/es/tools/memory.mdx
new file mode 100644
index 0000000000..fa4ddc18ba
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/memory.mdx
@@ -0,0 +1,120 @@
+---
+title: Memoria
+description: Añadir almacén de memoria
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+## Instrucciones de uso
+
+Crea almacenamiento persistente para datos que necesitan ser accedidos a través de múltiples pasos del flujo de trabajo. Almacena y recupera información a lo largo de la ejecución de tu flujo de trabajo para mantener el contexto y el estado.
+
+## Herramientas
+
+### `memory_add`
+
+Añade una nueva memoria a la base de datos o agrega a una memoria existente con el mismo ID.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `id` | string | Sí | Identificador para la memoria. Si ya existe una memoria con este ID, los nuevos datos se añadirán a ella. |
+| `role` | string | Sí | Rol para la memoria del agente \(usuario, asistente o sistema\) |
+| `content` | string | Sí | Contenido para la memoria del agente |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Indica 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 una memoria específica por su ID
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `id` | string | Sí | Identificador de la memoria a recuperar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Indica si la memoria se recuperó correctamente |
+| `memories` | array | Array de datos de memoria para el ID solicitado |
+| `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
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Indica si todas las memorias se recuperaron correctamente |
+| `memories` | array | Array de todos los objetos de memoria con claves, tipos y datos |
+| `message` | string | Mensaje de éxito o error |
+| `error` | string | Mensaje de error si la operación falló |
+
+### `memory_delete`
+
+Eliminar una memoria específica por su ID
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `id` | string | Sí | Identificador de la memoria a eliminar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Si la memoria fue eliminada con éxito |
+| `message` | string | Mensaje de éxito o error |
+| `error` | string | Mensaje de error si la operación falló |
+
+## Notas
+
+- Categoría: `blocks`
+- Tipo: `memory`
diff --git a/apps/docs/content/docs/es/tools/microsoft_excel.mdx b/apps/docs/content/docs/es/tools/microsoft_excel.mdx
new file mode 100644
index 0000000000..ffd4923194
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/microsoft_excel.mdx
@@ -0,0 +1,164 @@
+---
+title: Microsoft Excel
+description: Leer, escribir y actualizar datos
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Microsoft Teams](https://www.microsoft.com/en-us/microsoft-365/excel) es una potente aplicación de hojas de cálculo que permite la gestión, análisis y visualización de datos. A través de la integración de Microsoft Excel en Sim, puedes leer, escribir y manipular datos de hojas de cálculo de forma programática para satisfacer tus necesidades de automatización de flujos de trabajo.
+
+Con la integración de Microsoft Excel, puedes:
+
+- **Leer datos de hojas de cálculo**: Acceder a datos de rangos, hojas y celdas específicas
+- **Escribir y actualizar datos**: Añadir nuevos datos o modificar contenido existente en hojas de cálculo
+- **Gestionar tablas**: Crear y manipular estructuras de datos tabulares
+- **Manejar múltiples hojas**: Trabajar con varias hojas de trabajo en un libro
+- **Procesar datos**: Importar, exportar y transformar datos de hojas de cálculo
+
+En Sim, la integración de Microsoft Excel proporciona acceso fluido a la funcionalidad de hojas de cálculo mediante autenticación OAuth. Puedes leer datos de rangos específicos, escribir nueva información, actualizar celdas existentes y manejar varios formatos de datos. La integración admite operaciones tanto de lectura como de escritura con opciones flexibles de entrada y salida. Esto te permite crear flujos de trabajo que pueden gestionar eficazmente datos de hojas de cálculo, ya sea extrayendo información para análisis, actualizando registros automáticamente o manteniendo la consistencia de datos en todas tus aplicaciones.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Microsoft Excel para gestionar datos de hojas de cálculo. Lee datos de rangos específicos, escribe nuevos datos, actualiza celdas existentes y manipula datos de tablas utilizando autenticación OAuth. Admite varios formatos de entrada y salida para un manejo flexible de datos.
+
+## Herramientas
+
+### `microsoft_excel_read`
+
+Leer datos de una hoja de cálculo de Microsoft Excel
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo de la que leer |
+| `range` | string | No | El rango de celdas del que leer. Acepta "NombreHoja!A1:B2" para rangos explícitos o simplemente "NombreHoja" para leer el rango utilizado de esa hoja. Si se omite, lee el rango utilizado de la primera hoja. |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `data` | object | Datos del rango de la hoja de cálculo |
+
+### `microsoft_excel_write`
+
+Escribir datos en una hoja de cálculo de Microsoft Excel
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo en la que escribir |
+| `range` | string | No | El rango de celdas en el que escribir |
+| `values` | array | Sí | Los datos a escribir en la hoja de cálculo |
+| `valueInputOption` | string | No | El formato de los datos a escribir |
+| `includeValuesInResponse` | boolean | No | Si se deben incluir los valores escritos en la respuesta |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `updatedRange` | string | El rango que fue actualizado |
+| `updatedRows` | number | Número de filas que fueron actualizadas |
+| `updatedColumns` | number | Número de columnas que fueron actualizadas |
+| `updatedCells` | number | Número de celdas que fueron actualizadas |
+| `metadata` | object | Metadatos de la hoja de cálculo |
+
+### `microsoft_excel_table_add`
+
+Añadir nuevas filas a una tabla de Microsoft Excel
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo que contiene la tabla |
+| `tableName` | string | Sí | El nombre de la tabla a la que añadir filas |
+| `values` | array | Sí | Los datos para añadir a la tabla \(matriz de matrices o matriz de objetos\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `index` | number | Índice de la primera fila que fue añadida |
+| `values` | array | Matriz de filas que fueron añadidas a la tabla |
+| `metadata` | object | Metadatos de la hoja de cálculo |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `microsoft_excel`
diff --git a/apps/docs/content/docs/es/tools/microsoft_planner.mdx b/apps/docs/content/docs/es/tools/microsoft_planner.mdx
new file mode 100644
index 0000000000..cf2b449163
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/microsoft_planner.mdx
@@ -0,0 +1,173 @@
+---
+title: Microsoft Planner
+description: Lee y crea tareas en Microsoft Planner
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Microsoft Planner](https://www.microsoft.com/en-us/microsoft-365/planner) es una herramienta de gestión de tareas que ayuda a los equipos a organizar el trabajo visualmente mediante tableros, tareas y contenedores. Integrado con Microsoft 365, ofrece una forma sencilla e intuitiva de gestionar proyectos en equipo, asignar responsabilidades y seguir el progreso.
+
+Con Microsoft Planner, puedes:
+
+- **Crear y gestionar tareas**: Añadir nuevas tareas con fechas de vencimiento, prioridades y usuarios asignados
+- **Organizar con contenedores**: Agrupar tareas por fase, estado o categoría para reflejar el flujo de trabajo de tu equipo
+- **Visualizar el estado del proyecto**: Usar tableros, gráficos y filtros para monitorear la carga de trabajo y seguir el progreso
+- **Mantener la integración con Microsoft 365**: Conectar sin problemas las tareas con Teams, Outlook y otras herramientas de Microsoft
+
+En Sim, la integración de Microsoft Planner permite a tus agentes crear, leer y gestionar tareas de forma programática como parte de sus flujos de trabajo. Los agentes pueden generar nuevas tareas basadas en solicitudes entrantes, recuperar detalles de tareas para tomar decisiones y seguir el estado de los proyectos, todo sin intervención humana. Ya sea que estés creando flujos de trabajo para la incorporación de clientes, seguimiento de proyectos internos o generación de tareas de seguimiento, la integración de Microsoft Planner con Sim proporciona a tus agentes una forma estructurada de coordinar el trabajo, automatizar la creación de tareas y mantener a los equipos alineados.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Microsoft Planner para gestionar tareas. Lee todas las tareas del usuario, tareas de planes específicos, tareas individuales o crea nuevas tareas con varias propiedades como título, descripción, fecha de vencimiento y asignados utilizando autenticación OAuth.
+
+## Herramientas
+
+### `microsoft_planner_read_task`
+
+Leer tareas de Microsoft Planner - obtener todas las tareas del usuario o todas las tareas de un plan específico
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `planId` | string | No | El ID del plan del que obtener tareas (si no se proporciona, obtiene todas las tareas del usuario) |
+| `taskId` | string | No | El ID de la tarea a obtener |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Indica si las tareas se recuperaron correctamente |
+| `tasks` | array | Array de objetos de tarea con propiedades filtradas |
+| `metadata` | object | Metadatos que incluyen planId, userId y planUrl |
+
+### `microsoft_planner_create_task`
+
+Crear una nueva tarea en Microsoft Planner
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `planId` | string | Sí | El ID del plan donde se creará la tarea |
+| `title` | string | Sí | El título de la tarea |
+| `description` | string | No | La descripción de la tarea |
+| `dueDateTime` | string | No | La fecha y hora de vencimiento para la tarea (formato ISO 8601) |
+| `assigneeUserId` | string | No | El ID del usuario al que asignar la tarea |
+| `bucketId` | string | No | El ID del bucket donde colocar la tarea |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Indica si la tarea se creó correctamente |
+| `task` | object | El objeto de tarea creado con todas sus propiedades |
+| `metadata` | object | Metadatos que incluyen planId, taskId y taskUrl |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `microsoft_planner`
diff --git a/apps/docs/content/docs/es/tools/microsoft_teams.mdx b/apps/docs/content/docs/es/tools/microsoft_teams.mdx
new file mode 100644
index 0000000000..921ee895d8
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/microsoft_teams.mdx
@@ -0,0 +1,199 @@
+---
+title: Microsoft Teams
+description: Lee, escribe y crea mensajes
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Microsoft Teams](https://teams.microsoft.com) es una robusta plataforma de comunicación y colaboración que permite a los usuarios participar en mensajería en tiempo real, reuniones y compartir contenido dentro de equipos y organizaciones. Como parte del ecosistema de productividad de Microsoft, Microsoft Teams ofrece una funcionalidad de chat perfectamente integrada con Office 365, permitiendo a los usuarios publicar mensajes, coordinar trabajo y mantenerse conectados a través de dispositivos y flujos de trabajo.
+
+Con Microsoft Teams, puedes:
+
+- **Enviar y recibir mensajes**: Comunícate instantáneamente con individuos o grupos en hilos de chat
+- **Colaborar en tiempo real**: Comparte actualizaciones e información entre equipos dentro de canales y chats
+- **Organizar conversaciones**: Mantén el contexto con discusiones encadenadas e historial de chat persistente
+- **Compartir archivos y contenido**: Adjunta y visualiza documentos, imágenes y enlaces directamente en el chat
+- **Integrar con Microsoft 365**: Conéctate perfectamente con Outlook, SharePoint, OneDrive y más
+- **Acceder desde varios dispositivos**: Usa Teams en escritorio, web y móvil con conversaciones sincronizadas en la nube
+- **Comunicación segura**: Aprovecha las funciones de seguridad y cumplimiento de nivel empresarial
+
+En Sim, la integración con Microsoft Teams permite a tus agentes interactuar directamente con los mensajes de chat de forma programática. Esto permite potentes escenarios de automatización como enviar actualizaciones, publicar alertas, coordinar tareas y responder a conversaciones en tiempo real. Tus agentes pueden escribir nuevos mensajes en chats o canales, actualizar contenido basado en datos de flujo de trabajo e interactuar con usuarios donde ocurre la colaboración. Al integrar Sim con Microsoft Teams, reduces la brecha entre flujos de trabajo inteligentes y comunicación de equipo, permitiendo a tus agentes agilizar la colaboración, automatizar tareas de comunicación y mantener a tus equipos alineados.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Microsoft Teams para gestionar mensajes. Lee contenido de mensajes existentes y escribe mensajes usando autenticación OAuth. Compatible con manipulación de contenido de texto para creación y edición de mensajes.
+
+## Herramientas
+
+### `microsoft_teams_read_chat`
+
+Leer contenido de un chat de Microsoft Teams
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `chatId` | string | Sí | El ID del chat del que leer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación de lectura del chat de Teams |
+| `messageCount` | number | Número de mensajes recuperados del chat |
+| `chatId` | string | ID del chat del que se leyó |
+| `messages` | array | Array de objetos de mensajes de chat |
+| `attachmentCount` | number | Número total de archivos adjuntos encontrados |
+| `attachmentTypes` | array | Tipos de archivos adjuntos encontrados |
+| `content` | string | Contenido formateado de los mensajes de chat |
+
+### `microsoft_teams_write_chat`
+
+Escribir o actualizar contenido en un chat de Microsoft Teams
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `chatId` | string | Sí | El ID del chat donde escribir |
+| `content` | string | Sí | El contenido a escribir en el mensaje |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito del envío del mensaje de chat de Teams |
+| `messageId` | string | Identificador único para el mensaje enviado |
+| `chatId` | string | ID del chat donde se envió el mensaje |
+| `createdTime` | string | Marca de tiempo cuando se creó el mensaje |
+| `url` | string | URL web del mensaje |
+| `updatedContent` | boolean | Si el contenido se actualizó correctamente |
+
+### `microsoft_teams_read_channel`
+
+Leer contenido de un canal de Microsoft Teams
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `teamId` | string | Sí | El ID del equipo del que leer |
+| `channelId` | string | Sí | El ID del canal del que leer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación de lectura del canal de Teams |
+| `messageCount` | number | Número de mensajes recuperados del canal |
+| `teamId` | string | ID del equipo del que se leyó |
+| `channelId` | string | ID del canal del que se leyó |
+| `messages` | array | Array de objetos de mensajes del canal |
+| `attachmentCount` | number | Número total de archivos adjuntos encontrados |
+| `attachmentTypes` | array | Tipos de archivos adjuntos encontrados |
+| `content` | string | Contenido formateado de los mensajes del canal |
+
+### `microsoft_teams_write_channel`
+
+Escribir o enviar un mensaje a un canal de Microsoft Teams
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `teamId` | string | Sí | El ID del equipo al que escribir |
+| `channelId` | string | Sí | El ID del canal al que escribir |
+| `content` | string | Sí | El contenido para escribir en el canal |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito del envío del mensaje al canal de Teams |
+| `messageId` | string | Identificador único para el mensaje enviado |
+| `teamId` | string | ID del equipo donde se envió el mensaje |
+| `channelId` | string | ID del canal donde se envió el mensaje |
+| `createdTime` | string | Marca de tiempo cuando se creó el mensaje |
+| `url` | string | URL web del mensaje |
+| `updatedContent` | boolean | Si el contenido se actualizó correctamente |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `microsoft_teams`
diff --git a/apps/docs/content/docs/es/tools/mistral_parse.mdx b/apps/docs/content/docs/es/tools/mistral_parse.mdx
new file mode 100644
index 0000000000..8e4ee7de80
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/mistral_parse.mdx
@@ -0,0 +1,113 @@
+---
+title: Mistral Parser
+description: Extraer texto de documentos PDF
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+La herramienta Mistral Parse proporciona una forma potente de extraer y procesar contenido de documentos PDF utilizando la [API de OCR de Mistral](https://mistral.ai/). Esta herramienta aprovecha el reconocimiento óptico de caracteres avanzado para extraer con precisión texto y estructura de archivos PDF, facilitando la incorporación de datos de documentos en los flujos de trabajo de tus agentes.
+
+Con la herramienta Mistral Parse, puedes:
+
+- **Extraer texto de PDFs**: Convertir con precisión el contenido de PDF a formatos de texto, markdown o JSON
+- **Procesar PDFs desde URLs**: Extraer directamente contenido de PDFs alojados en línea proporcionando sus URLs
+- **Mantener la estructura del documento**: Preservar el formato, tablas y diseño de los PDFs originales
+- **Extraer imágenes**: Incluir opcionalmente imágenes incrustadas de los PDFs
+- **Seleccionar páginas específicas**: Procesar solo las páginas que necesitas de documentos de múltiples páginas
+
+La herramienta Mistral Parse es particularmente útil para escenarios donde tus agentes necesitan trabajar con contenido PDF, como analizar informes, extraer datos de formularios o procesar texto de documentos escaneados. Simplifica el proceso de hacer que el contenido PDF esté disponible para tus agentes, permitiéndoles trabajar con información almacenada en PDFs tan fácilmente como con entrada de texto directa.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Extrae texto y estructura de documentos PDF utilizando la API de OCR de Mistral. Introduce una URL a un documento PDF o sube un archivo PDF directamente. Configura las opciones de procesamiento y obtén el contenido en tu formato preferido. Para URLs, deben ser de acceso público y apuntar a un archivo PDF válido. Nota: No se admiten enlaces de Google Drive, Dropbox y otros almacenamientos en la nube; utiliza en su lugar una URL de descarga directa desde un servidor web.
+
+## Herramientas
+
+### `mistral_parser`
+
+Analizar documentos PDF utilizando la API de OCR de Mistral
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `filePath` | string | Sí | URL a un documento PDF para ser procesado |
+| `fileUpload` | object | No | Datos de carga de archivo desde el componente de carga de archivos |
+| `resultType` | string | No | Tipo de resultado analizado \(markdown, texto o json\). Por defecto es markdown. |
+| `includeImageBase64` | boolean | No | Incluir imágenes codificadas en base64 en la respuesta |
+| `pages` | array | No | Páginas específicas para procesar \(array de números de página, comenzando desde 0\) |
+| `imageLimit` | number | No | Número máximo de imágenes para extraer del PDF |
+| `imageMinSize` | number | No | Altura y anchura mínimas de las imágenes para extraer del PDF |
+| `apiKey` | string | Sí | Clave API de Mistral \(MISTRAL_API_KEY\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Indica si el PDF se analizó correctamente |
+| `content` | string | Contenido extraído en el formato solicitado \(markdown, texto o JSON\) |
+| `metadata` | object | Metadatos de procesamiento que incluyen jobId, fileType, pageCount e información de uso |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `mistral_parse`
diff --git a/apps/docs/content/docs/es/tools/mongodb.mdx b/apps/docs/content/docs/es/tools/mongodb.mdx
new file mode 100644
index 0000000000..7faf1bb049
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/mongodb.mdx
@@ -0,0 +1,260 @@
+---
+title: MongoDB
+description: Conectar a la base de datos MongoDB
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+## Instrucciones de uso
+
+Conéctate a cualquier base de datos MongoDB para ejecutar consultas, gestionar datos y realizar operaciones en la base de datos. Admite operaciones de búsqueda, inserción, actualización, eliminación y agregación con manejo seguro de conexiones.
+
+## Herramientas
+
+### `mongodb_query`
+
+Ejecutar operación de búsqueda en colección de MongoDB
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MongoDB |
+| `port` | number | Sí | Puerto del servidor MongoDB \(predeterminado: 27017\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | No | Nombre de usuario de MongoDB |
+| `password` | string | No | Contraseña de MongoDB |
+| `authSource` | string | No | Base de datos de autenticación |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `collection` | string | Sí | Nombre de la colección a consultar |
+| `query` | string | No | Filtro de consulta MongoDB como cadena JSON |
+| `limit` | number | No | Número máximo de documentos a devolver |
+| `sort` | string | No | Criterios de ordenación como cadena JSON |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `documents` | array | Array de documentos devueltos por la consulta |
+| `documentCount` | number | Número de documentos devueltos |
+
+### `mongodb_insert`
+
+Insertar documentos en colección de MongoDB
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ---------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MongoDB |
+| `port` | number | Sí | Puerto del servidor MongoDB \(predeterminado: 27017\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | No | Nombre de usuario de MongoDB |
+| `password` | string | No | Contraseña de MongoDB |
+| `authSource` | string | No | Base de datos de autenticación |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `collection` | string | Sí | Nombre de la colección donde insertar |
+| `documents` | array | Sí | Array de documentos a insertar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `documentCount` | number | Número de documentos insertados |
+| `insertedId` | string | ID del documento insertado \(inserción única\) |
+| `insertedIds` | array | Array de IDs de documentos insertados \(inserción múltiple\) |
+
+### `mongodb_update`
+
+Actualizar documentos en una colección de MongoDB
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ---------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MongoDB |
+| `port` | number | Sí | Puerto del servidor MongoDB \(predeterminado: 27017\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | No | Nombre de usuario de MongoDB |
+| `password` | string | No | Contraseña de MongoDB |
+| `authSource` | string | No | Base de datos de autenticación |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `collection` | string | Sí | Nombre de la colección a actualizar |
+| `filter` | string | Sí | Criterios de filtro como cadena JSON |
+| `update` | string | Sí | Operaciones de actualización como cadena JSON |
+| `upsert` | boolean | No | Crear documento si no se encuentra |
+| `multi` | boolean | No | Actualizar múltiples documentos |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `matchedCount` | number | Número de documentos que coinciden con el filtro |
+| `modifiedCount` | number | Número de documentos modificados |
+| `documentCount` | number | Número total de documentos afectados |
+| `insertedId` | string | ID del documento insertado (si es upsert) |
+
+### `mongodb_delete`
+
+Eliminar documentos de una colección de MongoDB
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MongoDB |
+| `port` | number | Sí | Puerto del servidor MongoDB (predeterminado: 27017) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | No | Nombre de usuario de MongoDB |
+| `password` | string | No | Contraseña de MongoDB |
+| `authSource` | string | No | Base de datos de autenticación |
+| `ssl` | string | No | Modo de conexión SSL (disabled, required, preferred) |
+| `collection` | string | Sí | Nombre de la colección de la que eliminar |
+| `filter` | string | Sí | Criterios de filtro como cadena JSON |
+| `multi` | boolean | No | Eliminar múltiples documentos |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `deletedCount` | number | Número de documentos eliminados |
+| `documentCount` | number | Número total de documentos afectados |
+
+### `mongodb_execute`
+
+Ejecutar pipeline de agregación de MongoDB
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MongoDB |
+| `port` | number | Sí | Puerto del servidor MongoDB \(predeterminado: 27017\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | No | Nombre de usuario de MongoDB |
+| `password` | string | No | Contraseña de MongoDB |
+| `authSource` | string | No | Base de datos de autenticación |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `collection` | string | Sí | Nombre de la colección en la que ejecutar el pipeline |
+| `pipeline` | string | Sí | Pipeline de agregación como cadena JSON |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `documents` | array | Array de documentos devueltos por la agregación |
+| `documentCount` | number | Número de documentos devueltos |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `mongodb`
diff --git a/apps/docs/content/docs/es/tools/mysql.mdx b/apps/docs/content/docs/es/tools/mysql.mdx
new file mode 100644
index 0000000000..bd7cc71655
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/mysql.mdx
@@ -0,0 +1,175 @@
+---
+title: MySQL
+description: Conectar a la base de datos MySQL
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+La herramienta [MySQL](https://www.mysql.com/) te permite conectarte a cualquier base de datos MySQL y realizar una amplia gama de operaciones directamente dentro de tus flujos de trabajo agénticos. Con manejo seguro de conexiones y configuración flexible, puedes gestionar e interactuar fácilmente con tus datos.
+
+Con la herramienta MySQL, puedes:
+
+- **Consultar datos**: Ejecutar consultas SELECT para recuperar datos de tus tablas MySQL usando la operación `mysql_query`.
+- **Insertar registros**: Añadir nuevas filas a tus tablas con la operación `mysql_insert` especificando la tabla y los datos a insertar.
+- **Actualizar registros**: Modificar datos existentes en tus tablas usando la operación `mysql_update`, proporcionando la tabla, los nuevos datos y las condiciones WHERE.
+- **Eliminar registros**: Borrar filas de tus tablas con la operación `mysql_delete`, especificando la tabla y las condiciones WHERE.
+- **Ejecutar SQL directo**: Ejecutar cualquier comando SQL personalizado usando la operación `mysql_execute` para casos de uso avanzados.
+
+La herramienta MySQL es ideal para escenarios donde tus agentes necesitan interactuar con datos estructurados—como automatizar informes, sincronizar datos entre sistemas o impulsar flujos de trabajo basados en datos. Simplifica el acceso a bases de datos, facilitando la lectura, escritura y gestión de tus datos MySQL de forma programática.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Conéctate a cualquier base de datos MySQL para ejecutar consultas, gestionar datos y realizar operaciones de base de datos. Admite operaciones SELECT, INSERT, UPDATE, DELETE con manejo seguro de conexiones.
+
+## Herramientas
+
+### `mysql_query`
+
+Ejecutar consulta SELECT en base de datos MySQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MySQL |
+| `port` | number | Sí | Puerto del servidor MySQL \(predeterminado: 3306\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `query` | string | Sí | Consulta SQL SELECT a ejecutar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Array de filas devueltas por la consulta |
+| `rowCount` | number | Número de filas devueltas |
+
+### `mysql_insert`
+
+Insertar nuevo registro en base de datos MySQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MySQL |
+| `port` | number | Sí | Puerto del servidor MySQL \(predeterminado: 3306\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `table` | string | Sí | Nombre de la tabla donde insertar |
+| `data` | object | Sí | Datos a insertar como pares clave-valor |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Array de filas insertadas |
+| `rowCount` | number | Número de filas insertadas |
+
+### `mysql_update`
+
+Actualizar registros existentes en la base de datos MySQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MySQL |
+| `port` | number | Sí | Puerto del servidor MySQL \(predeterminado: 3306\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `table` | string | Sí | Nombre de la tabla a actualizar |
+| `data` | object | Sí | Datos a actualizar como pares clave-valor |
+| `where` | string | Sí | Condición de la cláusula WHERE \(sin la palabra clave WHERE\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Array de filas actualizadas |
+| `rowCount` | number | Número de filas actualizadas |
+
+### `mysql_delete`
+
+Eliminar registros de la base de datos MySQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MySQL |
+| `port` | number | Sí | Puerto del servidor MySQL \(predeterminado: 3306\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `table` | string | Sí | Nombre de la tabla de la que eliminar |
+| `where` | string | Sí | Condición de la cláusula WHERE \(sin la palabra clave WHERE\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Array de filas eliminadas |
+| `rowCount` | number | Número de filas eliminadas |
+
+### `mysql_execute`
+
+Ejecutar consulta SQL en bruto en base de datos MySQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor MySQL |
+| `port` | number | Sí | Puerto del servidor MySQL \(predeterminado: 3306\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `query` | string | Sí | Consulta SQL en bruto para ejecutar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Array de filas devueltas por la consulta |
+| `rowCount` | number | Número de filas afectadas |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `mysql`
diff --git a/apps/docs/content/docs/es/tools/notion.mdx b/apps/docs/content/docs/es/tools/notion.mdx
new file mode 100644
index 0000000000..33ebaac7fa
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/notion.mdx
@@ -0,0 +1,182 @@
+---
+title: Notion
+description: Administrar páginas de Notion
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Notion](https://www.notion.so) es un espacio de trabajo todo en uno que combina notas, documentos, wikis y herramientas de gestión de proyectos en una sola plataforma. Ofrece un entorno flexible y personalizable donde los usuarios pueden crear, organizar y colaborar en contenido en varios formatos.
+
+Con Notion, puedes:
+
+- **Crear contenido versátil**: Construir documentos, wikis, bases de datos, tableros kanban, calendarios y más
+- **Organizar información**: Estructurar contenido jerárquicamente con páginas anidadas y potentes bases de datos
+- **Colaborar sin problemas**: Compartir espacios de trabajo y páginas con miembros del equipo para colaboración en tiempo real
+- **Personalizar tu espacio de trabajo**: Diseñar tu flujo de trabajo ideal con plantillas flexibles y bloques de construcción
+- **Conectar información**: Enlazar entre páginas y bases de datos para crear una red de conocimiento
+- **Acceder desde cualquier lugar**: Usar Notion en plataformas web, escritorio y móviles con sincronización automática
+
+En Sim, la integración con Notion permite a tus agentes interactuar directamente con tu espacio de trabajo de Notion de forma programática. Esto permite potentes escenarios de automatización como gestión del conocimiento, creación de contenido y recuperación de información. Tus agentes pueden:
+
+- **Leer páginas de Notion**: Extraer contenido y metadatos de cualquier página de Notion.
+- **Leer bases de datos de Notion**: Recuperar la estructura e información de bases de datos.
+- **Escribir en páginas**: Añadir nuevo contenido a páginas existentes de Notion.
+- **Crear nuevas páginas**: Generar nuevas páginas de Notion bajo una página principal, con títulos y contenido personalizados.
+- **Consultar bases de datos**: Buscar y filtrar entradas de bases de datos utilizando criterios avanzados de filtrado y ordenación.
+- **Buscar en el espacio de trabajo**: Buscar en todo tu espacio de trabajo de Notion páginas o bases de datos que coincidan con consultas específicas.
+- **Crear nuevas bases de datos**: Crear programáticamente nuevas bases de datos con propiedades y estructura personalizadas.
+
+Esta integración cierra la brecha entre tus flujos de trabajo de IA y tu base de conocimiento, permitiendo una gestión de documentación e información sin problemas. Al conectar Sim con Notion, puedes automatizar procesos de documentación, mantener repositorios de información actualizados, generar informes y organizar información de manera inteligente, todo a través de tus agentes inteligentes.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra con Notion para leer contenido de páginas, escribir nuevo contenido y crear nuevas páginas.
+
+## Herramientas
+
+### `notion_read`
+
+Leer contenido de una página de Notion
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `pageId` | string | Sí | El ID de la página de Notion para leer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Contenido de la página en formato markdown con encabezados, párrafos, listas y tareas pendientes |
+| `metadata` | object | Metadatos de la página incluyendo título, URL y marcas de tiempo |
+
+### `notion_read_database`
+
+Leer información y estructura de base de datos desde Notion
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `databaseId` | string | Sí | El ID de la base de datos de Notion para leer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Información de la base de datos incluyendo título, esquema de propiedades y metadatos |
+| `metadata` | object | Metadatos de la base de datos incluyendo título, ID, URL, marcas de tiempo y esquema de propiedades |
+
+### `notion_write`
+
+Añadir contenido a una página de Notion
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `pageId` | string | Sí | El ID de la página de Notion a la que añadir contenido |
+| `content` | string | Sí | El contenido para añadir a la página |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Mensaje de éxito que confirma que el contenido se añadió a la página |
+
+### `notion_create_page`
+
+Crear una nueva página en Notion
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `parentId` | string | Sí | ID de la página padre |
+| `title` | string | No | Título de la nueva página |
+| `content` | string | No | Contenido opcional para añadir a la página al crearla |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Mensaje de éxito que confirma la creación de la página |
+| `metadata` | object | Metadatos de la página incluyendo título, ID de página, URL y marcas de tiempo |
+
+### `notion_query_database`
+
+Consultar y filtrar entradas de base de datos de Notion con filtrado avanzado
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `databaseId` | string | Sí | El ID de la base de datos a consultar |
+| `filter` | string | No | Condiciones de filtro en formato JSON \(opcional\) |
+| `sorts` | string | No | Criterios de ordenación como array JSON \(opcional\) |
+| `pageSize` | number | No | Número de resultados a devolver \(predeterminado: 100, máximo: 100\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Lista formateada de entradas de la base de datos con sus propiedades |
+| `metadata` | object | Metadatos de la consulta incluyendo recuento total de resultados, información de paginación y array de resultados sin procesar |
+
+### `notion_search`
+
+Buscar en todas las páginas y bases de datos en el espacio de trabajo de Notion
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `query` | string | No | Términos de búsqueda \(dejar vacío para obtener todas las páginas\) |
+| `filterType` | string | No | Filtrar por tipo de objeto: página, base de datos, o dejar vacío para todos |
+| `pageSize` | number | No | Número de resultados a devolver \(predeterminado: 100, máximo: 100\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Lista formateada de resultados de búsqueda incluyendo páginas y bases de datos |
+| `metadata` | object | Metadatos de búsqueda incluyendo recuento total de resultados, información de paginación y matriz de resultados sin procesar |
+
+### `notion_create_database`
+
+Crear una nueva base de datos en Notion con propiedades personalizadas
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `parentId` | string | Sí | ID de la página principal donde se creará la base de datos |
+| `title` | string | Sí | Título para la nueva base de datos |
+| `properties` | string | No | Propiedades de la base de datos como objeto JSON \(opcional, creará una propiedad "Nombre" predeterminada si está vacío\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Mensaje de éxito con detalles de la base de datos y lista de propiedades |
+| `metadata` | object | Metadatos de la base de datos incluyendo ID, título, URL, tiempo de creación y esquema de propiedades |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `notion`
diff --git a/apps/docs/content/docs/es/tools/onedrive.mdx b/apps/docs/content/docs/es/tools/onedrive.mdx
new file mode 100644
index 0000000000..5a341cce66
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/onedrive.mdx
@@ -0,0 +1,120 @@
+---
+title: OneDrive
+description: Crear, subir y listar archivos
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[OneDrive](https://onedrive.live.com) es el servicio de almacenamiento en la nube y sincronización de archivos de Microsoft que permite a los usuarios almacenar, acceder y compartir archivos de forma segura en todos sus dispositivos. Integrado profundamente en el ecosistema de Microsoft 365, OneDrive facilita la colaboración fluida, el control de versiones y el acceso en tiempo real al contenido entre equipos y organizaciones.
+
+Aprende a integrar la herramienta OneDrive en Sim para extraer, gestionar y organizar automáticamente tus archivos en la nube dentro de tus flujos de trabajo. Este tutorial te guía a través de la conexión con OneDrive, la configuración del acceso a archivos y el uso del contenido almacenado para impulsar la automatización. Ideal para sincronizar documentos y medios esenciales con tus agentes en tiempo real.
+
+Con OneDrive, puedes:
+
+- **Almacenar archivos de forma segura en la nube**: Subir y acceder a documentos, imágenes y otros archivos desde cualquier dispositivo
+- **Organizar tu contenido**: Crear carpetas estructuradas y gestionar versiones de archivos con facilidad
+- **Colaborar en tiempo real**: Compartir archivos, editarlos simultáneamente con otros y realizar seguimiento de cambios
+- **Acceder desde múltiples dispositivos**: Usar OneDrive desde plataformas de escritorio, móviles y web
+- **Integrar con Microsoft 365**: Trabajar sin problemas con Word, Excel, PowerPoint y Teams
+- **Controlar permisos**: Compartir archivos y carpetas con configuraciones de acceso personalizadas y controles de caducidad
+
+En Sim, la integración con OneDrive permite a tus agentes interactuar directamente con tu almacenamiento en la nube. Los agentes pueden subir nuevos archivos a carpetas específicas, recuperar y leer archivos existentes, y listar contenidos de carpetas para organizar y acceder a la información de forma dinámica. Esta integración permite a tus agentes incorporar operaciones con archivos en flujos de trabajo inteligentes — automatizando la recepción de documentos, el análisis de contenido y la gestión estructurada del almacenamiento. Al conectar Sim con OneDrive, capacitas a tus agentes para gestionar y utilizar documentos en la nube de forma programática, eliminando pasos manuales y mejorando la automatización con acceso seguro a archivos en tiempo real.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de OneDrive para gestionar archivos y carpetas. Sube nuevos archivos, crea nuevas carpetas y lista el contenido de las carpetas utilizando autenticación OAuth. Admite operaciones de archivos con tipos MIME personalizados y organización de carpetas.
+
+## Herramientas
+
+### `onedrive_upload`
+
+Subir un archivo a OneDrive
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `fileName` | string | Sí | El nombre del archivo a subir |
+| `content` | string | Sí | El contenido del archivo a subir |
+| `folderSelector` | string | No | Seleccionar la carpeta donde subir el archivo |
+| `manualFolderId` | string | No | ID de carpeta introducido manualmente \(modo avanzado\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Indica si el archivo se subió correctamente |
+| `file` | object | El objeto del archivo subido con metadatos que incluyen id, nombre, webViewLink, webContentLink y marcas de tiempo |
+
+### `onedrive_create_folder`
+
+Crear una nueva carpeta en OneDrive
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `folderName` | string | Sí | Nombre de la carpeta a crear |
+| `folderSelector` | string | No | Seleccionar la carpeta principal donde crear la carpeta |
+| `manualFolderId` | string | No | ID de carpeta principal introducido manualmente \(modo avanzado\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Indica si la carpeta se creó correctamente |
+| `file` | object | El objeto de la carpeta creada con metadatos que incluyen id, nombre, webViewLink y marcas de tiempo |
+
+### `onedrive_list`
+
+Listar archivos y carpetas en OneDrive
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `folderSelector` | string | No | Seleccionar la carpeta para listar archivos |
+| `manualFolderId` | string | No | El ID de carpeta ingresado manualmente \(modo avanzado\) |
+| `query` | string | No | Una consulta para filtrar los archivos |
+| `pageSize` | number | No | El número de archivos a devolver |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Si los archivos se listaron correctamente |
+| `files` | array | Array de objetos de archivos y carpetas con metadatos |
+| `nextPageToken` | string | Token para recuperar la siguiente página de resultados \(opcional\) |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `onedrive`
diff --git a/apps/docs/content/docs/es/tools/openai.mdx b/apps/docs/content/docs/es/tools/openai.mdx
new file mode 100644
index 0000000000..9de2d3ac75
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/openai.mdx
@@ -0,0 +1,72 @@
+---
+title: Embeddings
+description: Generar embeddings de Open AI
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[OpenAI](https://www.openai.com) es una empresa líder en investigación y despliegue de IA que ofrece una suite de potentes modelos y APIs de IA. OpenAI proporciona tecnologías de vanguardia que incluyen modelos de lenguaje grandes (como GPT-4), generación de imágenes (DALL-E) y embeddings que permiten a los desarrolladores crear aplicaciones sofisticadas impulsadas por IA.
+
+Con OpenAI, puedes:
+
+- **Generar texto**: Crea texto similar al humano para diversas aplicaciones usando modelos GPT
+- **Crear imágenes**: Transforma descripciones textuales en contenido visual con DALL-E
+- **Producir embeddings**: Convierte texto en vectores numéricos para búsqueda semántica y análisis
+- **Construir asistentes de IA**: Desarrolla agentes conversacionales con conocimiento especializado
+- **Procesar y analizar datos**: Extrae insights y patrones de texto no estructurado
+- **Traducir idiomas**: Convierte contenido entre diferentes idiomas con alta precisión
+- **Resumir contenido**: Condensa texto extenso preservando la información clave
+
+En Sim, la integración de OpenAI permite a tus agentes aprovechar estas potentes capacidades de IA de forma programática como parte de sus flujos de trabajo. Esto permite escenarios de automatización sofisticados que combinan comprensión del lenguaje natural, generación de contenido y análisis semántico. Tus agentes pueden generar embeddings vectoriales a partir de texto, que son representaciones numéricas que capturan el significado semántico, permitiendo sistemas avanzados de búsqueda, clasificación y recomendación. Además, a través de la integración con DALL-E, los agentes pueden crear imágenes a partir de descripciones textuales, abriendo posibilidades para la generación de contenido visual. Esta integración cierra la brecha entre tu automatización de flujos de trabajo y las capacidades de IA de vanguardia, permitiendo a tus agentes entender el contexto, generar contenido relevante y tomar decisiones inteligentes basadas en la comprensión semántica. Al conectar Sim con OpenAI, puedes crear agentes que procesen información de manera más inteligente, generen contenido creativo y ofrezcan experiencias más personalizadas a los usuarios.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Convierte texto en representaciones vectoriales numéricas utilizando los modelos de embedding de OpenAI. Transforma datos de texto en embeddings para búsqueda semántica, agrupación y otras operaciones basadas en vectores.
+
+## Herramientas
+
+### `openai_embeddings`
+
+Generar embeddings a partir de texto usando OpenAI
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `input` | string | Sí | Texto para generar embeddings |
+| `model` | string | No | Modelo a utilizar para los embeddings |
+| `encodingFormat` | string | No | El formato en el que se devolverán los embeddings |
+| `apiKey` | string | Sí | Clave API de OpenAI |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Resultados de la generación de embeddings |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `openai`
diff --git a/apps/docs/content/docs/es/tools/outlook.mdx b/apps/docs/content/docs/es/tools/outlook.mdx
new file mode 100644
index 0000000000..e0e99ff299
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/outlook.mdx
@@ -0,0 +1,236 @@
+---
+title: Outlook
+description: Acceder a Outlook
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Microsoft Outlook](https://outlook.office365.com) es una plataforma completa de correo electrónico y calendario que ayuda a los usuarios a gestionar comunicaciones, horarios y tareas de manera eficiente. Como parte del conjunto de productividad de Microsoft, Outlook ofrece herramientas robustas para enviar y organizar correos electrónicos, coordinar reuniones e integrarse perfectamente con las aplicaciones de Microsoft 365, permitiendo a individuos y equipos mantenerse organizados y conectados en todos sus dispositivos.
+
+Con Microsoft Outlook, puedes:
+
+- **Enviar y recibir correos electrónicos**: Comunícate de forma clara y profesional con individuos o listas de distribución
+- **Gestionar calendarios y eventos**: Programa reuniones, configura recordatorios y visualiza disponibilidad
+- **Organizar tu bandeja de entrada**: Utiliza carpetas, categorías y reglas para mantener tu correo electrónico optimizado
+- **Acceder a contactos y tareas**: Mantén un seguimiento de personas clave y elementos de acción en un solo lugar
+- **Integrar con Microsoft 365**: Trabaja sin problemas con Word, Excel, Teams y otras aplicaciones de Microsoft
+- **Acceder desde varios dispositivos**: Usa Outlook en escritorio, web y móvil con sincronización en tiempo real
+- **Mantener privacidad y seguridad**: Aprovecha el cifrado de nivel empresarial y los controles de cumplimiento
+
+En Sim, la integración de Microsoft Outlook permite a tus agentes interactuar directamente con datos de correo electrónico y calendario de forma programática. Esto permite potentes escenarios de automatización como enviar actualizaciones personalizadas por correo electrónico, analizar mensajes entrantes para activar flujos de trabajo, crear eventos de calendario y gestionar recordatorios de tareas. Al conectar Sim con Microsoft Outlook, permites que los agentes inteligentes automaticen comunicaciones, simplifiquen la programación y mantengan visibilidad en la correspondencia organizacional, todo dentro de tu ecosistema de flujo de trabajo.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Outlook para leer, redactar y enviar mensajes de correo electrónico dentro de tu flujo de trabajo. Automatiza las comunicaciones por correo electrónico y procesa el contenido del correo utilizando autenticación OAuth.
+
+## Herramientas
+
+### `outlook_send`
+
+Enviar correos electrónicos usando Outlook
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `to` | string | Sí | Dirección de correo electrónico del destinatario |
+| `subject` | string | Sí | Asunto del correo electrónico |
+| `body` | string | Sí | Contenido del cuerpo del correo electrónico |
+| `replyToMessageId` | string | No | ID del mensaje al que responder (para hilos) |
+| `conversationId` | string | No | ID de conversación para hilos |
+| `cc` | string | No | Destinatarios en CC (separados por comas) |
+| `bcc` | string | No | Destinatarios en CCO (separados por comas) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito del envío del correo electrónico |
+| `status` | string | Estado de entrega del correo electrónico |
+| `timestamp` | string | Marca de tiempo cuando se envió el correo electrónico |
+| `message` | string | Mensaje de éxito o error |
+
+### `outlook_draft`
+
+Crear borradores de correos electrónicos usando Outlook
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `to` | string | Sí | Dirección de correo electrónico del destinatario |
+| `subject` | string | Sí | Asunto del correo electrónico |
+| `body` | string | Sí | Contenido del cuerpo del correo electrónico |
+| `cc` | string | No | Destinatarios en CC \(separados por comas\) |
+| `bcc` | string | No | Destinatarios en CCO \(separados por comas\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la creación del borrador de correo electrónico |
+| `messageId` | string | Identificador único para el borrador de correo electrónico |
+| `status` | string | Estado del borrador del correo electrónico |
+| `subject` | string | Asunto del borrador de correo electrónico |
+| `timestamp` | string | Marca de tiempo cuando se creó el borrador |
+| `message` | string | Mensaje de éxito o error |
+
+### `outlook_read`
+
+Leer correos electrónicos desde Outlook
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `folder` | string | No | ID de la carpeta desde donde leer los correos electrónicos \(predeterminado: Bandeja de entrada\) |
+| `maxResults` | number | No | Número máximo de correos electrónicos a recuperar \(predeterminado: 1, máximo: 10\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de éxito o estado |
+| `results` | array | Array de objetos de mensajes de correo electrónico |
+
+### `outlook_forward`
+
+Reenviar un mensaje existente de Outlook a destinatarios específicos
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `messageId` | string | Sí | El ID del mensaje a reenviar |
+| `to` | string | Sí | Dirección(es) de correo electrónico del destinatario, separadas por comas |
+| `comment` | string | No | Comentario opcional para incluir con el mensaje reenviado |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de éxito o error |
+| `results` | object | Detalles del resultado de entrega |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `outlook`
diff --git a/apps/docs/content/docs/es/tools/parallel_ai.mdx b/apps/docs/content/docs/es/tools/parallel_ai.mdx
new file mode 100644
index 0000000000..54d0e62ec0
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/parallel_ai.mdx
@@ -0,0 +1,101 @@
+---
+title: Parallel AI
+description: Buscar con Parallel AI
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Parallel AI](https://parallel.ai/) es una plataforma avanzada de búsqueda web y extracción de contenido diseñada para ofrecer resultados completos y de alta calidad para cualquier consulta. Al aprovechar el procesamiento inteligente y la extracción de datos a gran escala, Parallel AI permite a usuarios y agentes acceder, analizar y sintetizar información de toda la web con rapidez y precisión.
+
+Con Parallel AI, puedes:
+
+- **Buscar en la web de forma inteligente**: Obtener información relevante y actualizada de una amplia gama de fuentes
+- **Extraer y resumir contenido**: Conseguir extractos concisos y significativos de páginas web y documentos
+- **Personalizar objetivos de búsqueda**: Adaptar consultas a necesidades o preguntas específicas para resultados más precisos
+- **Procesar resultados a gran escala**: Manejar grandes volúmenes de resultados de búsqueda con opciones de procesamiento avanzadas
+- **Integrar con flujos de trabajo**: Usar Parallel AI dentro de Sim para automatizar la investigación, recopilación de contenido y extracción de conocimiento
+- **Controlar la granularidad de salida**: Especificar el número de resultados y la cantidad de contenido por resultado
+- **Acceso seguro mediante API**: Proteger tus búsquedas y datos con autenticación por clave API
+
+En Sim, la integración con Parallel AI permite a tus agentes realizar búsquedas web y extraer contenido de forma programática. Esto posibilita potentes escenarios de automatización como investigación en tiempo real, análisis competitivo, monitoreo de contenido y creación de bases de conocimiento. Al conectar Sim con Parallel AI, desbloqueas la capacidad de que los agentes recopilen, procesen y utilicen datos web como parte de tus flujos de trabajo automatizados.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Busca en la web utilizando las capacidades avanzadas de búsqueda de Parallel AI. Obtén resultados completos con procesamiento inteligente y extracción de contenido.
+
+## Herramientas
+
+### `parallel_search`
+
+Busca en la web usando Parallel AI. Proporciona resultados de búsqueda completos con procesamiento inteligente y extracción de contenido.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ---------- | ----------- |
+| `objective` | string | Sí | El objetivo de búsqueda o pregunta a responder |
+| `search_queries` | string | No | Lista opcional de consultas de búsqueda separadas por comas para ejecutar |
+| `processor` | string | No | Método de procesamiento: base o pro \(predeterminado: base\) |
+| `max_results` | number | No | Número máximo de resultados a devolver \(predeterminado: 5\) |
+| `max_chars_per_result` | number | No | Máximo de caracteres por resultado \(predeterminado: 1500\) |
+| `apiKey` | string | Sí | Clave API de Parallel AI |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `results` | array | Resultados de búsqueda con extractos de páginas relevantes |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `parallel_ai`
diff --git a/apps/docs/content/docs/es/tools/perplexity.mdx b/apps/docs/content/docs/es/tools/perplexity.mdx
new file mode 100644
index 0000000000..bd36f635d9
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/perplexity.mdx
@@ -0,0 +1,68 @@
+---
+title: Perplexity
+description: Usa los modelos de chat de Perplexity AI
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Perplexity AI](https://www.perplexity.ai) es un motor de búsqueda y respuestas impulsado por IA que combina las capacidades de los grandes modelos de lenguaje con búsquedas web en tiempo real para proporcionar información precisa y actualizada, así como respuestas completas a preguntas complejas.
+
+Con Perplexity AI, puedes:
+
+- **Obtener respuestas precisas**: Recibir respuestas completas a preguntas con citas de fuentes confiables
+- **Acceder a información en tiempo real**: Obtener información actualizada a través de las capacidades de búsqueda web de Perplexity
+- **Explorar temas en profundidad**: Profundizar en temas con preguntas de seguimiento e información relacionada
+- **Verificar información**: Comprobar la credibilidad de las respuestas a través de las fuentes y referencias proporcionadas
+- **Generar contenido**: Crear resúmenes, análisis y contenido creativo basado en información actual
+- **Investigar eficientemente**: Agilizar procesos de investigación con respuestas completas a consultas complejas
+- **Interactuar conversacionalmente**: Participar en diálogos naturales para refinar preguntas y explorar temas
+
+En Sim, la integración de Perplexity permite a tus agentes aprovechar estas potentes capacidades de IA de forma programática como parte de sus flujos de trabajo. Esto permite escenarios de automatización sofisticados que combinan comprensión del lenguaje natural, recuperación de información en tiempo real y generación de contenido. Tus agentes pueden formular consultas, recibir respuestas completas con citas e incorporar esta información en sus procesos de toma de decisiones o resultados. Esta integración cierra la brecha entre la automatización de tu flujo de trabajo y el acceso a información actual y confiable, permitiendo que tus agentes tomen decisiones más informadas y proporcionen respuestas más precisas. Al conectar Sim con Perplexity, puedes crear agentes que se mantengan actualizados con la información más reciente, proporcionen respuestas bien investigadas y entreguen insights más valiosos a los usuarios - todo sin requerir investigación manual o recopilación de información.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Genera completados utilizando los modelos de Perplexity AI con capacidades de búsqueda y conocimiento en tiempo real. Crea respuestas, contesta preguntas y genera contenido con parámetros personalizables.
+
+## Herramientas
+
+### `perplexity_chat`
+
+Genera completados utilizando los modelos de chat de Perplexity AI
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `systemPrompt` | string | No | Instrucción del sistema para guiar el comportamiento del modelo |
+| `content` | string | Sí | El contenido del mensaje del usuario para enviar al modelo |
+| `model` | string | Sí | Modelo a utilizar para los completados de chat (p. ej., sonar, mistral) |
+| `max_tokens` | number | No | Número máximo de tokens a generar |
+| `temperature` | number | No | Temperatura de muestreo entre 0 y 1 |
+| `apiKey` | string | Sí | Clave API de Perplexity |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Resultados del completado de chat |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `perplexity`
diff --git a/apps/docs/content/docs/es/tools/pinecone.mdx b/apps/docs/content/docs/es/tools/pinecone.mdx
new file mode 100644
index 0000000000..ce7203cb11
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/pinecone.mdx
@@ -0,0 +1,161 @@
+---
+title: Pinecone
+description: Usa la base de datos vectorial Pinecone
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Pinecone](https://www.pinecone.io) es una base de datos vectorial diseñada para crear aplicaciones de búsqueda vectorial de alto rendimiento. Permite el almacenamiento eficiente, la gestión y la búsqueda por similitud de embeddings vectoriales de alta dimensionalidad, lo que la hace ideal para aplicaciones de IA que requieren capacidades de búsqueda semántica.
+
+Con Pinecone, puedes:
+
+- **Almacenar embeddings vectoriales**: Gestionar eficientemente vectores de alta dimensionalidad a escala
+- **Realizar búsquedas por similitud**: Encontrar los vectores más similares a un vector de consulta en milisegundos
+- **Construir búsquedas semánticas**: Crear experiencias de búsqueda basadas en significado en lugar de palabras clave
+- **Implementar sistemas de recomendación**: Generar recomendaciones personalizadas basadas en similitud de contenido
+- **Desplegar modelos de aprendizaje automático**: Operacionalizar modelos de ML que dependen de la similitud vectorial
+- **Escalar sin problemas**: Manejar miles de millones de vectores con rendimiento consistente
+- **Mantener índices en tiempo real**: Actualizar tu base de datos vectorial en tiempo real a medida que llegan nuevos datos
+
+En Sim, la integración con Pinecone permite a tus agentes aprovechar las capacidades de búsqueda vectorial de forma programática como parte de sus flujos de trabajo. Esto permite escenarios de automatización sofisticados que combinan el procesamiento del lenguaje natural con la búsqueda y recuperación semántica. Tus agentes pueden generar embeddings a partir de texto, almacenar estos vectores en índices de Pinecone y realizar búsquedas de similitud para encontrar la información más relevante. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la infraestructura de búsqueda vectorial, permitiendo una recuperación de información más inteligente basada en el significado semántico en lugar de la coincidencia exacta de palabras clave. Al conectar Sim con Pinecone, puedes crear agentes que entienden el contexto, recuperan información relevante de grandes conjuntos de datos y ofrecen respuestas más precisas y personalizadas a los usuarios, todo sin requerir una gestión compleja de infraestructura o conocimientos especializados de bases de datos vectoriales.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Almacena, busca y recupera embeddings vectoriales utilizando la base de datos vectorial especializada de Pinecone. Genera embeddings a partir de texto y realiza búsquedas de similitud semántica con opciones de filtrado personalizables.
+
+## Herramientas
+
+### `pinecone_generate_embeddings`
+
+Generar embeddings a partir de texto usando Pinecone
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `model` | string | Sí | Modelo a utilizar para generar embeddings |
+| `inputs` | array | Sí | Array de entradas de texto para generar embeddings |
+| `apiKey` | string | Sí | Clave API de Pinecone |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `data` | array | Datos de embeddings generados con valores y tipo de vector |
+| `model` | string | Modelo utilizado para generar embeddings |
+| `vector_type` | string | Tipo de vector generado \(denso/disperso\) |
+| `usage` | object | Estadísticas de uso para la generación de embeddings |
+
+### `pinecone_upsert_text`
+
+Insertar o actualizar registros de texto en un índice de Pinecone
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `indexHost` | string | Sí | URL completa del host del índice de Pinecone |
+| `namespace` | string | Sí | Espacio de nombres donde insertar los registros |
+| `records` | array | Sí | Registro o matriz de registros para insertar, cada uno conteniendo _id, texto y metadatos opcionales |
+| `apiKey` | string | Sí | Clave API de Pinecone |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `statusText` | string | Estado de la operación de inserción |
+| `upsertedCount` | number | Número de registros insertados correctamente |
+
+### `pinecone_search_text`
+
+Buscar texto similar en un índice de Pinecone
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `indexHost` | string | Sí | URL completa del host del índice de Pinecone |
+| `namespace` | string | No | Espacio de nombres donde buscar |
+| `searchQuery` | string | Sí | Texto a buscar |
+| `topK` | string | No | Número de resultados a devolver |
+| `fields` | array | No | Campos a devolver en los resultados |
+| `filter` | object | No | Filtro a aplicar a la búsqueda |
+| `rerank` | object | No | Parámetros de reordenación |
+| `apiKey` | string | Sí | Clave API de Pinecone |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `matches` | array | Resultados de búsqueda con ID, puntuación y metadatos |
+
+### `pinecone_search_vector`
+
+Buscar vectores similares en un índice de Pinecone
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `indexHost` | string | Sí | URL completa del host del índice de Pinecone |
+| `namespace` | string | No | Espacio de nombres donde buscar |
+| `vector` | array | Sí | Vector a buscar |
+| `topK` | number | No | Número de resultados a devolver |
+| `filter` | object | No | Filtro a aplicar a la búsqueda |
+| `includeValues` | boolean | No | Incluir valores de vector en la respuesta |
+| `includeMetadata` | boolean | No | Incluir metadatos en la respuesta |
+| `apiKey` | string | Sí | Clave API de Pinecone |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `matches` | array | Resultados de búsqueda de vectores con ID, puntuación, valores y metadatos |
+| `namespace` | string | Espacio de nombres donde se realizó la búsqueda |
+
+### `pinecone_fetch`
+
+Obtener vectores por ID desde un índice de Pinecone
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `indexHost` | string | Sí | URL completa del host del índice de Pinecone |
+| `ids` | array | Sí | Array de IDs de vectores a obtener |
+| `namespace` | string | No | Espacio de nombres desde donde obtener los vectores |
+| `apiKey` | string | Sí | Clave API de Pinecone |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `matches` | array | Vectores obtenidos con ID, valores, metadatos y puntuación |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `pinecone`
diff --git a/apps/docs/content/docs/es/tools/postgresql.mdx b/apps/docs/content/docs/es/tools/postgresql.mdx
new file mode 100644
index 0000000000..bc1fe3bf08
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/postgresql.mdx
@@ -0,0 +1,183 @@
+---
+title: PostgreSQL
+description: Conectar a base de datos PostgreSQL
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+La herramienta [PostgreSQL](https://www.postgresql.org/) te permite conectarte a cualquier base de datos PostgreSQL y realizar una amplia gama de operaciones directamente dentro de tus flujos de trabajo con agentes. Con manejo seguro de conexiones y configuración flexible, puedes gestionar e interactuar fácilmente con tus datos.
+
+Con la herramienta PostgreSQL, puedes:
+
+- **Consultar datos**: Ejecutar consultas SELECT para recuperar datos de tus tablas PostgreSQL usando la operación `postgresql_query`.
+- **Insertar registros**: Añadir nuevas filas a tus tablas con la operación `postgresql_insert` especificando la tabla y los datos a insertar.
+- **Actualizar registros**: Modificar datos existentes en tus tablas usando la operación `postgresql_update`, proporcionando la tabla, los nuevos datos y las condiciones WHERE.
+- **Eliminar registros**: Eliminar filas de tus tablas con la operación `postgresql_delete`, especificando la tabla y las condiciones WHERE.
+- **Ejecutar SQL personalizado**: Ejecutar cualquier comando SQL personalizado usando la operación `postgresql_execute` para casos de uso avanzados.
+
+La herramienta PostgreSQL es ideal para escenarios donde tus agentes necesitan interactuar con datos estructurados, como automatizar informes, sincronizar datos entre sistemas o potenciar flujos de trabajo basados en datos. Simplifica el acceso a la base de datos, facilitando la lectura, escritura y gestión de tus datos PostgreSQL de forma programática.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Conéctate a cualquier base de datos PostgreSQL para ejecutar consultas, gestionar datos y realizar operaciones de base de datos. Compatible con operaciones SELECT, INSERT, UPDATE, DELETE con manejo seguro de conexiones.
+
+## Herramientas
+
+### `postgresql_query`
+
+Ejecutar una consulta SELECT en la base de datos PostgreSQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor PostgreSQL |
+| `port` | number | Sí | Puerto del servidor PostgreSQL \(predeterminado: 5432\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `query` | string | Sí | Consulta SQL SELECT a ejecutar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Array de filas devueltas por la consulta |
+| `rowCount` | number | Número de filas devueltas |
+
+### `postgresql_insert`
+
+Insertar datos en la base de datos PostgreSQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor PostgreSQL |
+| `port` | number | Sí | Puerto del servidor PostgreSQL \(predeterminado: 5432\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `table` | string | Sí | Nombre de la tabla donde insertar datos |
+| `data` | object | Sí | Objeto de datos a insertar \(pares clave-valor\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Datos insertados \(si se usa la cláusula RETURNING\) |
+| `rowCount` | number | Número de filas insertadas |
+
+### `postgresql_update`
+
+Actualizar datos en la base de datos PostgreSQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor PostgreSQL |
+| `port` | number | Sí | Puerto del servidor PostgreSQL \(predeterminado: 5432\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `table` | string | Sí | Nombre de la tabla donde actualizar datos |
+| `data` | object | Sí | Objeto de datos con campos a actualizar \(pares clave-valor\) |
+| `where` | string | Sí | Condición de la cláusula WHERE \(sin la palabra clave WHERE\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Datos actualizados \(si se usa la cláusula RETURNING\) |
+| `rowCount` | number | Número de filas actualizadas |
+
+### `postgresql_delete`
+
+Eliminar datos de la base de datos PostgreSQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor PostgreSQL |
+| `port` | number | Sí | Puerto del servidor PostgreSQL \(predeterminado: 5432\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `table` | string | Sí | Nombre de la tabla de la que eliminar datos |
+| `where` | string | Sí | Condición de la cláusula WHERE \(sin la palabra clave WHERE\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Datos eliminados \(si se usa la cláusula RETURNING\) |
+| `rowCount` | number | Número de filas eliminadas |
+
+### `postgresql_execute`
+
+Ejecutar consulta SQL en bruto en la base de datos PostgreSQL
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `host` | string | Sí | Nombre de host o dirección IP del servidor PostgreSQL |
+| `port` | number | Sí | Puerto del servidor PostgreSQL \(predeterminado: 5432\) |
+| `database` | string | Sí | Nombre de la base de datos a la que conectarse |
+| `username` | string | Sí | Nombre de usuario de la base de datos |
+| `password` | string | Sí | Contraseña de la base de datos |
+| `ssl` | string | No | Modo de conexión SSL \(disabled, required, preferred\) |
+| `query` | string | Sí | Consulta SQL en bruto para ejecutar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `rows` | array | Array de filas devueltas por la consulta |
+| `rowCount` | number | Número de filas afectadas |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `postgresql`
diff --git a/apps/docs/content/docs/es/tools/qdrant.mdx b/apps/docs/content/docs/es/tools/qdrant.mdx
new file mode 100644
index 0000000000..454edc43ec
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/qdrant.mdx
@@ -0,0 +1,178 @@
+---
+title: Qdrant
+description: Usa la base de datos vectorial Qdrant
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Qdrant](https://qdrant.tech) es una base de datos vectorial de código abierto diseñada para el almacenamiento, gestión y recuperación eficiente de embeddings vectoriales de alta dimensionalidad. Qdrant permite búsquedas semánticas rápidas y escalables, lo que la hace ideal para aplicaciones de IA que requieren búsqueda por similitud, sistemas de recomendación y recuperación de información contextual.
+
+Con Qdrant, puedes:
+
+- **Almacenar embeddings vectoriales**: Gestionar y persistir vectores de alta dimensionalidad de manera eficiente y a escala
+- **Realizar búsquedas de similitud semántica**: Encontrar los vectores más similares a un vector de consulta en tiempo real
+- **Filtrar y organizar datos**: Utilizar filtrado avanzado para refinar los resultados de búsqueda basados en metadatos o payload
+- **Obtener puntos específicos**: Recuperar vectores y sus payloads asociados por ID
+- **Escalar sin problemas**: Manejar grandes colecciones y cargas de trabajo de alto rendimiento
+
+En Sim, la integración con Qdrant permite a tus agentes interactuar con Qdrant de forma programática como parte de sus flujos de trabajo. Las operaciones compatibles incluyen:
+
+- **Upsert**: Insertar o actualizar puntos (vectores y cargas útiles) en una colección de Qdrant
+- **Search**: Realizar búsquedas de similitud para encontrar vectores más similares a un vector de consulta dado, con filtrado opcional y personalización de resultados
+- **Fetch**: Recuperar puntos específicos de una colección por sus IDs, con opciones para incluir cargas útiles y vectores
+
+Esta integración permite a tus agentes aprovechar potentes capacidades de búsqueda y gestión de vectores, habilitando escenarios avanzados de automatización como búsqueda semántica, recomendaciones y recuperación contextual. Al conectar Sim con Qdrant, puedes crear agentes que entiendan el contexto, recuperen información relevante de grandes conjuntos de datos y ofrezcan respuestas más inteligentes y personalizadas, todo sin gestionar infraestructuras complejas.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Almacena, busca y recupera incrustaciones vectoriales usando Qdrant. Realiza búsquedas de similitud semántica y gestiona tus colecciones de vectores.
+
+## Herramientas
+
+### `qdrant_upsert_points`
+
+Insertar o actualizar puntos en una colección de Qdrant
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `url` | string | Sí | URL base de Qdrant |
+| `apiKey` | string | No | Clave API de Qdrant \(opcional\) |
+| `collection` | string | Sí | Nombre de la colección |
+| `points` | array | Sí | Array de puntos para upsert |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `status` | string | Estado de la operación upsert |
+| `data` | object | Datos de resultado de la operación upsert |
+
+### `qdrant_search_vector`
+
+Buscar vectores similares en una colección de Qdrant
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `url` | string | Sí | URL base de Qdrant |
+| `apiKey` | string | No | Clave API de Qdrant \(opcional\) |
+| `collection` | string | Sí | Nombre de la colección |
+| `vector` | array | Sí | Vector a buscar |
+| `limit` | number | No | Número de resultados a devolver |
+| `filter` | object | No | Filtro a aplicar a la búsqueda |
+| `with_payload` | boolean | No | Incluir payload en la respuesta |
+| `with_vector` | boolean | No | Incluir vector en la respuesta |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `data` | array | Resultados de búsqueda de vectores con ID, puntuación, payload y datos de vector opcionales |
+| `status` | string | Estado de la operación de búsqueda |
+
+### `qdrant_fetch_points`
+
+Obtener puntos por ID desde una colección de Qdrant
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `url` | string | Sí | URL base de Qdrant |
+| `apiKey` | string | No | Clave API de Qdrant \(opcional\) |
+| `collection` | string | Sí | Nombre de la colección |
+| `ids` | array | Sí | Array de IDs de puntos a obtener |
+| `with_payload` | boolean | No | Incluir payload en la respuesta |
+| `with_vector` | boolean | No | Incluir vector en la respuesta |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `data` | array | Puntos recuperados con ID, carga útil y datos vectoriales opcionales |
+| `status` | string | Estado de la operación de recuperación |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `qdrant`
diff --git a/apps/docs/content/docs/es/tools/reddit.mdx b/apps/docs/content/docs/es/tools/reddit.mdx
new file mode 100644
index 0000000000..9e3c3e114b
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/reddit.mdx
@@ -0,0 +1,87 @@
+---
+title: Reddit
+description: Accede a datos y contenido de Reddit
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Reddit](https://www.reddit.com/) es una plataforma social donde los usuarios comparten y discuten contenido en comunidades temáticas llamadas subreddits.
+
+En Sim, puedes usar la integración de Reddit para:
+
+- **Obtener publicaciones**: Recupera publicaciones de cualquier subreddit, con opciones para ordenar (Destacadas, Nuevas, Mejores, En ascenso) y filtrar las Mejores publicaciones por tiempo (Día, Semana, Mes, Año, Todo el tiempo).
+- **Obtener comentarios**: Recupera comentarios de una publicación específica, con opciones para ordenar y establecer el número de comentarios.
+
+Estas operaciones permiten a tus agentes acceder y analizar contenido de Reddit como parte de tus flujos de trabajo automatizados.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Accede a datos de Reddit para recuperar publicaciones y comentarios de cualquier subreddit. Obtén títulos de publicaciones, contenido, autores, puntuaciones, comentarios y más.
+
+## Herramientas
+
+### `reddit_get_posts`
+
+Obtener publicaciones de un subreddit con diferentes opciones de ordenación
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `subreddit` | string | Sí | El nombre del subreddit del que obtener publicaciones \(sin el prefijo r/\) |
+| `sort` | string | No | Método de ordenación para publicaciones: "hot", "new", "top", o "rising" \(predeterminado: "hot"\) |
+| `limit` | number | No | Número máximo de publicaciones a devolver \(predeterminado: 10, máximo: 100\) |
+| `time` | string | No | Filtro de tiempo para publicaciones ordenadas por "top": "day", "week", "month", "year", o "all" \(predeterminado: "day"\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `subreddit` | string | Nombre del subreddit del que se obtuvieron las publicaciones |
+| `posts` | array | Array de publicaciones con título, autor, URL, puntuación, recuento de comentarios y metadatos |
+
+### `reddit_get_comments`
+
+Obtener comentarios de una publicación específica de Reddit
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `postId` | string | Sí | El ID de la publicación de Reddit de la que se obtendrán los comentarios |
+| `subreddit` | string | Sí | El subreddit donde se encuentra la publicación \(sin el prefijo r/\) |
+| `sort` | string | No | Método de ordenación para los comentarios: "confidence", "top", "new", "controversial", "old", "random", "qa" \(predeterminado: "confidence"\) |
+| `limit` | number | No | Número máximo de comentarios a devolver \(predeterminado: 50, máximo: 100\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `post` | object | Información de la publicación incluyendo ID, título, autor, contenido y metadatos |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `reddit`
diff --git a/apps/docs/content/docs/es/tools/s3.mdx b/apps/docs/content/docs/es/tools/s3.mdx
new file mode 100644
index 0000000000..a48daa0ef7
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/s3.mdx
@@ -0,0 +1,90 @@
+---
+title: S3
+description: Ver archivos S3
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Amazon S3](https://aws.amazon.com/s3/) es un servicio de almacenamiento en la nube altamente escalable, seguro y duradero proporcionado por Amazon Web Services. Está diseñado para almacenar y recuperar cualquier cantidad de datos desde cualquier lugar en la web, lo que lo convierte en una de las soluciones de almacenamiento en la nube más utilizadas por empresas de todos los tamaños.
+
+Con Amazon S3, puedes:
+
+- **Almacenar datos ilimitados**: Subir archivos de cualquier tamaño y tipo con capacidad de almacenamiento prácticamente ilimitada
+- **Acceder desde cualquier lugar**: Recuperar tus archivos desde cualquier parte del mundo con acceso de baja latencia
+- **Garantizar la durabilidad de los datos**: Beneficiarte de una durabilidad del 99,999999999% (11 nueves) con replicación automática de datos
+- **Controlar el acceso**: Gestionar permisos y controles de acceso con políticas de seguridad detalladas
+- **Escalar automáticamente**: Manejar cargas de trabajo variables sin intervención manual ni planificación de capacidad
+- **Integrar sin problemas**: Conectar fácilmente con otros servicios de AWS y aplicaciones de terceros
+- **Optimizar costos**: Elegir entre múltiples clases de almacenamiento para optimizar costos según los patrones de acceso
+
+En Sim, la integración con S3 permite a tus agentes recuperar y acceder a archivos almacenados en tus buckets de Amazon S3 utilizando URLs prefirmadas seguras. Esto permite potentes escenarios de automatización como procesamiento de documentos, análisis de datos almacenados, recuperación de archivos de configuración y acceso a contenido multimedia como parte de tus flujos de trabajo. Tus agentes pueden obtener archivos de S3 de forma segura sin exponer tus credenciales de AWS, facilitando la incorporación de activos almacenados en la nube a tus procesos de automatización. Esta integración cierra la brecha entre tu almacenamiento en la nube y los flujos de trabajo de IA, permitiendo un acceso fluido a tus datos almacenados mientras mantiene las mejores prácticas de seguridad a través de los robustos mecanismos de autenticación de AWS.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Recupera y visualiza archivos de buckets de Amazon S3 utilizando URLs prefirmadas.
+
+## Herramientas
+
+### `s3_get_object`
+
+Recuperar un objeto de un bucket de AWS S3
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ---------- | ----------- |
+| `accessKeyId` | string | Sí | Tu ID de clave de acceso de AWS |
+| `secretAccessKey` | string | Sí | Tu clave de acceso secreta de AWS |
+| `s3Uri` | string | Sí | URL del objeto S3 |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `url` | string | URL prefirmada para descargar el objeto S3 |
+| `metadata` | object | Metadatos del archivo incluyendo tipo, tamaño, nombre y fecha de última modificación |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `s3`
diff --git a/apps/docs/content/docs/es/tools/schedule.mdx b/apps/docs/content/docs/es/tools/schedule.mdx
new file mode 100644
index 0000000000..d3f295a4ca
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/schedule.mdx
@@ -0,0 +1,38 @@
+---
+title: Programación
+description: Activar la ejecución del flujo de trabajo según una programación
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+ `}
+/>
+
+## Instrucciones de uso
+
+Configura la ejecución automatizada del flujo de trabajo con opciones de tiempo flexibles. Establece flujos de trabajo recurrentes que se ejecuten en intervalos o momentos específicos.
+
+## Notas
+
+- Categoría: `triggers`
+- Tipo: `schedule`
diff --git a/apps/docs/content/docs/es/tools/serper.mdx b/apps/docs/content/docs/es/tools/serper.mdx
new file mode 100644
index 0000000000..ff9179f915
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/serper.mdx
@@ -0,0 +1,108 @@
+---
+title: Serper
+description: Busca en la web usando Serper
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Serper](https://www.serper.com/) es una API de Google Search que proporciona a los desarrolladores acceso programático a los resultados de búsqueda de Google. Ofrece una forma fiable y de alto rendimiento para integrar las capacidades de búsqueda de Google en aplicaciones sin la complejidad del web scraping o las limitaciones de otras APIs de búsqueda.
+
+Con Serper, puedes:
+
+- **Acceder a resultados de búsqueda de Google**: Obtener datos estructurados de los resultados de búsqueda de Google de forma programática
+- **Realizar diferentes tipos de búsqueda**: Ejecutar búsquedas web, búsquedas de imágenes, búsquedas de noticias y más
+- **Recuperar metadatos enriquecidos**: Obtener títulos, fragmentos, URLs y otra información relevante de los resultados de búsqueda
+- **Escalar tus aplicaciones**: Crear funcionalidades basadas en búsquedas con una API fiable y rápida
+- **Evitar limitaciones de frecuencia**: Obtener acceso constante a los resultados de búsqueda sin preocuparte por bloqueos de IP
+
+En Sim, la integración de Serper permite a tus agentes aprovechar el poder de la búsqueda web como parte de sus flujos de trabajo. Esto permite escenarios de automatización sofisticados que requieren información actualizada de internet. Tus agentes pueden formular consultas de búsqueda, recuperar resultados relevantes y usar esta información para tomar decisiones o proporcionar respuestas. Esta integración cierra la brecha entre la automatización de tu flujo de trabajo y el vasto conocimiento disponible en la web, permitiendo a tus agentes acceder a información en tiempo real sin intervención manual. Al conectar Sim con Serper, puedes crear agentes que se mantengan actualizados con la información más reciente, proporcionen respuestas más precisas y entreguen más valor a los usuarios.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Accede a resultados de búsqueda web en tiempo real con la integración de la API de Google Search de Serper. Recupera datos de búsqueda estructurados que incluyen páginas web, noticias, imágenes y lugares con configuraciones personalizables de idioma y región.
+
+## Herramientas
+
+### `serper_search`
+
+Una potente herramienta de búsqueda web que proporciona acceso a los resultados de búsqueda de Google a través de la API de Serper.dev. Admite diferentes tipos de búsquedas, incluyendo búsqueda web regular, noticias, lugares e imágenes, y cada resultado contiene metadatos relevantes como títulos, URLs, fragmentos e información específica según el tipo.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `query` | string | Sí | La consulta de búsqueda |
+| `num` | number | No | Número de resultados a devolver |
+| `gl` | string | No | Código de país para los resultados de búsqueda |
+| `hl` | string | No | Código de idioma para los resultados de búsqueda |
+| `type` | string | No | Tipo de búsqueda a realizar |
+| `apiKey` | string | Sí | Clave API de Serper |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `searchResults` | array | Resultados de búsqueda con títulos, enlaces, fragmentos y metadatos específicos según el tipo \(fecha para noticias, calificación para lugares, imageUrl para imágenes\) |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `serper`
diff --git a/apps/docs/content/docs/es/tools/sharepoint.mdx b/apps/docs/content/docs/es/tools/sharepoint.mdx
new file mode 100644
index 0000000000..80580ba5ca
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/sharepoint.mdx
@@ -0,0 +1,127 @@
+---
+title: Sharepoint
+description: Leer y crear páginas
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[SharePoint](https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration) es una plataforma colaborativa de Microsoft que permite a los usuarios crear y gestionar sitios web internos, compartir documentos y organizar recursos de equipo. Proporciona una solución potente y flexible para crear espacios de trabajo digitales y agilizar la gestión de contenidos en las organizaciones.
+
+Con SharePoint, puedes:
+
+- **Crear sitios de equipo y comunicación**: Configura páginas y portales para facilitar la colaboración, anuncios y distribución de contenido
+- **Organizar y compartir contenido**: Almacena documentos, gestiona archivos y habilita el control de versiones con capacidades seguras de compartición
+- **Personalizar páginas**: Añade partes de texto para adaptar cada sitio a las necesidades de tu equipo
+- **Mejorar la capacidad de descubrimiento**: Utiliza herramientas de metadatos, búsqueda y navegación para ayudar a los usuarios a encontrar rápidamente lo que necesitan
+- **Colaborar de forma segura**: Controla el acceso con configuraciones robustas de permisos e integración con Microsoft 365
+
+En Sim, la integración con SharePoint permite a tus agentes crear y acceder a sitios y páginas de SharePoint como parte de sus flujos de trabajo. Esto facilita la gestión automatizada de documentos, el intercambio de conocimientos y la creación de espacios de trabajo sin esfuerzo manual. Los agentes pueden generar nuevas páginas de proyectos, cargar o recuperar archivos y organizar recursos de forma dinámica, basándose en las entradas del flujo de trabajo. Al conectar Sim con SharePoint, incorporas la colaboración estructurada y la gestión de contenidos en tus flujos de automatización, dando a tus agentes la capacidad de coordinar actividades de equipo, mostrar información clave y mantener una única fuente de verdad en toda tu organización.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Sharepoint para gestionar páginas. Lee y crea páginas, y lista sitios utilizando autenticación OAuth. Admite operaciones de página con tipos MIME personalizados y organización de carpetas.
+
+## Herramientas
+
+### `sharepoint_create_page`
+
+Crear una nueva página en un sitio de SharePoint
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `siteId` | string | No | El ID del sitio de SharePoint \(uso interno\) |
+| `siteSelector` | string | No | Seleccionar el sitio de SharePoint |
+| `pageName` | string | Sí | El nombre de la página a crear |
+| `pageTitle` | string | No | El título de la página \(por defecto es el nombre de la página si no se proporciona\) |
+| `pageContent` | string | No | El contenido de la página |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `page` | object | Información de la página de SharePoint creada |
+
+### `sharepoint_read_page`
+
+Leer una página específica de un sitio de SharePoint
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `siteSelector` | string | No | Seleccionar el sitio de SharePoint |
+| `siteId` | string | No | El ID del sitio de SharePoint \(uso interno\) |
+| `pageId` | string | No | El ID de la página a leer |
+| `pageName` | string | No | El nombre de la página a leer \(alternativa a pageId\) |
+| `maxPages` | number | No | Número máximo de páginas a devolver cuando se listan todas las páginas \(predeterminado: 10, máximo: 50\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `page` | objeto | Información sobre la página de SharePoint |
+
+### `sharepoint_list_sites`
+
+Listar detalles de todos los sitios de SharePoint
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `siteSelector` | cadena | No | Seleccionar el sitio de SharePoint |
+| `groupId` | cadena | No | El ID del grupo para acceder a un sitio de equipo de grupo |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `site` | objeto | Información sobre el sitio actual de SharePoint |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `sharepoint`
diff --git a/apps/docs/content/docs/es/tools/slack.mdx b/apps/docs/content/docs/es/tools/slack.mdx
new file mode 100644
index 0000000000..a7db3be37d
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/slack.mdx
@@ -0,0 +1,137 @@
+---
+title: Slack
+description: Envía mensajes a Slack o activa flujos de trabajo desde eventos de Slack
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Slack](https://www.slack.com/) es una plataforma de comunicación empresarial que ofrece a los equipos un lugar unificado para mensajería, herramientas y archivos.
+
+VIDEO
+
+Con Slack, puedes:
+
+- **Automatizar notificaciones de agentes**: Enviar actualizaciones en tiempo real desde tus agentes Sim a cualquier canal de Slack
+- **Crear endpoints de webhook**: Configurar bots de Slack como webhooks para activar flujos de trabajo de Sim desde actividades de Slack
+- **Mejorar flujos de trabajo de agentes**: Integrar mensajería de Slack en tus agentes para entregar resultados, alertas y actualizaciones de estado
+- **Crear y compartir lienzos de Slack**: Generar programáticamente documentos colaborativos (lienzos) en canales de Slack
+- **Leer mensajes de canales**: Recuperar y procesar mensajes recientes de cualquier canal de Slack para monitoreo o activación de flujos de trabajo
+
+En Sim, la integración con Slack permite a tus agentes interactuar programáticamente con Slack de varias maneras como parte de sus flujos de trabajo:
+
+- **Enviar mensajes**: Los agentes pueden enviar mensajes formateados a cualquier canal o usuario de Slack, compatible con la sintaxis mrkdwn de Slack para un formato enriquecido.
+- **Crear lienzos**: Los agentes pueden crear y compartir lienzos de Slack (documentos colaborativos) directamente en los canales, permitiendo compartir contenido más rico y documentación.
+- **Leer mensajes**: Los agentes pueden leer mensajes recientes de los canales, permitiendo monitorear, informar o desencadenar acciones adicionales basadas en la actividad del canal.
+
+Esto permite escenarios de automatización potentes como enviar notificaciones, alertas, actualizaciones e informes directamente al centro de comunicación de tu equipo, compartir documentos estructurados o monitorear conversaciones para desencadenar flujos de trabajo. Tus agentes pueden entregar información oportuna, compartir resultados de procesos que han completado, crear documentos colaborativos o alertar a los miembros del equipo cuando se necesita atención. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la comunicación de tu equipo, asegurando que todos se mantengan informados sin intervención manual. Al conectar Sim con Slack, puedes crear agentes que mantengan a tu equipo actualizado con información relevante en el momento adecuado, mejorar la colaboración compartiendo conocimientos automáticamente y reducir la necesidad de actualizaciones manuales de estado, todo mientras aprovechas tu espacio de trabajo de Slack existente donde tu equipo ya se comunica.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integración completa con Slack con autenticación OAuth. Envía mensajes formateados usando la sintaxis mrkdwn de Slack o desencadena flujos de trabajo desde eventos de Slack como menciones y mensajes.
+
+## Herramientas
+
+### `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.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `authMethod` | string | No | Método de autenticación: oauth o bot_token |
+| `botToken` | string | No | Token del bot para Bot personalizado |
+| `channel` | string | Sí | Canal de Slack objetivo (p. ej., #general) |
+| `text` | string | Sí | Texto del mensaje a enviar (admite formato mrkdwn de Slack) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `ts` | string | Marca de tiempo del mensaje |
+| `channel` | string | ID del canal donde se envió el mensaje |
+
+### `slack_canvas`
+
+Crea y comparte lienzos de Slack en canales. Los lienzos son documentos colaborativos dentro de Slack.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `authMethod` | string | No | Método de autenticación: oauth o bot_token |
+| `botToken` | string | No | Token del bot para Bot personalizado |
+| `channel` | string | Sí | Canal de Slack objetivo (p. ej., #general) |
+| `title` | string | Sí | Título del lienzo |
+| `content` | string | Sí | Contenido del lienzo en formato markdown |
+| `document_content` | object | No | Contenido estructurado del documento de lienzo |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `canvas_id` | string | ID del lienzo creado |
+| `channel` | string | Canal donde se creó el lienzo |
+| `title` | string | Título del lienzo |
+
+### `slack_message_reader`
+
+Lee los últimos mensajes de los canales de Slack. Recupera el historial de conversaciones con opciones de filtrado.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `authMethod` | string | No | Método de autenticación: oauth o bot_token |
+| `botToken` | string | No | Token del bot para Bot personalizado |
+| `channel` | string | Sí | Canal de Slack del que leer mensajes (p. ej., #general) |
+| `limit` | number | No | Número de mensajes a recuperar (predeterminado: 10, máx: 100) |
+| `oldest` | string | No | Inicio del rango de tiempo (marca de tiempo) |
+| `latest` | string | No | Fin del rango de tiempo (marca de tiempo) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `messages` | array | Array de objetos de mensaje del canal |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `slack`
diff --git a/apps/docs/content/docs/es/tools/stagehand.mdx b/apps/docs/content/docs/es/tools/stagehand.mdx
new file mode 100644
index 0000000000..42e8b478ae
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/stagehand.mdx
@@ -0,0 +1,219 @@
+---
+title: Stagehand Extract
+description: Extrae datos de sitios web
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Stagehand](https://stagehand.com) es una herramienta que te permite extraer datos estructurados de páginas web utilizando Browserbase y OpenAI.
+
+Con Stagehand, puedes:
+
+- **Extraer datos estructurados**: Extraer datos estructurados de páginas web utilizando Browserbase y OpenAI
+- **Guardar datos en una base de datos**: Guardar los datos extraídos en una base de datos
+- **Automatizar flujos de trabajo**: Automatizar flujos de trabajo para extraer datos de páginas web
+
+En Sim, la integración de Stagehand permite a tus agentes extraer datos estructurados de páginas web utilizando Browserbase y OpenAI. Esto permite escenarios de automatización potentes como extracción de datos, análisis de datos e integración de datos. Tus agentes pueden extraer datos estructurados de páginas web, guardar los datos extraídos en una base de datos y automatizar flujos de trabajo para extraer datos de páginas web. Esta integración cierra la brecha entre tus flujos de trabajo de IA y tu sistema de gestión de datos, permitiendo una extracción e integración de datos sin problemas. Al conectar Sim con Stagehand, puedes automatizar procesos de extracción de datos, mantener repositorios de información actualizados, generar informes y organizar información de manera inteligente, todo a través de tus agentes inteligentes.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Usa Stagehand para extraer datos estructurados de páginas web utilizando Browserbase y OpenAI.
+
+## Herramientas
+
+### `stagehand_extract`
+
+Extrae datos estructurados de una página web utilizando Stagehand
+
+#### Entrada
+
+| Parámetro | Tipo | Requerido | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `url` | string | Sí | URL de la página web de la que extraer datos |
+| `instruction` | string | Sí | Instrucciones para la extracción |
+| `apiKey` | string | Sí | Clave API de OpenAI para la extracción \(requerida por Stagehand\) |
+| `schema` | json | Sí | Esquema JSON que define la estructura de los datos a extraer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `data` | object | Datos estructurados extraídos que coinciden con el esquema proporcionado |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `stagehand`
diff --git a/apps/docs/content/docs/es/tools/stagehand_agent.mdx b/apps/docs/content/docs/es/tools/stagehand_agent.mdx
new file mode 100644
index 0000000000..deacb22672
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/stagehand_agent.mdx
@@ -0,0 +1,225 @@
+---
+title: Stagehand Agent
+description: Agente autónomo de navegación web
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Stagehand](https://www.stagehand.dev/) es una plataforma de agentes web autónomos que permite a los sistemas de IA navegar e interactuar con sitios web tal como lo haría un humano. Proporciona una solución potente para automatizar tareas web complejas sin necesidad de código personalizado o scripts de automatización de navegador.
+
+Con Stagehand, puedes:
+
+- **Automatizar la navegación web**: Permitir que la IA navegue por sitios web, haga clic en enlaces, complete formularios e interactúe con elementos web
+- **Extraer datos estructurados**: Recopilar información específica de sitios web en un formato estructurado y utilizable
+- **Completar flujos de trabajo complejos**: Realizar tareas de múltiples pasos en diferentes sitios web y aplicaciones web
+- **Gestionar la autenticación**: Navegar por procesos de inicio de sesión y mantener sesiones en sitios web
+- **Procesar contenido dinámico**: Interactuar con sitios con uso intensivo de JavaScript y aplicaciones de una sola página
+- **Mantener la conciencia del contexto**: Realizar un seguimiento del estado actual y del historial durante la navegación
+- **Generar informes detallados**: Recibir registros completos de las acciones realizadas y los datos recopilados
+
+En Sim, la integración de Stagehand permite que tus agentes interactúen sin problemas con sistemas basados en web como parte de sus flujos de trabajo. Esto permite escenarios de automatización sofisticados que conectan a tus agentes de IA con la amplia información y funcionalidad disponible en la web. Tus agentes pueden buscar información, interactuar con aplicaciones web, extraer datos de sitios web e incorporar estas capacidades en sus procesos de toma de decisiones. Al conectar Sim con Stagehand, puedes crear agentes que van más allá de las integraciones basadas en API para navegar por la web tal como lo haría un humano: completando formularios, haciendo clic en botones, leyendo contenido y extrayendo información valiosa para completar sus tareas de manera más efectiva.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Utiliza Stagehand para crear un agente de navegación web autónomo que pueda navegar por sitios web, realizar tareas y devolver datos estructurados.
+
+## Herramientas
+
+### `stagehand_agent`
+
+Ejecuta un agente web autónomo para completar tareas y extraer datos estructurados
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `startUrl` | string | Sí | URL de la página web donde iniciará el agente |
+| `task` | string | Sí | La tarea a completar o el objetivo a lograr en el sitio web |
+| `variables` | json | No | Variables opcionales para sustituir en la tarea \(formato: \{key: value\}\). Referencia en la tarea usando %key% |
+| `format` | string | No | Sin descripción |
+| `apiKey` | string | Sí | Clave API de OpenAI para la ejecución del agente \(requerida por Stagehand\) |
+| `outputSchema` | json | No | Esquema JSON opcional que define la estructura de los datos que el agente debe devolver |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `agentResult` | object | Resultado de la ejecución del agente Stagehand |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `stagehand_agent`
diff --git a/apps/docs/content/docs/es/tools/supabase.mdx b/apps/docs/content/docs/es/tools/supabase.mdx
new file mode 100644
index 0000000000..a49fe93cad
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/supabase.mdx
@@ -0,0 +1,208 @@
+---
+title: Supabase
+description: Usa la base de datos Supabase
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Supabase](https://www.supabase.com/) es una potente plataforma backend-as-a-service de código abierto que proporciona a los desarrolladores un conjunto de herramientas para construir, escalar y gestionar aplicaciones modernas. Supabase ofrece una base de datos [PostgreSQL](https://www.postgresql.org/) completamente gestionada, autenticación robusta, APIs RESTful y GraphQL instantáneas, suscripciones en tiempo real, almacenamiento de archivos y funciones edge, todo accesible a través de una interfaz unificada y amigable para desarrolladores. Su naturaleza de código abierto y compatibilidad con frameworks populares la convierten en una alternativa convincente a Firebase, con el beneficio adicional de la flexibilidad y transparencia de SQL.
+
+**¿Por qué Supabase?**
+- **APIs instantáneas:** Cada tabla y vista en tu base de datos está disponible instantáneamente a través de endpoints REST y GraphQL, facilitando la creación de aplicaciones basadas en datos sin escribir código backend personalizado.
+- **Datos en tiempo real:** Supabase permite suscripciones en tiempo real, permitiendo que tus aplicaciones reaccionen instantáneamente a los cambios en tu base de datos.
+- **Autenticación y autorización:** Gestión de usuarios incorporada con soporte para email, OAuth, SSO y más, además de seguridad a nivel de fila para un control de acceso granular.
+- **Almacenamiento:** Sube, sirve y gestiona archivos de forma segura con almacenamiento integrado que se integra perfectamente con tu base de datos.
+- **Funciones Edge:** Despliega funciones serverless cerca de tus usuarios para lógica personalizada de baja latencia.
+
+**Uso de Supabase en Sim**
+
+La integración de Supabase en Sim facilita la conexión de tus flujos de trabajo basados en agentes con tus proyectos de Supabase. Con solo unos pocos campos de configuración —tu ID de proyecto, nombre de tabla y clave secreta de rol de servicio— puedes interactuar de forma segura con tu base de datos directamente desde tus bloques de Sim. La integración abstrae la complejidad de las llamadas a la API, permitiéndote concentrarte en construir lógica y automatizaciones.
+
+**Beneficios clave de usar Supabase en Sim:**
+- **Operaciones de base de datos sin código/con poco código:** Consulta, inserta, actualiza y elimina filas en tus tablas de Supabase sin escribir SQL o código backend.
+- **Consultas flexibles:** Utiliza la [sintaxis de filtro de PostgREST](https://postgrest.org/en/stable/api.html#operators) para realizar consultas avanzadas, incluyendo filtrado, ordenamiento y limitación de resultados.
+- **Integración perfecta:** Conecta fácilmente Supabase con otras herramientas y servicios en tu flujo de trabajo, habilitando potentes automatizaciones como sincronización de datos, activación de notificaciones o enriquecimiento de registros.
+- **Seguro y escalable:** Todas las operaciones utilizan tu clave secreta de rol de servicio de Supabase, asegurando un acceso seguro a tus datos con la escalabilidad de una plataforma cloud gestionada.
+
+Ya sea que estés construyendo herramientas internas, automatizando procesos de negocio o impulsando aplicaciones de producción, Supabase en Sim proporciona una forma rápida, confiable y amigable para desarrolladores de gestionar tus datos y lógica de backend—sin necesidad de gestionar infraestructura. Simplemente configura tu bloque, selecciona la operación que necesitas y deja que Sim se encargue del resto.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Intégrate con Supabase para gestionar tu base de datos, autenticación, almacenamiento y más. Consulta datos, gestiona usuarios e interactúa con los servicios de Supabase directamente.
+
+## Herramientas
+
+### `supabase_query`
+
+Consultar datos de una tabla de Supabase
+
+#### Entrada
+
+| 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\) |
+| `limit` | number | No | Número máximo de filas a devolver |
+| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `results` | array | Array de registros devueltos por la consulta |
+
+### `supabase_insert`
+
+Insertar datos en una tabla de Supabase
+
+#### 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 donde insertar los datos |
+| `data` | any | Sí | Los datos a insertar |
+| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `results` | array | Array de registros insertados |
+
+### `supabase_get_row`
+
+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 |
+| `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 |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `results` | array | Array que contiene los datos de la fila si se encuentran, array vacío si no se encuentran |
+
+### `supabase_update`
+
+Actualizar filas en una tabla de Supabase según criterios de filtro
+
+#### 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 a actualizar |
+| `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 |
+| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `results` | array | Array de registros actualizados |
+
+### `supabase_delete`
+
+Eliminar filas de una tabla de Supabase según criterios de filtro
+
+#### 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 de la que eliminar |
+| `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 |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `results` | array | Array de registros eliminados |
+
+### `supabase_upsert`
+
+Insertar o actualizar datos en una tabla de Supabase (operación upsert)
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `projectId` | string | Sí | El ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
+| `table` | string | Sí | El nombre de la tabla de Supabase donde insertar o actualizar datos |
+| `data` | any | Sí | Los datos a insertar o actualizar \(upsert\) |
+| `apiKey` | string | Sí | Tu clave secreta de rol de servicio de Supabase |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `message` | string | Mensaje de estado de la operación |
+| `results` | array | Array de registros insertados o actualizados |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `supabase`
diff --git a/apps/docs/content/docs/es/tools/tavily.mdx b/apps/docs/content/docs/es/tools/tavily.mdx
new file mode 100644
index 0000000000..59f8d2a775
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/tavily.mdx
@@ -0,0 +1,104 @@
+---
+title: Tavily
+description: Buscar y extraer información
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Tavily](https://www.tavily.com/) es una API de búsqueda impulsada por IA diseñada específicamente para aplicaciones LLM. Proporciona capacidades de recuperación de información confiables y en tiempo real con características optimizadas para casos de uso de IA, incluyendo búsqueda semántica, extracción de contenido y recuperación de datos estructurados.
+
+Con Tavily, puedes:
+
+- **Realizar búsquedas contextuales**: Obtener resultados relevantes basados en la comprensión semántica en lugar de solo coincidencia de palabras clave
+- **Extraer contenido estructurado**: Obtener información específica de páginas web en un formato limpio y utilizable
+- **Acceder a información en tiempo real**: Recuperar datos actualizados de toda la web
+- **Procesar múltiples URLs simultáneamente**: Extraer contenido de varias páginas web en una sola solicitud
+- **Recibir resultados optimizados para IA**: Obtener resultados de búsqueda específicamente formateados para el consumo por sistemas de IA
+
+En Sim, la integración de Tavily permite a tus agentes buscar en la web y extraer información como parte de sus flujos de trabajo. Esto permite escenarios de automatización sofisticados que requieren información actualizada de internet. Tus agentes pueden formular consultas de búsqueda, recuperar resultados relevantes y extraer contenido de páginas web específicas para informar sus procesos de toma de decisiones. Esta integración cierra la brecha entre la automatización de tu flujo de trabajo y el vasto conocimiento disponible en la web, permitiendo a tus agentes acceder a información en tiempo real sin intervención manual. Al conectar Sim con Tavily, puedes crear agentes que se mantengan actualizados con la información más reciente, proporcionen respuestas más precisas y entreguen más valor a los usuarios.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Accede al motor de búsqueda impulsado por IA de Tavily para encontrar información relevante de toda la web. Extrae y procesa contenido de URLs específicas con opciones de profundidad personalizables.
+
+## Herramientas
+
+### `tavily_search`
+
+Realiza búsquedas web potenciadas por IA usando Tavily
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `query` | string | Sí | La consulta de búsqueda a ejecutar |
+| `max_results` | number | No | Número máximo de resultados \(1-20\) |
+| `apiKey` | string | Sí | Clave API de Tavily |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `query` | string | La consulta de búsqueda que se ejecutó |
+| `results` | array | Resultados generados por la herramienta |
+
+### `tavily_extract`
+
+Extrae contenido en bruto de múltiples páginas web simultáneamente usando Tavily
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `urls` | string | Sí | URL o array de URLs para extraer contenido |
+| `extract_depth` | string | No | La profundidad de extracción \(básica=1 crédito/5 URLs, avanzada=2 créditos/5 URLs\) |
+| `apiKey` | string | Sí | Clave API de Tavily |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `results` | array | La URL que fue extraída |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `tavily`
diff --git a/apps/docs/content/docs/es/tools/telegram.mdx b/apps/docs/content/docs/es/tools/telegram.mdx
new file mode 100644
index 0000000000..bbd8b232ac
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/telegram.mdx
@@ -0,0 +1,100 @@
+---
+title: Telegram
+description: Envía mensajes a través de Telegram o activa flujos de trabajo
+ desde eventos de Telegram
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Telegram](https://telegram.org) es una plataforma de mensajería segura basada en la nube que permite una comunicación rápida y confiable en diferentes dispositivos y plataformas. Con más de 700 millones de usuarios activos mensuales, Telegram se ha establecido como uno de los servicios de mensajería líderes en el mundo, conocido por su seguridad, velocidad y potentes capacidades de API.
+
+La API de Bot de Telegram proporciona un marco robusto para crear soluciones de mensajería automatizadas e integrar funciones de comunicación en aplicaciones. Con soporte para contenido multimedia, teclados en línea y comandos personalizados, los bots de Telegram pueden facilitar patrones de interacción sofisticados y flujos de trabajo automatizados.
+
+Aprende cómo crear un disparador de webhook en Sim que inicia flujos de trabajo sin problemas a partir de mensajes de Telegram. Este tutorial te guía a través de la configuración de un webhook, su configuración con la API de bot de Telegram y la activación de acciones automatizadas en tiempo real. ¡Perfecto para agilizar tareas directamente desde tu chat!
+
+VIDEO
+
+Aprende cómo usar la herramienta de Telegram en Sim para automatizar sin problemas la entrega de mensajes a cualquier grupo de Telegram. Este tutorial te guía a través de la integración de la herramienta en tu flujo de trabajo, la configuración de mensajería grupal y la activación de actualizaciones automatizadas en tiempo real. ¡Perfecto para mejorar la comunicación directamente desde tu espacio de trabajo!
+
+VIDEO
+
+Características principales de Telegram:
+
+- Comunicación segura: Cifrado de extremo a extremo y almacenamiento seguro en la nube para mensajes y contenido multimedia
+- Plataforma de bots: Potente API de bots para crear soluciones de mensajería automatizada y experiencias interactivas
+- Soporte para contenido multimedia: Envía y recibe mensajes con formato de texto, imágenes, archivos y elementos interactivos
+- Alcance global: Conéctate con usuarios de todo el mundo con soporte para múltiples idiomas y plataformas
+
+En Sim, la integración con Telegram permite a tus agentes aprovechar estas potentes capacidades de mensajería como parte de sus flujos de trabajo. Esto crea oportunidades para notificaciones automatizadas, alertas y conversaciones interactivas a través de la plataforma de mensajería segura de Telegram. La integración permite a los agentes enviar mensajes de forma programática a individuos o canales, facilitando la comunicación oportuna y actualizaciones. Al conectar Sim con Telegram, puedes crear agentes inteligentes que interactúen con los usuarios a través de una plataforma de mensajería segura y ampliamente adoptada, perfecta para entregar notificaciones, actualizaciones y comunicaciones interactivas.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Envía mensajes a cualquier canal de Telegram usando tu clave API de Bot o activa flujos de trabajo desde mensajes de bot de Telegram. Integra notificaciones automatizadas y alertas en tu flujo de trabajo para mantener a tu equipo informado.
+
+## Herramientas
+
+### `telegram_message`
+
+Envía mensajes a canales o usuarios de Telegram a través de la API de Bot de Telegram. Permite la comunicación directa y notificaciones con seguimiento de mensajes y confirmación de chat.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `botToken` | string | Sí | Tu token de API de Bot de Telegram |
+| `chatId` | string | Sí | ID del chat de Telegram objetivo |
+| `text` | string | Sí | Texto del mensaje a enviar |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito del envío del mensaje de Telegram |
+| `messageId` | number | Identificador único del mensaje de Telegram |
+| `chatId` | string | ID del chat de destino donde se envió el mensaje |
+| `text` | string | Contenido de texto del mensaje enviado |
+| `timestamp` | number | Marca de tiempo Unix cuando se envió el mensaje |
+| `from` | object | Información sobre el bot que envió el mensaje |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `telegram`
diff --git a/apps/docs/content/docs/es/tools/thinking.mdx b/apps/docs/content/docs/es/tools/thinking.mdx
new file mode 100644
index 0000000000..57b0e6720c
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/thinking.mdx
@@ -0,0 +1,74 @@
+---
+title: Pensamiento
+description: Obliga al modelo a detallar su proceso de pensamiento.
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+La herramienta de Pensamiento anima a los modelos de IA a realizar un razonamiento explícito antes de responder a consultas complejas. Al proporcionar un espacio dedicado para el análisis paso a paso, esta herramienta ayuda a los modelos a desglosar problemas, considerar múltiples perspectivas y llegar a conclusiones más reflexivas.
+
+Las investigaciones han demostrado que incitar a los modelos de lenguaje a "pensar paso a paso" puede mejorar significativamente sus capacidades de razonamiento. Según [la investigación de Anthropic sobre la herramienta Think de Claude](https://www.anthropic.com/engineering/claude-think-tool), cuando a los modelos se les da espacio para desarrollar explícitamente su razonamiento, demuestran:
+
+- **Resolución de problemas mejorada**: Desglosando problemas complejos en pasos manejables
+- **Mayor precisión**: Reduciendo errores al trabajar cuidadosamente en cada componente de un problema
+- **Mayor transparencia**: Haciendo visible y auditable el proceso de razonamiento del modelo
+- **Respuestas más matizadas**: Considerando múltiples ángulos antes de llegar a conclusiones
+
+En Sim, la herramienta de Pensamiento crea una oportunidad estructurada para que tus agentes participen en este tipo de razonamiento deliberado. Al incorporar pasos de pensamiento en tus flujos de trabajo, puedes ayudar a tus agentes a abordar tareas complejas de manera más efectiva, evitar errores comunes de razonamiento y producir resultados de mayor calidad. Esto es particularmente valioso para tareas que involucran razonamiento de múltiples pasos, toma de decisiones complejas o situaciones donde la precisión es crítica.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Añade un paso donde el modelo explícitamente describe su proceso de pensamiento antes de continuar. Esto puede mejorar la calidad del razonamiento al fomentar un análisis paso a paso.
+
+## Herramientas
+
+### `thinking_tool`
+
+Procesa un pensamiento/instrucción proporcionado, haciéndolo disponible para los pasos subsiguientes.
+
+#### Entrada
+
+| Parámetro | Tipo | Requerido | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `thought` | string | Sí | El proceso de pensamiento o instrucción proporcionado por el usuario en el bloque de Paso de Pensamiento. |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `acknowledgedThought` | string | El pensamiento que fue procesado y reconocido |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `thinking`
diff --git a/apps/docs/content/docs/es/tools/translate.mdx b/apps/docs/content/docs/es/tools/translate.mdx
new file mode 100644
index 0000000000..bff0276af0
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/translate.mdx
@@ -0,0 +1,89 @@
+---
+title: Traducir
+description: Traduce texto a cualquier idioma
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+Traducir es una herramienta que te permite traducir texto entre diferentes idiomas.
+
+Con Traducir, puedes:
+
+- **Traducir texto**: Traducir texto entre idiomas
+- **Traducir documentos**: Traducir documentos entre idiomas
+- **Traducir sitios web**: Traducir sitios web entre idiomas
+- **Traducir imágenes**: Traducir imágenes entre idiomas
+- **Traducir audio**: Traducir audio entre idiomas
+- **Traducir videos**: Traducir videos entre idiomas
+- **Traducir voz**: Traducir voz entre idiomas
+- **Traducir texto**: Traducir texto entre idiomas
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Convierte texto entre idiomas preservando el significado, los matices y el formato. Utiliza potentes modelos de lenguaje para producir traducciones naturales y fluidas con adaptaciones culturales apropiadas.
+
+## Herramientas
+
+### `openai_chat`
+
+#### Entrada
+
+| Parámetro | Tipo | Requerido | Descripción |
+| --------- | ---- | -------- | ----------- |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Texto traducido |
+| `model` | string | Modelo utilizado |
+| `tokens` | json | Uso de tokens |
+
+### `anthropic_chat`
+
+### `google_chat`
+
+#### Entrada
+
+| Parámetro | Tipo | Requerido | Descripción |
+| --------- | ---- | -------- | ----------- |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | Texto traducido |
+| `model` | string | Modelo utilizado |
+| `tokens` | json | Uso de tokens |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `translate`
diff --git a/apps/docs/content/docs/es/tools/twilio_sms.mdx b/apps/docs/content/docs/es/tools/twilio_sms.mdx
new file mode 100644
index 0000000000..d746e4e44b
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/twilio_sms.mdx
@@ -0,0 +1,67 @@
+---
+title: Twilio SMS
+description: Enviar mensajes SMS
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Twilio SMS](https://www.twilio.com/en-us/sms) es una potente plataforma de comunicaciones en la nube que permite a las empresas integrar capacidades de mensajería en sus aplicaciones y servicios.
+
+Twilio SMS proporciona una API robusta para enviar y recibir mensajes de texto programáticamente a nivel global. Con cobertura en más de 180 países y un SLA de disponibilidad del 99,999%, Twilio se ha establecido como líder de la industria en tecnología de comunicaciones.
+
+Las características principales de Twilio SMS incluyen:
+
+- **Alcance global**: Envía mensajes a destinatarios de todo el mundo con números de teléfono locales en múltiples países
+- **Mensajería programable**: Personaliza la entrega de mensajes con webhooks, recibos de entrega y opciones de programación
+- **Análisis avanzados**: Realiza seguimiento de tasas de entrega, métricas de participación y optimiza tus campañas de mensajería
+
+En Sim, la integración de Twilio SMS permite a tus agentes aprovechar estas potentes capacidades de mensajería como parte de sus flujos de trabajo. Esto crea oportunidades para escenarios sofisticados de interacción con clientes como recordatorios de citas, códigos de verificación, alertas y conversaciones interactivas. La integración conecta tus flujos de trabajo de IA con los canales de comunicación de los clientes, permitiendo que tus agentes entreguen información oportuna y relevante directamente a los dispositivos móviles de los usuarios. Al conectar Sim con Twilio SMS, puedes crear agentes inteligentes que interactúen con los clientes a través de su canal de comunicación preferido, mejorando la experiencia del usuario mientras automatizas tareas rutinarias de mensajería.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Envía mensajes de texto a uno o varios destinatarios utilizando la API de Twilio.
+
+## Herramientas
+
+### `twilio_send_sms`
+
+Envía mensajes de texto a uno o varios destinatarios utilizando la API de Twilio.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `phoneNumbers` | string | Sí | Números de teléfono a los que enviar el mensaje, separados por saltos de línea |
+| `message` | string | Sí | Mensaje a enviar |
+| `accountSid` | string | Sí | SID de la cuenta de Twilio |
+| `authToken` | string | Sí | Token de autenticación de Twilio |
+| `fromNumber` | string | Sí | Número de teléfono de Twilio desde el que enviar el mensaje |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito del envío de SMS |
+| `messageId` | string | Identificador único del mensaje de Twilio \(SID\) |
+| `status` | string | Estado de entrega del mensaje desde Twilio |
+| `fromNumber` | string | Número de teléfono desde el que se envió el mensaje |
+| `toNumber` | string | Número de teléfono al que se envió el mensaje |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `twilio_sms`
diff --git a/apps/docs/content/docs/es/tools/typeform.mdx b/apps/docs/content/docs/es/tools/typeform.mdx
new file mode 100644
index 0000000000..878b15c8e4
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/typeform.mdx
@@ -0,0 +1,119 @@
+---
+title: Typeform
+description: Interactúa con Typeform
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Typeform](https://www.typeform.com/) es una plataforma fácil de usar para crear formularios conversacionales, encuestas y cuestionarios con un enfoque en la experiencia atractiva del usuario.
+
+Con Typeform, puedes:
+
+- **Crear formularios interactivos**: Diseña formularios conversacionales atractivos que involucran a los encuestados con una interfaz única de una pregunta a la vez
+- **Personalizar tu experiencia**: Utiliza lógica condicional, campos ocultos y temas personalizados para crear recorridos de usuario personalizados
+- **Integrar con otras herramientas**: Conéctate con más de 1000 aplicaciones a través de integraciones nativas y APIs
+- **Analizar datos de respuestas**: Obtén información procesable a través de herramientas completas de análisis e informes
+
+En Sim, la integración de Typeform permite a tus agentes interactuar programáticamente con tus datos de Typeform como parte de sus flujos de trabajo. Los agentes pueden recuperar respuestas de formularios, procesar datos de envío e incorporar comentarios de usuarios directamente en los procesos de toma de decisiones. Esta integración es particularmente valiosa para escenarios como la calificación de leads, análisis de comentarios de clientes y personalización basada en datos. Al conectar Sim con Typeform, puedes crear flujos de trabajo de automatización inteligentes que transforman las respuestas de formularios en información procesable - analizando sentimientos, categorizando comentarios, generando resúmenes e incluso desencadenando acciones de seguimiento basadas en patrones específicos de respuesta.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Accede y recupera respuestas de tus formularios de Typeform. Integra datos de envíos de formularios en tu flujo de trabajo para análisis, almacenamiento o procesamiento.
+
+## Herramientas
+
+### `typeform_responses`
+
+Recuperar respuestas de formularios de Typeform
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `formId` | string | Sí | ID del formulario de Typeform |
+| `apiKey` | string | Sí | Token de acceso personal de Typeform |
+| `pageSize` | number | No | Número de respuestas a recuperar \(predeterminado: 25\) |
+| `since` | string | No | Recuperar respuestas enviadas después de esta fecha \(formato ISO 8601\) |
+| `until` | string | No | Recuperar respuestas enviadas antes de esta fecha \(formato ISO 8601\) |
+| `completed` | string | No | Filtrar por estado de finalización \(true/false\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `total_items` | number | Recuento total de respuestas |
+| `page_count` | number | Recuento total de páginas |
+| `items` | json | Elementos de respuesta |
+
+### `typeform_files`
+
+Descargar archivos subidos en respuestas de Typeform
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `formId` | string | Sí | ID del formulario de Typeform |
+| `responseId` | string | Sí | ID de respuesta que contiene los archivos |
+| `fieldId` | string | Sí | ID único del campo de carga de archivos |
+| `filename` | string | Sí | Nombre del archivo subido |
+| `inline` | boolean | No | Si se debe solicitar el archivo con Content-Disposition en línea |
+| `apiKey` | string | Sí | Token de acceso personal de Typeform |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `fileUrl` | string | URL de descarga directa para el archivo subido |
+| `contentType` | string | Tipo MIME del archivo subido |
+| `filename` | string | Nombre original del archivo subido |
+
+### `typeform_insights`
+
+Obtener información y análisis para formularios de Typeform
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `formId` | string | Sí | ID del formulario de Typeform |
+| `apiKey` | string | Sí | Token de acceso personal de Typeform |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `fields` | array | Número de usuarios que abandonaron en este campo |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `typeform`
diff --git a/apps/docs/content/docs/es/tools/vision.mdx b/apps/docs/content/docs/es/tools/vision.mdx
new file mode 100644
index 0000000000..1c6e03e3dc
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/vision.mdx
@@ -0,0 +1,78 @@
+---
+title: Visión
+description: Analiza imágenes con modelos de visión
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+Visión es una herramienta que te permite analizar imágenes con modelos de visión.
+
+Con Vision, puedes:
+
+- **Analizar imágenes**: Analizar imágenes con modelos de visión
+- **Extraer texto**: Extraer texto de imágenes
+- **Identificar objetos**: Identificar objetos en imágenes
+- **Describir imágenes**: Describir imágenes en detalle
+- **Generar imágenes**: Generar imágenes a partir de texto
+
+En Sim, la integración de Vision permite a tus agentes analizar imágenes con modelos de visión como parte de sus flujos de trabajo. Esto permite potentes escenarios de automatización que requieren analizar imágenes con modelos de visión. Tus agentes pueden analizar imágenes con modelos de visión, extraer texto de imágenes, identificar objetos en imágenes, describir imágenes en detalle y generar imágenes a partir de texto. Esta integración cierra la brecha entre tus flujos de trabajo de IA y tus necesidades de análisis de imágenes, permitiendo automatizaciones más sofisticadas y centradas en imágenes. Al conectar Sim con Vision, puedes crear agentes que se mantengan actualizados con la información más reciente, proporcionen respuestas más precisas y entreguen más valor a los usuarios - todo sin requerir intervención manual o código personalizado.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Procesa contenido visual con indicaciones personalizables para extraer información y conocimientos de las imágenes.
+
+## Herramientas
+
+### `vision_tool`
+
+Procesa y analiza imágenes utilizando modelos avanzados de visión. Capaz de comprender el contenido de imágenes, extraer texto, identificar objetos y proporcionar descripciones visuales detalladas.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `apiKey` | string | Sí | Clave API para el proveedor de modelo seleccionado |
+| `imageUrl` | string | Sí | URL de imagen de acceso público |
+| `model` | string | No | Modelo de visión a utilizar \(gpt-4o, claude-3-opus-20240229, etc\) |
+| `prompt` | string | No | Indicación personalizada para análisis de imágenes |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | string | El contenido analizado y la descripción de la imagen |
+| `model` | string | El modelo de visión que se utilizó para el análisis |
+| `tokens` | number | Total de tokens utilizados para el análisis |
+| `usage` | object | Desglose detallado del uso de tokens |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `vision`
diff --git a/apps/docs/content/docs/es/tools/wealthbox.mdx b/apps/docs/content/docs/es/tools/wealthbox.mdx
new file mode 100644
index 0000000000..365bd2c4a7
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/wealthbox.mdx
@@ -0,0 +1,160 @@
+---
+title: Wealthbox
+description: Interactúa con Wealthbox
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Wealthbox](https://www.wealthbox.com/) es una plataforma CRM completa diseñada específicamente para asesores financieros y profesionales de gestión patrimonial. Proporciona un sistema centralizado para gestionar relaciones con clientes, seguimiento de interacciones y organización de flujos de trabajo empresariales en la industria de servicios financieros.
+
+Con Wealthbox, puedes:
+
+- **Gestionar relaciones con clientes**: Almacenar información detallada de contactos, datos de antecedentes e historiales de relaciones para todos tus clientes
+- **Seguimiento de interacciones**: Crear y mantener notas sobre reuniones, llamadas y otros puntos de contacto con clientes
+- **Organizar tareas**: Programar y gestionar actividades de seguimiento, fechas límite y elementos de acción importantes
+- **Documentar flujos de trabajo**: Mantener registros completos de comunicaciones con clientes y procesos de negocio
+- **Acceder a datos de clientes**: Recuperar información rápidamente con gestión organizada de contactos y capacidades de búsqueda
+- **Automatizar seguimientos**: Establecer recordatorios y programar tareas para asegurar un compromiso constante con el cliente
+
+En Sim, la integración de Wealthbox permite a tus agentes interactuar sin problemas con tus datos de CRM mediante autenticación OAuth. Esto permite potentes escenarios de automatización como la creación automática de notas de clientes a partir de transcripciones de reuniones, actualización de información de contacto, programación de tareas de seguimiento y recuperación de detalles de clientes para comunicaciones personalizadas. Tus agentes pueden leer notas existentes, contactos y tareas para entender el historial del cliente, mientras también crean nuevas entradas para mantener registros actualizados. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la gestión de relaciones con clientes, permitiendo la entrada automatizada de datos, información inteligente sobre clientes y procesos administrativos optimizados que liberan tiempo para actividades más valiosas orientadas al cliente.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Integra la funcionalidad de Wealthbox para gestionar notas, contactos y tareas. Lee contenido de notas, contactos y tareas existentes y escribe en ellos usando autenticación OAuth. Compatible con manipulación de contenido de texto para creación y edición de notas.
+
+## Herramientas
+
+### `wealthbox_read_note`
+
+Leer contenido de una nota de Wealthbox
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `noteId` | string | No | El ID de la nota a leer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Datos y metadatos de la nota |
+
+### `wealthbox_write_note`
+
+Crear o actualizar una nota de Wealthbox
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `content` | string | Sí | El cuerpo principal de la nota |
+| `contactId` | string | No | ID del contacto para vincular a esta nota |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Datos y metadatos de la nota creada o actualizada |
+
+### `wealthbox_read_contact`
+
+Leer contenido de un contacto de Wealthbox
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `contactId` | string | No | El ID del contacto a leer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Datos y metadatos del contacto |
+
+### `wealthbox_write_contact`
+
+Crear un nuevo contacto en Wealthbox
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `firstName` | string | Sí | El nombre del contacto |
+| `lastName` | string | Sí | El apellido del contacto |
+| `emailAddress` | string | No | La dirección de correo electrónico del contacto |
+| `backgroundInformation` | string | No | Información de antecedentes sobre el contacto |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Datos y metadatos del contacto creado o actualizado |
+
+### `wealthbox_read_task`
+
+Leer contenido de una tarea de Wealthbox
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `taskId` | string | No | El ID de la tarea a leer |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Datos y metadatos de la tarea |
+
+### `wealthbox_write_task`
+
+Crear o actualizar una tarea de Wealthbox
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `title` | string | Sí | El nombre/título de la tarea |
+| `dueDate` | string | Sí | La fecha y hora de vencimiento de la tarea \(formato: "AAAA-MM-DD HH:MM AM/PM -HHMM", p. ej., "2015-05-24 11:00 AM -0400"\) |
+| `contactId` | string | No | ID del contacto para vincular a esta tarea |
+| `description` | string | No | Descripción o notas sobre la tarea |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito de la operación |
+| `output` | object | Datos y metadatos de la tarea creada o actualizada |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `wealthbox`
diff --git a/apps/docs/content/docs/es/tools/webhook.mdx b/apps/docs/content/docs/es/tools/webhook.mdx
new file mode 100644
index 0000000000..efb251e591
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/webhook.mdx
@@ -0,0 +1,28 @@
+---
+title: Webhook
+description: Activa la ejecución de flujos de trabajo desde webhooks externos
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+ `}
+/>
+
+## Notas
+
+- Categoría: `triggers`
+- Tipo: `webhook`
diff --git a/apps/docs/content/docs/es/tools/whatsapp.mdx b/apps/docs/content/docs/es/tools/whatsapp.mdx
new file mode 100644
index 0000000000..b61aa7031a
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/whatsapp.mdx
@@ -0,0 +1,68 @@
+---
+title: WhatsApp
+description: Enviar mensajes de WhatsApp
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[WhatsApp](https://www.whatsapp.com/) es una plataforma de mensajería globalmente popular que permite una comunicación segura y confiable entre individuos y empresas.
+
+La API de WhatsApp Business proporciona a las organizaciones potentes capacidades para:
+
+- **Interactuar con clientes**: Enviar mensajes personalizados, notificaciones y actualizaciones directamente a la aplicación de mensajería preferida de los clientes
+- **Automatizar conversaciones**: Crear chatbots interactivos y sistemas de respuesta automatizada para consultas comunes
+- **Mejorar el soporte**: Proporcionar servicio al cliente en tiempo real a través de una interfaz familiar con soporte para contenido multimedia
+- **Impulsar conversiones**: Facilitar transacciones y seguimientos con clientes en un entorno seguro y conforme
+
+En Sim, la integración con WhatsApp permite a tus agentes aprovechar estas capacidades de mensajería como parte de sus flujos de trabajo. Esto crea oportunidades para escenarios sofisticados de interacción con clientes como recordatorios de citas, códigos de verificación, alertas y conversaciones interactivas. La integración conecta tus flujos de trabajo de IA con los canales de comunicación de los clientes, permitiendo que tus agentes entreguen información oportuna y relevante directamente a los dispositivos móviles de los usuarios. Al conectar Sim con WhatsApp, puedes construir agentes inteligentes que interactúen con los clientes a través de su plataforma de mensajería preferida, mejorando la experiencia del usuario mientras automatizas tareas rutinarias de mensajería.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Envía mensajes a usuarios de WhatsApp utilizando la API de WhatsApp Business. Requiere configuración de la API de WhatsApp Business.
+
+## Herramientas
+
+### `whatsapp_send_message`
+
+Enviar mensajes de WhatsApp
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ---------- | ----------- |
+| `phoneNumber` | string | Sí | Número de teléfono del destinatario con código de país |
+| `message` | string | Sí | Contenido del mensaje a enviar |
+| `phoneNumberId` | string | Sí | ID del número de teléfono de WhatsApp Business |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `success` | boolean | Estado de éxito del envío del mensaje de WhatsApp |
+| `messageId` | string | Identificador único del mensaje de WhatsApp |
+| `phoneNumber` | string | Número de teléfono del destinatario |
+| `status` | string | Estado de entrega del mensaje |
+| `timestamp` | string | Marca de tiempo del envío del mensaje |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `whatsapp`
diff --git a/apps/docs/content/docs/es/tools/wikipedia.mdx b/apps/docs/content/docs/es/tools/wikipedia.mdx
new file mode 100644
index 0000000000..e205b60c35
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/wikipedia.mdx
@@ -0,0 +1,127 @@
+---
+title: Wikipedia
+description: Busca y recupera contenido de Wikipedia
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[Wikipedia](https://www.wikipedia.org/) es la enciclopedia en línea gratuita más grande del mundo, que ofrece millones de artículos sobre una amplia gama de temas, escritos y mantenidos colaborativamente por voluntarios.
+
+Con Wikipedia, puedes:
+
+- **Buscar artículos**: Encuentra páginas relevantes de Wikipedia buscando por palabras clave o temas
+- **Obtener resúmenes de artículos**: Recupera resúmenes concisos de páginas de Wikipedia para consultas rápidas
+- **Acceder al contenido completo**: Obtén el contenido completo de los artículos de Wikipedia para información detallada
+- **Descubrir artículos aleatorios**: Explora nuevos temas recuperando páginas aleatorias de Wikipedia
+
+En Sim, la integración con Wikipedia permite a tus agentes acceder e interactuar programáticamente con el contenido de Wikipedia como parte de sus flujos de trabajo. Los agentes pueden buscar artículos, obtener resúmenes, recuperar contenido completo de páginas y descubrir artículos aleatorios, potenciando tus automatizaciones con información actualizada y confiable de la enciclopedia más grande del mundo. Esta integración es ideal para escenarios como investigación, enriquecimiento de contenido, verificación de hechos y descubrimiento de conocimiento, permitiendo a tus agentes incorporar perfectamente datos de Wikipedia en sus procesos de toma de decisiones y ejecución de tareas.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Accede a artículos de Wikipedia, busca páginas, obtén resúmenes, recupera contenido completo y descubre artículos aleatorios de la enciclopedia más grande del mundo.
+
+## Herramientas
+
+### `wikipedia_summary`
+
+Obtén un resumen y metadatos de una página específica de Wikipedia.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `pageTitle` | string | Sí | Título de la página de Wikipedia para obtener el resumen |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `summary` | object | Resumen y metadatos de la página de Wikipedia |
+
+### `wikipedia_search`
+
+Buscar páginas de Wikipedia por título o contenido.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `query` | string | Sí | Consulta de búsqueda para encontrar páginas de Wikipedia |
+| `searchLimit` | number | No | Número máximo de resultados a devolver \(predeterminado: 10, máximo: 50\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `searchResults` | array | Array de páginas de Wikipedia coincidentes |
+
+### `wikipedia_content`
+
+Obtener el contenido HTML completo de una página de Wikipedia.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `pageTitle` | string | Sí | Título de la página de Wikipedia para obtener su contenido |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `content` | object | Contenido HTML completo y metadatos de la página de Wikipedia |
+
+### `wikipedia_random`
+
+Obtener una página aleatoria de Wikipedia.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `randomPage` | object | Datos de una página aleatoria de Wikipedia |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `wikipedia`
diff --git a/apps/docs/content/docs/es/tools/x.mdx b/apps/docs/content/docs/es/tools/x.mdx
new file mode 100644
index 0000000000..df99895572
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/x.mdx
@@ -0,0 +1,117 @@
+---
+title: X
+description: Interactúa con X
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[X](https://x.com/) (anteriormente Twitter) es una plataforma popular de redes sociales que permite la comunicación en tiempo real, compartir contenido e interactuar con audiencias en todo el mundo.
+
+La integración de X en Sim utiliza autenticación OAuth para conectarse de forma segura con la API de X, permitiendo a tus agentes interactuar con la plataforma de manera programática. Esta implementación OAuth garantiza un acceso seguro a las funciones de X mientras mantiene la privacidad y seguridad del usuario.
+
+Con la integración de X, tus agentes pueden:
+
+- **Publicar contenido**: crear nuevos tweets, responder a conversaciones existentes o compartir medios directamente desde tus flujos de trabajo
+- **Monitorear conversaciones**: seguir menciones, palabras clave o cuentas específicas para mantenerse informado sobre discusiones relevantes
+- **Interactuar con audiencias**: responder automáticamente a menciones, mensajes directos o activadores específicos
+- **Analizar tendencias**: obtener información de temas tendencia, hashtags o patrones de interacción de usuarios
+- **Investigar información**: buscar contenido específico, perfiles de usuario o conversaciones para informar decisiones de agentes
+
+En Sim, la integración con X permite escenarios sofisticados de automatización de redes sociales. Tus agentes pueden monitorear menciones de marca y responder adecuadamente, programar y publicar contenido basado en activadores específicos, realizar escucha social para investigación de mercado, o crear experiencias interactivas que abarquen tanto la IA conversacional como la interacción en redes sociales. Al conectar Sim con X a través de OAuth, puedes construir agentes inteligentes que mantengan una presencia consistente y receptiva en redes sociales mientras se adhieren a las políticas de la plataforma y las mejores prácticas para el uso de API.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Conéctate con X para publicar tweets, leer contenido, buscar información y acceder a perfiles de usuarios. Integra capacidades de redes sociales en tu flujo de trabajo con acceso completo a la plataforma X.
+
+## Herramientas
+
+### `x_write`
+
+Publica nuevos tweets, responde a tweets o crea encuestas en X (Twitter)
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `text` | string | Sí | El contenido de texto de tu tweet |
+| `replyTo` | string | No | ID del tweet al que responder |
+| `mediaIds` | array | No | Array de IDs de medios para adjuntar al tweet |
+| `poll` | object | No | Configuración de encuesta para el tweet |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `tweet` | object | Los datos del tweet recién creado |
+
+### `x_read`
+
+Lee detalles de tweets, incluyendo respuestas y contexto de la conversación
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `tweetId` | string | Sí | ID del tweet a leer |
+| `includeReplies` | boolean | No | Si se deben incluir las respuestas al tweet |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `tweet` | object | Los datos del tweet principal |
+
+### `x_search`
+
+Busca tweets usando palabras clave, hashtags o consultas avanzadas
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `query` | string | Sí | Consulta de búsqueda \(admite operadores de búsqueda de X\) |
+| `maxResults` | number | No | Número máximo de resultados a devolver \(predeterminado: 10, máximo: 100\) |
+| `startTime` | string | No | Hora de inicio para la búsqueda \(formato ISO 8601\) |
+| `endTime` | string | No | Hora de finalización para la búsqueda \(formato ISO 8601\) |
+| `sortOrder` | string | No | Orden de clasificación para los resultados \(recency o relevancy\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `tweets` | array | Array de tweets que coinciden con la consulta de búsqueda |
+
+### `x_user`
+
+Obtener información del perfil de usuario
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | -------- | ----------- |
+| `username` | string | Sí | Nombre de usuario a buscar \(sin el símbolo @\) |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `user` | object | Información del perfil de usuario de X |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `x`
diff --git a/apps/docs/content/docs/es/tools/youtube.mdx b/apps/docs/content/docs/es/tools/youtube.mdx
new file mode 100644
index 0000000000..e9f749f778
--- /dev/null
+++ b/apps/docs/content/docs/es/tools/youtube.mdx
@@ -0,0 +1,67 @@
+---
+title: YouTube
+description: Buscar videos en YouTube
+---
+
+import { BlockInfoCard } from "@/components/ui/block-info-card"
+
+
+
+ `}
+/>
+
+{/* MANUAL-CONTENT-START:intro */}
+[YouTube](https://www.youtube.com/) es la plataforma de compartición de videos más grande del mundo, alojando miles de millones de videos y atendiendo a más de 2 mil millones de usuarios mensuales registrados.
+
+Con las amplias capacidades de la API de YouTube, puedes:
+
+- **Buscar contenido**: Encontrar videos relevantes en la extensa biblioteca de YouTube usando palabras clave específicas, filtros y parámetros
+- **Acceder a metadatos**: Obtener información detallada sobre videos incluyendo títulos, descripciones, número de visualizaciones y métricas de interacción
+- **Analizar tendencias**: Identificar contenido popular y temas tendencia dentro de categorías o regiones específicas
+- **Extraer insights**: Recopilar datos sobre preferencias de la audiencia, rendimiento del contenido y patrones de interacción
+
+En Sim, la integración con YouTube permite a tus agentes buscar y analizar programáticamente el contenido de YouTube como parte de sus flujos de trabajo. Esto permite potentes escenarios de automatización que requieren información actualizada de videos. Tus agentes pueden buscar videos instructivos, investigar tendencias de contenido, recopilar información de canales educativos o monitorear creadores específicos para nuevas subidas. Esta integración cierra la brecha entre tus flujos de trabajo de IA y el repositorio de videos más grande del mundo, permitiendo automatizaciones más sofisticadas y conscientes del contenido. Al conectar Sim con YouTube, puedes crear agentes que se mantengan actualizados con la información más reciente, proporcionen respuestas más precisas y entreguen más valor a los usuarios - todo sin requerir intervención manual o código personalizado.
+{/* MANUAL-CONTENT-END */}
+
+## Instrucciones de uso
+
+Encuentra videos relevantes en YouTube utilizando la API de datos de YouTube. Busca contenido con límites de resultados personalizables y obtén metadatos estructurados de videos para integrarlos en tu flujo de trabajo.
+
+## Herramientas
+
+### `youtube_search`
+
+Busca videos en YouTube utilizando la API de datos de YouTube.
+
+#### Entrada
+
+| Parámetro | Tipo | Obligatorio | Descripción |
+| --------- | ---- | ----------- | ----------- |
+| `query` | string | Sí | Consulta de búsqueda para videos de YouTube |
+| `maxResults` | number | No | Número máximo de videos a devolver |
+| `apiKey` | string | Sí | Clave API de YouTube |
+
+#### Salida
+
+| Parámetro | Tipo | Descripción |
+| --------- | ---- | ----------- |
+| `items` | array | Array de videos de YouTube que coinciden con la consulta de búsqueda |
+
+## Notas
+
+- Categoría: `tools`
+- Tipo: `youtube`
diff --git a/apps/docs/content/docs/es/triggers/schedule.mdx b/apps/docs/content/docs/es/triggers/schedule.mdx
new file mode 100644
index 0000000000..727e106f61
--- /dev/null
+++ b/apps/docs/content/docs/es/triggers/schedule.mdx
@@ -0,0 +1,73 @@
+---
+title: Programación
+---
+
+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'
+
+El bloque de Programación activa automáticamente flujos de trabajo de forma recurrente en intervalos o momentos específicos.
+
+
+
+
+
+## Opciones de programación
+
+Configura cuándo se ejecuta tu flujo de trabajo utilizando las opciones desplegables:
+
+
+
+
+ Cada pocos minutos : intervalos de 5, 15, 30 minutos
+ Por hora : Cada hora o cada pocas horas
+ Diariamente : Una o varias veces al día
+ Semanalmente : Días específicos de la semana
+ Mensualmente : Días específicos del mes
+
+
+
+ Usa expresiones cron para programación avanzada:
+
+
0 9 * * 1-5 - Cada día laborable a las 9 AM
+
*/15 * * * * - Cada 15 minutos
+
0 0 1 * * - Primer día de cada mes
+
+
+
+
+## Configuración de programaciones
+
+
+
+
+
+Cuando un flujo de trabajo está programado:
+- La programación se vuelve **activa** y muestra el próximo tiempo de ejecución
+- Haz clic en el botón **"Programado"** para desactivar la programación
+- Las programaciones se desactivan automáticamente después de **3 fallos consecutivos**
+
+## Programaciones desactivadas
+
+
+
+
+
+Las programaciones desactivadas muestran cuándo estuvieron activas por última vez y pueden ser reactivadas en cualquier momento.
+
+
+Los bloques de programación no pueden recibir conexiones entrantes y funcionan exclusivamente como disparadores de flujos de trabajo.
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/triggers/starter.mdx b/apps/docs/content/docs/es/triggers/starter.mdx
new file mode 100644
index 0000000000..ecebac206e
--- /dev/null
+++ b/apps/docs/content/docs/es/triggers/starter.mdx
@@ -0,0 +1,63 @@
+---
+title: Starter
+---
+
+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'
+
+El bloque Starter te permite iniciar manualmente la ejecución del flujo de trabajo con parámetros de entrada, ofreciendo dos modos de entrada: parámetros estructurados o chat conversacional.
+
+
+
+
+
+## Modos de ejecución
+
+Elige tu método de entrada desde el menú desplegable:
+
+
+
+
+
+ Entradas estructuradas compatibles con API : Define parámetros específicos (texto, número, booleano, JSON, archivo, fecha)
+ Pruebas mientras construyes tu flujo de trabajo : Iteración rápida durante la depuración de flujos de trabajo
+
+
+
+
+
+
+
Configura parámetros de entrada que estarán disponibles al implementar como un punto final de API.
+
+
+
+
+
+ Lenguaje natural : Los usuarios escriben preguntas o solicitudes
+ Conversacional : Ideal para flujos de trabajo impulsados por IA
+
+
+
+
+
+
+
Chatea con tu flujo de trabajo y accede al texto de entrada, ID de conversación y archivos subidos para respuestas contextualizadas.
+
+
+
+
+## Uso de variables de chat
+
+En el modo Chat, accede a la entrada del usuario y al contexto de la conversación a través de variables especiales:
+
+- **``** - Contiene el texto del mensaje del usuario
+- **``** - Identificador único para el hilo de conversación
+- **``** - Array de archivos subidos por el usuario (si los hay)
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/triggers/webhook.mdx b/apps/docs/content/docs/es/triggers/webhook.mdx
new file mode 100644
index 0000000000..f81e4bed3a
--- /dev/null
+++ b/apps/docs/content/docs/es/triggers/webhook.mdx
@@ -0,0 +1,126 @@
+---
+title: Webhooks
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Video } from '@/components/ui/video'
+
+Los webhooks permiten que servicios externos activen la ejecución de flujos de trabajo desde webhooks externos mediante el envío de solicitudes HTTP a tu flujo de trabajo. Sim admite dos enfoques para los disparadores basados en webhooks.
+
+## Disparador de webhook genérico
+
+El bloque de webhook genérico crea un punto de conexión flexible que puede recibir cualquier carga útil y activar tu flujo de trabajo:
+
+
+
+
+
+### Cómo funciona
+
+1. **Añadir bloque de webhook genérico** - Arrastra el bloque de webhook genérico para iniciar tu flujo de trabajo
+2. **Configurar carga útil** - Configura la estructura de carga útil esperada (opcional)
+3. **Obtener URL del webhook** - Copia el punto de conexión único generado automáticamente
+4. **Integración externa** - Configura tu servicio externo para enviar solicitudes POST a esta URL
+5. **Ejecución del flujo de trabajo** - Cada solicitud a la URL del webhook activa el flujo de trabajo
+
+### Características
+
+- **Carga útil flexible**: Acepta cualquier estructura de carga útil JSON
+- **Análisis automático**: Los datos del webhook se analizan automáticamente y están disponibles para los bloques subsiguientes
+- **Autenticación**: Autenticación opcional mediante token bearer o encabezado personalizado
+- **Limitación de tasa**: Protección incorporada contra abusos
+- **Deduplicación**: Evita ejecuciones duplicadas de solicitudes repetidas
+
+
+El disparador de webhook genérico se activa cada vez que la URL del webhook recibe una solicitud, lo que lo hace perfecto para integraciones en tiempo real.
+
+
+## Modo de disparador para bloques de servicio
+
+Alternativamente, puedes usar bloques de servicio específicos (como Slack, GitHub, etc.) en "modo de disparador" para crear puntos de conexión de webhook más especializados:
+
+
+
+
+
+### Configuración del modo de activación
+
+1. **Añadir bloque de servicio** - Elige un bloque de servicio (p. ej., Slack, GitHub, Airtable)
+2. **Habilitar modo de activación** - Activa "Usar como activador" en la configuración del bloque
+3. **Configurar servicio** - Configura la autenticación y los filtros de eventos específicos para ese servicio
+4. **Registro del webhook** - El servicio registra automáticamente el webhook en la plataforma externa
+5. **Ejecución basada en eventos** - El flujo de trabajo se activa solo para eventos específicos de ese servicio
+
+### Cuándo usar cada enfoque
+
+**Usa webhook genérico cuando:**
+- Integres con aplicaciones o servicios personalizados
+- Necesites máxima flexibilidad en la estructura de la carga útil
+- Trabajes con servicios que no tienen bloques dedicados
+- Construyas integraciones internas
+
+**Usa el modo de activación cuando:**
+- Trabajes con servicios compatibles (Slack, GitHub, etc.)
+- Quieras filtrado de eventos específico del servicio
+- Necesites registro automático de webhooks
+- Quieras manejo estructurado de datos para ese servicio
+
+## Servicios compatibles con el modo de activación
+
+Los siguientes bloques de servicio admiten el modo de activación:
+
+- **Slack** - Mensajes, menciones, reacciones
+- **GitHub** - Eventos de push, PR, issues
+- **Airtable** - Cambios en registros
+- **Telegram** - Mensajes y comandos de bot
+- **Gmail** - Notificaciones de correo electrónico
+- **WhatsApp** - Eventos de mensajería
+- **Jira** - Actualizaciones de issues, comentarios
+- **Linear** - Cambios de estado de issues
+- **Notion** - Actualizaciones de páginas
+
+## Seguridad y mejores prácticas
+
+### Opciones de autenticación
+
+- **Tokens Bearer**: Incluye el encabezado `Authorization: Bearer `
+- **Encabezados personalizados**: Define encabezados de autenticación personalizados
+
+### Manejo de carga útil
+
+- **Validación**: Valida las cargas útiles entrantes para prevenir datos mal formados
+- **Límites de tamaño**: Los webhooks tienen límites de tamaño de carga útil por seguridad
+- **Manejo de errores**: Configura respuestas de error para solicitudes no válidas
+
+### Pruebas de webhooks
+
+1. Utiliza herramientas como Postman o curl para probar tus endpoints de webhook
+2. Revisa los registros de ejecución del flujo de trabajo para depuración
+3. Verifica que la estructura de la carga útil coincida con tus expectativas
+4. Prueba escenarios de autenticación y errores
+
+
+Siempre valida y desinfecta los datos entrantes de webhook antes de procesarlos en tus flujos de trabajo.
+
+
+## Casos de uso comunes
+
+### Notificaciones en tiempo real
+- Mensajes de Slack que desencadenan respuestas automatizadas
+- Notificaciones por correo electrónico para eventos críticos
+
+### Integración CI/CD
+- Pushes de GitHub que desencadenan flujos de trabajo de despliegue
+- Actualizaciones del estado de compilación
+- Canales automatizados de pruebas
+
+### Sincronización de datos
+- Cambios en Airtable que actualizan otros sistemas
+- Envíos de formularios que desencadenan acciones de seguimiento
+- Procesamiento de pedidos de comercio electrónico
+
+### Atención al cliente
+- Flujos de trabajo de creación de tickets de soporte
+- Procesos automatizados de escalamiento
+- Enrutamiento de comunicación multicanal
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/variables/environment-variables.mdx b/apps/docs/content/docs/es/variables/environment-variables.mdx
new file mode 100644
index 0000000000..74b3013dc4
--- /dev/null
+++ b/apps/docs/content/docs/es/variables/environment-variables.mdx
@@ -0,0 +1,96 @@
+---
+title: Variables de entorno
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+Las variables de entorno proporcionan una forma segura de gestionar valores de configuración y secretos en tus flujos de trabajo, incluyendo claves API y otros datos sensibles que tus flujos de trabajo necesitan acceder. Mantienen los secretos fuera de las definiciones de tu flujo de trabajo mientras los hacen disponibles durante la ejecución.
+
+## Tipos de variables
+
+Las variables de entorno en Sim funcionan en dos niveles:
+
+- **Variables de entorno personales**: Privadas para tu cuenta, solo tú puedes verlas y usarlas
+- **Variables de entorno del espacio de trabajo**: Compartidas en todo el espacio de trabajo, disponibles para todos los miembros del equipo
+
+
+Las variables de entorno del espacio de trabajo tienen prioridad sobre las personales cuando hay un conflicto de nombres.
+
+
+## Configuración de variables de entorno
+
+Navega a Configuración para configurar tus variables de entorno:
+
+
+
+Desde la configuración de tu espacio de trabajo, puedes crear y gestionar variables de entorno tanto personales como a nivel de espacio de trabajo. Las variables personales son privadas para tu cuenta, mientras que las variables del espacio de trabajo se comparten con todos los miembros del equipo.
+
+### Hacer variables con ámbito de espacio de trabajo
+
+Usa el interruptor de ámbito del espacio de trabajo para hacer que las variables estén disponibles para todo tu equipo:
+
+
+
+Cuando habilitas el ámbito del espacio de trabajo, la variable se vuelve disponible para todos los miembros del espacio de trabajo y puede ser utilizada en cualquier flujo de trabajo dentro de ese espacio de trabajo.
+
+### Vista de variables del espacio de trabajo
+
+Una vez que tienes variables con ámbito de espacio de trabajo, aparecen en tu lista de variables de entorno:
+
+
+
+## Uso de variables en flujos de trabajo
+
+Para hacer referencia a variables de entorno en tus flujos de trabajo, utiliza la notación `{{}}`. Cuando escribas `{{` en cualquier campo de entrada, aparecerá un menú desplegable mostrando tanto tus variables de entorno personales como las del espacio de trabajo. Simplemente selecciona la variable que deseas utilizar.
+
+
+
+## Precedencia de variables
+
+Cuando tienes variables personales y de espacio de trabajo con el mismo nombre:
+
+1. **Las variables del espacio de trabajo tienen precedencia** sobre las variables personales
+2. Esto previene conflictos de nombres y asegura un comportamiento consistente en los flujos de trabajo del equipo
+3. Si existe una variable de espacio de trabajo, la variable personal con el mismo nombre será ignorada
+
+
+Elige los nombres de las variables cuidadosamente para evitar sobrescrituras no deseadas. Considera usar prefijos con tus iniciales para variables personales o con el nombre del proyecto para variables del espacio de trabajo.
+
+
+## Mejores prácticas de seguridad
+
+### Para datos sensibles
+- Almacena claves API, tokens y contraseñas como variables de entorno en lugar de codificarlos directamente
+- Usa variables de espacio de trabajo para recursos compartidos que varios miembros del equipo necesitan
+- Mantén las credenciales personales en variables personales
+
+### Nomenclatura de variables
+- Usa nombres descriptivos: `DATABASE_URL` en lugar de `DB`
+- Sigue convenciones de nomenclatura consistentes en todo tu equipo
+- Considera usar prefijos para evitar conflictos: `PROD_API_KEY`, `DEV_API_KEY`
+
+### Control de acceso
+- Las variables de entorno del espacio de trabajo respetan los permisos del espacio de trabajo
+- Solo los usuarios con acceso de escritura o superior pueden crear/modificar variables del espacio de trabajo
+- Las variables personales siempre son privadas para el usuario individual
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/variables/workflow-variables.mdx b/apps/docs/content/docs/es/variables/workflow-variables.mdx
new file mode 100644
index 0000000000..68bca6d5d3
--- /dev/null
+++ b/apps/docs/content/docs/es/variables/workflow-variables.mdx
@@ -0,0 +1,141 @@
+---
+title: Variables de flujo de trabajo
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Step, Steps } from 'fumadocs-ui/components/steps'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+import { Video } from '@/components/ui/video'
+
+Las variables en Sim actúan como un almacén global de datos que puede ser accedido y modificado por cualquier bloque en tu flujo de trabajo, permitiéndote almacenar y compartir datos a través de tu flujo de trabajo con variables globales. Proporcionan una forma poderosa de compartir información entre diferentes partes de tu flujo de trabajo, mantener el estado y crear aplicaciones más dinámicas.
+
+
+
+
+
+
+ Las variables te permiten almacenar y compartir datos a través de todo tu flujo de trabajo, facilitando
+ el mantenimiento del estado y la creación de sistemas complejos e interconectados.
+
+
+## Descripción general
+
+La función de Variables sirve como un almacén central de datos para tu flujo de trabajo, permitiéndote:
+
+
+
+ Almacenar datos globales : Crear variables que persisten durante toda la ejecución del flujo de trabajo
+
+
+ Compartir información entre bloques : Acceder a los mismos datos desde cualquier bloque en tu
+ flujo de trabajo
+
+
+ Mantener el estado del flujo de trabajo : Realizar un seguimiento de valores importantes mientras se ejecuta tu flujo de trabajo
+
+
+ Crear flujos de trabajo dinámicos : Construir sistemas más flexibles que pueden adaptarse según los
+ valores almacenados
+
+
+
+## Creación de variables
+
+Puedes crear y gestionar variables desde el panel de Variables en la barra lateral. Cada variable tiene:
+
+- **Nombre**: Un identificador único utilizado para referenciar la variable
+- **Valor**: Los datos almacenados en la variable (admite varios tipos de datos)
+- **Descripción** (opcional): Una nota que explica el propósito de la variable
+
+## Acceso a variables
+
+Se puede acceder a las variables desde cualquier bloque en tu flujo de trabajo utilizando el menú desplegable de variables. Simplemente:
+
+1. Escribe `<` en cualquier campo de texto dentro de un bloque
+2. Navega por el menú desplegable para seleccionar entre las variables disponibles
+3. Selecciona la variable que quieres usar
+
+
+
+
+
+
+ También puedes arrastrar la etiqueta de conexión a un campo para abrir el desplegable de variables y acceder a
+ las variables disponibles.
+
+
+## Tipos de variables
+
+Las variables en Sim pueden almacenar varios tipos de datos:
+
+
+
+
+ ```
+ "Hello, World!"
+ ```
+
+ Las variables de texto almacenan cadenas de caracteres. Son útiles para guardar mensajes, nombres y otros datos de texto.
+
+
+
+ ```
+ 42
+ ```
+
+ Las variables numéricas almacenan valores numéricos que pueden usarse en cálculos o comparaciones.
+
+
+
+ ```
+ true
+ ```
+
+ Las variables booleanas almacenan valores verdadero/falso, perfectas para indicadores y comprobaciones de condiciones.
+
+
+
+ ```json
+ {
+ "name": "John",
+ "age": 30,
+ "city": "New York"
+ }
+ ```
+
+ Las variables de objeto almacenan datos estructurados con propiedades y valores.
+
+
+
+ ```json
+ [1, 2, 3, "four", "five"]
+ ```
+
+ Las variables de array almacenan colecciones ordenadas de elementos.
+
+
+
+## Uso de variables en bloques
+
+Cuando accedes a una variable desde un bloque, puedes:
+
+- **Leer su valor**: Utilizar el valor actual de la variable en la lógica de tu bloque
+- **Modificarla**: Actualizar el valor de la variable según el procesamiento de tu bloque
+- **Usarla en expresiones**: Incluir variables en expresiones y cálculos
+
+## Ámbito de las variables
+
+Las variables en Sim tienen ámbito global, lo que significa:
+
+- Son accesibles desde cualquier bloque en tu flujo de trabajo
+- Los cambios en las variables persisten durante toda la ejecución del flujo de trabajo
+- Las variables mantienen sus valores entre ejecuciones, a menos que se restablezcan explícitamente
+
+## Mejores prácticas
+
+- **Usa nombres descriptivos**: Elige nombres de variables que indiquen claramente lo que representa la variable. Por ejemplo, usa `userPreferences` en lugar de `up`.
+- **Documenta tus variables**: Añade descripciones a tus variables para ayudar a otros miembros del equipo a entender su propósito y uso.
+- **Considera el ámbito de las variables**: Recuerda que las variables son globales y pueden ser modificadas por cualquier bloque. Diseña tu flujo de trabajo teniendo esto en cuenta para evitar comportamientos inesperados.
+- **Inicializa las variables temprano**: Configura e inicializa tus variables al principio de tu flujo de trabajo para asegurarte de que estén disponibles cuando se necesiten.
+- **Maneja variables ausentes**: Siempre considera el caso en que una variable podría no existir todavía o podría tener un valor inesperado. Añade la validación apropiada en tus bloques.
+- **Limita la cantidad de variables**: Mantén el número de variables manejable. Demasiadas variables pueden hacer que tu flujo de trabajo sea difícil de entender y mantener.
diff --git a/apps/docs/content/docs/es/yaml/block-reference.mdx b/apps/docs/content/docs/es/yaml/block-reference.mdx
new file mode 100644
index 0000000000..293dd60334
--- /dev/null
+++ b/apps/docs/content/docs/es/yaml/block-reference.mdx
@@ -0,0 +1,242 @@
+---
+title: Sintaxis de referencia de bloques
+description: Cómo referenciar datos entre bloques en flujos de trabajo YAML
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+
+Las referencias de bloques son la base del flujo de datos en los flujos de trabajo de Sim. Entender cómo referenciar correctamente las salidas de un bloque como entradas para otro es esencial para construir flujos de trabajo funcionales.
+
+## Reglas básicas de referencia
+
+### 1. Usa nombres de bloques, no IDs de bloques
+
+
+
+
+ ```yaml
+ # Block definition
+ email-sender:
+ type: agent
+ name: "Email Generator"
+ # ... configuration
+
+ # Reference the block
+ next-block:
+ inputs:
+ userPrompt: "Process this: "
+ ```
+
+
+
+
+ ```yaml
+ # Block definition
+ email-sender:
+ type: agent
+ name: "Email Generator"
+ # ... configuration
+
+ # ❌ Don't reference by block ID
+ next-block:
+ inputs:
+ userPrompt: "Process this: "
+ ```
+
+
+
+
+### 2. Convierte nombres al formato de referencia
+
+Para crear una referencia de bloque:
+
+1. **Toma el nombre del bloque**: "Email Generator"
+2. **Conviértelo a minúsculas**: "email generator"
+3. **Elimina espacios y caracteres especiales**: "emailgenerator"
+4. **Añade la propiedad**: ``
+
+### 3. Usa las propiedades correctas
+
+Diferentes tipos de bloques exponen diferentes propiedades:
+
+- **Bloques de agente**: `.content` (la respuesta de la IA)
+- **Bloques de función**: `.output` (el valor de retorno)
+- **Bloques de API**: `.output` (los datos de respuesta)
+- **Bloques de herramientas**: `.output` (el resultado de la herramienta)
+
+## Ejemplos de referencias
+
+### Referencias de bloques comunes
+
+```yaml
+# Agent block outputs
+ # Primary AI response
+ # Token usage information
+ # Estimated cost
+ # Tool execution details
+
+# Function block outputs
+ # Function return value
+ # Error information (if any)
+
+# API block outputs
+ # Response data
+ # HTTP status code
+ # Response headers
+
+# Tool block outputs
+ # Tool execution result
+```
+
+### Nombres de bloques con múltiples palabras
+
+```yaml
+# Block name: "Data Processor 2"
+
+
+# Block name: "Email Validation Service"
+
+
+# Block name: "Customer Info Agent"
+
+```
+
+## Casos especiales de referencia
+
+### Bloque inicial
+
+
+ El bloque inicial siempre se referencia como `` independientemente de su nombre real.
+
+
+```yaml
+# Starter block definition
+my-custom-start:
+ type: starter
+ name: "Custom Workflow Start"
+ # ... configuration
+
+# Always reference as 'start'
+agent-1:
+ inputs:
+ userPrompt: # ✅ Correct
+ # userPrompt: # ❌ Wrong
+```
+
+### Variables de bucle
+
+Dentro de los bloques de bucle, hay variables especiales disponibles:
+
+```yaml
+# Available in loop child blocks
+ # Current iteration (0-based)
+ # Current item being processed (forEach loops)
+ # Full collection (forEach loops)
+```
+
+### Variables paralelas
+
+Dentro de los bloques paralelos, hay variables especiales disponibles:
+
+```yaml
+# Available in parallel child blocks
+ # Instance number (0-based)
+ # Item for this instance
+ # Full collection
+```
+
+## Ejemplos de referencias complejas
+
+### Acceso a datos anidados
+
+Cuando se hace referencia a objetos complejos, utiliza la notación de punto:
+
+```yaml
+# If an agent returns structured data
+data-analyzer:
+ type: agent
+ name: "Data Analyzer"
+ inputs:
+ responseFormat: |
+ {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "analysis": {"type": "object"},
+ "summary": {"type": "string"},
+ "metrics": {"type": "object"}
+ }
+ }
+ }
+
+# Reference nested properties
+next-step:
+ inputs:
+ userPrompt: |
+ Summary:
+ Score:
+ Full data:
+```
+
+### Múltiples referencias en texto
+
+```yaml
+email-composer:
+ type: agent
+ inputs:
+ userPrompt: |
+ Create an email with the following information:
+
+ Customer:
+ Order Details:
+ Support Ticket:
+
+ Original request:
+```
+
+### Referencias en bloques de código
+
+Cuando se utilizan referencias en bloques de función, se reemplazan como valores de JavaScript:
+
+```yaml
+data-processor:
+ type: function
+ inputs:
+ code: |
+ // References are replaced with actual values
+ const customerData = ;
+ const orderInfo = ;
+ const originalInput = ;
+
+ // Process the data
+ return {
+ customer: customerData.name,
+ orderId: orderInfo.id,
+ processed: true
+ };
+```
+
+## Validación de referencias
+
+Sim valida todas las referencias al importar YAML:
+
+### Referencias válidas
+- El bloque existe en el flujo de trabajo
+- La propiedad es apropiada para el tipo de bloque
+- No hay dependencias circulares
+- Formato de sintaxis adecuado
+
+### Errores comunes
+- **Bloque no encontrado**: El bloque referenciado no existe
+- **Propiedad incorrecta**: Usar `.content` en un bloque de función
+- **Errores tipográficos**: Nombres de bloques o propiedades mal escritos
+- **Referencias circulares**: El bloque se referencia a sí mismo directa o indirectamente
+
+## Mejores prácticas
+
+1. **Usar nombres descriptivos para los bloques**: Hace que las referencias sean más legibles
+2. **Ser consistente**: Utilizar la misma convención de nomenclatura en todo el documento
+3. **Verificar referencias**: Asegurarse de que todos los bloques referenciados existan
+4. **Evitar anidamiento profundo**: Mantener las cadenas de referencia manejables
+5. **Documentar flujos complejos**: Añadir comentarios para explicar las relaciones de referencia
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/yaml/blocks/agent.mdx b/apps/docs/content/docs/es/yaml/blocks/agent.mdx
new file mode 100644
index 0000000000..6fed3f25b7
--- /dev/null
+++ b/apps/docs/content/docs/es/yaml/blocks/agent.mdx
@@ -0,0 +1,218 @@
+---
+title: Esquema YAML de bloques de agente
+description: Referencia de configuración YAML para bloques de agente
+---
+
+## Definición del esquema
+
+```yaml
+type: object
+required:
+ - type
+ - name
+properties:
+ type:
+ type: string
+ enum: [agent]
+ description: Block type identifier
+ name:
+ type: string
+ description: Display name for this agent block
+ inputs:
+ type: object
+ properties:
+ systemPrompt:
+ type: string
+ description: Instructions that define the agent's role and behavior
+ userPrompt:
+ type: string
+ description: Input content to process (can reference other blocks)
+ model:
+ type: string
+ description: AI model identifier (e.g., gpt-4o, gemini-2.5-pro, deepseek-chat)
+ temperature:
+ type: number
+ minimum: 0
+ maximum: 2
+ description: Response creativity level (varies by model)
+ apiKey:
+ type: string
+ description: API key for the model provider (use {{ENV_VAR}} format)
+ azureEndpoint:
+ type: string
+ description: Azure OpenAI endpoint URL (required for Azure models)
+ azureApiVersion:
+ type: string
+ description: Azure API version (required for Azure models)
+ memories:
+ type: string
+ description: Memory context from memory blocks
+ tools:
+ type: array
+ description: List of external tools the agent can use
+ items:
+ type: object
+ required: [type, title, toolId, operation, usageControl]
+ properties:
+ type:
+ type: string
+ description: Tool type identifier
+ title:
+ type: string
+ description: Human-readable display name
+ toolId:
+ type: string
+ description: Internal tool identifier
+ operation:
+ type: string
+ description: Tool operation/method name
+ usageControl:
+ type: string
+ enum: [auto, required, none]
+ description: When AI can use the tool
+ params:
+ type: object
+ description: Tool-specific configuration parameters
+ isExpanded:
+ type: boolean
+ description: UI state
+ default: false
+ responseFormat:
+ type: object
+ description: JSON Schema to enforce structured output
+ required:
+ - model
+ - apiKey
+ connections:
+ type: object
+ properties:
+ success:
+ type: string
+ description: Target block ID for successful execution
+ error:
+ type: string
+ description: Target block ID for error handling
+```
+
+## Configuración de herramientas
+
+Las herramientas se definen como un array donde cada herramienta tiene esta estructura:
+
+```yaml
+tools:
+ - type: # Tool type identifier (exa, gmail, slack, etc.)
+ title: # Human-readable display name
+ toolId: # Internal tool identifier
+ operation: # Tool operation/method name
+ usageControl: # When AI can use it (auto | required | none)
+ params: # Tool-specific configuration parameters
+ isExpanded: # UI state (optional, default: false)
+```
+
+## Configuración de conexiones
+
+Las conexiones definen hacia dónde va el flujo de trabajo según los resultados de la ejecución:
+
+```yaml
+connections:
+ success: # Target block ID for successful execution
+ error: # Target block ID for error handling (optional)
+```
+
+## Ejemplos
+
+### Agente básico
+
+```yaml
+content-agent:
+ type: agent
+ name: "Content Analyzer 1"
+ inputs:
+ systemPrompt: "You are a helpful content analyzer. Be concise and clear."
+ userPrompt:
+ model: gpt-4o
+ temperature: 0.3
+ apiKey: '{{OPENAI_API_KEY}}'
+ connections:
+ success: summary-block
+
+summary-block:
+ type: agent
+ name: "Summary Generator"
+ inputs:
+ systemPrompt: "Create a brief summary of the analysis."
+ userPrompt: "Analyze this: "
+ model: gpt-4o
+ apiKey: '{{OPENAI_API_KEY}}'
+ connections:
+ success: final-step
+```
+
+### Agente con herramientas
+
+```yaml
+research-agent:
+ type: agent
+ name: "Research Assistant"
+ inputs:
+ systemPrompt: "Research the topic and provide detailed information."
+ userPrompt:
+ model: gpt-4o
+ apiKey: '{{OPENAI_API_KEY}}'
+ tools:
+ - type: exa
+ title: "Web Search"
+ toolId: exa_search
+ operation: exa_search
+ usageControl: auto
+ params:
+ apiKey: '{{EXA_API_KEY}}'
+ connections:
+ success: summary-block
+```
+
+### Salida estructurada
+
+```yaml
+data-extractor:
+ type: agent
+ name: "Extract Contact Info"
+ inputs:
+ systemPrompt: "Extract contact information from the text."
+ userPrompt:
+ model: gpt-4o
+ apiKey: '{{OPENAI_API_KEY}}'
+ responseFormat: |
+ {
+ "name": "contact_extraction",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {"type": "string"},
+ "email": {"type": "string"},
+ "phone": {"type": "string"}
+ },
+ "required": ["name"]
+ },
+ "strict": true
+ }
+ connections:
+ success: save-contact
+```
+
+### Azure OpenAI
+
+```yaml
+azure-agent:
+ type: agent
+ name: "Azure AI Assistant"
+ inputs:
+ systemPrompt: "You are a helpful assistant."
+ userPrompt:
+ model: gpt-4o
+ apiKey: '{{AZURE_OPENAI_API_KEY}}'
+ azureEndpoint: '{{AZURE_OPENAI_ENDPOINT}}'
+ azureApiVersion: "2024-07-01-preview"
+ connections:
+ success: response-block
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/yaml/blocks/api.mdx b/apps/docs/content/docs/es/yaml/blocks/api.mdx
new file mode 100644
index 0000000000..bcca77b3dc
--- /dev/null
+++ b/apps/docs/content/docs/es/yaml/blocks/api.mdx
@@ -0,0 +1,429 @@
+---
+title: Esquema YAML del bloque API
+description: Referencia de configuración YAML para bloques API
+---
+
+## Definición del esquema
+
+```yaml
+type: object
+required:
+ - type
+ - name
+ - inputs
+properties:
+ type:
+ type: string
+ enum: [api]
+ description: Block type identifier
+ name:
+ type: string
+ description: Display name for this API block
+ inputs:
+ type: object
+ required:
+ - url
+ - method
+ properties:
+ url:
+ type: string
+ description: The endpoint URL to send the request to
+ method:
+ type: string
+ enum: [GET, POST, PUT, DELETE, PATCH]
+ description: HTTP method for the request
+ default: GET
+ params:
+ type: array
+ description: Query parameters as table entries
+ items:
+ type: object
+ required:
+ - id
+ - cells
+ properties:
+ id:
+ type: string
+ description: Unique identifier for the parameter entry
+ cells:
+ type: object
+ required:
+ - Key
+ - Value
+ properties:
+ Key:
+ type: string
+ description: Parameter name
+ Value:
+ type: string
+ description: Parameter value
+ headers:
+ type: array
+ description: HTTP headers as table entries
+ items:
+ type: object
+ required:
+ - id
+ - cells
+ properties:
+ id:
+ type: string
+ description: Unique identifier for the header entry
+ cells:
+ type: object
+ required:
+ - Key
+ - Value
+ properties:
+ Key:
+ type: string
+ description: Header name
+ Value:
+ type: string
+ description: Header value
+ body:
+ type: string
+ description: Request body for POST/PUT/PATCH methods
+ timeout:
+ type: number
+ description: Request timeout in milliseconds
+ default: 30000
+ minimum: 1000
+ maximum: 300000
+ connections:
+ type: object
+ properties:
+ success:
+ type: string
+ description: Target block ID for successful requests
+ error:
+ type: string
+ description: Target block ID for error handling
+```
+
+## Configuración de conexión
+
+Las conexiones definen hacia dónde va el flujo de trabajo según los resultados de la solicitud:
+
+```yaml
+connections:
+ success: # Target block ID for successful requests
+ error: # Target block ID for error handling (optional)
+```
+
+## Ejemplos
+
+### Solicitud GET simple
+
+```yaml
+user-api:
+ type: api
+ name: "Fetch User Data"
+ inputs:
+ url: "https://api.example.com/users/123"
+ method: GET
+ headers:
+ - id: header-1-uuid-here
+ cells:
+ Key: "Authorization"
+ Value: "Bearer {{API_TOKEN}}"
+ - id: header-2-uuid-here
+ cells:
+ Key: "Content-Type"
+ Value: "application/json"
+ connections:
+ success: process-user-data
+ error: handle-api-error
+```
+
+### Solicitud POST con cuerpo
+
+```yaml
+create-ticket:
+ type: api
+ name: "Create Support Ticket"
+ inputs:
+ url: "https://api.support.com/tickets"
+ method: POST
+ headers:
+ - id: auth-header-uuid
+ cells:
+ Key: "Authorization"
+ Value: "Bearer {{SUPPORT_API_KEY}}"
+ - id: content-type-uuid
+ cells:
+ Key: "Content-Type"
+ Value: "application/json"
+ body: |
+ {
+ "title": "",
+ "description": "",
+ "priority": "high"
+ }
+ connections:
+ success: ticket-created
+ error: ticket-error
+```
+
+### URL dinámica con parámetros de consulta
+
+```yaml
+search-api:
+ type: api
+ name: "Search Products"
+ inputs:
+ url: "https://api.store.com/products"
+ method: GET
+ params:
+ - id: search-param-uuid
+ cells:
+ Key: "q"
+ Value:
+ - id: limit-param-uuid
+ cells:
+ Key: "limit"
+ Value: "10"
+ - id: category-param-uuid
+ cells:
+ Key: "category"
+ Value:
+ headers:
+ - id: auth-header-uuid
+ cells:
+ Key: "Authorization"
+ Value: "Bearer {{STORE_API_KEY}}"
+ connections:
+ success: display-results
+```
+
+## Formato de parámetros
+
+Los encabezados y parámetros (parámetros de consulta) utilizan el formato de tabla con la siguiente estructura:
+
+```yaml
+headers:
+ - id: unique-identifier-here
+ cells:
+ Key: "Content-Type"
+ Value: "application/json"
+ - id: another-unique-identifier
+ cells:
+ Key: "Authorization"
+ Value: "Bearer {{API_TOKEN}}"
+
+params:
+ - id: param-identifier-here
+ cells:
+ Key: "limit"
+ Value: "10"
+```
+
+**Detalles de la estructura:**
+- `id`: Identificador único para rastrear la fila de la tabla
+- `cells.Key`: El nombre del parámetro/encabezado
+- `cells.Value`: El valor del parámetro/encabezado
+- Este formato permite una gestión adecuada de la tabla y la preservación del estado de la interfaz de usuario
+
+## Referencias de salida
+
+Después de que un bloque API se ejecuta, puedes hacer referencia a sus salidas en bloques posteriores. El bloque API proporciona tres salidas principales:
+
+### Salidas disponibles
+
+| Salida | Tipo | Descripción |
+|--------|------|-------------|
+| `data` | cualquiera | El cuerpo/carga de respuesta de la API |
+| `status` | número | Código de estado HTTP (200, 404, 500, etc.) |
+| `headers` | objeto | Encabezados de respuesta devueltos por el servidor |
+
+### Ejemplos de uso
+
+```yaml
+# Reference API response data
+process-data:
+ type: function
+ name: "Process API Data"
+ inputs:
+ code: |
+ const responseData = ;
+ const statusCode = ;
+ const responseHeaders = ;
+
+ if (statusCode === 200) {
+ return {
+ success: true,
+ user: responseData,
+ contentType: responseHeaders['content-type']
+ };
+ } else {
+ return {
+ success: false,
+ error: `API call failed with status ${statusCode}`
+ };
+ }
+
+# Use API data in an agent block
+analyze-response:
+ type: agent
+ name: "Analyze Response"
+ inputs:
+ userPrompt: |
+ Analyze this API response:
+
+ Status:
+ Data:
+
+ Provide insights about the response.
+
+# Conditional logic based on status
+check-status:
+ type: condition
+ name: "Check API Status"
+ inputs:
+ condition: === 200
+ connections:
+ true: success-handler
+ false: error-handler
+```
+
+### Ejemplo práctico
+
+```yaml
+user-api:
+ type: api
+ name: "Fetch User Data"
+ inputs:
+ url: "https://api.example.com/users/123"
+ method: GET
+ connections:
+ success: process-response
+
+process-response:
+ type: function
+ name: "Process Response"
+ inputs:
+ code: |
+ const user = ;
+ const status = ;
+
+ console.log(`API returned status: ${status}`);
+ console.log(`User data:`, user);
+
+ return {
+ userId: user.id,
+ email: user.email,
+ isActive: status === 200
+ };
+```
+
+### Manejo de errores
+
+```yaml
+api-with-error-handling:
+ type: api
+ name: "API Call"
+ inputs:
+ url: "https://api.example.com/data"
+ method: GET
+ connections:
+ success: check-response
+ error: handle-error
+
+check-response:
+ type: condition
+ name: "Check Response Status"
+ inputs:
+ condition: >= 200 && < 300
+ connections:
+ true: process-success
+ false: handle-api-error
+
+process-success:
+ type: function
+ name: "Process Success"
+ inputs:
+ code: |
+ return {
+ success: true,
+ data: ,
+ message: "API call successful"
+ };
+
+handle-api-error:
+ type: function
+ name: "Handle API Error"
+ inputs:
+ code: |
+ return {
+ success: false,
+ status: ,
+ error: "API call failed",
+ data:
+ };
+```
+
+## Escape de cadenas en YAML
+
+Al escribir YAML, ciertas cadenas deben estar entre comillas para ser analizadas correctamente:
+
+### Cadenas que deben estar entre comillas
+
+```yaml
+# URLs with hyphens, colons, special characters
+url: "https://api.example.com/users/123"
+url: "https://my-api.example.com/data"
+
+# Header values with hyphens or special characters
+headers:
+ - id: header-uuid
+ cells:
+ Key: "User-Agent"
+ Value: "My-Application/1.0"
+ - id: auth-uuid
+ cells:
+ Key: "Authorization"
+ Value: "Bearer my-token-123"
+
+# Parameter values with hyphens
+params:
+ - id: param-uuid
+ cells:
+ Key: "sort-by"
+ Value: "created-at"
+```
+
+### Cuándo usar comillas
+
+- ✅ **Siempre usar comillas para**: URLs, tokens, valores con guiones, dos puntos o caracteres especiales
+- ✅ **Siempre usar comillas para**: Valores que comienzan con números pero deben ser cadenas
+- ✅ **Siempre usar comillas para**: Cadenas que parecen booleanos pero deben permanecer como cadenas
+- ❌ **No usar comillas para**: Cadenas alfanuméricas simples sin caracteres especiales
+
+### Ejemplos
+
+```yaml
+# ✅ Correct
+url: "https://api.stripe.com/v1/charges"
+headers:
+ - id: auth-header
+ cells:
+ Key: "Authorization"
+ Value: "Bearer sk-test-123456789"
+
+# ❌ Incorrect (may cause parsing errors)
+url: https://api.stripe.com/v1/charges
+headers:
+ - id: auth-header
+ cells:
+ Key: Authorization
+ Value: Bearer sk-test-123456789
+```
+
+## Mejores prácticas
+
+- Usar variables de entorno para claves API: `{{API_KEY_NAME}}`
+- Incluir manejo de errores con conexiones de error
+- Establecer tiempos de espera apropiados para tu caso de uso
+- Validar códigos de estado de respuesta en bloques subsiguientes
+- Usar nombres de bloque significativos para facilitar la referencia
+- **Siempre poner entre comillas las cadenas con caracteres especiales, URLs y tokens**
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/yaml/blocks/condition.mdx b/apps/docs/content/docs/es/yaml/blocks/condition.mdx
new file mode 100644
index 0000000000..fa1742d2e5
--- /dev/null
+++ b/apps/docs/content/docs/es/yaml/blocks/condition.mdx
@@ -0,0 +1,165 @@
+---
+title: Esquema YAML del bloque de condición
+description: Referencia de configuración YAML para bloques de condición
+---
+
+## Definición del esquema
+
+```yaml
+type: object
+required:
+ - type
+ - name
+ - inputs
+ - connections
+properties:
+ type:
+ type: string
+ enum: [condition]
+ description: Block type identifier
+ name:
+ type: string
+ description: Display name for this condition block
+ inputs:
+ type: object
+ required:
+ - conditions
+ properties:
+ conditions:
+ type: object
+ description: Conditional expressions and their logic
+ properties:
+ if:
+ type: string
+ description: Primary condition expression (boolean)
+ else-if:
+ type: string
+ description: Secondary condition expression (optional)
+ else-if-2:
+ type: string
+ description: Third condition expression (optional)
+ else-if-3:
+ type: string
+ description: Fourth condition expression (optional)
+ # Additional else-if-N conditions can be added as needed
+ else:
+ type: boolean
+ description: Default fallback condition (optional)
+ default: true
+ connections:
+ type: object
+ required:
+ - conditions
+ properties:
+ conditions:
+ type: object
+ description: Target blocks for each condition outcome
+ properties:
+ if:
+ type: string
+ description: Target block ID when 'if' condition is true
+ else-if:
+ type: string
+ description: Target block ID when 'else-if' condition is true
+ else-if-2:
+ type: string
+ description: Target block ID when 'else-if-2' condition is true
+ else-if-3:
+ type: string
+ description: Target block ID when 'else-if-3' condition is true
+ # Additional else-if-N connections can be added as needed
+ else:
+ type: string
+ description: Target block ID when no conditions match
+```
+
+## Configuración de conexión
+
+A diferencia de otros bloques, las condiciones utilizan conexiones ramificadas basadas en los resultados de la condición:
+
+```yaml
+connections:
+ conditions:
+ if: # Target block ID when primary condition is true
+ else-if: # Target block ID when secondary condition is true (optional)
+ else-if-2: # Target block ID when third condition is true (optional)
+ else-if-3: # Target block ID when fourth condition is true (optional)
+ # Additional else-if-N connections can be added as needed
+ else: # Target block ID when no conditions match (optional)
+```
+
+## Ejemplos
+
+### If-Else simple
+
+```yaml
+status-check:
+ type: condition
+ name: "Status Check"
+ inputs:
+ conditions:
+ if: === "approved"
+ else: true
+ connections:
+ conditions:
+ if: send-approval-email
+ else: send-rejection-email
+```
+
+### Múltiples condiciones
+
+```yaml
+user-routing:
+ type: condition
+ name: "User Type Router"
+ inputs:
+ conditions:
+ if: === "admin"
+ else-if: === "premium"
+ else-if-2: === "basic"
+ else: true
+ connections:
+ conditions:
+ if: admin-dashboard
+ else-if: premium-features
+ else-if-2: basic-features
+ else: registration-flow
+```
+
+### Comparaciones numéricas
+
+```yaml
+score-evaluation:
+ type: condition
+ name: "Score Evaluation"
+ inputs:
+ conditions:
+ if: >= 90
+ else-if: >= 70
+ else-if-2: >= 50
+ else: true
+ connections:
+ conditions:
+ if: excellent-response
+ else-if: good-response
+ else-if-2: average-response
+ else: poor-response
+```
+
+### Lógica compleja
+
+```yaml
+eligibility-check:
+ type: condition
+ name: "Eligibility Check"
+ inputs:
+ conditions:
+ if: >= 18 && === true
+ else-if: >= 16 && === true
+ else: true
+ connections:
+ conditions:
+ if: full-access
+ else-if: limited-access
+ else: access-denied
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/yaml/blocks/evaluator.mdx b/apps/docs/content/docs/es/yaml/blocks/evaluator.mdx
new file mode 100644
index 0000000000..919ff1bb9a
--- /dev/null
+++ b/apps/docs/content/docs/es/yaml/blocks/evaluator.mdx
@@ -0,0 +1,255 @@
+---
+title: Esquema YAML del bloque evaluador
+description: Referencia de configuración YAML para bloques evaluadores
+---
+
+## Definición del esquema
+
+```yaml
+type: object
+required:
+ - type
+ - name
+ - inputs
+properties:
+ type:
+ type: string
+ enum: [evaluator]
+ description: Block type identifier
+ name:
+ type: string
+ description: Display name for this evaluator block
+ inputs:
+ type: object
+ required:
+ - content
+ - metrics
+ - model
+ - apiKey
+ properties:
+ content:
+ type: string
+ description: Content to evaluate (can reference other blocks)
+ metrics:
+ type: array
+ description: Evaluation criteria and scoring ranges
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ description: Metric identifier
+ description:
+ type: string
+ description: Detailed explanation of what the metric measures
+ range:
+ type: object
+ properties:
+ min:
+ type: number
+ description: Minimum score value
+ max:
+ type: number
+ description: Maximum score value
+ required: [min, max]
+ description: Scoring range with numeric bounds
+ model:
+ type: string
+ description: AI model identifier (e.g., gpt-4o, claude-3-5-sonnet-20241022)
+ apiKey:
+ type: string
+ description: API key for the model provider (use {{ENV_VAR}} format)
+ temperature:
+ type: number
+ minimum: 0
+ maximum: 2
+ description: Model temperature for evaluation
+ default: 0.3
+ azureEndpoint:
+ type: string
+ description: Azure OpenAI endpoint URL (required for Azure models)
+ azureApiVersion:
+ type: string
+ description: Azure API version (required for Azure models)
+ connections:
+ type: object
+ properties:
+ success:
+ type: string
+ description: Target block ID for successful evaluation
+ error:
+ type: string
+ description: Target block ID for error handling
+```
+
+## Configuración de conexiones
+
+Las conexiones definen hacia dónde va el flujo de trabajo según los resultados de la evaluación:
+
+```yaml
+connections:
+ success: # Target block ID for successful evaluation
+ error: # Target block ID for error handling (optional)
+```
+
+## Ejemplos
+
+### Evaluación de calidad de contenido
+
+```yaml
+content-evaluator:
+ type: evaluator
+ name: "Content Quality Evaluator"
+ inputs:
+ content:
+ metrics:
+ - name: "accuracy"
+ description: "How factually accurate is the content?"
+ range:
+ min: 1
+ max: 5
+ - name: "clarity"
+ description: "How clear and understandable is the content?"
+ range:
+ min: 1
+ max: 5
+ - name: "relevance"
+ description: "How relevant is the content to the original query?"
+ range:
+ min: 1
+ max: 5
+ - name: "completeness"
+ description: "How complete and comprehensive is the content?"
+ range:
+ min: 1
+ max: 5
+ model: gpt-4o
+ temperature: 0.2
+ apiKey: '{{OPENAI_API_KEY}}'
+ connections:
+ success: quality-report
+ error: evaluation-error
+```
+
+### Evaluación de respuesta al cliente
+
+```yaml
+response-evaluator:
+ type: evaluator
+ name: "Customer Response Evaluator"
+ inputs:
+ content:
+ metrics:
+ - name: "helpfulness"
+ description: "How helpful is the response in addressing the customer's needs?"
+ range:
+ min: 1
+ max: 10
+ - name: "tone"
+ description: "How appropriate and professional is the tone?"
+ range:
+ min: 1
+ max: 10
+ - name: "completeness"
+ description: "Does the response fully address all aspects of the inquiry?"
+ range:
+ min: 1
+ max: 10
+ model: claude-3-5-sonnet-20241022
+ apiKey: '{{ANTHROPIC_API_KEY}}'
+ connections:
+ success: response-processor
+```
+
+### Evaluación de pruebas A/B
+
+```yaml
+ab-test-evaluator:
+ type: evaluator
+ name: "A/B Test Evaluator"
+ inputs:
+ content: |
+ Version A:
+ Version B:
+
+ Compare these two versions for the following criteria.
+ metrics:
+ - name: "engagement"
+ description: "Which version is more likely to engage users?"
+ range: "A, B, or Tie"
+ - name: "clarity"
+ description: "Which version communicates more clearly?"
+ range: "A, B, or Tie"
+ - name: "persuasiveness"
+ description: "Which version is more persuasive?"
+ range: "A, B, or Tie"
+ model: gpt-4o
+ temperature: 0.1
+ apiKey: '{{OPENAI_API_KEY}}'
+ connections:
+ success: test-results
+```
+
+### Puntuación multidimensional de contenido
+
+```yaml
+comprehensive-evaluator:
+ type: evaluator
+ name: "Comprehensive Content Evaluator"
+ inputs:
+ content:
+ metrics:
+ - name: "technical_accuracy"
+ description: "How technically accurate and correct is the information?"
+ range:
+ min: 0
+ max: 100
+ - name: "readability"
+ description: "How easy is the content to read and understand?"
+ range:
+ min: 0
+ max: 100
+ - name: "seo_optimization"
+ description: "How well optimized is the content for search engines?"
+ range:
+ min: 0
+ max: 100
+ - name: "user_engagement"
+ description: "How likely is this content to engage and retain readers?"
+ range:
+ min: 0
+ max: 100
+ - name: "brand_alignment"
+ description: "How well does the content align with brand voice and values?"
+ range:
+ min: 0
+ max: 100
+ model: gpt-4o
+ temperature: 0.3
+ apiKey: '{{OPENAI_API_KEY}}'
+ connections:
+ success: content-optimization
+```
+
+## Referencias de salida
+
+Después de que un bloque evaluador se ejecuta, puedes hacer referencia a sus salidas:
+
+```yaml
+# In subsequent blocks
+next-block:
+ inputs:
+ evaluation: # Evaluation summary
+ scores: # Individual metric scores
+ overall: # Overall assessment
+```
+
+## Mejores prácticas
+
+- Define criterios de evaluación claros y específicos
+- Utiliza rangos de puntuación apropiados para tu caso de uso
+- Elige modelos con fuertes capacidades de razonamiento
+- Usa temperatura más baja para puntuaciones consistentes
+- Incluye descripciones detalladas de métricas
+- Prueba con diversos tipos de contenido
+- Considera múltiples evaluadores para evaluaciones complejas
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/yaml/blocks/function.mdx b/apps/docs/content/docs/es/yaml/blocks/function.mdx
new file mode 100644
index 0000000000..ccc6049150
--- /dev/null
+++ b/apps/docs/content/docs/es/yaml/blocks/function.mdx
@@ -0,0 +1,162 @@
+---
+title: Esquema YAML de bloque de función
+description: Referencia de configuración YAML para bloques de función
+---
+
+## Definición del esquema
+
+```yaml
+type: object
+required:
+ - type
+ - name
+ - inputs
+properties:
+ type:
+ type: string
+ enum: [function]
+ description: Block type identifier
+ name:
+ type: string
+ description: Display name for this function block
+ inputs:
+ type: object
+ required:
+ - code
+ properties:
+ code:
+ type: string
+ description: JavaScript/TypeScript code to execute (multiline string)
+ timeout:
+ type: number
+ description: Maximum execution time in milliseconds
+ default: 30000
+ minimum: 1000
+ maximum: 300000
+ connections:
+ type: object
+ properties:
+ success:
+ type: string
+ description: Target block ID for successful execution
+ error:
+ type: string
+ description: Target block ID for error handling
+```
+
+## Configuración de conexión
+
+Las conexiones definen hacia dónde va el flujo de trabajo según los resultados de la ejecución:
+
+```yaml
+connections:
+ success: # Target block ID for successful execution
+ error: # Target block ID for error handling (optional)
+```
+
+## Ejemplos
+
+### Validación simple
+
+```yaml
+input-validator:
+ type: function
+ name: "Input Validator"
+ inputs:
+ code: |-
+ // Check if input number is greater than 5
+ const inputValue = parseInt(, 10);
+
+ if (inputValue > 5) {
+ return {
+ valid: true,
+ value: inputValue,
+ message: "Input is valid"
+ };
+ } else {
+ return {
+ valid: false,
+ value: inputValue,
+ message: "Input must be greater than 5"
+ };
+ }
+ connections:
+ success: next-step
+ error: handle-error
+```
+
+### Procesamiento de datos
+
+```yaml
+data-processor:
+ type: function
+ name: "Data Transformer"
+ inputs:
+ code: |
+ // Transform the input data
+ const rawData = ;
+
+ // Process and clean the data
+ const processed = rawData
+ .filter(item => item.status === 'active')
+ .map(item => ({
+ id: item.id,
+ name: item.name.trim(),
+ date: new Date(item.created).toISOString()
+ }));
+
+ return processed;
+ connections:
+ success: api-save
+ error: error-handler
+```
+
+### Integración de API
+
+```yaml
+api-formatter:
+ type: function
+ name: "Format API Request"
+ inputs:
+ code: |
+ // Prepare data for API submission
+ const userData = ;
+
+ const apiPayload = {
+ timestamp: new Date().toISOString(),
+ data: userData,
+ source: "workflow-automation",
+ version: "1.0"
+ };
+
+ return apiPayload;
+ connections:
+ success: api-call
+```
+
+### Cálculos
+
+```yaml
+calculator:
+ type: function
+ name: "Calculate Results"
+ inputs:
+ code: |
+ // Perform calculations on input data
+ const numbers = ;
+
+ const sum = numbers.reduce((a, b) => a + b, 0);
+ const average = sum / numbers.length;
+ const max = Math.max(...numbers);
+ const min = Math.min(...numbers);
+
+ return {
+ sum,
+ average,
+ max,
+ min,
+ count: numbers.length
+ };
+ connections:
+ success: results-display
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/yaml/blocks/index.mdx b/apps/docs/content/docs/es/yaml/blocks/index.mdx
new file mode 100644
index 0000000000..3d44346f3a
--- /dev/null
+++ b/apps/docs/content/docs/es/yaml/blocks/index.mdx
@@ -0,0 +1,151 @@
+---
+title: Esquemas de bloques
+description: Referencia completa del esquema YAML para todos los bloques de Sim
+---
+
+import { Card, Cards } from "fumadocs-ui/components/card";
+
+Esta sección contiene las definiciones completas del esquema YAML para todos los tipos de bloques disponibles en Sim. Cada tipo de bloque tiene requisitos de configuración específicos y formatos de salida.
+
+## Bloques principales
+
+Estos son los bloques esenciales para crear flujos de trabajo:
+
+
+
+ Punto de entrada del flujo de trabajo que admite activadores manuales, webhooks y programaciones
+
+
+ Procesamiento impulsado por IA con integración de LLM y soporte de herramientas
+
+
+ Entorno de ejecución de código JavaScript/TypeScript personalizado
+
+
+ Formatear y devolver los resultados finales del flujo de trabajo
+
+
+
+## Lógica y flujo de control
+
+Bloques para implementar lógica condicional y flujo de control:
+
+
+
+ Ramificación condicional basada en expresiones booleanas
+
+
+ Enrutamiento inteligente impulsado por IA a múltiples rutas
+
+
+ Procesamiento iterativo con bucles for y forEach
+
+
+ Ejecución concurrente en múltiples instancias
+
+
+
+## Bloques de integración
+
+Bloques para conectar con servicios y sistemas externos:
+
+
+
+ Solicitudes HTTP a APIs REST externas
+
+
+ Activadores de webhook para integraciones externas
+
+
+
+## Bloques avanzados
+
+Bloques especializados para patrones de flujo de trabajo complejos:
+
+
+
+ Validar salidas según criterios y métricas definidos
+
+
+ Ejecutar otros flujos de trabajo como componentes reutilizables
+
+
+
+## Elementos comunes del esquema
+
+Todos los bloques comparten estos elementos comunes:
+
+### Estructura básica
+
+```yaml
+block-id:
+ type:
+ name:
+ inputs:
+ # Block-specific configuration
+ connections:
+ # Connection definitions
+```
+
+### Tipos de conexión
+
+- **success**: Bloque objetivo para ejecución exitosa
+- **error**: Bloque objetivo para manejo de errores (opcional)
+- **conditions**: Múltiples rutas para bloques condicionales
+
+### Variables de entorno
+
+Usa dobles llaves para las variables de entorno:
+
+```yaml
+inputs:
+ apiKey: '{{API_KEY_NAME}}'
+ endpoint: '{{SERVICE_ENDPOINT}}'
+```
+
+### Referencias de bloque
+
+Referencia las salidas de otros bloques usando el nombre del bloque en minúsculas:
+
+```yaml
+inputs:
+ userPrompt:
+ data:
+ originalInput:
+```
+
+## Reglas de validación
+
+Todos los bloques YAML se validan contra sus esquemas:
+
+1. **Campos obligatorios**: Deben estar presentes
+2. **Validación de tipo**: Los valores deben coincidir con los tipos esperados
+3. **Validación de enumeración**: Los valores de cadena deben ser de las listas permitidas
+4. **Validación de rango**: Los números deben estar dentro de los rangos especificados
+5. **Validación de patrón**: Las cadenas deben coincidir con patrones regex (cuando corresponda)
+
+## Referencia rápida
+
+### Tipos de bloques y propiedades
+
+| Tipo de bloque | Salida principal | Casos de uso comunes |
+|------------|----------------|------------------|
+| starter | `.input` | Punto de entrada del flujo de trabajo |
+| agent | `.content` | Procesamiento de IA, generación de texto |
+| function | `.output` | Transformación de datos, cálculos |
+| api | `.output` | Integración con servicios externos |
+| condition | N/A (ramificación) | Lógica condicional |
+| router | N/A (ramificación) | Enrutamiento inteligente |
+| response | N/A (terminal) | Formateo de salida final |
+| loop | `.results` | Procesamiento iterativo |
+| parallel | `.results` | Procesamiento concurrente |
+| webhook | `.payload` | Disparadores externos |
+| evaluator | `.score` | Validación de salida, evaluación de calidad |
+| workflow | `.output` | Ejecución de subflujos de trabajo, modularidad |
+
+### Obligatorio vs opcional
+
+- **Siempre obligatorio**: `type`, `name`
+- **Generalmente obligatorio**: `inputs`, `connections`
+- **Dependiente del contexto**: Los campos de entrada específicos varían según el tipo de bloque
+- **Siempre opcional**: Conexiones `error`, campos específicos de la interfaz de usuario
\ No newline at end of file
diff --git a/apps/docs/content/docs/es/yaml/blocks/loop.mdx b/apps/docs/content/docs/es/yaml/blocks/loop.mdx
new file mode 100644
index 0000000000..1326019015
--- /dev/null
+++ b/apps/docs/content/docs/es/yaml/blocks/loop.mdx
@@ -0,0 +1,295 @@
+---
+title: Esquema YAML del bloque Loop
+description: Referencia de configuración YAML para bloques Loop
+---
+
+## Definición del esquema
+
+```yaml
+type: object
+required:
+ - type
+ - name
+ - inputs
+ - connections
+properties:
+ type:
+ type: string
+ enum: [loop]
+ description: Block type identifier
+ name:
+ type: string
+ description: Display name for this loop block
+ inputs:
+ type: object
+ required:
+ - loopType
+ properties:
+ loopType:
+ type: string
+ enum: [for, forEach]
+ description: Type of loop to execute
+ iterations:
+ type: number
+ description: Number of iterations (for 'for' loops)
+ minimum: 1
+ maximum: 1000
+ collection:
+ type: string
+ description: Collection to iterate over (for 'forEach' loops)
+ maxConcurrency:
+ type: number
+ description: Maximum concurrent executions
+ default: 1
+ minimum: 1
+ maximum: 10
+ connections:
+ type: object
+ required:
+ - loop
+ properties:
+ loop:
+ type: object
+ required:
+ - start
+ properties:
+ start:
+ type: string
+ description: Target block ID to execute inside the loop
+ end:
+ type: string
+ description: Target block ID for loop completion (optional)
+ error:
+ type: string
+ description: Target block ID for error handling
+```
+
+## Configuración de conexión
+
+Los bloques Loop utilizan un formato de conexión especial con una sección `loop`:
+
+```yaml
+connections:
+ loop:
+ start: # Target block ID to execute inside the loop
+ end: # Target block ID after loop completion (optional)
+ error: # Target block ID for error handling (optional)
+```
+
+## Configuración de bloques secundarios
+
+Los bloques dentro de un bucle deben tener su `parentId` configurado con el ID del bloque loop:
+
+```yaml
+loop-1:
+ type: loop
+ name: "Process Items"
+ inputs:
+ loopType: forEach
+ collection:
+ connections:
+ loop:
+ start: process-item
+ end: final-results
+
+# Child block inside the loop
+process-item:
+ type: agent
+ name: "Process Item"
+ parentId: loop-1 # References the loop block
+ inputs:
+ systemPrompt: "Process this item"
+ userPrompt:
+ model: gpt-4o
+ apiKey: '{{OPENAI_API_KEY}}'
+```
+
+## Ejemplos
+
+### Bucle For (iteraciones fijas)
+
+```yaml
+countdown-loop:
+ type: loop
+ name: "Countdown Loop"
+ inputs:
+ loopType: for
+ iterations: 5
+ connections:
+ loop:
+ start: countdown-agent
+ end: countdown-complete
+
+countdown-agent:
+ type: agent
+ name: "Countdown Agent"
+ parentId: countdown-loop
+ inputs:
+ systemPrompt: "Generate a countdown message"
+ userPrompt: "Count down from 5. Current number: "
+ model: gpt-4o
+ apiKey: '{{OPENAI_API_KEY}}'
+```
+
+### Bucle ForEach (procesamiento de colecciones)
+
+```yaml
+email-processor-loop:
+ type: loop
+ name: "Email Processor Loop"
+ inputs:
+ loopType: forEach
+ collection:
+ connections:
+ loop:
+ start: process-single-email
+ end: all-emails-processed
+
+process-single-email:
+ type: agent
+ name: "Process Single Email"
+ parentId: email-processor-loop
+ inputs:
+ systemPrompt: "Classify and respond to this email"
+ userPrompt: "Email content: "
+ model: gpt-4o
+ apiKey: '{{OPENAI_API_KEY}}'
+```
+
+### Bucle con múltiples bloques secundarios
+
+```yaml
+data-analysis-loop:
+ type: loop
+ name: "Data Analysis Loop"
+ inputs:
+ loopType: forEach
+ collection:
+ maxConcurrency: 3
+ connections:
+ loop:
+ start: validate-record
+ end: generate-report
+ error: handle-loop-error
+
+validate-record:
+ type: function
+ name: "Validate Record"
+ parentId: data-analysis-loop
+ inputs:
+ code: |
+ const record = ;
+ const index = ;
+
+ // Validate the record
+ if (!record.id || !record.data) {
+ throw new Error(`Invalid record at index ${index}`);
+ }
+
+ return {
+ valid: true,
+ recordId: record.id,
+ processedAt: new Date().toISOString()
+ };
+ connections:
+ success: analyze-record
+ error: record-error
+
+analyze-record:
+ type: agent
+ name: "Analyze Record"
+ parentId: data-analysis-loop
+ inputs:
+ systemPrompt: "Analyze this data record and extract insights"
+ userPrompt: |
+ Record ID:
+ Data:
+ Position in collection:
+ model: gpt-4o
+ apiKey: '{{OPENAI_API_KEY}}'
+ connections:
+ success: store-analysis
+
+store-analysis:
+ type: function
+ name: "Store Analysis"
+ parentId: data-analysis-loop
+ inputs:
+ code: |
+ const analysis = ;
+ const recordId = ;
+
+ // Store analysis result
+ return {
+ recordId,
+ analysis,
+ completedAt: new Date().toISOString()
+ };
+```
+
+### Bucle de procesamiento concurrente
+
+```yaml
+parallel-processing-loop:
+ type: loop
+ name: "Parallel Processing Loop"
+ inputs:
+ loopType: forEach
+ collection:
+ maxConcurrency: 5
+ connections:
+ loop:
+ start: process-task
+ end: aggregate-results
+
+process-task:
+ type: api
+ name: "Process Task"
+ parentId: parallel-processing-loop
+ inputs:
+ url: "https://api.example.com/process"
+ method: POST
+ headers:
+ - key: "Authorization"
+ value: "Bearer {{API_TOKEN}}"
+ body: |
+ {
+ "taskId": "",
+ "data": ""
+ }
+ connections:
+ success: task-completed
+```
+
+## Variables de bucle
+
+Dentro de los bloques secundarios del bucle, estas variables especiales están disponibles:
+
+```yaml
+# Available in all child blocks of the loop
+