diff --git a/apps/docs/content/docs/blocks/loop.mdx b/apps/docs/content/docs/blocks/loop.mdx
index 7779880156..5ee2ae296a 100644
--- a/apps/docs/content/docs/blocks/loop.mdx
+++ b/apps/docs/content/docs/blocks/loop.mdx
@@ -172,4 +172,4 @@ After a loop completes, you can access aggregated results:
- **Set reasonable limits**: Keep iteration counts reasonable to avoid long execution times
- **Use ForEach for collections**: When processing arrays or objects, use ForEach instead of For loops
-- **Handle errors gracefully**: Consider adding error handling inside loops for robust workflows
\ No newline at end of file
+- **Handle errors gracefully**: Consider adding error handling inside loops for robust workflows
diff --git a/apps/docs/content/docs/blocks/parallel.mdx b/apps/docs/content/docs/blocks/parallel.mdx
index 719b2ab89e..c997d66895 100644
--- a/apps/docs/content/docs/blocks/parallel.mdx
+++ b/apps/docs/content/docs/blocks/parallel.mdx
@@ -207,4 +207,4 @@ Understanding when to use each:
- **Independent operations only**: Ensure operations don't depend on each other
- **Handle rate limits**: Add delays or throttling for API-heavy workflows
-- **Error handling**: Each instance should handle its own errors gracefully
\ No newline at end of file
+- **Error handling**: Each instance should handle its own errors gracefully
diff --git a/apps/docs/content/docs/blocks/response.mdx b/apps/docs/content/docs/blocks/response.mdx
index ad6f5f3cd2..5523cffdb0 100644
--- a/apps/docs/content/docs/blocks/response.mdx
+++ b/apps/docs/content/docs/blocks/response.mdx
@@ -182,4 +182,5 @@ headers:
- **Structure your responses consistently**: Maintain a consistent JSON structure across all your API endpoints for better developer experience
- **Include relevant metadata**: Add timestamps and version information to help with debugging and monitoring
- **Handle errors gracefully**: Use conditional logic in your workflow to set appropriate error responses with descriptive messages
-- **Validate variable references**: Ensure all referenced variables exist and contain the expected data types before the Response block executes
\ No newline at end of file
+- **Validate variable references**: Ensure all referenced variables exist and contain the expected data types before the Response block executes
+
diff --git a/apps/docs/content/docs/blocks/workflow.mdx b/apps/docs/content/docs/blocks/workflow.mdx
index fce0d9497f..27040ecfc9 100644
--- a/apps/docs/content/docs/blocks/workflow.mdx
+++ b/apps/docs/content/docs/blocks/workflow.mdx
@@ -256,4 +256,4 @@ return {
- **Document dependencies**: Clearly document which workflows depend on others and maintain dependency maps
- **Test independently**: Ensure child workflows can be tested and validated independently from parent workflows
- **Monitor performance**: Be aware that nested workflows can impact overall execution time and resource usage
-- **Use semantic naming**: Give workflows descriptive names that clearly indicate their purpose and functionality
\ No newline at end of file
+- **Use semantic naming**: Give workflows descriptive names that clearly indicate their purpose and functionality
diff --git a/apps/docs/content/docs/meta.json b/apps/docs/content/docs/meta.json
index 6b37a43525..e7dd44facd 100644
--- a/apps/docs/content/docs/meta.json
+++ b/apps/docs/content/docs/meta.json
@@ -13,6 +13,7 @@
"execution",
"---Advanced---",
"./variables/index",
+ "yaml",
"---SDKs---",
"./sdks/python",
"./sdks/typescript"
diff --git a/apps/docs/content/docs/tools/index.mdx b/apps/docs/content/docs/tools/index.mdx
index 9dd3a80e17..95f69f3d7e 100644
--- a/apps/docs/content/docs/tools/index.mdx
+++ b/apps/docs/content/docs/tools/index.mdx
@@ -64,3 +64,14 @@ Tools typically return structured data that can be processed by subsequent block
- Status information
Refer to each tool's specific documentation to understand its exact output format.
+
+## YAML Configuration
+
+For detailed YAML workflow configuration and syntax, see the [YAML Workflow Reference](/yaml) documentation. This includes comprehensive guides for:
+
+- **Block Reference Syntax**: How to connect and reference data between blocks
+- **Tool Configuration**: Using tools in both standalone blocks and agent configurations
+- **Environment Variables**: Secure handling of API keys and credentials
+- **Complete Examples**: Real-world workflow patterns and configurations
+
+For specific tool parameters and configuration options, refer to each tool's individual documentation page.
diff --git a/apps/docs/content/docs/yaml/block-reference.mdx b/apps/docs/content/docs/yaml/block-reference.mdx
new file mode 100644
index 0000000000..907e5c3672
--- /dev/null
+++ b/apps/docs/content/docs/yaml/block-reference.mdx
@@ -0,0 +1,238 @@
+---
+title: Block Reference Syntax
+description: How to reference data between blocks in YAML workflows
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+
+Block references are the foundation of data flow in Sim Studio workflows. Understanding how to correctly reference outputs from one block as inputs to another is essential for building functional workflows.
+
+## Basic Reference Rules
+
+### 1. Use Block Names, Not Block IDs
+
+
+
+ ```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. Convert Names to Reference Format
+
+To create a block reference:
+
+1. **Take the block name**: "Email Generator"
+2. **Convert to lowercase**: "email generator"
+3. **Remove spaces and special characters**: "emailgenerator"
+4. **Add property**: ``
+
+### 3. Use Correct Properties
+
+Different block types expose different properties:
+
+- **Agent blocks**: `.content` (the AI response)
+- **Function blocks**: `.output` (the return value)
+- **API blocks**: `.output` (the response data)
+- **Tool blocks**: `.output` (the tool result)
+
+## Reference Examples
+
+### Common Block References
+
+```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
+```
+
+### Multi-Word Block Names
+
+```yaml
+# Block name: "Data Processor 2"
+
+
+# Block name: "Email Validation Service"
+
+
+# Block name: "Customer Info Agent"
+
+```
+
+## Special Reference Cases
+
+### Starter Block
+
+
+ The starter block is always referenced as `` regardless of its actual name.
+
+
+```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
+```
+
+### Loop Variables
+
+Inside loop blocks, special variables are available:
+
+```yaml
+# Available in loop child blocks
+ # Current iteration (0-based)
+ # Current item being processed (forEach loops)
+ # Full collection (forEach loops)
+```
+
+### Parallel Variables
+
+Inside parallel blocks, special variables are available:
+
+```yaml
+# Available in parallel child blocks
+ # Instance number (0-based)
+ # Item for this instance
+ # Full collection
+```
+
+## Complex Reference Examples
+
+### Nested Data Access
+
+When referencing complex objects, use dot notation:
+
+```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:
+```
+
+### Multiple References in Text
+
+```yaml
+email-composer:
+ type: agent
+ inputs:
+ userPrompt: |
+ Create an email with the following information:
+
+ Customer:
+ Order Details:
+ Support Ticket:
+
+ Original request:
+```
+
+### References in Code Blocks
+
+When using references in function blocks, they're replaced as JavaScript values:
+
+```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
+ };
+```
+
+## Reference Validation
+
+Sim Studio validates all references when importing YAML:
+
+### Valid References
+- Block exists in the workflow
+- Property is appropriate for block type
+- No circular dependencies
+- Proper syntax formatting
+
+### Common Errors
+- **Block not found**: Referenced block doesn't exist
+- **Wrong property**: Using `.content` on a function block
+- **Typos**: Misspelled block names or properties
+- **Circular references**: Block references itself directly or indirectly
+
+## Best Practices
+
+1. **Use descriptive block names**: Makes references more readable
+2. **Be consistent**: Use the same naming convention throughout
+3. **Check references**: Ensure all referenced blocks exist
+4. **Avoid deep nesting**: Keep reference chains manageable
+5. **Document complex flows**: Add comments to explain reference relationships
\ No newline at end of file
diff --git a/apps/docs/content/docs/yaml/blocks/agent.mdx b/apps/docs/content/docs/yaml/blocks/agent.mdx
new file mode 100644
index 0000000000..e93e16c168
--- /dev/null
+++ b/apps/docs/content/docs/yaml/blocks/agent.mdx
@@ -0,0 +1,218 @@
+---
+title: Agent Block YAML Schema
+description: YAML configuration reference for Agent blocks
+---
+
+## Schema Definition
+
+```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
+```
+
+## Tool Configuration
+
+Tools are defined as an array where each tool has this structure:
+
+```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: