# Executive Summary

AITECH Cloud Network (ACN) is an enterprise-grade AI infrastructure ecosystem designed to meet the growing demands of organizations requiring scalable compute access and reliable execution frameworks for intelligent automation. As AI adoption accelerates across enterprises, organizations, developers, engineers and researchers are seeking solutions that combine performance, cost efficiency, and operational control without compromising on security or trust.

ACN addresses these requirements through two distinct, independently operating products: the Compute Layer and Agents Orchestration Layer.

The Compute Layer provides enterprise-ready access to high-performance compute through a distributed network of infrastructure providers. It enables organizations, developers, engineers and researchers to run AI training, inference, and large-scale workloads with predictable, usage-based pricing and without reliance on traditional hyperscalers. The platform is designed to support production-grade environments, also offering the flexibility and scalability required by businesses operating at scale.

Agent Forge is a no-code agent orchestration platform that enables users to design, deploy, and manage AI-driven workflows. It allows teams to automate complex, multi-step processes across internal systems, external APIs, and data sources, reducing operational overhead while maintaining control and visibility. With support for structured workflow execution and deployment, Agent Forge enables enterprises to integrate AI into their operations in a controlled and scalable manner.

Both products operate independently, ensuring that infrastructure and workflow orchestration can scale according to distinct operational requirements. At the ecosystem level, they are aligned through a unified economic layer, supporting consistent access and interaction across the broader ACN environment.

AITECH Cloud Network is positioned as a trusted, enterprise-focused provider within the AI infrastructure landscape, delivering scalable compute through the Compute Marketplace and structured automation through Agent Forge. The ecosystem is built to support organizations that require reliability, performance, and long-term scalability as they integrate AI into core operations.


# Introduction

Artificial intelligence has evolved into a core layer of enterprise infrastructure, supporting critical operations across industries such as finance, healthcare, government, and technology. As adoption accelerates, organizations are placing increasing importance on scalable compute access, structured automation, cost efficiency, and operational control. At the same time, the convergence of AI and blockchain technologies is introducing new models for coordinating access, payments, and value exchange across digital systems.

Traditional cloud providers enabled the initial wave of AI development, but their limitations become more apparent at scale. Enterprises face rising and often unpredictable costs, limited flexibility in accessing high-performance compute, and reduced transparency over resource allocation. In parallel, the growing complexity of AI-driven operations has created a need for systems that can manage and execute workflows across multiple tools, services, and data environments in a controlled and reliable manner.

This has led to the emergence of two distinct layers within the AI ecosystem. The first is infrastructure, where scalable compute is required to support training and inference workloads. The second is execution, where AI systems operate through structured workflows to automate processes and coordinate tasks. These layers serve different functions and require independent design, particularly in enterprise environments where reliability, security, and governance are essential.

AITECH Cloud Network (ACN) is built around this separation, delivering two independently operating products that address these core requirements. The Compute Marketplace provides enterprise-grade access to distributed compute resources, enabling efficient and flexible deployment of AI workloads. Agent Forge provides a no-code platform for designing, deploying, and managing AI-driven workflows, supporting structured automation across diverse use cases.

Supporting this ecosystem is $ACN, the native digital asset that functions as the economic layer within the network. It enables payments for services, access to platform features, and participation in ecosystem activities, introducing a unified layer that complements both products without coupling their underlying operations.

By combining enterprise-focused AI infrastructure with a blockchain-based economic layer, AITECH Cloud Network positions itself at the intersection of scalable compute, structured automation, and decentralized value exchange, designed to support long-term adoption of AI at an organizational level.


# Problem Statement

As artificial intelligence adoption accelerates globally, the underlying infrastructure and execution frameworks have not evolved at the same pace. Organizations are increasingly encountering structural limitations that impact cost efficiency, scalability, and operational control.

These challenges are not isolated. They exist across two distinct layers of the AI stack: **infrastructure (compute)** and **execution (workflows and automation)**.

***

#### **3.1 Infrastructure Constraints (Compute Layer)**

Enterprises relying on traditional cloud providers face several persistent issues:

* **Unpredictable Cost Structures**
  * Initial incentives such as free credits mask long-term costs
  * Billing complexity makes cost forecasting difficult
  * Idle resources continue to incur charges
* **Limited Access to High-Performance Compute**
  * GPU shortages during peak demand periods
  * Long wait times for high-end hardware allocation
  * Regional restrictions on availability
* **Inefficient Resource Utilization**
  * Over-provisioning to avoid downtime
  * Underutilization of allocated compute
  * Lack of granular control over workload distribution
* **Centralized Dependency Risks**
  * Vendor lock-in limiting flexibility
  * Single-provider reliance impacting resilience
  * Reduced transparency in infrastructure operations

***

#### **3.2 Execution Constraints (Workflow & Automation Layer)**

While compute enables AI models to run, enterprises face a separate challenge in operationalizing AI:

* **Fragmented Tooling Ecosystems**
  * Multiple APIs, services, and platforms with no unified orchestration
  * Manual coordination required between systems
* **High Technical Barrier to Automation**
  * Requires engineering expertise to build and maintain workflows
  * Limited accessibility for non-technical teams
* **Lack of Structured Execution Frameworks**
  * Difficulty in designing repeatable, multi-step processes
  * No standardized approach to managing AI-driven tasks
* **Limited Monetization and Deployment Models**
  * Workflows remain internal with no clear path to external deployment
  * No native mechanism to charge for execution or services

#### **3.3 Economic Fragmentation**

In addition to infrastructure and execution challenges, there is a lack of a unified economic layer:

| Challenge                          | Impact                               |
| ---------------------------------- | ------------------------------------ |
| Disconnected payment systems       | Friction in accessing services       |
| Multiple billing models            | Operational inefficiency             |
| Lack of programmable payments      | Inability to automate value exchange |
| No standardized medium of exchange | Reduced ecosystem cohesion           |

#### **3.4 Summary of Core Gaps**

| Layer          | Key Issues                              | Resulting Impact                          |
| -------------- | --------------------------------------- | ----------------------------------------- |
| Infrastructure | Expensive, limited, centralized compute | Reduced scalability and cost inefficiency |
| Execution      | Fragmented tooling, high complexity     | Slower deployment and limited automation  |

#### **3.5 Problem Framing**

The current AI landscape is defined by **disconnected systems**:

* Compute exists, but is inefficient and costly
* Automation exists, but is fragmented and complex
* Payments exist, but are not integrated into execution

Enterprises are forced to bridge these gaps manually, leading to increased costs, slower deployment cycles, and reduced scalability.

This fragmentation highlights the need for:

* More efficient access to compute
* Structured frameworks for execution
* A unified economic layer to streamline interactions

Without addressing these foundational issues, the ability to scale AI across enterprise environments remains constrained.


# Market Opportunity

The rapid expansion of artificial intelligence is not only increasing demand for compute and automation, but reshaping how enterprises allocate capital, optimize operations, and build competitive advantage. This shift is creating a multi-layered market opportunity across infrastructure, execution, and economic coordination.

Unlike previous technology cycles, AI adoption is not confined to a single vertical. It is becoming a horizontal layer across all industries, driving sustained demand for both **high-performance compute** and **scalable execution systems**.

***

#### **4.1 Expansion of AI Infrastructure Demand**

The growth of AI workloads is directly driving demand for compute resources:

* Large-scale model training and fine-tuning
* Real-time inference across applications
* Increasing adoption of multimodal AI systems
* Continuous model iteration cycles in production

This demand is creating pressure on existing infrastructure models, opening opportunities for alternative compute access frameworks.

| Driver                    | Market Impact                                   |
| ------------------------- | ----------------------------------------------- |
| Growth in AI model size   | Increased demand for high-performance GPUs      |
| Real-time AI applications | Need for low-latency compute access             |
| Enterprise AI adoption    | Shift from experimental to production workloads |
| Multimodal systems        | Higher compute intensity per workload           |

***

#### **4.2 Rise of the Automation Economy**

Beyond compute, enterprises are shifting towards automation as a core operational strategy:

* AI is being embedded into business processes, not just tools
* Workflows are becoming increasingly data-driven and autonomous
* Organizations are prioritizing efficiency gains through automation

This creates demand for platforms that enable structured execution without requiring deep technical overhead.

| Trend                     | Opportunity                                            |
| ------------------------- | ------------------------------------------------------ |
| Process automation        | Replacement of manual workflows with AI-driven systems |
| Cross-platform operations | Need for orchestration across tools and services       |
| Non-technical adoption    | Demand for no-code / low-code solutions                |
| Scalable execution        | Repeatable workflows across departments and regions    |

***

#### **4.3 Emergence of the Agent Economy**

A new category is forming around AI agents capable of executing tasks, interacting with systems, and delivering outcomes:

* Agents acting as service providers
* Automation becoming modular and reusable
* Workflows transitioning into deployable digital assets

This introduces a shift from **software consumption** to **service execution**, where value is generated through actions rather than access.

| Evolution                              | Implication                                |
| -------------------------------------- | ------------------------------------------ |
| Static software → Dynamic agents       | Continuous execution-based value creation  |
| Internal tools → External services     | Expansion of monetization models           |
| Single-use workflows → Reusable assets | Creation of scalable automation ecosystems |

***

#### **4.4 Convergence of AI and Digital Assets**

The integration of blockchain-based systems introduces new efficiencies in how services are accessed and paid for:

* Unified payment mechanisms across platforms
* Programmable transactions enabling automation
* Reduced friction in cross-border and cross-system interactions

| Shift                                    | Outcome                        |
| ---------------------------------------- | ------------------------------ |
| Traditional billing → Tokenized access   | Simplified service interaction |
| Manual payments → Automated transactions | Reduced operational overhead   |
| Isolated systems → Connected ecosystems  | Increased interoperability     |

***

#### **4.5 Summary of Market Opportunity**

| Layer          | Opportunity                        | Strategic Positioning                      |
| -------------- | ---------------------------------- | ------------------------------------------ |
| Infrastructure | Rising demand for scalable compute | Alternative to centralized cloud models    |
| Execution      | Growth of automation and workflows | Platforms enabling structured AI execution |
| Economic       | Need for unified value exchange    | Token-based coordination layer             |

***

#### **4.6 Market Positioning**

The current market is not defined by a single opportunity, but by the **intersection of three expanding domains**:

* AI infrastructure
* Workflow automation
* Digital value exchange

Most solutions address only one of these areas. The opportunity lies in positioning across all three, while maintaining clear separation of function and scalability.

AITECH Cloud Network (ACN) is positioned to capture this opportunity by operating across these layers through distinct products, supported by a unified economic framework. This enables alignment with enterprise demand for scalable infrastructure, structured execution, and efficient value exchange without introducing system dependency or complexity.


# ACN Engine Overview

On-Demand Access to High-Performance Computing Resources

AITECH Cloud Network (ACN) is structured as a modular AI infrastructure ecosystem, designed to address distinct functional requirements across compute access, workflow execution, and economic coordination. Rather than combining these into a single system, ACN separates each layer to ensure scalability, flexibility, and enterprise-grade reliability.

This architecture allows each component to operate independently while contributing to a broader ecosystem aligned through a unified economic model.

***

#### **5.1 Engine Architecture**

The ACN ecosystem is built on three foundational layers:

* **Compute Layer**
* **Agent Orchestration Layer**
* **Economic Layer**

Each layer is purpose-built to solve a specific category of challenges within the AI lifecycle, avoiding overlap in execution while maintaining alignment at the ecosystem level.

| Layer                     | Primary Function                         | Product Mapping     |
| ------------------------- | ---------------------------------------- | ------------------- |
| Compute Layer             | High-performance infrastructure access   | Compute Marketplace |
| Agent Orchestration Layer | Workflow design and execution            | Agent Forge         |
| Economic Layer            | Payments, value exchange, and incentives | $ACN                |

***

#### **5.2 Separation of Layers**

A core principle of ACN is the **strict separation between infrastructure and execution**. This ensures that each system can evolve, scale, and operate without dependency on the other.

**Compute Layer**

The Compute Layer is responsible for providing access to distributed, high-performance compute resources.

* Focused on infrastructure provisioning and workload execution
* Designed for AI training, inference, and compute-intensive tasks
* Operates independently of any workflow orchestration logic
* Supports enterprise-grade scalability and resource allocation

***

**Agent Orchestration Layer**

The Agent Orchestration Layer, powered by Agent Forge, focuses on execution logic and workflow automation.

* Primarily conversational input enabling ease of use.
* Enables design and deployment of multi-step AI workflows
* Integrates with external APIs, tools, and data sources
* Handles task coordination, sequencing, and automation

***

**Economic Layer**

The Economic Layer introduces a unified mechanism for value exchange across the ecosystem through $ACN.

* Functions as the medium of exchange for platform services
* Enables payments, subscriptions, and usage-based transactions
* Supports staking and ecosystem participation mechanisms
* Aligns both products at the economic level without coupling execution

***

#### **5.3 Architectural Principles**

ACN is built on a set of principles designed to meet enterprise requirements:

* **Modularity**\
  Each layer operates independently, reducing system complexity
* **Scalability**\
  Infrastructure and execution can scale based on demand without bottlenecks
* **Interoperability**\
  Both products integrate with external systems, APIs, and networks
* **Operational Separation**\
  No shared execution dependency between Compute Marketplace and Agent Forge
* **Economic Alignment**\
  A single token ($ACN) enables consistent interaction across the ecosystem

***

#### **5.4 System Overview**

| Component           | Role in Ecosystem                   | Dependency Model      |
| ------------------- | ----------------------------------- | --------------------- |
| Compute Marketplace | Provides infrastructure access      | Independent           |
| Agent Forge         | Enables workflow execution          | Independent           |
| $ACN                | Facilitates payments and incentives | Shared economic layer |

***

#### **5.5 Summary**

AITECH Cloud Network is designed as a layered ecosystem where:

* Infrastructure (Compute Marketplace)
* Execution (Agent Forge)
* Economics ($ACN)

operate as **distinct but aligned components**.

This structure ensures that enterprises can adopt each product based on their specific requirements, while benefiting from a consistent economic framework that supports access, usage, and participation across the broader ecosystem.


# Technical Architecture

The technical architecture of AITECH Cloud Network (ACN) is designed to support enterprise-grade scalability, flexibility, and interoperability across both infrastructure and execution environments. The system is built using a modular approach, ensuring that each component operates independently while remaining compatible within a broader integration framework.

This architecture enables ACN to support diverse use cases across compute access, workflow automation, and digital value exchange without introducing unnecessary coupling between systems.

***

#### **6.1 Modular System Design**

ACN follows a modular architecture where each functional component is isolated, allowing independent development, deployment, and scaling.

* Clear technical, functional and economic separation between infrastructure & execution.
* Components can be upgraded or replaced without affecting the entire system
* Reduced system complexity through defined boundaries
* Enterprise flexibility for integration into existing environments

| Module                 | Function                               | Design Benefit                |
| ---------------------- | -------------------------------------- | ----------------------------- |
| Compute Infrastructure | Executes high-performance workloads    | Scalable resource allocation  |
| Workflow Engine        | Manages execution logic and automation | Independent orchestration     |
| Payment Layer          | Handles transactions and settlement    | Unified economic coordination |

***

#### **6.2 Workflow Execution Model**

The workflow execution model defines how tasks are structured, triggered, and completed within Agent Forge.

* **Multi-step Execution**\
  Workflows are composed of sequential or conditional steps
* **Event-Driven Triggers**\
  Execution can be initiated by user input, scheduled triggers, or external events
* **State Management**\
  Each workflow maintains context across steps for continuity
* **Tool Interaction**\
  Workflows interact with APIs, data sources, and services during execution

| Component        | Role                                      |
| ---------------- | ----------------------------------------- |
| Trigger System   | Initiates workflow execution              |
| Execution Engine | Processes logic and task sequencing       |
| State Manager    | Maintains workflow context                |
| Output Handler   | Delivers results or triggers next actions |

***

#### **6.3 API and Integration Layer**

The integration layer enables connectivity between ACN products and external systems, ensuring compatibility with enterprise environments.

* Standardized API access for Agent Forge
* Support for third-party tools, data providers, and enterprise systems
* Ability to connect multiple services within a single workflow
* Designed for extensibility across different industries and use cases

| Integration Type    | Purpose                                   |
| ------------------- | ----------------------------------------- |
| External APIs       | Access data and services                  |
| Blockchain Networks | Enable on-chain interactions              |
| Enterprise Systems  | Connect internal tools and infrastructure |
| Data Providers      | Supply real-time and historical data      |

***

#### **6.4 Payment and Settlement Layer**

The payment and settlement layer enables seamless value exchange across the ecosystem using both on-chain and programmable payment mechanisms.

* Support for **on-chain transactions** using $ACN and stablecoins
* Integration of **x402 protocol** for agentic & request-based payments
* Enables workflows to request payment before execution
* Facilitates subscription models and usage-based billing

| Payment Mechanism   | Function                                |
| ------------------- | --------------------------------------- |
| $ACN Token          | Primary medium of exchange              |
| Stablecoins         | Alternative payment option              |
| x402 Protocol       | Agentic payment enablement              |
| On-Chain Settlement | Transparent and verifiable transactions |
| FIAT                | Top up FIAT (USD) using Stripe          |

***

#### **6.5 Interoperability Across Chains and Services**

ACN is designed to operate across multiple environments, ensuring compatibility with both blockchain networks and traditional systems.

* Cross-chain compatibility for payments and deployments
* Integration with EVM-based and other supported networks
* Ability to interact with off-chain services and infrastructure
* Supports hybrid workflows combining on-chain and off-chain execution

| Domain                    | Interoperability Capability                  |
| ------------------------- | -------------------------------------------- |
| Blockchain Networks       | Cross-chain payments and deployments         |
| Off-Chain Systems         | API-based integration with external services |
| Enterprise Infrastructure | Compatibility with existing tech stacks      |

***

#### **6.6 Architectural Overview**

| Layer             | Technical Role             | Key Characteristic                                  |
| ----------------- | -------------------------- | --------------------------------------------------- |
| Modular Design    | System structure           | Independent components                              |
| Execution Model   | Workflow processing        | Multi-step automation                               |
| Integration Layer | External connectivity      | Extensible APIs                                     |
| Payment Layer     | Value exchange             | Programmable transactions                           |
| Interoperability  | Cross-system compatibility | Multi-environment support                           |
| Data Layer        | Backend Data Management    | Secure and Isolated Layers, supporting data privacy |

***

#### **6.7 Summary**

The technical architecture of AITECH Cloud Network is built to support:

* Independent operation of infrastructure and execution systems
* Flexible integration with enterprise and blockchain environments
* Scalable workflow execution through modular design
* Efficient and programmable value exchange

This structure ensures that ACN can adapt to evolving enterprise requirements while maintaining performance, reliability, and interoperability across its ecosystem.


# Compute Layer

Compute Marketplace provides enterprise-grade access to distributed high-performance compute, enabling scalable AI workloads with transparent pricing and flexible resource allocation.

The Compute Marketplace is the infrastructure layer of AITECH Cloud Network (ACN), designed to provide enterprise-grade access to high-performance compute through a distributed and flexible model. It enables organizations to run AI workloads without dependence on centralized hyperscalers, offering improved cost efficiency, accessibility, and control over resource utilization.

***

#### **7.1 Overview**

The Compute Marketplace operates as a distributed compute network, aggregating resources from multiple providers to deliver scalable GPU access on demand.

* **Distributed Infrastructure Model**\
  Compute is sourced from a network of providers rather than a single centralized entity
* **On-Demand GPU Access**\
  Users can access high-performance GPUs based on workload requirements
* **Flexible Deployment**\
  Supports a wide range of AI and compute-intensive applications

| Feature                | Description                           |
| ---------------------- | ------------------------------------- |
| Infrastructure Model   | Distributed across multiple providers |
| Access Type            | On-demand & Reserved GPU provisioning |
| Workload Support       | AI, HPC, rendering                    |
| Deployment Flexibility | Scalable across use cases             |

***

#### **7.2 Infrastructure Design**

The infrastructure combines dedicated high-performance computing (HPC) environments with a broader global supply network.

* **HPC Data Centers**\
  Purpose-built facilities optimized for high-performance workloads
* **Global Compute Providers**\
  Integration with external providers to expand capacity and availability
* **Individual Providers**\
  Availability of supplying compute on the marketplace through individual supply

| Component          | Role                                               |
| ------------------ | -------------------------------------------------- |
| HPC Data Centers   | Core infrastructure for high-performance workloads |
| External Providers | Expand compute supply and geographic reach         |
| Allocation System  | Individual Preference                              |

***

#### **7.3 Pricing Model**

The Compute Marketplace is designed to provide transparent and predictable pricing structures, addressing one of the primary challenges of traditional cloud platforms.

* **Credit-Based System**\
  Purchase platform credits using ACN, FIAT and Stable coins
* **Pay-as-You-Go Model**\
  Users are charged only for the compute they actively use from their platform credits balance
* **Reservation Model**\
  Users can reserve on long term commitments using the platform credits
* **No Idle Billing**\
  Charges are not incurred for inactive resources

| Pricing Model      | Benefit                                          |
| ------------------ | ------------------------------------------------ |
| Pay-as-you-go      | Cost aligned with actual usage                   |
| Credit-based usage | Simplified budgeting and access                  |
| Reservation Model  | Reserve on long term commitments at lower prices |
| No idle charges    | Eliminates unnecessary costs                     |

***

#### **7.4 Key Capabilities**

The platform supports a broad range of compute-intensive workloads required by modern enterprises:

* **AI & ML Training**\
  Large-scale model training and fine-tuning
* **Inference Workloads**\
  Real-time and batch inference processing
* **Rendering**\
  High-performance rendering for media and design applications

| Capability    | Use Case                           |
| ------------- | ---------------------------------- |
| AI Training   | Model development and optimization |
| Inference     | Production-level AI deployment     |
| **Rendering** | Visual processing                  |

***

#### **7.5 Competitive Positioning**

The Compute Marketplace is positioned as an alternative to traditional hyperscalers by addressing key inefficiencies in cost, access, and flexibility.

| Factor            | Hyperscalers (AWS / Azure / GCP) | ACN Compute Marketplace  |
| ----------------- | -------------------------------- | ------------------------ |
| Pricing Structure | Complex, variable billing        | Transparent, usage-based |
| Cost Efficiency   | High overhead costs              | Optimized pricing model  |
| Vendor Lock-In    | High level of lock in            | Flexible access          |

***

#### **7.6 Summary**

The Compute Marketplace provides:

* Distributed access to high-performance compute
* Flexible and predictable pricing models
* Scalable infrastructure for enterprise workloads
* Reduced dependency on centralized cloud providers

It serves as a foundational infrastructure layer within AITECH Cloud Network, enabling organizations to efficiently access the compute resources required to support modern AI and high-performance applications.


# AI Agent Orchestration Layer

Agent Forge is a no-code orchestration platform that enables structured AI workflow execution, integrating automation, payments, and deployment into a single, scalable environment.

Agent Forge is the execution layer of AITECH Cloud Network (ACN), designed to enable structured automation through AI-driven workflows. It provides a no-code environment where users can design, deploy, and manage multi-step processes that interact with external systems, data sources, and services.

The platform is built to reduce the complexity of automation while maintaining the flexibility required for enterprise use cases.

***

#### **8.1 Overview**

Agent Forge enables the creation of AI-powered workflows without requiring traditional software development.

* **No-Code Orchestration**\
  Users define workflows through simple inputs rather than code
* **Structured Execution**\
  Tasks are organized into repeatable, multi-step processes
* **Cross-System Interaction**\
  Workflows connect with APIs, tools, and services

| Feature         | Description                                         |
| --------------- | --------------------------------------------------- |
| Platform Type   | No-code orchestration environment                   |
| Execution Model | Multi-step workflow automation                      |
| Accessibility   | Designed for both technical and non-technical users |
| Scope           | Internal automation and external deployment         |

***

#### **8.2 Workflow Engine**

The workflow engine is the core component responsible for managing execution logic and coordinating tasks.

* **Multi-Step Execution Logic**\
  Workflows are composed of sequential and conditional steps
* **Tool Integrations**\
  Each step can interact with external APIs, data sources, or services
* **Dynamic Decision-Making**\
  Logic can adapt based on inputs, outputs, or predefined conditions

| Component         | Role                                            |
| ----------------- | ----------------------------------------------- |
| Trigger System    | Initiates workflow execution                    |
| Logic Engine      | Processes conditions and sequencing             |
| Integration Nodes | Connect to external tools and services          |
| Output Layer      | Delivers results or triggers subsequent actions |

***

#### **8.3 Agent Economy**

Agent Forge introduces a framework where workflows can be deployed as monetizable units.

* **Monetizable Workflows**\
  Workflows can be offered as services with defined pricing
* **ERC-8004 Registry**\
  Enables registration and discoverability of agents on-chain
* **Autonomous Payments via x402**\
  Workflows can request and receive payment prior to execution

| Element         | Function                                 |
| --------------- | ---------------------------------------- |
| Workflow Assets | Deployable and reusable automation units |
| Registry Layer  | On-chain indexing and discovery          |
| Payment Logic   | Execution tied to payment conditions     |

***

#### **8.4 Payment Infrastructure**

The platform integrates programmable payment mechanisms to enable seamless value exchange.

* **x402 Protocol Integration**\
  Allows workflows to enforce payment requirements before execution
* **Support for $ACN and Stablecoins**\
  Flexible payment options across supported networks
* **Automated Settlement**\
  Transactions are processed without manual intervention

| Payment Method      | Purpose                                             |
| ------------------- | --------------------------------------------------- |
| $ACN                | Native medium of exchange                           |
| Stablecoins         | Alternative payment options across different chains |
| x402 Protocol       | Payment enforcement and automation                  |
| On-Chain Settlement | Transparent transaction processing                  |
| FIAT                | Top up FIAT (USD, EURO) using Stripe                |

***

#### **8.5 Integrations**

Agent Forge is designed to operate within a broad ecosystem of tools, platforms, and networks.

* **API Integrations**\
  Connect to external services and data providers
* **Blockchain Integrations**\
  Enable on-chain interactions and deployments
* **External Tools**\
  Support for enterprise systems and third-party platforms

| Integration Type | Use Case                            |
| ---------------- | ----------------------------------- |
| APIs             | Data access and service interaction |
| Blockchains      | On-chain execution and registry     |
| Enterprise Tools | Internal system automation          |
| Data Providers   | Real-time and historical data input |

***

#### **8.6 Deployment Models**

Agent Forge supports multiple deployment approaches to accommodate different operational, technical, and commercial requirements. These models enable workflows to be executed across off-chain systems, on-chain environments, and standardized protocol layers, ensuring flexibility in how automation is delivered and consumed.

***

**API Deployment**

Workflows can be exposed as APIs, allowing seamless integration into external applications, enterprise systems, and third-party services.

* Enables direct consumption of workflows within existing software environments
* Supports backend automation, SaaS integrations, and internal tooling
* Allows controlled access through authentication and usage limits

| Feature        | Description                                         |
| -------------- | --------------------------------------------------- |
| API Endpoints  | Expose workflows as callable services               |
| Access Control | Secure usage via API keys and permissions           |
| Integration    | Compatible with enterprise systems and applications |
| Scalability    | Supports high-volume request handling               |

***

**On-Chain Agent Deployment**

Workflows can be deployed as on-chain agents through registry infrastructure, enabling discoverability, monetization, and verifiable execution conditions.

* Registration through ERC-8004-compatible agent registries
* Public or permissioned access to deployed agents
* Integration with on-chain payment and access control mechanisms

| Feature             | Description                                  |
| ------------------- | -------------------------------------------- |
| Registry Deployment | Agents indexed and discoverable on-chain     |
| Payment Enforcement | Execution tied to on-chain transactions      |
| Transparency        | Verifiable access and interaction conditions |
| Monetization        | Native support for paid execution models     |

***

**MCP (Model Context Protocol) Deployment**

Agent Forge supports deployment through **MCP (Model Context Protocol)**, enabling standardized interaction between agents, tools, and external systems across multiple environments.

* Provides a unified interface for connecting multiple tools within a single workflow
* Enables interoperability between different agent environments and execution contexts
* Supports multi-tool orchestration without requiring custom integrations for each connection

| Feature                 | Description                                               |
| ----------------------- | --------------------------------------------------------- |
| Standardized Interface  | Unified protocol for tool and service interaction         |
| Multi-Tool Connectivity | Connect multiple MCP-compatible tools in one workflow     |
| Interoperability        | Enables cross-platform agent execution                    |
| Extensibility           | Easily integrates new tools without redesigning workflows |

***

#### **Deployment Model Comparison**

| Model               | Primary Use Case         | Environment | Key Advantage                        |
| ------------------- | ------------------------ | ----------- | ------------------------------------ |
| API Deployment      | Application integration  | Off-chain   | Direct system integration            |
| On-Chain Deployment | Monetizable agents       | Blockchain  | Transparency and payment enforcement |
| MCP Deployment      | Multi-tool orchestration | Hybrid      | Standardized interoperability        |

***

#### **8.7 Summary**

Agent Forge provides:

* A no-code environment for building AI-driven workflows
* A structured execution engine for multi-step automation
* A framework for monetizing workflows as deployable agents
* Integrated payment infrastructure for automated value exchange
* Flexible deployment models across off-chain and on-chain environments

It serves as the execution layer within AITECH Cloud Network, enabling organizations to design, manage, and scale automation without introducing additional technical complexity.


# Tokenomics

$ACN powers the AITECH Cloud Network as a unified economic layer, enabling payments, governance, staking, and a revenue-backed deflationary model aligned with real platform usage.

The $ACN token functions as the economic layer of AITECH Cloud Network, enabling value exchange, access to services, and ecosystem participation across both the Compute Marketplace and Agent Forge. It is designed to support usage-driven demand, align incentives, and introduce predictable economic flows within the network.

***

#### **9.1 Token Utility Across Ecosystem**

$ACN is embedded across core platform interactions, serving as the primary mechanism for accessing services and participating in ecosystem activities.

* Access to compute resources within the Compute Marketplace
* Execution of workflows within Agent Forge
* Deployment and monetization of agent-based services
* Participation in governance and staking mechanisms

| Utility                 | Application                              |
| ----------------------- | ---------------------------------------- |
| Compute Access          | Payment for GPU and infrastructure usage |
| Workflow Execution      | Payment for agent operations             |
| Deployment              | Publishing workflows and agents          |
| Governance              | Voting on protocol-level decisions       |
| Ecosystem Participation | Staking and access-related mechanisms    |

***

#### **9.2 Payment Mechanism**

$ACN operates as the primary medium of exchange across the ecosystem, enabling consistent and programmable transactions.

* Used for usage-based payments across both products
* Supports subscription-based access models
* Integrated with on-chain settlement systems
* Compatible with automated payment enforcement mechanisms

| Payment Type          | Description                                     |
| --------------------- | ----------------------------------------------- |
| Usage-Based Payments  | Pay per compute usage or workflow execution     |
| Subscription Payments | Fixed access plans for platform services        |
| On-Chain Transactions | Transparent and verifiable payments             |
| Programmable Payments | Automated transactions via integrated protocols |

***

#### **9.3 Staking Design**

Staking mechanisms are implemented to support ecosystem participation, access models, and supply management.

* Access-based staking to unlock platform capabilities
* Deployment-based staking for APIs and workflows
* Long-term ecosystem support through supply locking

| Staking Function        | Purpose                                     |
| ----------------------- | ------------------------------------------- |
| Access Enablement       | Unlock platform features and usage tiers    |
| Deployment Rights       | Enable external API and workflow deployment |
| Supply Locking          | Reduce circulating token supply             |
| Ecosystem Participation | Align incentives with long-term usage       |

***

#### **9.4 Governance**

$ACN enables participation in decentralized governance, allowing token holders to contribute to the evolution of the ecosystem.

* Voting on ecosystem upgrades and changes
* Adjustments to system parameters and mechanisms
* Participation in ecosystem proposals and initiatives

| Governance Area           | Scope                                       |
| ------------------------- | ------------------------------------------- |
| Protocol Upgrades         | Changes to system architecture or features  |
| Parameter Adjustments     | Updates to economic or operational settings |
| Ecosystem Proposals       | New initiatives and integrations            |
| Stakeholder Participation | Token-holder voting and input               |

Governance is designed to balance stakeholder participation with operational efficiency, ensuring that decisions reflect real usage patterns while maintaining system stability.

***

#### **9.5 Deflationary Mechanism — Revenue-Backed Burn**

$ACN incorporates a deflationary supply model directly linked to platform activity and revenue generation.

* A percentage of platform revenue is allocated to token buybacks
* Tokens are repurchased from the open market
* Repurchased tokens are sent to a burn address and permanently removed from circulation

| Stage              | Process                                                     |
| ------------------ | ----------------------------------------------------------- |
| Revenue Generation | Compute usage and agent execution generate platform revenue |
| Buyback Allocation | Portion of revenue allocated for token repurchase           |
| Market Repurchase  | Tokens acquired from open market                            |
| Burn Mechanism     | Tokens sent to burn address, reducing supply                |

**Flow Overview**

```
Platform Usage → Revenue → Buyback → Burn Address → Reduced Circulating Supply
```

This mechanism ensures that supply reduction is directly tied to measurable economic activity. As usage of the Compute Marketplace and Agent Forge increases, the rate of token removal from circulation scales accordingly, aligning long-term supply dynamics with real infrastructure demand.

***

#### **9.6 Supply Dynamics**

The overall supply behavior of $ACN is driven by the interaction between usage, staking, and deflationary mechanisms.

| Factor              | Impact                                      |
| ------------------- | ------------------------------------------- |
| Platform Usage      | Increases token demand                      |
| Staking Mechanisms  | Reduces circulating supply                  |
| Revenue-Backed Burn | Permanently removes tokens from circulation |
| Ecosystem Growth    | Expands utility and demand base             |

***

#### **9.7 Summary**

The $ACN token is designed to:

* Act as the primary medium of exchange across the ecosystem
* Enable governance participation and protocol evolution
* Support staking mechanisms tied to access and deployment
* Introduce a revenue-linked deflationary model
* Align token demand and supply with real platform usage

This structure ensures that the economic layer of AITECH Cloud Network remains directly connected to infrastructure consumption and workflow execution, supporting long-term sustainability and ecosystem growth.


# Monetization Strategy

The monetization model of AITECH Cloud Network (ACN) is designed to align revenue generation with actual platform usage across both infrastructure and execution layers. Revenue is derived from multiple streams, each directly tied to compute consumption, workflow execution, and ecosystem activity.

This approach ensures that monetization scales proportionally with adoption, rather than relying on fixed or speculative models.

***

#### **10.1 Revenue Streams**

ACN captures value across four primary channels:

* Subscription-based access
* Workflow execution fees
* Compute usage margins
* Agent marketplace activity

| Revenue Stream   | Source                | Value Driver                              |
| ---------------- | --------------------- | ----------------------------------------- |
| Subscriptions    | Platform access plans | Recurring usage and enterprise onboarding |
| Workflow Fees    | Agent execution       | Automation volume and task complexity     |
| Compute Margins  | Infrastructure usage  | GPU consumption and workload demand       |
| Marketplace Fees | Agent transactions    | Monetization of deployable workflows      |

***

#### **10.2 Subscription Revenue**

Subscription models provide predictable access to platform features and capabilities.

* Tiered plans for individuals, developers, and enterprises
* Access to advanced features, integrations, and usage limits
* Designed for recurring engagement and long-term adoption

| Plan Type  | Scope                                            |
| ---------- | ------------------------------------------------ |
| Individual | Basic access to workflows and compute            |
| Developer  | Expanded API and deployment capabilities         |
| Enterprise | Full-scale access with higher limits and support |

***

#### **10.3 Workflow Execution Fees**

Agent Forge generates revenue through execution-based fees tied to workflow usage.

* Charged per workflow execution or task completion
* Scales with complexity and number of steps
* Applicable to both internal and externally deployed workflows
* Agent compute fee when users use ACN provided models.

| Fee Type       | Trigger                                    |
| -------------- | ------------------------------------------ |
| Execution Fee  | Each workflow run                          |
| Complexity Fee | Multi-step or resource-intensive workflows |
| Service Fee    | Monetized agent interactions               |

***

#### **10.4 Compute Margins**

The Compute Marketplace generates revenue through margins applied to compute usage.

* Pricing optimized between supply and demand
* Margin applied on top of provider cost
* Scales with GPU usage and workload intensity

| Component           | Revenue Source                                |
| ------------------- | --------------------------------------------- |
| GPU Usage           | Per-hour compute consumption                  |
| Resource Allocation | Premium access to high-demand hardware        |
| Workload Scaling    | Increased usage across enterprise deployments |

***

#### **10.5 Agent Marketplace Fees**

Agent Forge enables monetization of workflows through a marketplace model.

* Developers can publish workflows as services
* Users pay to access or execute these workflows
* Platform captures a percentage of each transaction

| Activity           | Fee Mechanism                                     |
| ------------------ | ------------------------------------------------- |
| Compute fees       | Use of ACN provided LLM's                         |
| Execution Payments | Fixed fee per agent call                          |
| Service Access     | Subscription for premium or specialized workflows |

***

#### **10.6 Summary**

| Layer       | Monetization Model | Scaling Factor     |
| ----------- | ------------------ | ------------------ |
| Compute     | Usage margins      | GPU consumption    |
| Execution   | Workflow fees      | Automation volume  |
| Access      | Subscriptions      | User growth        |
| Marketplace | Transaction fees   | Ecosystem activity |

ACN’s monetization strategy ensures that revenue growth is directly linked to real platform usage across both infrastructure and execution layers.


# Use Cases

AITECH Cloud Network (ACN) is designed to support a wide range of real-world applications across enterprise, government, and developer environments. Its modular structure enables organizations to adopt compute infrastructure and workflow automation independently, based on their operational requirements.

***

#### **11.1 Enterprise Use Cases (AI Automation)**

Enterprises leverage ACN to automate processes, reduce operational overhead, and improve efficiency.

* Process automation across departments
* Data processing and analysis workflows
* Integration of AI into existing business systems
* Reduction of manual intervention in repetitive tasks

| Use Case                     | Outcome                               |
| ---------------------------- | ------------------------------------- |
| Operations Automation        | Increased efficiency and reduced cost |
| Data Pipelines               | Faster data processing and insights   |
| Customer Workflows           | Improved service delivery             |
| Internal Systems Integration | Streamlined operations                |

***

#### **11.2 Government Use Cases (Data Verification & Infrastructure)**

Government institutions require scalable systems for verification, coordination, and data integrity.

* Land record verification and management
* Document authentication workflows
* Cross-department data coordination
* Public service automation

| Use Case              | Outcome                            |
| --------------------- | ---------------------------------- |
| Land Records          | Improved accuracy and transparency |
| Document Verification | Reduced fraud and processing time  |
| Data Coordination     | Enhanced inter-agency efficiency   |
| Public Services       | Faster service delivery            |

***

#### **11.3 Developer Use Cases**

Developers use ACN to build, deploy, and scale AI-driven applications and workflows.

* Creation of agent-based workflows
* Access to compute for AI development
* Deployment of APIs and automation services
* Integration with external tools and platforms

| Use Case             | Outcome                            |
| -------------------- | ---------------------------------- |
| Workflow Development | Faster build cycles                |
| Compute Access       | Scalable AI training and inference |
| API Deployment       | External service integration       |
| Automation Tools     | Reusable and modular solutions     |

***

#### **11.4 Trading & Analytics Agents**

Agent Forge supports the development of automated agents for data analysis and execution.

* Market data aggregation and analysis
* Automated trading strategies
* Real-time decision-making workflows
* Integration with financial data sources

| Use Case             | Outcome                       |
| -------------------- | ----------------------------- |
| Data Analysis        | Faster insights generation    |
| Trading Automation   | Reduced manual execution      |
| Strategy Deployment  | Scalable financial operations |
| Real-Time Monitoring | Improved responsiveness       |


# Developer Ecosystem

The developer ecosystem is a core component of ACN, enabling continuous expansion of capabilities through third-party contributions and integrations.

***

#### **12.1 APIs and SDKs**

ACN provides standardized interfaces for developers to build and integrate applications.

* Access to Compute Marketplace and Agent Forge functionality
* SDKs for rapid development and deployment
* Support for multiple programming environments

| Tool          | Purpose                                  |
| ------------- | ---------------------------------------- |
| APIs          | Programmatic access to platform features |
| SDKs          | Simplified development and integration   |
| Documentation | Guidance for implementation              |

***

#### **12.2 Workflow Marketplace**

Agent Forge includes a marketplace for distributing and accessing workflows.

* Developers can publish reusable workflows
* Users can discover and execute available agents
* Supports monetization through execution-based payments

| Feature             | Benefit                              |
| ------------------- | ------------------------------------ |
| Workflow Publishing | Distribution of automation solutions |
| Discovery Layer     | Access to pre-built workflows        |
| Monetization        | Revenue generation for developers    |

***

#### **12.3 Incentives for Builders**

ACN is designed to encourage developer participation and ecosystem growth.

* Revenue sharing from workflow usage
* Access to platform tools and infrastructure
* Opportunities to build scalable services

| Incentive        | Outcome                             |
| ---------------- | ----------------------------------- |
| Revenue Sharing  | Financial motivation for developers |
| Platform Access  | Reduced development barriers        |
| Ecosystem Growth | Expansion of available solutions    |

***

#### **12.4 Summary**

| Ecosystem Component  | Role                  | Impact                  |
| -------------------- | --------------------- | ----------------------- |
| APIs & SDKs          | Development tools     | Faster integration      |
| Workflow Marketplace | Distribution layer    | Increased accessibility |
| Incentives           | Participation drivers | Ecosystem expansion     |

The developer ecosystem ensures that AITECH Cloud Network continues to evolve through active participation, enabling a scalable and diverse set of applications across industries.


# Corporate Structure

**AITECH Cloud Network Foundation (Panama)**

AITECH Cloud Network Foundation is the strategic ecosystem entity established to support ecosystem governance initiatives, strategic coordination, ecosystem development, partnerships, and long-term growth objectives across the AITECH Cloud Network ecosystem. The Foundation supports the continued development of the ecosystem and strategic coordination across affiliated entities where applicable.

&#x20;

**Solidus AI Tech Inc. (Panama)**

Solidus AI Tech Inc. is the entity responsible for the issuance of the ACN Token (formerly the $AITECH Token) and related token disclosures. This includes responsibility for the ACN White Paper and certain token-related infrastructure, disclosures, and activities associated with the ACN Token ecosystem.

&#x20;

**Solidus AI Tech Digital (Dubai, United Arab Emirates)**

Solidus AI Tech Digital is the technology and operating entity responsible for the development, operation, maintenance, and support of the ecosystem's technology infrastructure. The company provides technology development, operational support, infrastructure management, software services, and related technology solutions. Solidus AI Tech Digital **does not** issue the ACN Token and is **not** responsible for token issuance, token disclosures, or publication of the ACN White Paper.

&#x20;

**Group Relationship Notice**

The AITECH Cloud Network ecosystem operates through a group of legally distinct entities, each performing specific and segregated functions to support the development, governance, operation, and growth of the ecosystem.

Responsibility for products, services, platforms, token-related activities, websites, applications, and other ecosystem features may differ depending on the relevant entity, jurisdiction, and applicable legal requirements. Users should refer to the relevant product documentation, terms and conditions, disclosures, notices, and legal documentation to identify the entity responsible for a particular product or service.

The entities within the AITECH Cloud Network ecosystem may provide services to one another pursuant to intercompany agreements. Such arrangements may include technology services, operational support, administrative services, intellectual property licensing, personnel support, management services, and other related business services. This structure is designed to support clear operational responsibilities, effective governance, regulatory compliance, and the continued development of the ecosystem.

Certain intellectual property, trademarks, software, technology, databases, proprietary systems, and other assets may be owned, licensed, developed, managed, or utilized by different entities within the group pursuant to contractual arrangements.

&#x20;

**White Paper Responsibility Notice**

Responsibility for token-related disclosures, including the ACN White Paper, rests solely with the entity identified as the issuer in the relevant disclosure document.

&#x20;

**No Joint Liability Statement**

Nothing on this page should be interpreted as creating joint liability among group entities. Unless expressly stated otherwise, each entity operates independently and remains responsible for its own activities, obligations, regulatory compliance, contractual commitments, and legal liabilities.

**Regulatory Status Notice**

Regulatory status, licensing requirements, and legal treatment of products, services, digital assets, and activities may vary by jurisdiction. Users are responsible for reviewing the applicable legal documentation and determining whether access to a particular product or service is permitted in their jurisdiction.

&#x20;

**Disclaimer**

This corporate structure overview is provided solely for general informational purposes. Regulatory filings, token disclosures, contractual obligations, and legal responsibilities may apply to or be undertaken by specific entities within the group and remain subject to applicable laws and regulations.

Nothing contained herein constitutes regulatory approval, authorization, endorsement, investment advice, legal advice, financial advice, or a recommendation regarding any product, service, or digital asset.

The existence of a group relationship does not imply that all entities provide the same products or services, undertake the same activities, or assume responsibility for the activities of other entities within the group.

Please refer to the applicable terms and conditions, disclosures, notices, and product-specific documentation for further information regarding a particular product, service, platform, or activity.

&#x20;

&#x20;


# Terms and Conditions

Version: 1.8

Effective Date: June 5, 2025

Last Update:  April 27, 2026

***

1\. Introduction

These Terms and Conditions govern your access to and use of the services provided by **SOLIDUS AI TECH INC.**, a corporation duly incorporated under the laws of Panama, with registration number **155776555**, having its registered address at **PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panamá, Panama City, Panama**, and operating commercially under the trading name **"AITECH CLOUD NETWORK"** ("ACN", "we", "us", or "our"). Any references to “AITECH”, “AI Tech”, or similar terminology shall be understood as legacy references to the AITECH Cloud Network where applicable.

These Terms apply to all products, services, and features made available within the **AITECH Cloud Network ecosystem**, including but not limited to the **ACN Compute Layer, GPU Rental, CDC Marketplace Payments, GPU Staking, Compute Discount Certificates (CDC), ACN Agent Forge Orchestration Layer (including ACN Agent Forge and ACN Agent Forge Staking), Community Staking, DAO Governance, and the $ACN token** (formerly $AITECH during the migration period) (collectively, the “Services”).

SOLIDUS AI TECH INC. forms part of the **AITECH Cloud Network ("ACN")** ecosytem and group structure, which includes **AITECH Cloud Network Foundation** as the parent ecosystem entity supporting strategic growth, ecosystem coordination, governance initiatives, and affiliated group activities, together with affiliated entities, divisions, and operating units, including **Solidus AI Tech Digital** (operating within the AITECH Cloud Network ecosystem) as the technology development and operating entity for designated platforms, infrastructure, and enterprise technology services.

For the purposes of these Terms, **ACN Labs** (formerly known as AITECH Labs) refers to the research, development, and innovation division of the AITECH Cloud Network, responsible for the design, testing, and development of artificial intelligence technologies, infrastructure components, and related tools that may support the Services.

**ACN Labs** operates as an internal division or affiliated function and does not independently provide regulated services, financial services, or user-facing contractual services unless expressly stated.

By accessing or using any of these Services or the **AITECH Cloud Network platform (“ACN Platform”)**, you agree to be bound by these Terms and Conditions and all applicable supporting policies:

* AML/KYC Policy
* Prohibited Jurisdictions & Sanctions Compliance
* Fraud Prevention, Hacking Risks and Security Measures
* Risk Disclosures and Warnings
* EU AI Act Compliance Statement
* Staking Services and Regulatory Compliance
* Acceptable Use Policy
* Terms and Conditions for Unclaimed Tokens
* Privacy Policy
* Cookie Notice
* Marketing Consents
* Opting In/Out for Promotional Communications
* Data Breach Notification Policy
* Unclaimed Tokens Policy
* Token Migration Policy

> **If you do not agree with these Terms, please do not use our Services.**

***

### 2. Eligibility

You must be at least **18 years old** and legally capable of entering into binding contracts. By using our Services, you represent and guarantee that you meet these eligibility requirements.

***

### 3. Account Registration

Some Services may require registration. You agree to:

* Provide accurate, current, and complete information
* Maintain the confidentiality of login credentials
* Immediately notify us of any unauthorized use

**We reserve the right to suspend or terminate accounts violating these Terms.**

***

### 4. Description of Services

* **ACN Compute Layer, GPU Rental, and CDC Marketplace Payments:** $ACN can be used to pay for GPU processing power and purchase of CDCs on the marketplace within the AITECH Cloud Network. Compute Discount Certificates (CDC) can be represented in a form of utility-based non-fungible tokens (NFTs) that may provide discounts on compute services within the ACN Compute Layer CDC Marketplace.
* **GPU Staking:** Allow $ACN token holders to lock tokens for defined periods in order to support participation within the AITECH Cloud Network (“ACN”) ecosystem. Staking does not constitute an investment and does not confer ownership, profit rights, or any entitlement to financial return.
* **Compute Discount Certificates (CDC):** Utility-based non-fungible tokens (NFTs) that may provide discounts on compute services within the ACN Compute Layer CDC Marketplace.
* **ACN Agent Forge Orchestration Layer (including ACN Agent Forge and ACN Agent Forge Staking)**: ACN Agent Forge Orchestration Layer is an automated AI agents platform where users can design, deploy, and use agentic workflows. **Agent Forge** is a no-code agent orchestration platform that enables users to design, deploy, and manage AI-driven workflows. It allows teams to automate complex, multi-step processes across internal systems, external APIs, and data sources, reducing operational overhead while maintaining control and visibility. **ACN Agent Forge Staking** introduces a tiered staking model designed to align platform access with ecosystem commitment and ensure sustainable resource allocation.
* **Community Staking:** The Community Staking Pool allows $ACN holders to lock tokens for a defined period to support participation in the ACN ecosystem. Participants may become eligible for ecosystem incentives distributed in $ACN tokens, which are variable, conditional, and not guaranteed. Staking does not constitute an investment and does not confer ownership, profit rights, or any entitlement to financial return.
* **DAO Governance:** $ACN may be used in future governance modules or community voting mechanisms, depending on platform evolution.
* **$ACN Token:** Serves as the utility token for accessing, interacting with, and utilizing services within the AITECH Cloud Network platform (“ACN Platform”).

Certain Services, features, token functions, infrastructure components, or technology offerings may be operated, developed, licensed, supported, or administered by different entities within the AITECH Cloud Network group depending on the nature of the service, jurisdiction, and applicable legal requirements.

Some components of the Services, including AI-related tools, models, and infrastructure (such as Agent Forge), may be developed, tested, or maintained by **ACN Labs**. Such components may be experimental or evolving in nature and are provided subject to ongoing technical validation, regulatory review, and operational assessment.

All Services are governed by the **Acceptable Use Policy** and applicable documentation.

The Services facilitate interactions with protocols that enable individuals, inter alia, to purchase, trade, rent, and sell hosted GPU resources and AI models within the AITECH Cloud Network platform (“ACN Platform”).

You may participate in the Services by linking your digital wallet(s) on third-party supported bridge extensions, which allows you to purchase, store, and engage in transactions using cryptocurrency. Before interacting with the Services via the platform, we will ask you to download a supported electronic wallet extension and connect and unlock your digital wallets with that extension. Once you submit a request to sell or purchase any of the offered Services, your order is passed on to the applicable extension, which can complete the transaction on your behalf.

WE ARE NOT A BROKER, EXCHANGE, FINANCIAL INSTITUTION, OR CREDITOR. THE SERVICES ARE AN ADMINISTRATIVE PLATFORM ONLY. WE ARE NOT A PARTY TO ANY AGREEMENT BETWEEN THE PURCHASER AND SELLER OF THE SERVICES OR BETWEEN ANY USERS.

YOU BEAR FULL RESPONSIBILITY FOR VERIFYING THE IDENTITY, LEGITIMACY, AND AUTHENTICITY OF ASSETS YOU PURCHASE, RENT OR UTILIZE VIA THE SERVICES AND THE PLATFORM. NOTWITHSTANDING INDICATORS AND MESSAGES THAT SUGGEST VERIFICATION, WE MAKE NO CLAIMS ABOUT THE IDENTITY, LEGITIMACY, OR AUTHENTICITY OF ASSETS ON THE PLATFORM OR VIA THE SERVICES.

Transactions executed via the Services are conducted on the blockchain. While we offer a marketplace for the Services, we do not buy, sell, or take custody or possession of any of the Services, nor do we act as an agent or custodian for any user. Each Service listed for sale, rent, or utilization is independently offered via the platform and released automatically upon consummation of its agreement.

You will be required to make or receive payments exclusively through the cryptocurrency wallet you have connected to the AITECH Cloud Network platform or via fiat. We will have no insight into or control over these payments or transactions, nor the ability to reverse any transactions. Accordingly, we will have no liability to you or to any third party for any claims or damages arising as a result of any transactions you engage in via the Services.

Your participation in certain programs (e.g., promotions, sweepstakes, giveaways, rewards programs, debit cards, etc.) made available through the AITECH Cloud Network platform will be subject to additional terms and conditions specific to such programs.

***

### 5. Acceptable Use

You must not:

* Use Services for illegal, unethical, or harmful activities, or for any activities not in line with the intended aim of the platform
* Infringe upon intellectual property or data protection laws
* Circumvent or disrupt our systems
* Access or utilize the Site and/or Services for the purpose of web crawling, web harvesting, data mining, data extraction, scraping, or aggregating information without our prior written consent
* Use any AI system hosted on this platform for:
  * Surveillance or biometric identification without legal basis
  * Manipulative or deceptive practices (e.g., deepfakes, disinformation)
  * Applications that violate human rights, safety standards, or national laws

All usage must comply with our **Acceptable Use Policy**, **Privacy Policy**, **Cookie Notice**, and **Unclaimed Tokens Policy**.

***

### 6. Privacy and Data Processing

Your personal data may be collected, processed, stored, or shared by relevant entities within the AITECH Cloud Network group where necessary for service delivery, compliance, fraud prevention, customer support, security, or legitimate operational purposes, in accordance with the Privacy Policy and applicable law.

Your personal data is also governed by our **Privacy Policy** and related policies:

* Cookie Notice
* Marketing Consents
* Opting In/Out for Promotional Communications
* Data Breach Notification Policy

Please review these for complete information on how your data is collected and managed.

***

### 7. Use of AI and Automated Systems

AI systems and tools made available through the Services may be developed or supported by **ACN Labs**. These systems may involve ongoing research, testing, and iterative development and may not be fully optimized, error-free, or suitable for all use cases.

Services like Agent Forge include AI-generated outputs. By using them, you acknowledge:

* Outputs may be inaccurate or non-human in origin
* Disclaimers are provided in line with EU AI Act transparency guidelines
* Human oversight is encouraged for critical decisions

Review our **EU AI Act Compliance Statement** for additional information.

We assume no liability for the use, misuse, or outcomes of any AI models hosted on the platform. Users and deployers assume all risks associated with such use.

***

### 8. Vesting Terms

Tokens allocated under vesting schedules (including team, advisor, and investor allocations) are subject to lock-up and release periods as defined in the respective token agreements. The Company may enforce transfer restrictions through smart contracts or administrative controls. Users must comply with all vesting conditions before transferring or using vested tokens.

***

### 9. Coin Burn Conditions

The Company may initiate coin burns to permanently remove $ACN tokens from circulation. Burns may occur due to unclaimed tokens, revenue-based thresholds, or project milestones. All burns will be publicly disclosed and verifiable on the blockchain.

***

### 10. Claim Portal Terms for Unclaimed Tokens or Rewards

**10.1. Claim Period**

Users are responsible for claiming their tokens within **ninety (90) days** following conclusion of the applicable vesting period. Tokens that remain unclaimed after this period may be deemed expired and forfeited.

**10.2. Reallocation of Unclaimed Tokens or Rewards**

The Company reserves the right to reclaim and reallocate any unclaimed tokens for purposes including, but not limited to, project development, ecosystem growth, community initiatives, or token burn.

**10.3. Closure of Claim Portal**

Upon the completion of all vesting rounds, the Company reserves the right to terminate or deactivate the Claim Portal with a minimum of **thirty (30) days** prior notice.

**10.4. Method of Notification**

Users will receive system-generated notices via the platform or through a registered email prior to claim expiration or claim portal closure, consistent with EU MiCA's transparency standards.

Refer also to our **Terms and Conditions for Unclaimed Tokens** for additional information.

***

### 11. Token Migration (AITECH → ACN) – Time-Limited Rights and Mandatory Acknowledgment

**11.1. Migration Overview**

The Company may facilitate a migration of AITECH tokens to ACN tokens as a technical ecosystem process. This does not constitute an offer, solicitation, or financial product.

**11.2. Migration Window**

The migration shall be available strictly for **thirty (30) calendar days** from the officially announced start date.

**11.3. Expiry and Forfeiture**

Failure to complete migration within the Migration Window results in **permanent loss of the right to migrate tokens**.

**11.4. No Extensions**

No extensions, exceptions, or grace periods shall be granted under any circumstances.

**11.5. Mandatory Acknowledgment**

Users must accept migration terms via click-through agreement and acknowledgment before participating.

**11.6. User Responsibility**

Users are solely responsible for completing migration steps correctly and on time.

**11.7. Third-Party Dependencies**

The Company is not liable for failures caused by wallets, exchanges, or blockchain networks.

**11.8. Finality**

All migration transactions are **final and irreversible**.

**11.9. No Financial Advice**

Migration does not constitute financial advice or guarantee of value.

***

### 12. Intellectual Property

All content, software, and tools provided by SOLIDUS AI TECH INC. are protected by intellectual property laws. You are granted a non-exclusive, non-transferable, revocable license for personal or internal business use only.

***

### 13. Availability and Modifications

We do not guarantee uninterrupted availability. We may change, suspend, or discontinue features or amend these Terms at any time. Material changes will be communicated through our platform or via email where applicable.

If you continue to use the Services after updated Terms have been posted, you accept and agree to the changes. If you don't agree to be bound by the changes, you may not use the Services anymore.

***

### 14. Disclaimers

THE SERVICES, INCLUDING ANY USED SOFTWARE, PROMOTIONS TOOL, ANY CONTENT CONTAINED THEREIN, AND ANY SERVICES LISTED THEREIN ARE PROVIDED ON AN "AS IS" AND "AS AVAILABLE" BASIS WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. WE (AND OUR SUPPLIERS) MAKE NO WARRANTY THAT THE SERVICES: (I) WILL MEET YOUR REQUIREMENTS; (II) WILL BE AVAILABLE ON AN UNINTERRUPTED, TIMELY, SECURE, OR ERROR-FREE BASIS; OR (III) WILL BE ACCURATE, RELIABLE, COMPLETE, LEGAL, OR SAFE.

We further expressly disclaim all liability or responsibility in connection with third-party services. Nothing herein constitutes our endorsement, recommendation, or affiliation with any third-party services.

We do not represent or warrant that any content on the Services is accurate, complete, reliable, current, or error-free. We cannot guarantee the security of any data you disclose online. You accept the inherent security risks of providing information and dealing online over the internet.

We will not be responsible or liable to you for any loss arising from:

1. User error such as forgotten passwords, incorrectly constructed transactions, or mistyped wallet addresses
2. Server failure or data loss
3. Blockchain networks, cryptocurrency wallets, or corrupt files
4. Unauthorized access to Services
5. Any third-party activities, including without limitation the use of viruses, phishing, bruteforcing, or other means of attack

**EU AI Act Notice**

In accordance with the EU Artificial Intelligence Act, we inform you that:

* Some AI models or tools available on this platform may involve Limited or High-Risk applications, depending on how and where they are used
* You are responsible for evaluating the intended use and compliance obligations of any AI system you access or deploy
* No AI model hosted here should be used in prohibited or non-compliant applications, including those that may negatively impact individual rights, safety, or legal obligations without proper review
* Content and models are provided "as-is" without warranties or guarantees regarding their ethical or regulatory suitability for specific deployments
* To the maximum extent permitted by law, any technologies, tools, or outputs developed or supported by ACN Labs are provided on an "as-is" and "as-available" basis

We strongly encourage users to:

* Perform due diligence before using or adapting any AI system
* Label and disclose AI-generated content where applicable
* Follow applicable data protection, copyright, and regulatory frameworks, including the EU AI Act, GDPR, and domestic and international laws
* Seek expert or legal advice when deploying AI in regulated sectors (e.g., healthcare, finance, employment, biometric identification)

By accessing, downloading, and using this platform, you acknowledge the context-dependent nature of AI risk classification and accept full responsibility for ensuring ethical and lawful use of any AI resources hosted here.

***

### 15. Limitation of Liability

{% hint style="danger" %}

TO THE MAXIMUM EXTENT PERMITTED BY LAW, NEITHER US NOR OUR SERVICE PROVIDERS WILL BE LIABLE FOR ANY INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES, OR DAMAGES FOR LOST PROFITS, LOST REVENUES, LOST SAVINGS, LOST BUSINESS OPPORTUNITY, LOSS OF DATA OR GOODWILL, SERVICE INTERRUPTION, COMPUTER DAMAGE OR SYSTEM FAILURE OR THE COST OF SUBSTITUTE SERVICES OF ANY KIND ARISING OUT OF OR IN CONNECTION WITH THESE TERMS OR FROM THE USE OF OR INABILITY TO USE THE SERVICES.

{% endhint %}

TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT WILL THE AGGREGATE TOTAL LIABILITY OF US AND OUR AGENTS, REPRESENTATIVES, AND AFFILIATES ARISING OUT OF OR IN CONNECTION WITH THESE TERMS EXCEED THE AMOUNTS YOU HAVE PAID TO US FOR USE OF THE SERVICES OR ONE HUNDRED U.S. DOLLARS ($100), IF YOU HAVE NOT HAD ANY PAYMENT OBLIGATIONS TO SOLIDUS, AS APPLICABLE.

References to affiliated entities or group companies in these Terms do not create joint, several, or collective liability among all entities solely by reason of common ownership, branding, or group association, unless expressly required by applicable law.

***

### 16. Security and Breach Notification

We implement technical and organizational safeguards to protect your data. In the event of a breach, we follow our **Data Breach Notification Policy** to notify affected parties as required by law.

We reserve the right, but are not obligated, to remove or disable access to any content at any time and without notice, including if we consider it objectionable or in violation of these Terms. We may also consult and cooperate with law enforcement authorities to prosecute users who violate the law.

Listing illegally obtained assets may result in your listings being canceled, your assets being hidden, or you being suspended from the Services. If you have reason to believe that an asset listed on the Service was illegally obtained, please contact us immediately.

***

### 17. Termination

We may suspend or terminate your access to the Services at any time as required by applicable laws, any government authority, or if we determine at our sole and reasonable discretion that you are violating these Terms.

Such suspension or termination shall not constitute a breach of these Terms by us. In accordance with our anti-money laundering, anti-terrorism, anti-fraud, and other compliance policies, we may impose reasonable limitations and controls on your ability to utilize the Services, including rejecting transaction requests, freezing funds, or otherwise restricting access where good cause exists.

You may terminate your account at any time by contacting support at: <admin@aitech.io>

***

### 18. Governing Law and Jurisdiction

These Terms & Conditions are governed by the laws of the **United Kingdom**. Disputes will be resolved in the courts of that jurisdiction, unless otherwise mandated by law.

***

### 19. Contact Information

If you have any questions or concerns regarding these Terms & Conditions or our Services, please contact us at:

* **Email:** <admin@aitech.io>
* **Mailing Address:** SOLIDUS AI TECH INC, PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panamá, Panama City, Panama.

<br>


# Terms of Use

Version:  1.4

Effective Date:  June 5, 2025

Last Updated Date: April 14, 2026

**Terms of Use of AITECH Cloud Network Platform (“ACN Platform”) and Use of the $ACN Token (formerly $AITECH during the migration period).**

These Terms of Use (the “Terms”) apply to the access and use of the **AITECH Cloud Network platform (“ACN Platform”)**, including the dashboard, privacy relays, and all associated components (the “Platform”), and the use of the **$ACN token** (formerly referred to as $AITECH during the migration period), provided by **SOLIDUS AI TECH INC.**, a corporation duly incorporated under the laws of Panama, with registration number 155776555, having its registered address at PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panamá, Panama City, Panama, and operating under the trade name “**AITECH Cloud Network**” (“ACN”, “we”, “us”, or “our”). Any references to “AITECH”, “AI Tech”, or similar terminology shall be interpreted as legacy references to the AITECH Cloud Network where applicable. In the event of any discrepancy or conflict between translated versions of these Terms and the original English version, the English version shall prevail. These Terms constitute a legally binding agreement between you (the “User”, “you”, or “your”) and SOLIDUS AI TECH INC. (“ACN”, “we”, “us”, or “our”) and govern your access to and use of the ACN Platform, the website, and all services made available within the AITECH Cloud Network (“ACN”) ecosystem (collectively, the “Services”).

By accessing or using any of the Services, you acknowledge that you have read, understood, and agree to be bound by these Terms prior to using any Services within the ACN Platform.

\
The purpose of the ACN Platform is to combine AI, blockchain, and advanced computing to support a range of digital services — including but not limited to the ACN Compute Layer, GPU Rental, CDC Marketplace Payments, GPU Staking, Compute Discount Certificates (CDC), ACN Agent Forge Orchestration Layer (including ACN Agent Forge and ACN Agent Forge Staking), Community Staking, DAO Governance, and the $ACN token (formerly $AITECH during the migration period) (collectively, the “Services”). It gives users, developers, and creators the tools to build and interact within a secure digital ecosystem.&#x20;

\
The $ACN token (formerly referred to as $AITECH during the migration period) is intended to function solely as a utility token within the AITECH Cloud Network (“ACN”) ecosystem. It is not designed or marketed as an investment product, security, or financial instrument under any applicable law. Nothing in these Terms or on the ACN Platform shall be interpreted as offering or promoting the $ACN token for investment purposes or as promising any return, profit, or passive income derived from the efforts of others. You are solely responsible for determining whether the acquisition, holding, or use of the $ACN token is lawful in your jurisdiction and for complying with all applicable laws and regulations.

\
You expressly acknowledge that the ACN Platform may include test, beta, or experimental features used for registration and access purposes and may contain bugs, errors, or other issues that could result in data loss, inconsistent performance, or service disruptions, including but not limited to system crashes, interruptions, or loss of data. You are advised to exercise caution and not to rely on the continuous availability, performance, or functionality of the ACN Platform. The ACN Platform is made available to enable access to and interaction with services within the AITECH Cloud Network (“ACN”) ecosystem, including the use of the $ACN token (formerly referred to as $AITECH during the migration period). No warranties or representations are provided in relation to the availability, functionality, or use of the ACN Platform or any associated services.&#x20;

\
We may not be held responsible for any damages you may have because of any failures of the ACN Platform.

\
Please read these Terms carefully before using the Site or Services. By registering and using the ACN Platform you agree to accept the Services (hereinafter referred to as “Effective Date”), you (1) accept and agree to these Terms and their amendments from time to time and (2) consent to the collection, use, disclosure, and other handling of information as described in our Privacy Policy. If you do not agree to the Terms, then you may not access or use the Services.

<br>

1. **Acceptance and changes to the Terms**

Any and all terms, conditions, licenses, limitations, vesting schedules, and obligations contained within the AITECH Cloud Network (“ACN”) whitepaper and on the ACN Platform or associated websites (the “Website”) are incorporated into these Terms by reference, including, without limitation, the Privacy Policy, Risk Disclosures, vesting schedules, and any other documents published or made available within the ACN ecosystem. In the event of any inconsistency between these Terms and any other pages, policies, or documents published on the Website or ACN Platform, these Terms shall prevail. By creating an account (if applicable), accessing the ACN Platform, or using any of the Services, associated websites, or APIs, you acknowledge that you have read, understood, and agree to be bound by these Terms, as may be updated from time to time. These Terms, including any tokenomics descriptions and vesting schedules relating to the $ACN token (formerly referred to as $AITECH during the migration period), may be amended, modified, or updated by SOLIDUS AI TECH INC. (“ACN”, “we”, “us”, or “our”) at any time. Where required, material changes will be notified to users via email or through the ACN Platform at least seven (7) days prior to becoming effective, unless immediate changes are necessary for legal, regulatory, or security reasons. You are responsible for reviewing these Terms periodically. Your continued access to or use of the Services following the effective date of any amendments constitutes your acceptance of the revised Terms.

**If you do not agree to these Terms or any subsequent amendments, changes, or updates, you must immediately cease use of all Services.**<br>

2. &#x20;**Use of AITECH Website and Portal**

You may access and use the Services in accordance with these Terms. You agree to comply with the Terms and all laws, rules, and regulations applicable in your location’s jurisdictions to your use of the Services.

Using the ACN Platform carries no rights, express or implied, other than the limited right to use Platform as a means to enable access and interaction with the ACN services, if and to the extent that the Services are successfully completed and deployed.

To use the Services or or ACN Platform, you need to open an account on the Website (hereinafter referred to as “Account”) to be able to access the Services. You are required to open an account and you must complete the registration process by providing us with current, complete, and accurate information as prompted by the applicable registration form. You also may be required to interact via web3 libraries or other wallets. You are entirely responsible for maintaining the confidentiality of your password and account and for any and all activities that occur under Your account. You must keep your account’s password and own wallet password/pin safe and not share with third-parties. We are not responsible for unauthorized access to your account. You agree to notify ACN immediately of any unauthorized use of your account or any other breach of security. ACN will not be liable for any losses you incur as a result of someone else using your password/pin or account, either with or without your knowledge. However, you could be held liable for losses incurred by ACN or another party due to someone else using your account or password. You may not use anyone else’s account at any time, without the permission of the account holder.

ACN may, in its sole discretion, refuse to allow you to create an Account, or limit the number of Accounts that a single user may create and maintain or terminate an Account at any time. In order to purchase the $ACN tokens, you may be required to provide ACN with certain personal information for Know Your Client (KYC) purposes, including, but not limited to, your name, address, telephone number, e-mail address, date of birth, taxpayer identification number, government identification number. In submitting this or any other personal information as may be required, you verify that the information is accurate and authentic, and you agree to update ACN if any information changes. You hereby authorise ACN to, directly or through third parties make any inquiries ACN considers necessary to verify your identity and/or protect against fraud, including to query identity information contained in public reports (e.g., your name, address, past addresses, or date of birth), and to take action ACN reasonably deems necessary based on the results of such inquiries and reports. You further authorise any and all third parties to which such inquiries or requests may be directed to fully respond to such inquiries or requests. If ACN stops or suspends the Service for security reasons, Your account might become inaccessible by you and no further transaction will be possible during the inactivity period. The Account will have a login history where information about login dates, devices from which the Account was accessed from and respective IP addresses will be visible to you.&#x20;

\
Your access to and use of the Services are also governed by the following policies, which form an integral part of these Terms:

* [AML/KYC Policy](https://aitech.io/aml-kyc-policy-ai-ecosystem/)&#x20;
* [Prohibited Jurisdictions & Sanctions Compliance](https://aitech.io/prohibited-jurisdictions-sanctions-compliance/)&#x20;
* [Staking Services and Regulatory Compliance](https://aitech.io/staking-services-and-regulatory-compliance/)&#x20;
* [Risk Disclosures and Warnings](https://aitech.io/risk-disclosures-and-warnings/)&#x20;
* [Fraud Prevention, Hacking Risks and Security Measures](https://aitech.io/fraud-prevention-hacking-risks-and-security-measures/)&#x20;

\
**By using the ACN Platform, you confirm that you have read, understood, and agreed to be bound by the above policies.**

<br>

3. **Your Responsibilities**

Except to the extent caused by our breach of these Terms, (a) You are responsible for all activities that occur in your account, regardless of whether the activities are authorised by you or undertaken by you, your employees, or a third party (including your contractors, agents or end-users), and (b) ACN and our affiliates are not responsible for unauthorised access to your account. You will ensure that your Use of the Services does not violate any applicable law. You are solely responsible for your use of the services. You are responsible for properly configuring and using the Services and otherwise taking appropriate action to secure, protect, and backup your accounts and your content in a manner that will provide appropriate security and protection, which might include the use of encryption You shall immediately report any malfunction or defect found while using the Service. The report can be made to the following e-mail address: <ADMIN@AITECH.IO> You are liable for the correctness of the information you have submitted to AITECH during registration. In case of changes in the information, you shall update your account when accessing Services, you shall not: (i) negatively interfere with other customers; (ii) damage, disable, or in any way disrupt the Website; (iii) conduct, pay for, support, or in any way be involved in any illegal activities, including but not limited to money laundering, terrorist financing, fraud, illegal gambling, illegal weapons sale and drug trafficking; (iv) use any automated means or interface to access Webpage or to extract data; (v) use another customer’s account; (vi) provide false or misleading information to us.

<br>

4. **Liability. Warranties. Indemnification. Suspension**

To the extent permitted by law, ACN will not be liable for any damages, losses of profit, usage or data, loss of business, loss of business, failure to use the Service, customers misunderstanding of the Service or any other loss originated from negligence or fraud or otherwise arising out of or connected to the Service or these Terms. You shall indemnify and hold harmless ACN, its affiliates, contractors, licensors, and respective shareholders, members, directors, officers, employees, attorneys, agents, and suppliers from any claim, damage, lawsuit, tort, cost, or expenses. The Services & Platform are provided on an “as is” and “as available” basis without any warranty or representation expressed or implied. ACN does not make any representations or give warranties that the access to the Services, use of the Account, the functionality of the wallet will be continuous, uninterrupted, timely, or error-free. You understand and agree that ACN shall not be liable in connection with any force majeure event, including labour disputes or other industrial disturbances, electrical, telecommunications, hardware, software or other utility failures, software or smart contract bugs or weaknesses, earthquakes, storms, or other nature-related events, blockages, embargoes, riots, strikes, acts or orders of government authority, acts of terrorism or war, technological change, changes in interest rates or virtual currencies or other monetary conditions, and, for the avoidance of doubt, changes to any blockchain-related protocol. ACN may suspend your right to access or use any portion or all of the Services immediately upon notice to you if we determine: (a) Your use of the Services (i) poses a security risk to the Services or any third party, (ii) could adversely impact our systems, the Services or the systems of any other user, (iii) could subject us, our affiliates, or any third party to liability, or (iv) could be fraudulent; (b) You are, or any end-user is, in breach of these Terms ; (c) for entities, you have ceased to operate in the ordinary course, made an assignment for the benefit of creditors or similar disposition of your assets, or become the subject of any bankruptcy, reorganization, liquidation, dissolution or similar proceeding.

<br>

5. **Intellectual property (IP) protection**

Unless otherwise clearly specified, all copyright and other IP rights of our Services (hereinafter referred to as “Content”) constitute our proprietary rights and are protected by international laws and national IP and copyright laws. Subject to the terms of Terms, we grant you a personal, limited, revocable, non-exclusive, non-sublicensable, non-transferable license to do the following: (a) access and use the Services solely in accordance with these Terms; and (b) copy and use Our Content solely in connection with your permitted use of the Services. The use of such protected material without a license or specific authorization violates copyright and IP rights and shall result in criminal and/or civil penalties. You may view, download and print the documents from the Service solely for your personal use and own information purposes. Neither you nor any end-user will use the Services in any manner or for any purpose other than as expressly permitted by these Terms. Except as expressly authorized, neither you nor any end-user will, or will attempt to (a) modify, distribute, alter, tamper with, repair, or otherwise create derivative works of any Content included in the Services, (b) reverse engineer, disassemble, or decompile the Services or apply any other process or procedure to derive the source code of any software included in the Services (except to the extent applicable law doesn’t allow this restriction), (c) access or use the Services in a way intended to avoid incurring fees or exceeding usage limits or quotas, (d) use scraping techniques to mine or otherwise scrape data, or (e) resell or sublicense the Services unless otherwise agreed in writing. You will not misrepresent or embellish the relationship between ACN and you (including by expressing or implying that we support, sponsor, endorse, or contribute to you or your business endeavours). You will not imply any relationship or affiliation between ACN and you except as expressly permitted by these Terms. If you provide any Suggestions to ACN, we and our affiliates will be entitled to use the Suggestions without restriction. You hereby irrevocably assign to us all right, title, and interest in and to the Suggestions and agree to provide us any assistance we require to document, perfect, and maintain our rights in the Suggestions. ACN and the ACN logos, the URLs representing the Website, trade names, wordmarks, and design marks (hereinafter referred to as “AITECH Marks”) are trademarks of ACN or its related companies. In addition, all page headers, custom graphics, design, button icons, scripts, source code, content are copyrighted by ACN. You agree not to appropriate, copy, display or use the ACN marks or other content without express, prior, written permission to do so. Unless otherwise indicated, all materials on ACN are © ACN. You acknowledge and agree that any materials, including but not limited to questions, comments, feedback, suggestions, ideas, plans, notes, drawings, original, or creative materials or other information or commentary you provide on the Website or one of ACN‘s social media accounts, regarding ACN or the Services (collectively hereinafter referred to as “Feedback”) that are provided by you, whether by email, posting to the Website or otherwise, are non-confidential and will become the sole property of ACN. ACN will own exclusive rights, including all intellectual property rights, and will be entitled to the unrestricted use and dissemination of such Feedback for any purpose, commercial or otherwise, without acknowledgment or compensation to you.

<br>

6. **Your Representations & Warranties**

You represent and warrant to ACN the following:

That, if you are an individual customer, you are 18 years of age or older and that you have the capacity to contract under applicable law; That, if you are not an individual customer, you have the requisite power and authority to sign and enter into binding agreements for and on behalf of the customer; That you understand the risks associated with using the Site and Services and you are not otherwise prohibited by law from using the Site and Services; That you will not use the Site or any Services in order to disguise the proceeds of, or to further, any breach of applicable laws or regulations, or to deal in any contraband cryptocurrencies or proceeds; That you will not trade on the Site or use any Services with anything other than cryptocurrencies that have been legally obtained by you and that belong to you; That you will not falsify any account registration details provided to ACN; That you will not falsify or materially omit any information or provide misleading information requested by ACN in the course of, directly or indirectly relating to, or arising from your activities on the Site or use of any Services, including at registration; That any trading or other instructions received or undertaken through your login credentials or from your authorized e-mail address on file with ACN are deemed to be valid, binding, and conclusive, and that ACN may act upon those instructions without any liability or responsibility attaching to it; and, that you will fairly and promptly report all income associated with your activity on the Site pursuant to applicable law and pay any and all taxes eligible thereon; That you understand that cryptocurrencies are often described in exceedingly technical language that requires a comprehensive understanding of applied cryptography and computer science in order to appreciate inherent risks. The ability to use cryptocurrencies on ACN Services does not indicate approval or disapproval of the underlying technology regarding any cryptocurrencies and should not be used as a substitute for your own understanding of the risks specific to each cryptocurrency. ACN gives you no warranty as to the suitability of the cryptocurrencies used under these Terms and assumes no fiduciary duty in ACN‘s relations with you. You agree that ACN is not responsible for determining whether or which laws may apply to your transactions, including tax law. You are solely responsible for reporting and paying any taxes arising from your use of the Services.

<br>

7. **The Website and Services Accuracy**

Although ACN intends to provide accurate and timely information on the Website and while providing Services, the Website (including, without limitation, Services) may not always be entirely accurate, complete, or current and may also include technical inaccuracies or typographical errors. In an effort to continue to provide you with as complete and accurate information as possible, information may be changed or updated from time to time without notice, including without limitation information regarding ACN‘s policies, products, and services. Accordingly, you should verify all information before relying on it, and all decisions based on information contained on the Website are your sole responsibility and ACN shall have no liability for such decisions. Links to third-party materials (including without limitation websites) may be provided as a convenience but are not controlled by ACN. You acknowledge and agree that ACN is not responsible for any aspect of the information, content, or services contained in any third-party materials or on any third-party Websites accessible or linked to the Website.

<br>

8. **Abandoned Property and Unclaimed Tokens/Rewards**

**8.1 Inactive Accounts (2-Year Period)**

If you have not logged into your account on the ACN Platform for an uninterrupted period of two (2) years, ACN reserves the right to deem your account inactive. In such cases, we may classify any cryptocurrencies or assets associated with your account as abandoned. We will make reasonable efforts to contact you using the most recent information on file. If we are unable to reach you, we may be required to report or transfer such assets to the appropriate authorities in accordance with applicable laws.

\
Additionally, ACN may, at its discretion and where permitted by law, reclaim such abandoned tokens for purposes of reuse, redistribution, or permanent removal through coin burn mechanisms, as part of the platform’s asset management and tokenomics strategy. Dormancy or administrative fees may also apply as permitted by law.

**8.2 Unclaimed Tokens or Rewards**

If you fail to claim any tokens or rewards distributed by the ACN Platform within ninety (90) days from the date they become available,ACN reserves the right to classify such assets as unclaimed property. These tokens or rewards may be subject to administrative handling and may be permanently forfeited or reallocated in accordance with our platform policies and legal obligations.

\
For full details on how we manage Unclaimed Tokens or Rewards, please refer to our Terms and Conditions for Unclaimed Tokens or Rewards.

<br>

9. **Regulations. Compliance with local laws**

It is your responsibility to comply with local laws in respect to the legal usage of the Service and the regulatory qualification of virtual currencies in your jurisdiction.

<br>

10. **Jurisdiction. Applicable law. Disputes**

These Terms have been drawn up in accordance with the laws of the United Kingdom and the application, interpretation, and termination shall be governed by the laws of the **United Kingdom**. We reserve the right to change the jurisdiction of ACN and these Terms at any time at our own discretion, as well as use any parent companies, subsidiaries, and/or other affiliated companies for the execution of these Terms, our products, and other activities related to our business. Any disputes regarding the use of the Service and/or in connection with these Terms shall be settled through negotiations. If the Parties fail to resolve the dispute through negotiation, the disputes shall be settled by the court. You and ACN agree that any party hereto may bring claims against the others only on an individual basis and not as a plaintiff or class member in any purported class or representative action or proceeding. No adjudicator may consolidate or join more than one person’s or party’s claims and may not otherwise preside over any form of a consolidated, representative, or class proceeding. Any relief awarded to any one ACN user cannot and may not affect any other ACN user.

<br>

11. **Term. Termination**

The term of these Terms will apply as long as you are using the Platform and the Services.

You agree that ACN may terminate these Terms with you and suspend or cancel your Account in case of, but not limited to:

– Non-conformity to the requirements from these Terms;

– A requirement from any applicable law to which we are subject in any jurisdiction; An order from a court, or governmental authority; Unusual, unauthorized or fraudulent activity in your Account;

– False, misleading, inaccurate, incomplete, or outdated information; and&#x20;

– Any other reasons that ACN deems relevant for termination of the agreement between you and ACN and suspension or cancellation of your Account.

ACN shall have the right to file claims against you or your legal representative for compensation. If an event of force majeure occurs, the party injured hereto by the other’s inability to perform may elect to suspend the agreement between you and ACN, in whole or part, for the duration of the force majeure circumstances. The affected party shall notify the other party in writing of the occurrence of a force majeure event as soon as reasonably possible and, in any event, no later than 10 business days after becoming aware of such event. The notice must include reasonable details about the nature of the event, its anticipated duration, and the steps being taken to mitigate its impact. The affected party shall use all reasonable efforts to mitigate the effects of the force majeure event and to resume performance of its obligations under these Terms as soon as practicable.

Upon termination, suspension, or cancellation on the basis of the previous clauses, you will be denied access to the Account temporarily or permanently.

<br>

12. **Disclaimer. Risk**

ACN makes no representations, warranties, or guarantees to you of any kind. The Service is provided “as is” and “as available”. Except to the extent prohibited by law or to the extent any statutory rights apply that cannot be excluded, limited, or waived. Your use of the Service shall be at your own sole risk. ACN makes no representations or warranties including any implied or express warranties of merchantability, satisfactory quality, fitness or a particular purpose, non-infringement arising out of any course of dealing or usage of trade that the Service will be uninterrupted, error-free or free of harmful components, and that any content will be secure or not otherwise lost or altered. ACN does not warrant that your use of Service will be uninterrupted or error-free, nor does ACN warrant that it will review your content for accuracy or that it will preserve or maintain your content or end-user data without loss. ACN will not be liable for delays, interruptions, Service failures, or other problems inherent in the use of the internet and electronic communications or other systems outside the reasonable control of ACN. You may have other statutory rights, but the duration of statutorily required warranties, if any, will be limited to the shortest period permitted by law. To the extent permitted by law, ACN is not responsible for any delays, delivery of failures, or any other loss or damage resulting from (i) the transfer of data over public communications networks and facilities including the internet; (ii) personal injury or property damage or any nature whatsoever resulting from your access to and use of ACN Services and/or any all personal information and/or financial information stored therein; (iii) any loss of your data or content from the ACN Services; or (iv) any delay or delivery failure on the part of any other Service provider not contracted by ACN, and you acknowledge that the Service may be subject to limitations, delays and other problems inherent in the use of such communication facilities. You acknowledge that ACN cannot guarantee the absolute prevention of cyber-attacks such as hacking, spyware, and viruses. Accordingly, ACN shall not be liable for any unauthorized disclosure, loss, or destruction to make or pass on any representation or warranty on behalf of ACN to any third party. ACN does not warrant, endorse, guarantee or assume responsibility for any product or Service offered by third-party through the Website or ACN Services, and ACN shall not be a party to or in any way responsible for monitoring and any transaction between you and third-party providers of product or Services. ACN Services rely on emerging technologies, such as Ethereum. Some Services are subject to increased risk through your potential misuse of things as public/private key cryptography. By using the Services you explicitly acknowledge and accept these heightened risks. Since you can use ACN for withdrawal to your nominated wallet please note that crypto assets and markets are decentralized and not regulated. The crypto asset market is determined only by supply and demand and is often highly unpredictable and volatile. The price of a crypto asset is usually not transparent and highly speculative and susceptible to market manipulation. In the worst-case scenario, crypto-assets could be rendered worthless. Accordingly, crypto assets should be seen as an asset class with extremely high risks. You should not deal in these products unless you have the necessary knowledge and expertise, you understand these products’ characteristics, and your exposure to risk. Since blockchain is an independent public or private peer-to-peer network and is not controlled in any way or manner by us, we shall not be responsible for any failure and/or mistake and/or error and/or breach which shall occur in blockchain or in any other networks in which the crypto asset are being issued. You will be bound and subject to any change and/or amendments in the blockchain system and subject to any applicable law which may apply to the blockchain. We make no representation or warranty of any kind, express or implied, statutory or otherwise, regarding the blockchain functionality nor for any breach of security in the blockchain. You should be aware of the risks that may result from any system failure which could mean that your order may be delayed or fail. You acknowledge that there are risks associated with the system over the internet including, but not limited to, the failure of hardware, software, and internet connections, the risk of malicious software introduction, the risk that third parties may obtain unauthorized access to information and/or assets (including your crypto asset/token) stored on your behalf, cyber-attack, the crypto asset network failure (such as blockchain), computer viruses, communication failures, disruptions, errors, distortions or delays you may experience when trading via the Services, howsoever caused, spyware, scareware, Trojan horses, worms or other malware that may affect your computer or other equipment, or any phishing, spoofing or other attacks. You should also be aware that SMS and email Services are vulnerable to spoofing and phishing attacks and should use care in reviewing messages purporting to originate from us.

<br>

13. **Miscellaneous**

The defined concepts that are written in the upper case first letter in the Terms are used in the indicated meaning unless the context indicates a different meaning. These Terms set forth the entire understanding between ACN and you with respect to the Service. You agree to rely only on the Terms alone. These Terms supersede any previous statements made by ACN or individuals associated with the ACN. The failure by us to enforce any provision of these Terms will not constitute a present or future waiver of such provision nor limit our right to enforce such provision at a later time. All waivers by us must be in writing to be effective. If any term, clause, or provision of these Terms is held unlawful, void, or unenforceable, then that term, clause, or provision will be severable from this agreement and will not affect the validity or enforceability of any remaining part of that term, clause or provision, or any other term, clause or provision of these Terms and the invalid condition shall be replaced by a valid condition as close as possible to the outcome and the detail of the replaced condition. No failure of ACN to exercise any right, power, or privilege under these Terms is deemed to be a waiver thereof, nor any partial exercise of a right, power, or privilege should preclude the exercise of the entire or other rights, power or privilege. You may not assign any of the rights conferred to you under these Terms without prior written consent from ACN. ACN may assign any right or obligation under these Terms without any notice to or consent from you. These Terms are provided in English. Any translation has the sole purpose of being convenient for you. In case of any inconsistency, contradiction, or doubt, the English version of these Terms shall prevail. You can contact us, if you have some question, feedback, or complaint related to our Service, by sending ACN an e-mail to <ADMIN@AITECH.IO> .&#x20;

<br>

#### 14. Contact&#x20;

**Email:** <ADMIN@AITECH.IO>&#x20;

**Mailing Address:** SOLIDUS AI TECH INC., PH The Century Tower, Office 317 Vía Ricardo J. Alfaro Corregimiento de Betania, Distrito de Panama, Panama City, Panama.

\
\ <br>


# Privacy Policy

*Version:  1.5*

*Effective Date: June 5, 2025*\
*Last Updated: April 27, 2026*

***

## Privacy Policy

This privacy notice for **SOLIDUS AI TECH INC.**, a corporation duly incorporated under the laws of **Panama**, with registration number **155776555**, having its registered address at **PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panamá, Panama City, Panama**, and operating commercially under the trading name **"AITECH CLOUD NETWORK"** ("Solidus AITECH", "Solidus", "AITECH", "AI TECH", "we", "us", or "our") describes how and why we might collect, store, use, and/or process your information when you use our services, such as when you:

* Visit our website at <https://aitech.io/>, or any website of ours that links to this privacy notice.
* Engage with us in other related ways, including any marketing activities.

SOLIDUS AI TECH INC. forms part of the AITECH Cloud Network (ACN) group structure, which includes AITECH Cloud Network Foundation as the parent ecosystem entity supporting strategic growth, coordination, and affiliated group initiatives, together with affiliated entities including Solidus AI Tech Digital.

By accessing our services, you confirm that you have read and understood this Privacy Policy, including our policies on cookies, marketing consents, opt-in/opt-out promotional communications, and data breach notifications.

If you do not agree with our policies and practices, please do not use our Services. If you have any questions or concerns, contact us at <admin@aitech.io>.

***

### Summary of Key Points

* We may process personal information you voluntarily provide.
* We do not process sensitive personal information.
* We do not receive information from third parties.
* We process data to provide and improve our services, ensure security, and comply with legal obligations.
* Your information may be shared in limited scenarios like business transfers or with affiliates.
* We employ strong security measures but cannot guarantee complete protection.
* Your rights may vary by region and include access, correction, deletion, and opting out of marketing.

***

### Table of Contents

1\.      WHAT INFORMATION DO WE COLLECT?

2\.      HOW DO WE PROCESS YOUR INFORMATION?

3\.      WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?

4\.      WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?

5\.      WHAT IS OUR STANCE ON THIRD-PARTY WEBSITES?

6\.      DO WE USE COOKIES AND OTHER TRACKING TECHNOLOGIES?

7\.      HOW LONG DO WE KEEP YOUR INFORMATION?

8\.      HOW DO WE KEEP YOUR INFORMATION SAFE?

9\.      DO WE COLLECT INFORMATION FROM MINORS?

10\.   WHAT ARE YOUR PRIVACY RIGHTS?

11\.   CONTROLS FOR DO-NOT-TRACK FEATURES

12\.   DO WE MAKE UPDATES TO THIS NOTICE?

13\.   HOW CAN YOU CONTACT US ABOUT THIS NOTICE?

14\.   HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?

15\.   MARKETING CONSENTS AND OPTING IN/OUT FOR PROMOTIONAL COMMUNICATIONS

***

### 1. What Information Do We Collect?

We collect personal information you voluntarily provide when you contact us, use our services, or express interest in our products. This includes names and email addresses.

We do not collect or process sensitive personal information. All personal data provided must be accurate and kept up to date by the user.

***

### 2. How Do We Process Your Information?

Depending on the specific product, platform feature, or service you use, your personal data may be collected, accessed, stored, transferred, or otherwise processed by the relevant entity within the AITECH Cloud Network (ACN) group, including affiliated entities, divisions, or authorized service functions, where reasonably necessary for:

* Service delivery and account administration
* Customer support and transaction processing
* Regulatory compliance and fraud prevention
* Risk management and cybersecurity
* Technical maintenance and analytics
* Internal governance and business continuity
* Other legitimate business purposes

All processing is carried out in accordance with this Privacy Policy and applicable law.

***

### 3. What Legal Bases Do We Rely On to Process Your Information?

We only process your personal information when we believe it is necessary and we have a valid legal reason to do so under applicable law — such as with your consent, to comply with laws, to provide services, to fulfill contractual obligations, to protect your rights, or to fulfill our legitimate business interests.

***

#### EU and UK Residents (GDPR / UK GDPR / DPA)

We may rely on the following legal bases:

**Consent**

We may process your information if you have given us permission for a specific purpose. You can withdraw your consent at any time by emailing <admin@aitech.io>.

**Legal Obligations**

We may process your information where necessary for compliance with our legal obligations, such as cooperating with law enforcement, exercising legal rights, or disclosing information as evidence in litigation.

**Vital Interests**

We may process your information where necessary to protect your vital interests or those of a third party, such as in situations involving potential threats to safety.

***

#### Canadian Residents

We may process your information if you have given us specific (express) or inferred (implied) consent. You can withdraw your consent at any time by emailing <admin@aitech.io>.

In some exceptional cases, we may be legally permitted to process your information without consent, including:

* Where collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
* For investigations and fraud detection and prevention
* For business transactions provided certain conditions are met
* Where contained in a witness statement and necessary to assess, process, or settle an insurance claim
* For identifying injured, ill, or deceased persons and communicating with next of kin
* Where we have reasonable grounds to believe an individual has been, is, or may be a victim of financial abuse
* Where collection with consent would compromise the availability or accuracy of the information and is reasonable for investigating a breach of an agreement or contravention of the laws of Canada or a province
* Where disclosure is required to comply with a subpoena, warrant, court order, or rules of court
* Where produced by an individual in the course of their employment, business, or profession and collection is consistent with the purposes for which it was produced
* Where the collection is solely for journalistic, artistic, or literary purposes
* Where the information is publicly available and specified by regulations

***

### 4. When and With Whom Do We Share Your Personal Information?

We may share personal information within the AITECH Cloud Network (ACN) group, including affiliated entities, where reasonably necessary for administration, compliance, customer support, security, technology operations, internal governance, or lawful business purposes.

We will not rent, sell, or disclose your personal information to any third parties, except to those who require access to perform their tasks under binding agreements, or those who have a legitimate purpose for accessing it.

***

**4.1. Service Delivery and Transactions**

We may disclose personal information to third parties to administer or process a transaction or service you have authorized or requested, or to third parties providing supporting or analytical services for the purpose of improving the Services, only where we have a lawful basis to do so.

***

**4.2. KYC Verification**

We are required to verify your identity under applicable laws and regulatory requirements. Personal information you provide during the initial connection process is passed to third-party KYC verification services and on an ongoing basis thereafter.

***

**4.3. Business Transitions (M\&A)**

We may disclose or transfer part of your personal information in connection with a business transition, merger, or acquisition. In such an event, your personal information may be among the assets transferred but will be protected in accordance with this Privacy Policy.

***

**4.4. Law Enforcement and Government Authorities**

We may share your personal information with law enforcement and government officials when compelled by a subpoena, valid court order, or to prevent financial loss, report suspected illegal activity, or investigate violations of our Terms or applicable policies.

***

**4.5. Third-Party Processors**

We may share your personal information with third-party processors acting on behalf of the Platform operator, our affiliates, and/or our partners.

All affiliates and third parties with whom we share your personal information will be expected to protect this information in a manner that aligns with the provisions of this Privacy Policy.

***

### 5. What Is Our Stance on Third-Party Websites?

We are not responsible for third-party websites linked to our services. Users should review third-party privacy policies directly.

***

### 6. Do We Use Cookies and Other Tracking Technologies?

Yes, we use cookies and tracking tools for performance, functionality, and analytics.

We use a GDPR-compliant cookie banner that enables users to opt in or out of non-essential cookies. You can adjust your cookie preferences at any time via your browser settings or our cookie management tool.

Refer to our **Cookie Notice** for more details.

***

### 7. How Long Do We Keep Your Information?

We retain personal data only as long as necessary for its intended purposes or as legally required. Where data is archived, it is isolated from active use until secure deletion is possible.

Typical retention periods:

| Data Type          | Retention Period |
| ------------------ | ---------------- |
| User account data  | 5 years          |
| Transactional data | 5 years          |
| Marketing consents | 5 years          |

These periods may vary depending on legal obligations or user interactions.

***

### 8. How Do We Keep Your Information Safe?

We implement organizational and technical measures to secure your data. While no system is 100% secure, we follow industry standards to prevent unauthorized access, disclosure, or misuse.

***

### 9. Do We Collect Information from Minors?

No. Our services are not directed at children under 18. If we learn we have collected such data, it will be promptly deleted.

If you are under 18, you must obtain your parent or guardian's consent before using our services. We reserve the right to verify such consent where legally required.

***

### 10. What Are Your Privacy Rights?

Under GDPR and global laws, you have the right to:

* Access your personal information
* Correct inaccurate personal information
* Request deletion of your personal information
* Restrict or object to the processing of your personal information
* Request data portability
* Lodge complaints with supervisory authorities

To exercise any of these rights, contact us at <admin@aitech.io>.

***

### 11. Controls for Do-Not-Track Features

We currently do not respond to browser-based Do Not Track (DNT) signals. Should standards evolve, we will adopt compliant practices and update this notice.

However, we offer cookie and tracker preference tools which allow you to adjust data collection settings directly.

***

### 12. Do We Make Updates to This Notice?

Yes. Updates are posted with revised dates. Material changes may trigger direct notice via email or on-site banners.

We encourage you to review this page periodically.

***

### 13. How Can You Contact Us About This Notice?

* **Email:** <admin@aitech.io>
* **Mailing Address:** SOLIDUS AI TECH INC., PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panamá, Panama City, Panama.

***

### 14. How Can You Review, Update, or Delete the Data We Collect from You?

You may contact us at <admin@aitech.io> to access, correct, or delete your personal information, consistent with your legal rights.

Alternatively, you may use our privacy request portal (if available) for real-time management of your data subject rights.

***

### 15. Marketing Consents and Opting In/Out for Promotional Communications

We may send you promotional communications about our products, services, features, or special offers if you have provided your consent.

***

**Opt-In**

You may choose to receive marketing emails or newsletters when:

* Creating an account
* Subscribing to our updates
* Checking marketing boxes on forms

***

**Opt-Out**

You may opt out at any time by:

* Clicking the "unsubscribe" link in our emails
* Managing your preferences through your account settings (if available)
* Contacting us at <admin@aitech.io>

{% hint style="info" %}

Opting out does not affect service-related or transactional emails. We maintain opt-out logs as required by law (e.g., GDPR, CCPA).

{% endhint %}

For more information, see our **Marketing Consents Policy** and **Opting In/Out for Promotional Communications Policy**.

***

### EU MiCA Compliance

While SOLIDUS AI TECH INC. is not currently registered or required to register under the EU Markets in Crypto-Assets Regulation (MiCA), we voluntarily align with its principles by:

* Promoting transparency in our digital asset operations
* Clearly outlining user rights and responsibilities
* Applying fair practices
* Striving to maintain operational and financial resilience in accordance with MiCA's core objectives

***

### California Privacy Rights (CCPA/CPRA)

California residents have rights under CCPA/CPRA, including:

* The right to access personal information
* The right to deletion
* The right to correction
* The right to opt-out of data sale or sharing

To exercise your rights, contact <admin@aitech.io>.

***

### AI Transparency Under the EU AI Act

While SOLIDUS AI TECH INC. is not currently required to register under the EU Artificial Intelligence Act, we voluntarily follow the Act's transparency and user information guidelines. We have instituted internal procedures to:

* Classify AI system risk levels
* Label AI-generated content
* Ensure human oversight
* Provide clear AI interaction notices across our platforms, including the AI marketplace

***

### Definitions

| Term                | Definition                                                                                                                     |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Personal Data**   | Any information that relates to an identified or identifiable individual.                                                      |
| **Processing**      | Any operation or set of operations performed on personal data, whether or not by automated means.                              |
| **Consent**         | Any freely given, specific, informed, and unambiguous indication of the data subject's wishes.                                 |
| **Data Controller** | The entity which determines the purposes and means of processing personal data.                                                |
| **Data Processor**  | An entity which processes personal data on behalf of the Data Controller.                                                      |
| **Group**           | AITECH Cloud Network (ACN) Foundation and its affiliated entities, including Solidus AI Tech Inc. and Solidus AI Tech Digital. |
| **Relevant Entity** | The group entity acting as controller or processor for the applicable service.                                                 |

***

### Cross-Border Data Transfers

Where your personal data is transferred outside of the EEA, UK, or other jurisdictions recognized as providing an adequate level of data protection — including transfers between entities within the AITECH Cloud Network (ACN) group located in different jurisdictions — we ensure that such transfers are subject to appropriate safeguards, including:

* Standard Contractual Clauses (SCCs)
* Binding Corporate Rules
* Your explicit consent where required
* Other lawful transfer mechanisms consistent with GDPR requirements

***

### Legal Basis Mapping

| Data Type     | Legal Basis                           |
| ------------- | ------------------------------------- |
| Email address | Consent, Contractual necessity        |
| Name          | Consent, Legitimate interest          |
| Usage data    | Legitimate interest, Legal obligation |

***

### Data Breach Notification

In the event of a data breach likely to result in a high risk to your rights and freedoms, we will notify you and the appropriate data protection authority in accordance with applicable law (e.g., Article 34 GDPR). Notification will include:

* Nature of the breach
* Affected data categories
* Mitigation steps taken
* Contact points for support

Refer to our **Data Breach Notification Policy** for more details.

<br>


# Cookie Notice

*Version:  1.3*

*Effective Date: June 5, 2025*\
*Last Updated: April 27, 2026*

***

This Cookie Notice explains how Solidus AI Tech Inc., operating commercially under the trading name "AITECH CLOUD NETWORK" ("Solidus AITECH", "Solidus", "AITECH", "AI TECH", "we", "us", or "our") and relevant entities within the AITECH Cloud Network (ACN) group, including AITECH Cloud Network Foundation and Solidus AI Tech Digital where applicable, uses cookies and similar tracking technologies on our website [https://aitech.io](https://aitech.io/) and any other website of ours that links to this notice ("Website").By using our Website, you consent to the use of cookies as described in this notice, unless you have disabled them via your browser settings or our cookie management tool.

#### 1. What Are Cookies? <a href="#r1ud" id="r1ud"></a>

Cookies are small data files that are placed on your device when you visit a website. Cookies serve various functions such as enabling essential site features, analyzing website performance, remembering user preferences, and delivering personalized advertising.

#### 2. Types of Cookies We Use <a href="#r1uf" id="r1uf"></a>

We use the following categories of cookies:

| Type of Cookie        | Purpose                                                                          |
| --------------------- | -------------------------------------------------------------------------------- |
| Strictly Necessary    | Required for basic functionality and security of the site. Cannot be disabled.   |
| Performance/Analytics | Help us understand how visitors interact with our site (e.g., Google Analytics). |
| Functional            | Remember choices you make (e.g., language, region) to enhance user experience.   |
| Targeting/Advertising | Used to deliver relevant ads and measure their effectiveness.                    |

#### 3. How We Use Cookies <a href="#r1ur" id="r1ur"></a>

We use cookies to:Provide essential website functionalityAnalyze traffic and usage patternsRemember user settings and preferencesImprove website securitySupport marketing and retargeting campaignsComply with legal and regulatory obligations

#### 4. Group Use of Cookies <a href="#r1v3" id="r1v3"></a>

Depending on the website feature, campaign, platform integration, or service interaction, cookies or similar technologies may be deployed, managed, or accessed by relevant entities within the AITECH Cloud Network (ACN) group for operational, security, analytics, compliance, fraud prevention, functionality, or legitimate business purposes, subject to applicable law.

#### 5. Third-Party Cookies <a href="#r1v5" id="r1v5"></a>

Some cookies may be set by our ACN authorized group entities or by third-party services we use on our Website (such as Google, YouTube, or Meta). These third parties may use cookies to collect information about your browsing behavior across different websites.We encourage you to review the privacy and cookie policies of these third-party services.

#### 6. Your Choices and Consent <a href="#r1v8" id="r1v8"></a>

You have control over your cookie preferences. Upon first visit, you will be presented with a cookie banner allowing you to:Accept all cookiesReject non-essential cookiesCustomize your preferencesYou can also manage or delete cookies through your browser settings. Disabling cookies may affect certain features or functionality of the Website.

#### 7. Do Not Track Signals <a href="#r1ve" id="r1ve"></a>

Our Website currently does not respond to "Do Not Track" browser signals.

#### 8. Updates to This Cookie Notice <a href="#r1vg" id="r1vg"></a>

We may update this Cookie Notice from time to time to reflect changes in law, technology, or our practices. The date at the top of this notice will be updated accordingly. We encourage you to revisit this page periodically.

#### 9. Contact Us <a href="#r1vi" id="r1vi"></a>

If you have any questions or concerns about our use of cookies or this notice, please contact us at:Email: <admin@aitech.io>Mailing Address: SOLIDUS AI TECH INC, PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama.This is formatted with standard Markdown that renders cleanly in GitBook — using##headings for each section, a proper table for cookie types, and bullet lists throughout. Just paste it directly into your GitBook editor.

<br>


# EU AI Act Compliance

Version: 1.3

Effective Date: March 24, 2025

Last Updated Date: April 14, 2026

<br>

Our Commitment to EU AI Act Compliance

SOLIDUS AI TECH INC., a corporation duly incorporated under the laws of the Panama, with registration number 155776555, having its registered address at PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama, and operating commercially under the trading name “AITECH CLOUD NETWORK” (“Solidus AITECH”, “Solidus”, “AITECH”, “AI TECH”, “we”, “us”, or “our”) is committed to ensuring that our AI systems, models, and services align with the European Union Artificial Intelligence Act (EU AI Act) and other applicable regulations. As a platform hosting AI tools we recognize the importance of transparency, accountability, and responsible innovation.

Below are the key steps we follow to ensure ongoing compliance with the EU AI Act:

1\. Risk Classification of AI Models, AI Systems or AI Applications

We assess all AI systems and models hosted or deployed on our platform using the EU AI Act’s four-tier risk framework:

* Unacceptable Risk – Prohibited (not allowed on our platform)
* High Risk – Requires strict compliance if hosted
* Limited Risk – Transparency obligations implemented&#x20;
* Minimal or No Risk – Informational, low-impact tools (e.g., open datasets)

Each system is tagged based on its intended use, functionality, and potential impact.

<br>

2\. Transparency and AI Disclosure

In accordance with Article 52 of the EU AI Act, we ensure users are clearly informed when they are interacting with AI systems. We provide:

* AI interaction disclaimers and other tools
* Pop-up notices and consent banners for Limited Risk systems
* In-platform labels for AI-generated outputs and downloadable models (e.g., message stating “Powered by AI” or “Powered by AI Technology”).

3\. Human Oversight

Our AI tools are designed to assist – not replace – human judgment. Important decisions, especially those related to your health, legal matters, finances, or personal well-being, should always be reviewed or made by a qualified professional.<br>

4\. User Responsibility & Due Diligence

We are committed to supporting responsible and transparent use of AI by providing clear information about each tool or project available on our platform. While we do not directly engage with developers, we help users make informed decisions by:

* Displaying risk disclaimers on AI model and project pages
* Labeling AI systems where applicable to indicate potential use-case risks
* Encouraging users to assess the suitability and legal requirements for their specific use before deploying any AI tool

Users are expected to exercise due diligence and comply with any relevant laws or regulations, including the EU AI Act, especially when applying AI tools in regulated or sensitive contexts.

5\. Monitoring & Continuous Improvement

We regularly audit hosted models and applications to ensure continued compliance. We also monitor changes to EU regulations and industry best practices and adapt our platform policies accordingly.

6\. Contact & Inquiries

For questions, requests, or legal inquiries related to our compliance with the EU AI Act, please contact our compliance team:

SOLIDUS AI TECH INC.

Trading  Name: AITECH CLOUD NETWORK

Registration Number: 155776555

Mailing Address: PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama

Email: <ADMIN@AITECH.IO> <br>

By taking these steps, AITECH ensures our AI offerings are not only innovative and useful, but also safe, transparent, and legally compliant in line with European standards.


# Token Migration Policy

Version: 1.1

Effective Date: April 20, 2026

Last Update:  April 27, 2026

***

**1. Purpose and Scope**

This Token Migration Policy (“Policy”) governs the migration of AITECH tokens to ACN within the AITECH ecosystem (“Migration”).

This Policy is issued by Solidus AI Tech Inc. as part of the AITECH Cloud Network (ACN) group structure, which includes AITECH Cloud Network Foundation and affiliated entities supporting ecosystem strategy, technology operations, and related functions.

This Policy forms an integral part of, and must be read together with, the Company’s Terms and Conditions. In the event of conflict, the Terms and Conditions shall prevail unless expressly stated otherwise.

***

**2. Nature of the Migration**

The Migration is a technical token transition mechanism within the ecosystem and does not constitute:

* An offer, solicitation, or invitation to invest;
* A financial instrument, security, or regulated product;
* Any guarantee of value, liquidity, or future utility.

***

**3. Migration Window (Strict Time Limitation)**

The Migration is available strictly for a period of seven (7) calendar days and 7 days extension from the officially announced start date (“Migration Window”).

* The Company shall determine and publish the Migration Window;
* Users must complete all required steps within this period.

***

**4. Expiry and Irrevocable Forfeiture**

Failure to complete the Migration within the Migration Window shall result in:

* Automatic and permanent expiration of the User’s right to migrate; and
* Irrevocable forfeiture of any entitlement to convert AITECH into ACN.

To the maximum extent permitted by applicable law:

* No extensions, exceptions, reversals, reissuances, or compensation shall be provided.

***

**5. No Extensions, Exceptions, or Obligations to Remind**

* No extensions, grace periods, or exceptions shall be granted under any circumstances.
* The Company has no obligation to provide reminders, follow-ups, or individual notifications regarding the Migration Window.
* Users are solely responsible for monitoring official communications and deadlines.

***

**6. Mandatory User Acknowledgment (Clickwrap Consent)**

Access to the Migration process is conditional upon the User providing explicit and informed consent via a mandatory acknowledgment mechanism (e.g., checkbox + “Accept”).

By accepting, the User:

* Confirms understanding of the 7-day limitation;
* Accepts the risk of permanent loss of migration rights;
* Agrees to be legally bound by this Policy.

The Company may maintain electronic records of such acceptance, which shall constitute valid and binding evidence of consent.

***

&#x20;

**7. Eligibility**

Users must:

* Have full control and access to a compatible digital wallet;
* Comply with applicable Terms and Conditions and policies;
* Not be subject to sanctions, restrictions, or prohibited jurisdiction limitations.

***

**8. Migration Process**

To complete the Migration, Users must:

1. Access the official migration interface;
2. Connect a compatible wallet;
3. Follow all technical instructions;
4. Confirm and execute required blockchain transactions.

Certain technical, operational, customer support, platform management, infrastructure, security, transaction monitoring, communications, recordkeeping, troubleshooting, or other functions relating to the Migration may be performed, coordinated, or supported by relevant entities, internal divisions, affiliated companies, contractors, or authorized third-party service providers within or engaged by the AITECH Cloud Network (ACN) group, where reasonably necessary to facilitate the Migration process, maintain service continuity, manage operational risk, or comply with applicable legal and regulatory obligations.

All network fees (gas fees) and transaction costs are the sole responsibility of the User.

***

**9. User Responsibilities**

Users are solely responsible for:

* Ensuring correct wallet addresses and blockchain network selection;
* Using compatible wallets and platforms;
* Safeguarding private keys and credentials;
* Completing all steps within the Migration Window.

Any errors may result in permanent and irreversible loss of tokens.

***

**10. Risk Disclosure**

Users acknowledge and accept all risks associated with the Migration, including but not limited to:

* Incorrect wallet addresses or unsupported networks;
* Smart contract interaction errors;
* Blockchain congestion, delays, or failures;
* Loss or compromise of private keys;
* Platform downtime or technical limitations;
* Third-party service failures.

Digital assets involve inherent technical and operational risks, and outcomes cannot be guaranteed.

***

**11. Third-Party Dependencies**

The Migration may rely on third-party infrastructure, including:

* Blockchain networks
* Wallet providers
* Exchanges or custodians

The Company:

* Does not control such third parties; and
* Shall not be liable for any losses, delays, or failures arising from them.

The Migration may also rely on affiliated entities, technology operators, and authorized service providers within the AITECH Cloud Network (ACN) group.

***

&#x20;

**12. Finality and Irreversibility**

All Migration transactions are:

* Final
* Irreversible
* Non-cancellable

Once executed, no corrections, reversals, or refunds shall be possible.

***

&#x20;

**13. Limitation of Liability**

To the maximum extent permitted by applicable law, the Company shall not be liable for:

* Loss of tokens due to missed deadlines;
* User errors (including incorrect wallet details);
* Third-party failures or blockchain issues;
* Any indirect, incidental, or consequential damages.

Unless expressly stated otherwise, references to the group structure do not create joint, several, or collective liability among all affiliated entities solely by reason of common ownership, branding, or association.

***

**14. Indemnification**

The User agrees to indemnify and hold harmless the Company from any claims, losses, or damages arising from:

* Breach of this Policy;
* Misuse of the Migration process;
* Violation of applicable laws or third-party rights.

***

**15. No Financial Advice**

Nothing in this Policy constitutes:

* Financial, investment, legal, or tax advice;
* A recommendation or endorsement of any crypto-asset.

***

**16. Regulatory Position**

The Migration is intended solely as a technical ecosystem process and shall not be interpreted as:

* A public offering or exchange offer;
* A regulated activity under securities or financial services laws, to the extent permitted by applicable law.

***

**17. Amendments**

The Company reserves the right to modify this Policy at any time.

* Updates shall be effective upon publication or stated effective date;
* Continued participation constitutes acceptance of the updated Policy.

***

**18. Governing Law and Jurisdiction**

This Policy shall be governed by the laws of the United Kingdom.

Any disputes shall be resolved in the courts of that jurisdiction, unless otherwise required by applicable law.

***

&#x20;

**19. Entire Understanding**

This Policy constitutes the complete understanding regarding the Migration and supplements the Terms and Conditions.

***

### 20. Contact Information

If you have any questions or concerns regarding this Token Migration Policy, contact us at:\
\
Email:             <admin@aitech.io>

Mailing Address:        SOLIDUS AI TECH INC, PH The Century Tower, Office 317 Vía Ricardo J. Alfaro Corregimiento de Betania, Distrito de Panamá, Panama City, Panama.

&#x20;

<br>


# AML-KYC Policy

Version: 1.3

Effective Date: March 8, 2025

Last Updated Date: April 27, 2026

***

SOLIDUS AI TECH INC., a corporation duly incorporated under the laws of Panama, with registration number 155776555, having its registered address at PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panamá, Panama City, Panama, and operating under the trade name “**AITECH Cloud Network**” (“ACN”, “we”, “us”, or “our”), forms part of the AITECH Cloud Network (“ACN”) ecosystem and group structure.

The ACN ecosystem includes the AITECH Cloud Network Foundation as the parent ecosystem entity, together with affiliated entities, including Solidus AI Tech Digital, which may support onboarding, compliance operations, technology infrastructure, security controls, and other lawful operational functions depending on the nature of the Services. Any references to “AITECH”, “AI Tech”, or similar terminology shall be interpreted as legacy references to the AITECH Cloud Network where applicable.

SOLIDUS AI TECH INC. is committed to maintaining robust Anti-Money Laundering (AML) and Counter-Terrorist Financing (CTF) standards. Our AML/KYC Policy is designed to mitigate the risk of illicit activities, including money laundering, terrorist financing, fraud, and other financial crimes, by implementing internationally recognised regulatory principles and best practices, including those issued by the Financial Action Task Force (FATF).

&#x20;

**Key Components of Our AML/KYC Policy:**

**Know Your Customer (KYC) & Know Your Customer’s Business (KYCB):**

* User’s mandatory identity verification using government-issued ID, proof of address, and biometric checks.
* Enhanced Due Diligence (EDD) for high-risk customers, including source of funds (SOF) and adverse media screening.
* KYCB measures for Initial Decentralized Offering (IDO) projects using our platform, including ownership verification and risk assessment.

&#x20;

**Risk-Based Customer Due Diligence (CDD):**

* Customer risk classification based on jurisdiction, occupation, and transaction behavior.
* Ongoing monitoring of transactions for unusual activity and red flags.

&#x20;

**Transaction Monitoring & Suspicious Activity Reporting (SAR/STR):**

* Real-time monitoring of transactions for potential AML/CTF violations.
* Reporting of suspicious activities to regulatory authorities.

&#x20;

**Compliance Leadership & Training:**

* Designation of a Compliance Officer (MLRO) to oversee AML/CTF policies.
* Regular staff training on AML/CTF regulations and fraud detection.

&#x20;

**Regulatory Adherence:**

* Full compliance with global standards, including FATF recommendations.
* Adoption of strict record-keeping policies, ensuring that customer and transaction data are stored securely for regulatory purposes.

&#x20;

**Group Compliance Governance:**

AML/KYC controls may be implemented centrally or through designated entities within the AITECH Cloud Network (ACN) group. Responsibilities for customer onboarding, due diligence, transaction monitoring, sanctions screening, investigations, and regulatory reporting may be allocated to the relevant entity based on the service provided, jurisdiction, operational model, and applicable law.

&#x20;

&#x20;

SOLIDUS AI TECH INC.\
Trading  Name: AITECH CLOUD NETWORK\
Registration Number: 155776555

Mailing Address: PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama

Email: <ADMIN@AITECH.IO>


# Risk Disclosures and Warnings

Version: 1.4

Effective Date: March 8 , 2025

Last Updated Date: April 27, 2026

***

These Risk Disclosures and Warnings apply to services, products, token-related activities, websites, and ecosystem functions made available by relevant entities within the AITECH Cloud Network (ACN) group, including Solidus AI Tech Inc., AITECH Cloud Network Foundation, and Solidus AI Tech Digital, depending on the nature of the service, jurisdiction, and applicable legal requirements.

&#x20;

&#x20;

1\. Regulatory and Legal Risks

Jurisdictional Uncertainty

* Cryptocurrency regulations vary by country and are subject to change. The legal status of the AITECH token and related services may be reassessed by regulators, which could impact its usage, availability, and legality in your jurisdiction.
* Regulatory obligations, licensing requirements, and compliance responsibilities may differ between entities within the AITECH Cloud Network (ACN) group depending on the applicable service, jurisdiction, and operational model.
* Users are responsible for ensuring their compliance with local laws before engaging with AITECH tokens or our services.

Potential Token Reclassification

·       While the AITECH token is designed as a utility token, regulatory authorities such as the U.S. Securities and Exchange Commission (SEC), European Securities and Markets Authority (ESMA), and the UK Financial Conduct Authority (FCA) may classify it differently based on evolving legal standards.

AML/KYC Compliance Requirements

* All users are required to undergo Know Your Customer (KYC) verification before accessing certain AITECH services, in compliance with Anti-Money Laundering (AML) regulations.
* We reserve the right to block, restrict, or terminate accounts that do not meet AML/KYC compliance standards or are flagged for suspicious activities.

***

&#x20;

&#x20;

&#x20;

2\. Market and Financial Risks

Price Volatility and Investment Risk

* The AITECH token is highly volatile, and its price may experience significant fluctuations due to market demand, regulatory developments, macroeconomic conditions, and other factors.
* Past performance is not indicative of future results, and there is no guarantee of profit or return on investment.
* Users should only invest what they can afford to lose and seek independent financial advice before making investment decisions.

Liquidity Risks

* There is no guarantee that AITECH tokens will remain listed on cryptocurrency exchanges or that sufficient market liquidity will always be available for trading.
* Delistings, low trading volumes, or market disruptions may affect your ability to buy, sell, or convert AITECH tokens at a preferred price.

Smart Contract and Technical Risks

* The AITECH ecosystem relies on blockchain technology and smart contracts, which are subject to potential vulnerabilities, bugs, or exploits.
* While we implement industry best practices to enhance security, we cannot guarantee that AITECH tokens or smart contract-based services will be free from cyber threats.
* Any losses resulting from hacks, contract failures, or unauthorized access will be the responsibility of the user.

Token Risk

·       Token-related risks may relate specifically to digital asset functions administered by designated entities within the group and should not be interpreted as applying identically to all group products or entities.

***

&#x20;

3\. Security and Cyber Risks

No Guarantee of Security

* Despite implementing advanced security protocols, no system is entirely immune to hacking, phishing attacks, or cyber fraud.
* Users are responsible for:
* Safeguarding their private keys, passwords, and authentication credentials.
* Using strong security measures such as multi-factor authentication (2FA).
* Avoiding interactions with unofficial communication channels or social media platforms that may lead to scams or phishing attacks.

Risk of Wallet and Transaction Errors

* Cryptocurrency transactions cannot be reversed once confirmed on the blockchain. If you send AITECH tokens to an incorrect address, we cannot recover or refund lost funds.
* Users should carefully verify wallet addresses, transaction details, and network compatibility before initiating transactions.

***

&#x20;

4\. Operational and Governance Risks

No Ownership, Voting Rights, or Dividends

* Holding AITECH tokens does not grant ownership, equity, voting rights, or any form of claim over AITECH or its assets.
* AITECH tokens are purely utility-based within our ecosystem.

Changes to Token Utility and Platform Features

* The functionalities of the AITECH token and related services may evolve over time, subject to business, legal, or technical considerations.
* The relevant entity within the AITECH Cloud Network (ACN) group reserves the right, subject to applicable law, to modify, suspend, discontinue, or update products, services, or ecosystem functions.

***

&#x20;

5\. Legal Disclaimers

No Financial, Tax, or Legal Advice

* All information provided on our website, white papers, pitch decks, and marketing materials is for informational purposes only and should not be considered financial, investment, legal, or tax advice.
* We strongly recommend consulting with qualified legal and financial professionals before participating in token transactions or related fundraising activities.

Regulatory Actions and Service Restrictions

* If regulators impose restrictions on cryptocurrency-related activities in certain jurisdictions, users from those regions may be restricted from using AITECH tokens or related services.
* We reserve the right to block access or suspend services in jurisdictions where legal compliance cannot be maintained.

No Liability for Losses

* To the fullest extent permitted by law, AITECH disclaims all liability for losses resulting from:
* Token price fluctuations
* Regulatory changes
* Exchange delistings
* Security breaches
* Smart contract failures
* Technical errors

&#x20;

References to the AITECH Cloud Network (ACN) group, affiliated entities, or common branding do not create joint, several, or collective liability among all entities unless expressly stated or required by applicable law.

***

&#x20;

&#x20;

6\. Contact Information

If you have any questions about these risk disclosures or require further clarification, please contact us at:

SOLIDUS AI TECH INC.

Trading  Name: AITECH CLOUD NETWORK

Registration Number: 155776555

Mailing Address: PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama

Email: <ADMIN@AITECH.IO>\ <br>

***

&#x20;

By continuing to use our services, you acknowledge that you have read, understood, and accepted these Risk Disclosures and Warnings.


# Acceptable Use Policy

*Version:  1.3*

*Effective Date: June 5, 2025*\
*Last Updated: April 27, 2026*

***

**1. Purpose**

This Acceptable Use Policy (“AUP”) outlines the rules and prohibited activities applicable to the use of any service, platform, product, token-related function, or ecosystem feature made available within the **AITECH Cloud Network (“ACN”)** ecosystem and group structure. Such services may be provided by relevant entities, including SOLIDUS AI TECH INC. (operating under the trade name “**AITECH Cloud Network**”), the AITECH Cloud Network Foundation, and Solidus AI Tech Digital, as applicable based on the nature of the Services, jurisdiction, and operational model. Any references to “AITECH”, “AI Tech”, or similar terminology shall be interpreted as legacy references to the AITECH Cloud Network where applicable.

The following are our services, including but not limited to:

* **ACN Compute Layer, GPU Rental, and CDC Marketplace Payments:** $ACN can be used to pay for GPU processing power and purchase of CDCs on the marketplace within the AITECH Cloud Network. Compute Discount Certificates (CDC) can be represented in a form of utility-based non-fungible tokens (NFTs) that may provide discounts on compute services within the ACN Compute Layer CDC Marketplace.
* **GPU Staking:** Allow $ACN token holders to lock tokens for defined periods in order to support participation within the AITECH Cloud Network (“ACN”) ecosystem. Staking does not constitute an investment and does not confer ownership, profit rights, or any entitlement to financial return.
* **Compute Discount Certificates (CDC):** Utility-based non-fungible tokens (NFTs) that may provide discounts on compute services within the ACN Compute Layer CDC Marketplace.
* **ACN Agent Forge Orchestration Layer (including ACN Agent Forge and ACN Agent Forge Staking):** ACN Agent Forge Orchestration Layer is an automated AI agents platform where users can design, deploy, and use agentic workflows. Agent Forge is a no-code agent orchestration platform that enables users to design, deploy, and manage AI-driven workflows. It allows teams to automate complex, multi-step processes across internal systems, external APIs, and data sources, reducing operational overhead while maintaining control and visibility. ACN Agent Forge Staking introduces a tiered staking model designed to align platform access with ecosystem commitment and ensure sustainable resource allocation.
* **Community Staking:** The Community Staking Pool allows $ACN holders to lock tokens for a defined period to support participation in the ACN ecosystem. Participants may become eligible for ecosystem incentives distributed in $ACN tokens, which are variable, conditional, and not guaranteed. Staking does not constitute an investment and does not confer ownership, profit rights, or any entitlement to financial return.
* **DAO Governance:** $ACN may be used in future governance modules or community voting mechanisms, depending on platform evolution.
* **$ACN Token:** Serves as the utility token for accessing, interacting with, and utilizing services within the AITECH Cloud Network platform (“ACN Platform”).

**By using the Platform, you agree to comply with this AUP. Violations may result in suspension, termination, and reporting to legal authorities.**

***

&#x20;

**2. Prohibited Activities**

You may not use the Platform, directly or indirectly, to engage in any of the following activities:

**A. Cybercrime and Abuse of Compute Power**

* Launching or supporting denial-of-service (DDoS) attacks
* Distributing or deploying malware, ransomware, spyware, or botnets
* Unauthorized access, hacking, or system intrusions
* Network or application scanning, brute force attacks, or exploits

**B. Misuse of AI or Compute Resources**

* Training, deploying, or distributing:
* Deepfakes used for fraud, impersonation, or harassment
* AI models for creating malware or facilitating cyberattacks
* Autonomous offensive cyber tools or cyberweapons
* Processing or generating illegal, deceptive, or harmful content

**C. Financial Crime**

* Money laundering or layering transactions
* Terrorist financing or facilitating illicit financial activity
* Use of privacy coins, crypto mixers, darknet marketplaces, or obfuscation tools to avoid detection (unless permitted by law)

**D. Sanctions and Export Control Violations**

* Accessing the Platform from FATF restricted/sanctioned jurisdictions (e.g., North Korea, Iran, Myanmar, and Russia)
* Use by or on behalf of sanctioned individuals or entities (OFAC, EU, UN lists)
* Processing export-controlled content or software in violation of national or international laws

&#x20;**E. Child Exploitation, Prostitution, and Human Trafficking**

* Creating, sharing, storing, or accessing child sexual abuse material (CSAM)
* Engaging in or facilitating prostitution and/or human trafficking

**F. Cryptocurrency Mining (in restricted jurisdiction)**

* Mining in jurisdictions where it is prohibited by law
* Unauthorized mining activity during non-declared usage

**G. Privacy Violations and Intellectual Property Abuse**

* Collecting or processing personal data without consent (e.g., violating GDPR, CCPA, etc.)
* Training models on copyrighted or proprietary datasets without authorization
* Infringing upon any copyright, trademark, trade secret, or other intellectual property rights

***

&#x20;

**3. Monitoring and Enforcement**

The relevant entity within the AITECH Cloud Network (ACN) group reserves the right, directly or through authorized service providers, to:

* Monitor usage patterns and access logs
* Investigate suspected violations of this AUP
* Suspend, restrict, or terminate services  with or without prior notice where permitted by applicable law or necessary for security/compliance reasons
* Report illegal activity to law enforcement and cooperate fully in investigations
* Coordinate compliance, security, and enforcement actions across affiliated entities where reasonably necessary and permitted by law.

We may use automated tools and third-party services for behavioral and security monitoring.

***

&#x20;

&#x20;**4. User Responsibility**

All users must:

* Comply with this AUP and all applicable laws
* Promptly report any suspected violations to <admin@aitech.io>
* Maintain security of their credentials and access controls
* Ensure all software/code used on the Platform is lawful and safe

***

&#x20;

**5. Changes to This Policy**

The relevant entity within the AITECH Cloud Network (ACN) group may revise this AUP from time to time. Users will be notified of material updates via the ACN Platform or email where appropriate.

***

&#x20;

6\. Contact Us

For legal, compliance, or general inquiries regarding this policy:

Email:             <admin@aitech.io>

Mailing Address:        SOLIDUS AI TECH INC, PH The Century Tower, Office 317 Vía Ricardo J. Alfaro Corregimiento de Betania, Distrito de Panama, Panama City, Panama.


# Claim Portal  Terms and Conditions for Unclaimed Tokens or Rewards

*Version: 1.2*

*Effective Date: November 3, 2025*\
*Last Updated Date: April 14, 2026*

***

**1. Scope and Applicability**

These Terms and Conditions (“Terms”) apply to all eligible users of services made available within the AITECH Cloud Network (“ACN”) ecosystem and group structure. Such services may be provided by SOLIDUS AI TECH INC., operating under the trade name “**AITECH Cloud Network**” (“ACN”, “Company”, “we”, “us”, or “our”), together with relevant affiliated entities, including the AITECH Cloud Network Foundation and Solidus AI Tech Digital, as applicable based on the nature of the service, token-related function, claim administration process, or platform operations.

These Terms govern tokens or rewards distributed through vesting programs or other participation-based mechanisms made available on the AITECH Cloud Network platform (“ACN Platform”). Any references to “AITECH”, “AI Tech”, or similar terminology shall be interpreted as legacy references to the AITECH Cloud Network where applicable.

These Terms apply only to tokens or rewards distributed after the effective date specified above. Any prior distributions shall remain governed by the terms and conditions applicable at the time of issuance.

***

&#x20;

**2. Claim Period for Tokens or Rewards**

**2.1. Claim Period:** Users are responsible for claiming their  tokens within ninety (90) days period  following conclusion of the applicable vesting period. Tokens that remain unclaimed after this period may be deemed expired and forfeited.

**2.2. Reallocation of Unclaimed Tokens or Rewards:** The Company reserves the right to reclaim and reallocate any unclaimed tokens for purposes including, but not limited to, project development, ecosystem growth, community initiatives or for token burn. Reallocation, administrative handling, token burn processes, or claim portal management may be undertaken by the relevant entity within the AITECH Cloud Network (ACN) group, subject to applicable law and operational requirements.

**2.3. Closure of Claim Portal:** Upon the completion of all vesting rounds, the Company reserves the right to terminate or deactivate the Claim Portal with a minimum of thirty (30) days prior notice.

**2.4. Method of Notification:** Users will receive system-generated notices via the platform or through a user registered email prior to claim expiration or claim portal closure, consistent with the EU MiCA’s transparency standards.

***

&#x20;

**3. MiCA Compliance and Equal Treatment**

**3.1.** The relevant entity within the AITECH Cloud Network (ACN) group seeks to align applicable token claim processes with principles of transparency, fairness, and equal treatment, subject to applicable law (e.g., EU MiCA), consumer protection provisions, including:

•  Transparent and pre-disclosed conditions for claiming tokens;

•  Equal treatment of all users, without discrimination based on nationality or residence, except where restricted by applicable law;

•  No retroactive application of new policies to tokens previously distributed.

&#x20;

**3.2.** These terms are disclosed before user participation in vesting period.

***

**4. Handling Claims in Case of Deceased Users**

**4.1.** In the event of a user’s death, legal heirs or estate representatives may submit a claim for the unclaimed tokens or rewards. The following documents must be submitted:

•  A certified copy of the death certificate of the user;

•  Proof of legal authority, such as a court-issued probate order or certificate of inheritance;

•  A valid government-issued ID of the claimant;

•  Any other documentation reasonably requested by AITECH Cloud Network (ACN) for verification.

**4.2.** All personal data submitted for this purpose shall be processed in accordance with the General Data Protection Regulation (GDPR) under the lawful bases of:

•  Article 6(1)(c) – legal obligation; and

• Article 6(1)(f) – legitimate interest of the platform to verify rightful heirs.

**4.3.** Data collected for these claims shall be retained for a maximum of five (5) years unless a longer period is required by law, after which it shall be securely deleted. In some cases, certain data may be retained beyond the standard five (5) year period if required by applicable financial regulations, fraud investigations, or law enforcement subpoenas.

**4.4.** If no valid claim is submitted within twelve (12) months from the date of the user's death, Solidus AI Tech reserves the right to process and handle the unclaimed tokens in accordance with Clause 2.2 above.

**4.5.** Legal heirs may request access to, rectification, or deletion of their submitted data in accordance with GDPR Articles 15–22 by contacting <admin@aitech.io>.

***

**5. Law Enforcement and Legal Proceedings**

**5.1.** AITECH Cloud Network (ACN) may freeze, delay, or deny any token or reward claim under the following conditions:

• Receipt of a valid court order, subpoena, or law enforcement request;

• Reasonable suspicion of fraud, financial crime, sanctions evasion, or other unlawful activity.

**5.2.** In such cases, AITECH Cloud Network (ACN) may:

• Cooperate with law enforcement and regulatory agencies, and

• Delay disbursement of tokens until the matter is resolved.

***

&#x20;

**6. AML and Sanctions Compliance**

**6.1.** All claimants, including heirs, will be screened against applicable sanctions lists and anti-money laundering (AML) databases (e.g., EU, UN, OFAC, FATF lists). Claims submitted by sanctioned individuals or entities will be lawfully denied.

**6.2.** Screening may be conducted by the applicable group entity or authorized compliance service providers acting on its behalf.

***

&#x20;

**7. User Responsibilities and Awareness**

Users are responsible for:

• Monitoring their account activity, claimable balances, and deadlines;

• Maintaining up-to-date contact and wallet information;

• Notifying estate administrators of their digital assets held on the platform.

***

&#x20;

**8. Dispute Resolution and Appeals**

**8.1.** Users who fail to claim tokens within the designated timeframe due to force majeure (e.g., medical emergencies, technical failure) may request a discretionary review within 30 days after the expiration of the claim period.

**8.2.** Final decisions rest with the relevant entity or authorized internal review body within the AITECH Cloud Network (ACN) group will be made in accordance with fairness, internal compliance standards, and regulatory guidance.

***

&#x20;

**9. Modifications and Updates**

AITECH Cloud Network (ACN) reserves the right to update or amend these Terms and Conditions at any time. Notice of such updates will be posted on the platform. Continued use of the platform after such modifications constitutes acceptance of the revised terms.

***

**10. Contact Information**

For any inquiries or claim-related issues, please contact:

**Email:**             <admin@aitech.io>

**Mailing Address:**       SOLIDUS AI TECH INC, PH The Century Tower, Office 317 Vía Ricardo J. Alfaro Corregimiento de Betania, Distrito de Panama, Panama City, Panama.

***

&#x20;

**11. California Privacy Rights (CCPA/CPRA)**

If you are a California resident, you have the following rights:

\- Right to Know what personal data we collect and how it's used;

\- Right to Delete personal data (with exceptions);

\- Right to Correct inaccurate data;

\- Right to Opt-Out of sale or sharing of personal information;

\- Right to Limit use of sensitive personal information;

\- Right to designate an Authorized Agent to exercise your rights. To authorize an agent to act on your behalf, you must submit a written authorization signed by you and your designated agent to <admin@aitech.io> , along with verifiable identification.

You may exercise these rights by contacting us at <admin@aitech.io>.

More information is available in our Privacy Policy at:

<https://aitech.io/privacy-policy/>.

&#x20;

***

**12. Governing law and Jurisdiction**

These Terms and Conditions shall be governed by and construed in accordance with the laws of **United Kingdom**, without regard to conflict of laws principles. Any disputes arising out of or in connection with these Terms shall be subject to the exclusive jurisdiction of the competent courts in United Kingdom.

***

&#x20;

&#x20;


# Data Breach Notification Policy

*Version: 1.2*

*Effective Date: November 3, 2025*\
*Last Updated Date: April 14, 2026*

***

SOLIDUS AI TECH INC., operating under the trade name “**AITECH Cloud Network**” (“ACN”, “we”, “us”, or “our”), together with relevant entities within the AITECH Cloud Network (“ACN”) ecosystem and group structure, including the AITECH Cloud Network Foundation and Solidus AI Tech Digital (where applicable), is committed to safeguarding the security of personal data.

This Data Breach Notification Policy outlines the procedures and responsibilities applicable in the event of a personal data breach affecting users, customers, partners, systems, or services operated within the ACN ecosystem, as applicable based on the nature of the service, data processing activity, and relevant legal or regulatory requirements. Any references to “AITECH”, “AI Tech”, or similar terminology shall be interpreted as legacy references to the AITECH Cloud Network where applicable.

This Policy should be read in conjunction with our Privacy Policy, Cookie Notice, Marketing Consents Policy, and Opt-In/Out Communications Policy, which together form part of our broader data protection and compliance framework.

***

&#x20;

**1. Definition of a Data Breach**

A personal data breach is any security incident that results in accidental or unlawful destruction, loss, alteration, unauthorized disclosure of, or access to personal data transmitted, stored, or otherwise processed.

Examples of a data breach include:

* Unauthorized access to customer data;
* Exposure of marketing consents or preferences;
* Loss or theft of devices containing personal data;
* Malware or ransomware attacks;
* Human error resulting in misdirected emails or data leakage.

***

&#x20;

**2. Immediate Response & Containment**

Upon discovering a suspected data breach, we will immediately:

* Initiate our internal Incident Response Procedure;
* Contain the breach to limit further exposure;
* Assess the extent and nature of the breach;
* Secure all affected systems and data sources;
* Notify senior compliance and security staff.
* Coordinate with relevant affiliated entities, internal divisions, processors, vendors, and incident response providers where necessary to contain and investigate the breach.

***

&#x20;

**3. Assessment and Risk Analysis**

We will conduct a risk assessment to determine:

* The type and sensitivity of the personal data involved;
* The number of individuals affected;
* Whether the breach is likely to result in a risk to individuals' rights and freedoms;
* Any potential for identity theft, financial fraud, reputational harm, or unauthorized marketing.
* Whether personal data processed by multiple entities, jurisdictions, or third-party processors is affected.

***

&#x20;

**4. Notification Obligations**

Notification responsibilities may be undertaken by the relevant controller, processor, or responsible entity within the AITECH Cloud Network (ACN) group depending on the affected service, legal obligations, and jurisdiction.

&#x20;

**A. Supervisory Authorities**

If required under applicable laws (e.g., Article 33 of the EU GDPR), we will notify the relevant data protection authority within 72 hours of becoming aware of the breach.

&#x20;

**B. Affected Individuals**

If the breach is likely to result in high risk to the rights and freedoms of individuals, we will notify the affected persons without undue delay. This may include:

* A description of the breach;
* Contact details for further inquiries;
* Recommended actions individuals can take to mitigate harm;
* Summary of the steps we are taking to remediate the incident.

Notifications may be sent via email, platform alerts, or public announcement depending on the scope and severity.

***

&#x20;

**5. Communication and Marketing Impact**

In the event that marketing data or communication preferences (including opt-in/out records or email addresses) are affected:

* We will inform impacted individuals of the possible misuse of their promotional communication preferences;
* We will honor all unsubscribe or opt-out requests that may have been compromised;
* Marketing activities will be suspended for affected users until proper re-consent is confirmed, if necessary.

***

&#x20;

**6. Record-Keeping**

All data breaches, regardless of severity, will be documented. Our records will include:

* Facts relating to the breach;
* Its effects and scope;
* Corrective actions taken;
* Regulatory notifications made;
* Incident records may be maintained centrally or by the relevant group entity, subject to confidentiality, retention obligations, and applicable law.

This documentation is kept in accordance with Article 33(5) of the GDPR and our internal security policies.

***

&#x20;

**7. Preventive Measures**

To prevent recurrence, the relevant entity within the AITECH Cloud Network group may:

* Update system security protocols and access controls;
* Provide staff training on data protection and breach response;
* Conduct security audits and penetration testing;
* Review and revise data processing agreements with third-party vendors.

***

&#x20;

**8. Contact Information**

If you believe your data has been compromised or have questions about a potential breach, please contact us:

Email:             <admin@aitech.io>

Mailing Address:        SOLIDUS AI TECH INC, PH The Century Tower, Office 317 Vía Ricardo J. Alfaro Corregimiento de Betania, Distrito de Panama, Panama City, Panama.

&#x20;

***

&#x20;

&#x20;


# Marketing Consents Notice

*Version:  1.3*

*Effective Date: June 5, 2025*\
*Last Updated: April 27, 2026*

***

SOLIDUS AI TECH INC., operating under the trade name “**AITECH Cloud Network**” (“ACN”, “we”, “us”, or “our”), together with relevant entities within the AITECH Cloud Network (“ACN”) ecosystem and group structure, including the AITECH Cloud Network Foundation and Solidus AI Tech Digital (where applicable), respects your privacy and is committed to providing you with control over your marketing preferences. Any references to “AITECH”, “AI Tech”, or similar terminology shall be interpreted as legacy references to the AITECH Cloud Network where applicable.

This Marketing Consents Notice explains how your preferences for receiving promotional and marketing communications are collected, recorded, managed, and honored in relation to communications issued within the ACN ecosystem, as applicable based on the nature of the service, your interaction with the ACN Platform, and relevant legal or regulatory requirements.

***

**1. Consent to Receive Marketing Communications**

By opting in, you agree to receive marketing communications from relevant entities within the AITECH Cloud Network (ACN) group relating to products, services, events, ecosystem developments, technology offerings, or updates that may be relevant to your relationship with us, including:

* Product updates, feature announcements, and news;
* Promotions, offers, and events;
* Surveys, newsletters, and customer satisfaction outreach;
* Industry or technology insights relevant to our services.

&#x20;

You may provide your consent when you:

* Register for an account on our website or platform;
* Subscribe to our newsletter;
* Participate in marketing campaigns;
* Interact with our marketing materials online.

&#x20;

**Your consent is voluntary and not a condition for using our core services.**

***

&#x20;

**2. Opting Out of Marketing Communications**

You can withdraw your consent and opt out of receiving promotional communications at any time. You can do this by:

* Clicking the "Unsubscribe" link in any email;
* Adjusting your communication preferences via your user account settings;
* Contacting us directly at <admin@aitech.io> with the subject line "Unsubscribe".

Please note that even after opting out, you may still receive transactional or service-related communications (e.g., account updates, security alerts, legal notices).

Where operationally feasible and required by law, your opt-out request will be applied across relevant AITECH Cloud Network (ACN) group marketing channels associated with the same contact details, subject to lawful exceptions for transactional or service notices.

***

&#x20;

**3. Cookie-Based Marketing**

Our website may use cookies and similar technologies for marketing and advertising purposes. Please refer to our [Cookie Notice](https://aitech.io) for more information on how we use cookies and how you can manage your cookie preferences.

You may control advertising cookies through your browser settings or via our cookie consent banner.

***

&#x20;

**4. Marketing with Third Parties**

We may engage third-party service providers to deliver marketing content on our behalf (e.g., Mailchimp, Google, Meta). We do not sell your personal information. Any processing is done in accordance with data protection laws and under strict contractual obligations.

We may share only the minimum information necessary to perform these services (e.g., name, email address) and require all partners to maintain high privacy standards.

Relevant group entities may also use shared internal marketing systems or authorized service providers acting on behalf of the applicable entity.

***

&#x20;

**5. Data Security and Breach Notification**

Your marketing preferences and contact information are securely stored and protected under our internal data security protocols.

In the unlikely event of a data breach affecting your marketing data, and if such a breach is likely to result in a risk to your rights and freedoms, we will notify you without undue delay in accordance with our Data Breach Notification Policy and applicable data protection regulations.

Marketing data may be stored or processed by relevant group entities or authorized processors in accordance with applicable law and the Privacy Policy.

***

&#x20;

**6. Your Rights**

Under applicable laws (including the EU GDPR, UK GDPR, California Consumer Privacy Act, and others), you have the right to:

* Withdraw your marketing consent at any time;
* Access, update, or delete your marketing data;
* Object to the processing of your personal data for direct marketing.

Requests may be handled by the relevant entity within the AITECH Cloud Network (ACN) group responsible for the applicable communication channel or data processing activity.

To exercise these rights, please contact us at <admin@aitech.io>.

***

**7. Contact Information**

If you have questions about your marketing consents or how we process your data, you can contact us:

Email:             <admin@aitech.io>

Mailing Address:        SOLIDUS AI TECH INC, PH The Century Tower, Office 317 Vía Ricardo J. Alfaro Corregimiento de Betania, Distrito de Panama, Panama City, Panama.


# Fraud Prevention, Hacking Risks and Security Measures

$ACN powers the AITECH Cloud Network as a unified economic layer, enabling payments, governance, staking, and a revenue-backed deflationary model aligned with real platform usage.

Version: 1.3

Effective Date: March 8 , 2025

Last Updated Date: April 14, 2026<br>

**Protecting Your Digital Assets: A Guide to Wallet Security**

Ensuring the security of our users' wallets and digital assets is of utmost importance to us and remains our highest priority. This guide outlines essential fraud prevention and security measures to help protect users' digital assets. Our security approach aligns with EU MiCA Consumer Protection regulations and other global standards, providing proactive steps to prevent wallet hacks and clear response procedures in the event of a security breach.

**Proactive Fraud Prevention Measures**

To minimize the risk of unauthorized access, fraud, or hacking, follow these best practices:

🔹 **Use Strong and Unique Passwords**

* Create a complex password that is difficult to guess.
* Avoid using easily identifiable information such as birthdays or common words.
* Consider using a password manager to generate and store strong passwords securely.

🔹 **Enable Two-Factor Authentication (2FA)**

* Activate 2FA on your wallet and all associated accounts to add an extra layer of security.
* Use authentication apps (e.g., Google Authenticator) instead of SMS-based 2FA for enhanced protection.

🔹 **Secure Your Network**

* Avoid accessing your wallet on public Wi-Fi networks, as they can be easily compromised.
* Use a VPN (Virtual Private Network) when managing crypto transactions to enhance privacy and security.

🔹 **Beware of Phishing Attacks**

* Never share your private keys, seed phrases, or login credentials— ACN will never request this information.
* Be cautious of emails, messages, or fake websites impersonating ACN’s official channel platforms.
* Always verify URLs before entering your wallet credentials.

🔹 **Keep Software & Devices Updated**

* Regularly update your wallet software, operating system, and antivirus software to protect against security vulnerabilities.
* Enable automatic updates where possible to ensure timely security patches.

🔹 **Utilize Cold Storage for Added Security**

* Store a portion of your digital assets in cold storage (hardware wallets) to protect against online hacking attempts.
* Ensure your recovery phrase is securely stored offline and never shared digitally.

<br>

**Incident Response: Pre- and Post-Hack Procedures**

If you suspect unauthorized access or experience a security breach, follow these steps:

**Pre-Hack: Preventative Monitoring**

🔹 **Account Monitoring & Suspicious Activity Detection**

* Regularly review your wallet transactions for any unauthorized activity.
* Enable security alerts and notifications to be immediately informed of any unusual access.

🔹 **Immediate Action Steps to Mitigate Risk**

* If you notice any suspicious activity, immediately disconnect from the internet and log out of all wallet sessions.
* Change your wallet password and 2FA settings if you suspect an attempted breach.

**Post-Hack: Security Breach Response**

🔹 **Change Your Wallet Address**

* If your wallet has been compromised, it is recommended to transfer assets to a new secure wallet immediately.
* Use a different, secure device when setting up your new wallet to prevent further risk.

🔹 **Staking & Fund Transfer Security**

* If your staked funds are at risk, a secure verification process may be required before transferring them to a new wallet.
* Always confirm the legitimacy of withdrawal requests to avoid phishing attempts.

🔹 **User Responsibility & Enhanced Security Measures**

* As a decentralized platform, users are responsible for safeguarding their own assets and following security best practices.
* If a breach occurs, contact ACN immediately and we will provide guidance.&#x20;

<br>

**Recommended Fraud Prevention and Security Resources:**

✅ **Global Cybersecurity Organizations & Awareness Platforms**

* National Cyber Security Centre (NCSC - UK) – [www.ncsc.gov.uk](https://www.ncsc.gov.uk)&#x20;
* Provides cybersecurity guidance, phishing alerts, and best practices for individuals and businesses.
* Europol’s No More Ransom Initiative – [www.nomoreransom.org](https://www.nomoreransom.org)&#x20;
* Helps ransomware victims recover their files and provides resources on cybercrime prevention.
* Cybercrime Support Network (U.S.) – [www.fightcybercrime.org](https://fightcybercrime.org)&#x20;
* Offers education and support for victims of cybercrime, including phishing, fraud, and hacking.
* Stop. Think. Connect. (U.S. Dept. of Homeland Security) – [www.stopthinkconnect.org](https://www.stopthinkconnect.org)&#x20;
* A public awareness campaign providing tips on online safety, phishing prevention, and scam awareness.<br>

✅ **Crypto-Specific Security & Scam Awareness**

* Bitcoin.org Security Guide – <https://bitcoin.org/en/secure-your-wallet> &#x20;
* Covers wallet security, phishing risks, and best practices for protecting digital assets.
* CryptoScamDB – [www.cryptoscamdb.org](https://www.cryptoscamdb.org)&#x20;
* A community-driven database of known crypto scams, phishing websites, and fraudulent platforms.
* Chainabuse (Blockchain Anti-Fraud) – [www.chainabuse.com](https://www.chainabuse.com)&#x20;
* Allows users to report and track crypto scams, suspicious wallets, and fraudulent activity.
* REKT Database (Crypto Hacks & Exploits) – [www.rekt.news](https://www.rekt.news)&#x20;
* Monitors and documents high-profile crypto hacks, phishing attacks, and DeFi exploits.

✅ **Anti-Phishing Tools & Browser Security**

* Google Safe Browsing (Check for Malicious Sites) – [www.transparencyreport.google.com/safe-browsing/search\&#x20](http://www.transparencyreport.google.com/safe-browsing/search\&#x20);
* Users can check if a website is flagged as unsafe due to phishing or malware.
* ScamAdviser (Website Trust Checker) – [www.scamadviser.com](https://www.scamadviser.com)&#x20;
* Evaluates website trustworthiness and detects potential scams.
* Mozilla Phishing & Malware Protection – [www.mozilla.org/en-US/security/phishing](https://www.mozilla.org/en-US/security/phishing)&#x20;
* Provides phishing prevention tools and browser security recommendations.
* Microsoft Security Intelligence (Phishing & Scam Alerts) – [www.microsoft.com/en-us/security-intelligence](https://www.microsoft.com/en-us/security-intelligence)&#x20;
* Updates on the latest phishing attacks, malware threats, and security vulnerabilities.<br>

✅ **Dark Web & Data Breach Monitoring**

* Have I Been Pwned? (Check if Your Email or Passwords Were Exposed in Data Breaches) – [www.haveibeenpwned.com](https://haveibeenpwned.com)&#x20;
* Allows users to check if their email addresses or passwords have been compromised in past breaches.

<br>

**Our Commitment to Your Security**

At ACN, we prioritize the security and protection of our users. By implementing robust fraud prevention measures and adhering to established incident response procedures, we strive to minimize security risks and enhance the safety of our users' digital assets.

For questions, security concerns, or need assistance please contact us at :&#x20;

<br>

SOLIDUS AI TECH INC.

Trading  Name: AITECH CLOUD NETWORK

Registration Number: 155776555

Mailing Address: PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama

Email: <ADMIN@AITECH.IO>&#x20;

<br>


# FATF Crypto Travel Rule Compliance Statement

Version: 1.3

Effective Date: June 7 , 2025

Last Updated Date: April 14, 2026

SOLIDUS AI TECH INC., a corporation duly incorporated under the laws of the Panama, with registration number 155776555, having its registered address at PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama, and operating commercially under the trading name “AITECH CLOUD NETWORK” (“Solidus AITECH”, “Solidus”, “AITECH”, “AI TECH”, “we”, “us”, or “our”) is  committed to upholding robust compliance standards in accordance with global Anti-Money Laundering (AML) and Counter-Terrorism Financing (CTF) regulations, including guidance issued by the Financial Action Task Force (FATF).

Understanding the FATF Crypto Travel Rule Requirement

The FATF Crypto Travel Rule (Recommendation 16) requires Virtual Asset Service Providers (VASPs) to collect, maintain, and transmit specific originator and beneficiary information when facilitating transfers of virtual assets between VASPs, particularly for transactions equivalent to or exceeding USD/EUR 1,000.<br>

ACN's Operating Model and Applicability Assessment

Following a thorough review of ACN's platform operational framework, and in alignment with FATF guidance and relevant local regulatory interpretations, we can confirm the following:

• ACN facilitates token staking exclusively via user-controlled, self-hosted wallets (e.g., MetaMask).

• Users retain full custody of their private keys and digital assets throughout the staking process.

• Staking-related transactions occur between the user’s own non-custodial wallet and the blockchain-based staking smart contracts.

• Upon completion of the staking period, any rewards or returned tokens are transferred back to the same self-hosted wallet.

• ACN does not function as a custodial wallet provider, nor does it facilitate VASP- to-VASP transfers involving third-party custodians.

<br>

FATF Crypto Travel Rule Non-Applicability

Based on the above assessment, transactions facilitated on the ACN’s platform do not meet the FATF’s criteria for Travel Rule applicability, as they:

• Do not involve two or more VASPs;

• Do not involve the transmission of virtual assets between custodial wallets;

• Are executed by users through self-hosted wallets, with no custodial involvement by ACN.

As a result, ACN is not required to comply with the FATF Crypto Travel Rule in its current operational structure.<br>

Our Ongoing AML/CTF Commitment

Although the FATF Crypto Travel Rule does not apply to our platform’s staking activities, ACN maintains a proactive approach to compliance by implementing the following measures in accordance with global AML/CTF best practices:

• Customer due diligence (CDD) and Know-Your-Customer (KYC) procedures;

• Risk-based internal controls;

• Ongoing compliance reviews and monitoring.

At ACN, we continuously assess evolving regulatory frameworks to ensure that our policies, systems, and operations remain fully aligned with applicable laws and global compliance standards.<br>

SOLIDUS AI TECH INC.

Trading  Name: AITECH CLOUD NETWORK

Registration Number: 155776555

Mailing Address: PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama

Email: <ADMIN@AITECH.IO>&#x20;

<br>


# Staking Services and Regulatory Compliance

Version: 1.3

Effective Date: March 8, 2025

Last Updated Date: April 14, 2026

Regulatory Status Under EU MiCA

According to the European Securities and Markets Authority (ESMA) response (ESMA\_QA\_2067, dated June 20, 2024) regarding staking under the EU Markets in Crypto-Assets (MiCA) framework, ESMA has clarified:

"MiCA does not contain provisions specific to staking. It does not therefore prohibit staking, and staking as such is not subject to specific requirements or licensing."

Based on this guidance, ACN is not currently required to obtain a license or comply with any specific MiCA provisions regarding its staking services.

Source:

<https://www.esma.europa.eu/publications-data/questions-answers/2067>

Regulatory Status Under UK FCA

The UK Financial Conduct Authority (FCA) has also confirmed that staking is not considered a Collective Investment Scheme (CIS) and therefore does not require a license. According to the UK government’s statement (as referenced in [Latham & Watkins’ regulatory update](https://www.latham.london/2025/01/uk-government-confirms-staking-services-are-not-collective-investment-schemes/)):

"Staking services do not meet the definition of a Collective Investment Scheme under UK law, and as such, they are not subject to CIS-specific regulatory requirements."

This clarification confirms that staking remains unregulated under UK financial services law, and ACN staking services do not require FCA authorization or licensing at this time.

Source:

[https://www.latham.london/2025/01/uk-government-confirms-staking-services-are-not-collective-investment-schemes/#](https://www.latham.london/2025/01/uk-government-confirms-staking-services-are-not-collective-investment-schemes/)

Commitment to Future Compliance

While staking is currently not subject to licensing under EU MiCA or UK FCA regulations, ACN remains committed to regulatory transparency and compliance. Should future legislative changes require compliance or registration under MiCA, FCA, or other global frameworks, we will promptly and fully adhere to any new regulatory obligations to ensure continued alignment with evolving financial regulations.

\
\
\
\
\
\
\
\
\
\ <br>

SOLIDUS AI TECH INC.\
Trading  Name: AITECH CLOUD NETWORK\
Registration Number: 155776555

Mailing Address: PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama

Email: <ADMIN@AITECH.IO>&#x20;

<br>


# Prohibited Jurisdictions & Sanctions Compliance

Version 1.3&#x20;

Effective Date: June 25, 2025&#x20;

Last Updated Date: April 14, 2026

SOLIDUS AI TECH INC., a corporation duly incorporated under the laws of the Panama, with registration number 155776555, having its registered address at PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama, and operating commercially under the trading name “AITECH CLOUD NETWORK” (“Solidus AITECH”, “Solidus”, “AITECH”, “AI TECH”, “we”, “us”, or “our”) strictly prohibits access to its platform by individuals or entities located in, or otherwise associated with, jurisdictions subject to international sanctions. Our sanctions compliance framework is designed to ensure alignment with the requirements and expectations of global authorities, including the Financial Action Task Force (FATF), the United Nations (UN), the European Union (EU), and other applicable regulatory bodies.

Sanctioned Countries (blocked from all ACN services):

* North Korea, Iran, Myanmar, and Russia (per FATF & global sanctions lists as of October 24, 2025).

FATF High-Risk (Grey List) Countries (subject to enhanced scrutiny):

* Algeria, Angola, Bolivia, Bulgaria, Cameroon, Cote d’Ivoire (Ivory Coast), Democratic Republic of Congo, Haiti, Kenya, Lao People’s Democratic Republic, Lebanon, Monaco, Namibia, Nepal, South Sudan, Syria, Venezuela, Vietnam, UK Virgin Islands, and Yemen per FATF’s monitoring list as of October 24, 2025.

Key Sanctions Compliance Measures:

Automated Sanctions & Terrorism Screening.

* All users are screened through our third-party AML/KYC provider against international sanctions lists, including those issued by the U.S. Office of Foreign Assets Control (OFAC), the United Nations (UN), the European Union (EU), and other relevant global regulatory authorities.

Geolocation & IP Blocking.

* Advanced technology is used to block access from restricted jurisdictions and detect circumvention attempts.

Politically Exposed Persons (PEP) Restrictions.

* All type of PEPs and their close associates are prohibited from using our platform due to their high risk for corruption and financial crimes.

Dual Citizenship Policy.

* Users holding dual citizenship, where one or both nationalities are linked to a sanctioned or prohibited jurisdiction, will be automatically rejected and denied access to our platform.
* Users with dual citizenship involving one or more jurisdictions identified as high-risk or grey-listed by the FATF will be subject to enhanced due diligence and may be restricted or denied access following compliance review.

Unwanted Business Relationships & High-Risk Industries.

* We do not engage with individuals or businesses involved in high-risk or prohibited activities, including but not limited to: gambling, unlicensed money service businesses or financial institutions, pornography or adult content platforms (e.g., OnlyFans), marijuana/cannabis-related ventures, high-risk crypto operations (e.g., crypto ATMs, crypto mixers), pawnshops or pawnbrokers, shell companies, and AI-related activities that involve identity fraud (e.g., generating fake identifications). This list is non-exhaustive. ACNs Compliance Team reserves the right to assess and determine whether any person, entity, or business activity poses an unacceptable risk to our platform.

<br>

Our AML and Sanctions Compliance Program is reviewed and updated on an ongoing basis to reflect evolving global regulatory requirements, industry best practices, and emerging financial crime typologies. These continuous enhancements are designed to safeguard our platform, users, and operations from illicit activities, regulatory breaches, and reputational risks.

SOLIDUS AI TECH INC.\
Trading  Name: AITECH CLOUD NETWORK\
Registration Number: 155776555

Mailing Address: PH The Century Tower, Office 317, Vía Ricardo J. Alfaro, Corregimiento de Betania, Distrito de Panama, Panama City, Panama

Email: <ADMIN@AITECH.IO>&#x20;

<br>


# Compute Marketplace Disclaimer

<table data-header-hidden><thead><tr><th valign="middle"></th><th valign="middle"></th></tr></thead><tbody><tr><td valign="middle">Document Version</td><td valign="middle">Version 1.0</td></tr><tr><td valign="middle">Prepared For</td><td valign="middle">Website / GitBook publication</td></tr><tr><td valign="middle">Prepared On</td><td valign="middle">15 April 2026</td></tr></tbody></table>

*Important: This document is drafted to allocate risk aggressively in favor of Solidus AITECH,*\
*subject always to non-excludable rights and mandatory laws in applicable jurisdictions.*

Contents

1\. Purpose, Scope and Interpretation

2\. Marketplace Status and Contracting Model

3\. User Assumption of Risk and User Responsibilities

4\. Vendor Responsibility and Vendor-Supplied Risks

5\. Third-Party Services and External Dependency Risks

6\. Eligibility, Onboarding, Screening and Account Controls

7\. Ordering, Provisioning, Availability and Technical Performance

8\. Billing, Metering, Taxes, Payments and Digital Asset Risks

9\. Data Protection, Privacy, Security and Incident Response

10\. User Content, Workloads, AI/ML and Acceptable Use Risks

11\. Intellectual Property, Takedown and Non-Monitoring

12\. Compliance, Export Controls, Sanctions and Restricted Uses

13\. Suspension, Restriction, Takedown and Termination Rights

14\. Warranty Disclaimers and No-Reliance

15\. Limitation of Liability

16\. User Indemnities and Risk Transfer

17\. Complaints, Disputes, Class Action Waiver and Time Bar

18\. General Legal Protections

Schedule 1. Risk Allocation Matrix

<br>

<table data-header-hidden><thead><tr><th valign="middle"></th></tr></thead><tbody><tr><td valign="middle">Important Legal Note</td></tr><tr><td valign="middle">This document is intended to serve as a Terms of Service Disclaimer and risk-allocation layer for the Solidus AITECH Compute Marketplace.</td></tr><tr><td valign="middle">No disclaimer can eliminate liability that cannot lawfully be excluded under applicable law. Mandatory consumer, privacy, fraud, wilful misconduct and similar protections may still apply.</td></tr><tr><td valign="middle">This draft should be reviewed and adapted by external counsel for each jurisdiction you actively target, especially before launch in the EU, UK, UAE, US or any sanctioned / restricted geography.</td></tr></tbody></table>

<br>

1\. Purpose, Scope and Interpretation

This Terms of Use Disclaimer and Risk Allocation Notice (the “Disclaimer”) governs access to and use of the Solidus AITECH Compute Marketplace, any related console, API, website, hosted interface, ordering workflow, payment flow, documentation, support channel and associated marketplace functionality made available by Solidus AITECH Digital Ltd. (“AITECH”, “we”, “us” or “our”).

This Disclaimer is intended to operate as a protective legal layer in favor of AITECH. It allocates risk among users, vendors and third parties, limits the circumstances in which AITECH may be liable, clarifies that AITECH operates the marketplace primarily as a platform and facilitator unless expressly stated otherwise, and requires users to bear the risks inherent in cloud, compute, AI and digital-infrastructure usage.

By accessing, browsing, registering for, purchasing through, listing on, paying through, integrating with, or otherwise using the Compute Marketplace, the user acknowledges that it has read, understood and accepted this Disclaimer together with the applicable Terms of Service, Acceptable Use Policy, Privacy Notice, any Order Form, any Service Level Agreement, and any Vendor Terms incorporated by reference.

<br>

Interpretation principles

References to “including” or similar expressions are illustrative and not limiting.

References to a “Vendor” include any data centre operator, cloud provider, GPU owner, infrastructure host, partner, reseller, subcontractor or other supplier whose products or services are made available through the marketplace.

References to “Third-Party Services” include networks, internet service providers, telecom infrastructure, payment providers, wallet providers, KYC/KYB vendors, sanctions-screening tools, open-source tools, container registries, operating systems, hypervisors, orchestration tools, software libraries and all other services or dependencies not directly provided by AITECH.

If any clause in this Disclaimer is inconsistent with non-excludable law, that clause shall be read down to the minimum extent necessary, while all remaining clauses continue in full force.

2\. Marketplace Status and Contracting Model

<br>

AITECH as marketplace operator

Unless AITECH expressly identifies itself in writing as the direct provider, vendor, managed service provider, or merchant of record for a particular offering, AITECH provides the Compute Marketplace as a platform, software interface, commercial facilitator, orchestration layer, billing facilitator, support channel or technical intermediary only. AITECH does not, by default, manufacture, own, host, operate or control all compute capacity listed through the marketplace.

The user acknowledges and agrees that Vendor Offerings are supplied by independent vendors and that such vendors, and not AITECH, remain solely responsible for the availability, fitness, technical characteristics, lawful operation, performance, supportability, security posture, data handling, uptime, failover, maintenance and compliance of their own offerings.

No agency, partnership or fiduciary duty

Nothing in the marketplace relationship creates an agency, partnership, franchise, fiduciary, trustee, custody, advisory or employment relationship between AITECH and any user.

AITECH does not owe a fiduciary duty, professional duty of care, trustee duty, escrow duty, insurer duty or guaranteed monitoring duty to any user unless such duty is expressly assumed in a separately executed written agreement signed by AITECH.

The existence of listing controls, verification labels, compliance checks, ratings, billing facilitation, orchestration tools or support channels does not convert AITECH into the primary supplier of all vendor-provided services.

3\. User Assumption of Risk and User Responsibilities

<br>

User-borne risks

The user expressly assumes, and agrees to bear, all risks associated with its own selection, configuration, deployment, monitoring and use of compute resources, workloads, models, datasets, outputs, credentials, wallet addresses, scripts, containers, virtual machines, storage volumes, networking rules, APIs and downstream business operations.

The user is solely responsible for determining whether any marketplace offering is suitable for its legal, commercial, security, technical, performance, data residency, export-control, audit, insurance, governance, model-training, inference or continuity requirements. AITECH shall have no responsibility for the user’s failure to conduct appropriate diligence, testing, backup planning, security hardening, or legal review before use.

the legality, quality, ownership, integrity and permissibility of User Content and workloads;

all configurations, credentials, secrets, SSH keys, API tokens, access permissions, IAM policies, firewall rules, encryption settings and patching decisions;

backup policies, recovery testing, business continuity arrangements, checkpoint preservation, model reproducibility and data export routines;

validation of all performance assumptions, benchmark claims, price assumptions, cost forecasts and utilisation assumptions in the user’s own environment;

all activity occurring through the user’s account, whether authorised or unauthorised, unless non-excludable law requires otherwise;

the user’s own customers, clients, employees, contractors, end users, regulators and counterparties, and all obligations owed to them by the user.

4\. Vendor Responsibility and Vendor-Supplied Risks

<br>

Core vendor responsibility disclaimer

Each Vendor is solely and exclusively responsible for its own listings, capacity, technical specifications, configuration accuracy, hardware quality, maintenance, monitoring, support, security, personnel, subcontractors, legal compliance, service credits, refunds, incident handling and business conduct. To the fullest extent permitted by law, AITECH disclaims all responsibility and liability for any act, omission, fraud, misrepresentation, negligence, breach, outage, underperformance, overbilling, data incident, IP issue or regulatory failure attributable to any Vendor.

Where a problem arises from a Vendor-supplied GPU, node, cluster, storage device, hosted environment, orchestration environment, image, software stack or any vendor-controlled service, the user agrees that such problem is a vendor-side risk, not an AITECH-side risk, unless AITECH expressly accepted direct responsibility for that exact service in a separately signed writing.

Vendor-side matters for which AITECH is not responsible

false or inaccurate listing descriptions, GPU specifications, vRAM allocations, CPU/RAM allocations, throughput figures, latency claims, or location claims;

capacity shortages, queue delays, over-commitment, oversubscription, throttling, scheduler unfairness, VM instability, degradation, downtime or failed provisioning;

vendor-side cybersecurity failures, ransomware, data loss, insider misconduct, malicious code, credential leakage, or cross-tenant exposure;

vendor-side breach of sanctions, export control, tax, labour, privacy, data residency, cybersecurity, environmental or sector-specific laws;

vendor refusal to provide support, service credits, refunds, migration assistance, logs, incident information or forensic cooperation;

physical hardware faults, upstream data centre issues, power events, rack failures, hypervisor failures, storage corruption, BIOS/firmware issues or patching failures;

vendor insolvency, business failure, platform exit, delisting, de-prioritisation, change of pricing, change of region availability or commercial withdrawal.

5\. Third-Party Services and External Dependency Risks

<br>

Third-party risk transfer

AITECH does not own or control the internet, blockchain networks, public cloud networks, wallet software, banking rails, card processors, KYC/KYB providers, telecom systems, DNS providers, software dependencies or other third-party services used directly or indirectly in connection with the marketplace. All such services are outside AITECH’s control and are used at the user’s own risk.

To the maximum extent permitted by law, AITECH shall not be liable for any failure, loss, corruption, delay, fraud, interruption, non-performance, chargeback, false positive screening result, account restriction, payment delay, wallet compromise, smart-contract issue, chain congestion, chain reorganisation, fork event, third-party API failure, or other loss caused by third-party systems or dependencies.

6\. Eligibility, Onboarding, Screening and Account Controls

<br>

Account creation and screening

AITECH may require identity verification, business verification, sanctions screening, fraud checks, wallet screening, tax information, export-control information or documentary evidence at any time before or after onboarding.

The user must provide complete, current and accurate information. Any omission, inaccuracy, expired document, mismatch or suspicious activity may lead to refusal, delay, suspension, restriction, cancellation or termination.

AITECH may rely on third-party screening providers and does not guarantee the correctness, completeness or availability of any such provider’s output.

AITECH may refuse access or transactions where it reasonably determines that legal, regulatory, reputational, fraud, sanctions, export-control, security or abuse risk exists.

7\. Ordering, Provisioning, Availability and Technical Performance

<br>

No guarantee of uninterrupted or error-free service

The marketplace, vendor offerings and any related orchestration, console or API functionality are provided on an “as available” basis. Provisioning may fail, be delayed, be queued, be partially completed, be rolled back, or be cancelled due to technical issues, legal restrictions, screening requirements, capacity constraints, bugs, maintenance, cyber incidents, vendor-side problems or force majeure events.

AITECH does not guarantee continuous availability, uninterrupted access, exact benchmark performance, exact region placement, exact tenancy characteristics, exact dedicated-resource behaviour, exact storage durability, or exact latency outcomes. Performance may vary materially based on configuration, contention, software stack, workload, region, upstream vendor environment and other factors.

No responsibility for business interruption

The user bears all risk of lost revenue, lost customers, delayed launches, missed tenders, corrupted training runs, failed checkpoints, delayed experiments, degraded inference, failed autoscaling, missed deadlines or substitute-service costs.

The user must implement its own failover, backup, multi-region, checkpointing and continuity plan and shall not rely on the marketplace as a sole point of operational continuity.

8\. Billing, Metering, Taxes, Payments and Digital Asset Risks

<br>

Metering and billing protections for AITECH

Charges may be based on platform-side records, vendor-side records, third-party metering systems, payment processor records, blockchain records or other machine-generated usage data. Such data may contain timing discrepancies, rounding differences, classification errors or delayed adjustments. To the fullest extent permitted by law, such records shall be prima facie evidence of usage and charges unless AITECH determines otherwise.

AITECH may correct invoices, statements, charge calculations, usage logs, wallet calculations, exchange-rate assumptions, tax treatment, credits and balances where errors, anomalies, abuse indicators, refunds, chargebacks, vendor reconciliations, chain events or technical issues are identified.

Digital asset and payment risks

The user bears all volatility risk, slippage risk, gas-fee risk, bridge risk, chain-congestion risk, wallet-compromise risk, erroneous-address risk, token-approval risk and irreversible-transfer risk associated with crypto or token-based payments.

AITECH is not responsible for third-party banking, PSP, card, on-ramp, off-ramp, exchange or wallet failures, freezes, reversals, delays, rejections or compliance blocks.

The user is solely responsible for taxes, withholding, VAT/GST, customs, duties, transaction taxes, exchange fees and all regulatory reporting arising from its use of the marketplace, unless non-excludable law requires AITECH to collect or remit them.

9\. Data Protection, Privacy, Security and Incident Response

<br>

No absolute security; user retains primary responsibility

While AITECH may implement reasonable technical and organisational measures at the platform level, no infrastructure, website, API, software stack or hosted environment is completely secure. The user acknowledges the existence of inherent cyber risk and accepts that unauthorised access, malware, denial-of-service, account takeover, data leakage, insider misuse, accidental exposure, open-source vulnerabilities, container vulnerabilities, compromised dependencies and other incidents may occur despite safeguards.

Except where non-excludable law applies or where AITECH expressly undertakes processor obligations in a separate DPA, the user remains solely responsible for determining whether the marketplace and any vendor offering are appropriate for personal data, regulated data, confidential data, source code, model weights, export-controlled data, customer data, trade secrets or other sensitive material.

Privacy and DPA hierarchy

Where AITECH acts as a processor, its obligations shall be limited to those expressly set out in the applicable DPA and no wider obligation shall be implied.

Where a Vendor or Third-Party Service processes data, the user is responsible for ensuring that adequate notices, lawful bases, transfer mechanisms and contractual protections are in place with that party.

AITECH is not responsible for user-side failure to classify data, redact data, minimise data, apply retention limits, encrypt data, pseudonymise data, control access or comply with data subject rights obligations.

10\. User Content, Workloads, AI/ML and Acceptable Use Risks

<br>

User control and user risk

The user is solely responsible for all code, prompts, scripts, data, containers, models, outputs, workflow logic, orchestration instructions and downstream uses of AI/ML workloads run through the marketplace. AITECH does not guarantee the legality, safety, accuracy, fairness, reproducibility, compliance, non-bias, non-hallucinatory character, non-infringing status or fitness of any output produced through the user’s workloads.

The user bears all risk arising from model behaviour, unsafe outputs, hallucinations, prompt leakage, harmful outputs, moderation failures, failed retrieval, agent mis-execution, automated decisions, and any downstream business, legal or human impact caused by the user’s AI/ML use.

Prohibited uses and consequence allocation

The user must not use the marketplace for illegal, infringing, fraudulent, abusive, sanctionable, export-restricted, offensive or dangerous purposes, including unlawful surveillance, impersonation, malware, credential theft, deepfake fraud, disallowed content generation, exploit development or unlawful data scraping.

Any investigation, notice, takedown, regulator inquiry, civil claim or criminal exposure resulting from the user’s workloads is a user-side risk, and AITECH shall not be liable for it.

11\. Intellectual Property, Takedown and Non-Monitoring

<br>

No general monitoring obligation

To the fullest extent permitted by law, AITECH has no general obligation to monitor user conduct, review workloads, inspect datasets, examine code, validate licences, or proactively verify the legality of all content or uses. AITECH may, but is not obliged to, monitor or investigate where required for security, abuse prevention, legal compliance, platform integrity or business protection.

IP and takedown protection

The user warrants that it owns, controls or has licensed all rights necessary for its content and workloads.

AITECH may remove, disable, restrict or preserve content and account activity in response to IP notices, legal notices, court orders, platform complaints, policy concerns or good-faith risk assessments.

AITECH shall not be liable to the user for compliant or good-faith takedown, disablement, suspension or preservation action taken to protect the platform, comply with law or respond to notices.

12\. Compliance, Export Controls, Sanctions and Restricted Uses

<br>

User compliance undertakings

The user is solely responsible for compliance with all laws applicable to its use case, including sanctions, export controls, AI regulation, cybersecurity law, privacy law, tax law, labour law, procurement law and sector-specific regulation.

The user represents that it is not a prohibited person, is not acting for a prohibited person, and will not use the marketplace for a prohibited end use or prohibited geography.

AITECH may block, suspend, reject, freeze, cancel or unwind transactions or access where required by law or where AITECH reasonably believes risk exists, and AITECH shall not be liable to the user for taking such protective action.

13\. Suspension, Restriction, Takedown and Termination Rights

<br>

Broad protective rights

AITECH may, at any time and without liability to the user except to the extent prohibited by law, suspend, restrict, delay, throttle, de-list, block, refuse, reverse, cancel, preserve, investigate or terminate access to the marketplace or any transaction where AITECH considers that legal risk, security risk, abuse risk, non-payment risk, vendor risk, fraud risk, sanctions risk, export-control risk, reputational risk, policy risk or operational risk exists.

The user accepts that such actions may occur with or without prior notice where speed is reasonably required for platform protection, legal compliance, incident response, fraud response or abuse prevention.

14\. Warranty Disclaimers and No-Reliance

<br>

Disclaimer of warranties

To the maximum extent permitted by law, the marketplace, all marketplace services, all documentation, all interfaces, all listings, all support materials and all related functionality are provided “as is”, “as available”, “with all faults” and without warranties or conditions of any kind, whether express, implied, statutory or otherwise.

AITECH specifically disclaims all implied warranties of merchantability, satisfactory quality, fitness for a particular purpose, title, quiet enjoyment, accuracy, reliability, non-infringement, uninterrupted availability, non-interference, compatible operation, security and regulatory suitability.

No reliance

The user acknowledges that it has not relied upon any representation, roadmap, marketing statement, benchmark, oral assurance, informal chat, commercial expectation, future feature statement or business projection except as expressly stated in a binding written agreement signed by AITECH.

No statement by a vendor, partner, community member, affiliate, advisor, marketer, ambassador, reseller or informal representative shall bind AITECH unless formally authorised in writing.

15\. Limitation of Liability

<br>

Excluded losses

To the maximum extent permitted by law, AITECH shall not be liable for any indirect, incidental, consequential, special, exemplary, punitive or enhanced damages.

AITECH shall not be liable for loss of profits, revenue, expected savings, opportunity, goodwill, customers, reputation, use, data, model weights, training artefacts, workloads, business interruption, procurement of substitute services, or regulatory exposure arising from use of the marketplace.

AITECH shall not be liable for losses caused by vendors, third parties, upstream infrastructure, public networks, open-source components, screening providers, payment rails or force majeure events.

Aggregate liability cap

Subject always to non-excludable law, AITECH’s total aggregate liability arising out of or in connection with the marketplace, whether in contract, tort, negligence, misrepresentation, strict liability, restitution or otherwise, shall not exceed the greater of: (a) the fees actually received by AITECH from the user for the specific marketplace services giving rise to the claim during the thirty (30) days immediately preceding the event giving rise to liability; or (b) US$100 where no such fees were paid.

This cap applies collectively to all claims, events, causes of action and legal theories, and is an essential basis on which access to the marketplace is made available.

Non-excludable matters

Nothing in this Disclaimer excludes liability to the extent exclusion is prohibited by applicable law, including liability that cannot lawfully be limited for death or personal injury caused by negligence, fraud or fraudulent misrepresentation, or any other non-excludable matter.

16\. User Indemnities and Risk Transfer

<br>

User indemnity

The user shall defend, indemnify and hold harmless AITECH, its affiliates, officers, directors, employees, contractors, advisors and agents from and against all losses, liabilities, costs, penalties, fines, judgments, settlement amounts and professional fees arising out of or related to the user’s content, workloads, conduct, account, payments, legal breaches, vendor disputes, customer disputes or downstream operations.

This indemnity specifically includes claims arising from data breaches caused by the user, IP infringement caused by user content, unlawful datasets, unlawful AI outputs, misuse of vendor capacity, sanctions/export-control breaches, chargebacks, tax claims, regulator inquiries, third-party notices, and disputes between the user and any vendor or third party.

17\. Complaints, Disputes, Class Action Waiver and Time Bar

<br>

Internal handling first

Users must first raise complaints through AITECH’s designated support or legal channel and allow a reasonable opportunity for internal review.

AITECH may require supporting evidence, screenshots, billing records, wallet records, logs, notices or identification before reviewing a claim.

Procedural protections for AITECH

To the maximum extent permitted by law, claims must be brought only in the claimant’s individual capacity and not as part of a class, representative, collective or group action.

To the maximum extent permitted by law, any claim relating to the marketplace must be commenced within one year after the cause of action accrues, failing which the claim is permanently barred.

AITECH may require mediation or another pre-litigation process before formal proceedings, where permitted by applicable law and stated in the main Terms of Service.

18\. General Legal Protections

<br>

Change rights, severability and survival

AITECH may update, restate or replace this Disclaimer from time to time, with effect from publication or from such later effective date as AITECH states.

If any provision is held invalid or unenforceable, it shall be modified or severed to the minimum extent necessary and the remaining provisions shall remain fully effective.

All clauses concerning disclaimers, risk allocation, non-reliance, suspension rights, limitation of liability, indemnity, payment obligations, compliance obligations, confidentiality and dispute management survive suspension or termination.

Schedule 1. Risk Allocation Matrix

<table data-header-hidden><thead><tr><th valign="middle"></th><th valign="middle"></th><th valign="middle"></th></tr></thead><tbody><tr><td valign="middle">Risk Category</td><td valign="middle">Primary Risk Bearer</td><td valign="middle">AITECH Position</td></tr><tr><td valign="middle">User configuration, credentials and workload design</td><td valign="middle">User</td><td valign="middle">AITECH disclaims responsibility; user assumes risk.</td></tr><tr><td valign="middle">Vendor outages, hardware faults and underperformance</td><td valign="middle">Vendor / User</td><td valign="middle">AITECH not responsible unless expressly acting as direct provider.</td></tr><tr><td valign="middle">Third-party payment, wallet or banking failures</td><td valign="middle">User / Third Party</td><td valign="middle">AITECH not liable for external payment rail failures.</td></tr><tr><td valign="middle">User content legality, licences and IP clearance</td><td valign="middle">User</td><td valign="middle">User indemnifies AITECH for resulting claims.</td></tr><tr><td valign="middle">Sanctions, export-control and restricted-use breaches</td><td valign="middle">User</td><td valign="middle">AITECH may suspend or refuse service without liability.</td></tr><tr><td valign="middle">Data loss without user backup plan</td><td valign="middle">User</td><td valign="middle">User must maintain backup and recovery arrangements.</td></tr><tr><td valign="middle">Marketplace technical bug in platform-only function</td><td valign="middle">AITECH subject to law</td><td valign="middle">Liability limited, excluded and capped as stated herein.</td></tr><tr><td valign="middle">Vendor-side security incident or vendor misconduct</td><td valign="middle">Vendor / User</td><td valign="middle">AITECH disclaims liability for vendor-side failures.</td></tr><tr><td valign="middle">Regulatory claims arising from user business activities</td><td valign="middle">User</td><td valign="middle">AITECH not responsible for user’s downstream legal obligations.</td></tr></tbody></table>

<br>

*End of Document*


# Compute Marketplace Terms of Use Disclaimer and Risk Allocation Notice

<table data-header-hidden><thead><tr><th valign="middle"></th><th valign="middle"></th></tr></thead><tbody><tr><td valign="middle">Document Version</td><td valign="middle">Version 1.0</td></tr><tr><td valign="middle">Prepared For</td><td valign="middle">Website / GitBook publication</td></tr><tr><td valign="middle">Prepared On</td><td valign="middle">15 April 2026</td></tr><tr><td valign="middle">Last Updated:</td><td valign="middle">&#x3C;Add Date></td></tr></tbody></table>

*Important: This document is drafted to allocate risk aggressively in favor of Solidus AITECH,*\
*subject always to non-excludable rights and mandatory laws in applicable jurisdictions.*

Contents

1\. Purpose, Scope and Interpretation

2\. Marketplace Status and Contracting Model

3\. User Assumption of Risk and User Responsibilities

4\. Vendor Responsibility and Vendor-Supplied Risks

5\. Third-Party Services and External Dependency Risks

6\. Eligibility, Onboarding, Screening and Account Controls

7\. Ordering, Provisioning, Availability and Technical Performance

8\. Billing, Metering, Taxes, Payments and Digital Asset Risks

9\. Data Protection, Privacy, Security and Incident Response

10\. User Content, Workloads, AI/ML and Acceptable Use Risks

11\. Intellectual Property, Takedown and Non-Monitoring

12\. Compliance, Export Controls, Sanctions and Restricted Uses

13\. Suspension, Restriction, Takedown and Termination Rights

14\. Warranty Disclaimers and No-Reliance

15\. Limitation of Liability

16\. User Indemnities and Risk Transfer

17\. Complaints, Disputes, Class Action Waiver and Time Bar

18\. General Legal Protections

Schedule 1. Risk Allocation Matrix

<br>

<table data-header-hidden><thead><tr><th valign="middle"></th></tr></thead><tbody><tr><td valign="middle">Important Legal Note</td></tr><tr><td valign="middle">This document is intended to serve as a Terms of Service Disclaimer and risk-allocation layer for the Solidus AITECH Compute Marketplace. It forms part of a broader contractual structure governing the use of the platform and associated services.</td></tr><tr><td valign="middle"><br></td></tr><tr><td valign="middle"><p>Nothing in this document constitutes, or shall be interpreted as, the provision of financial services, investment advice, brokerage services, custody services, or any regulated activity under applicable laws. The Compute Marketplace is provided as a technology platform and infrastructure layer only, and Solidus AITECH does not act as a financial intermediary unless expressly stated in a separate written agreement.</p><p><br></p><p>To the maximum extent permitted by applicable law, this Disclaimer allocates risk between users, vendors, and third-party service providers. However, nothing in this document shall exclude or limit liability where such exclusion or limitation is not permitted by law, including but not limited to liability for fraud, fraudulent misrepresentation, willful misconduct, or any mandatory consumer, data protection, or statutory rights.</p><p><br></p><p>The Compute Marketplace may involve the use of artificial intelligence, machine learning systems, and third-party infrastructure. Solidus AITECH acts solely as a provider of technical infrastructure and does not act as the provider, deployer, or operator of user-controlled AI systems unless explicitly stated. Users remain solely responsible for ensuring compliance with applicable AI, data protection, and sector-specific regulations.</p><p><br></p><p>The platform relies on independent third-party vendors, infrastructure providers, payment providers, and external systems. Solidus AITECH does not control and is not responsible for the acts, omissions, or performance of such third parties except where required by non-excludable law.</p><p><br></p><p>This document is provided for general informational and contractual purposes only and does not constitute legal, financial, or technical advice. Users are strongly encouraged to seek independent professional advice prior to using the marketplace, particularly where regulated activities, sensitive data, or high-risk workloads are involved.</p><p><br></p><p>This draft is intended as a global baseline and must be reviewed and adapted by qualified legal counsel for each jurisdiction in which the Compute Marketplace is made available, including but not limited to the European Union, United Kingdom, United Arab Emirates, and United States. Local laws, including consumer protection, data protection, and regulatory frameworks, may impose additional requirements or override certain provisions of this Disclaimer.</p><p><br></p></td></tr></tbody></table>

<br>

1\. Purpose, Scope and Interpretation

This Terms of Use Disclaimer and Risk Allocation Notice (the “Disclaimer”) governs access to and use of the Solidus AITECH Compute Marketplace, including any related console, API, website, hosted interface, ordering workflow, payment flow, documentation, support channel and associated marketplace functionality made available by Solidus AITECH Digital Ltd. (“AITECH”, “we”, “us” or “our”).

This Disclaimer forms part of the contractual framework governing the marketplace. It allocates risk among users, vendors and third parties, defines the circumstances in which AITECH may be liable and clarifies that AITECH operates primarily as a technology platform and facilitator unless expressly stated otherwise, and requires users to bear the risks inherent in cloud, compute, AI and digital-infrastructure usage.

By accessing, browsing, registering for, purchasing through, listing on, paying through, integrating with, or otherwise using the Compute Marketplace, the user acknowledges and agrees that it has read, understood and accepted this Disclaimer as a legally binding agreement, together with the applicable Terms of Service, Acceptable Use Policy, Privacy Notice, any Order Form, any Service Level Agreement, and any Vendor Terms incorporated by reference.

<br>

Interpretation principles

References to “including”, “such as”  or similar expressions shall be construed as illustrative and not limiting, and shall be deemed to mean “including, without limitation”.

References to a “Vendor” include any independent data centre operator, cloud provider, GPU owner, infrastructure host, partner, reseller, subcontractor or other third party supplier whose products or services are made available through the marketplace.

References to “Third-Party Services” include networks, internet service providers, telecom infrastructure, blockchain networks, payment providers, wallet providers, KYC/KYB vendors, sanctions-screening tools, open-source tools, container registries, operating systems, hypervisors, orchestration tools, software libraries and all other services or dependencies not directly provided or controlled by AITECH.

If any provision of this Disclaimer is found to be invalid, unlawful, or unenforceable under applicable law, it shall be modified or interpreted to the minimum extent necessary to make it valid and enforceable, and the remaining provisions shall continue in full force and effect to the maximum extent permitted by law.

* <br>

2\. Marketplace Status and Contracting Model

AITECH as marketplace operator

Unless AITECH expressly identifies itself in writing as the direct provider, vendor, managed service provider, or merchant of record for a particular offering, AITECH provides the Compute Marketplace as a platform, software interface, commercial facilitator, orchestration layer, billing facilitator, support channel or technical intermediary only. AITECH does not own or control vendor-supplied compute resources made available through the marketplace.

The user acknowledges and agrees that Vendor Offerings are supplied by independent third-party vendors and that such vendors, and not AITECH, and primarily responsible for the availability, fitness, technical characteristics, lawful operation, performance, supportability, security posture, data handling, uptime, failover, maintenance and compliance of their respective services.

Vendors operate independently and are not agents, partners, or representatives of AITECH. Nothing in the marketplace structure shall be interpreted as creating a financial intermediary, custody, or regulated service relationship unless expressly stated in a separate written agreement.

No agency, partnership or fiduciary duty

Nothing in the marketplace relationship creates an agency, partnership, franchise, fiduciary, trustee, custody, advisory or employment relationship between AITECH and any user or vendor.

To the maximum extent permitted by applicable law, AITECH does not owe a fiduciary duty, professional duty of care, trustee duty, escrow duty, insurer duty or guaranteed monitoring obligation to any user, except expressly agreed in a separately executed written agreement signed by AITECH.

The existence of listing controls, verification labels, compliance checks, ratings, billing facilitation, orchestration tools or support channels does not convert AITECH into the primary supplier of all vendor-provided services.

3\. User Assumption of Risk and User Responsibilities

User-borne risks

The user assumes primary responsibility for the selection, configuration, deployment, monitoring and use of compute resources, workloads, models, datasets, outputs, credentials, wallet addresses, scripts, containers, virtual machines, storage volumes, networking rules, APIs and downstream business operations.

The user is solely responsible for determining whether any marketplace offering is suitable for its legal, commercial, security, technical, performance, data residency, export-control, audit, insurance, governance, model-training, inference or continuity requirements. To the maximum extent permitted by applicable law, AITECH shall have no responsibility for the user’s failure to conduct appropriate diligence, testing, backup planning, security hardening, or legal review prior to use.

the legality, quality, ownership, integrity and permissibility of User Content Data and workloads used through the marketplace;

all configurations, credentials, secrets, access controls, SSH keys, API tokens, access permissions, IAM policies, firewall rules, encryption, security settings and patching decisions;

backup policies, recovery testing, business continuity arrangements, checkpoint preservation, model reproducibility and data export routines;

validation of all performance assumptions, benchmark claims, price assumptions, cost forecasts and utilisation assumptions in the user’s own environment;

all activity occurring through the user’s account, whether authorised or unauthorised, unless non-excludable law requires otherwise;

the user’s own customers, clients, employees, contractors, end users, regulators and counterparties, and all obligations owed to them by the user.

* <br>

4\. Vendor Responsibility and Vendor-Supplied Risks

Core vendor responsibility disclaimer

Each Vendor is solely and exclusively responsible for its own listings, capacity, technical specifications, configuration accuracy, hardware quality, maintenance, monitoring, support, security, personnel, subcontractors, legal compliance, service credits, refunds, incident handling and business conduct. To the fullest extent permitted by law, AITECH disclaims all responsibility and liability for any act, omission, fraud, misrepresentation, negligence, breach, outage, underperformance, overbilling, data incident, IP issue or regulatory failure attributable to any Vendor.

Where an issue arises from a Vendor-supplied GPU, node, cluster, storage device, hosted environment, orchestration environment, image, software stack or any vendor-controlled service, the user agrees that such problem is a vendor-side risk, not an AITECH-side risk, unless AITECH expressly accepted direct responsibility for that exact service in a separately signed writing.

Vendor-side matters for which AITECH is not responsible

false or inaccurate listing descriptions, GPU specifications, vRAM allocations, CPU/RAM allocations, throughput figures, latency claims, or location claims;

capacity shortages, queue delays, over-commitment, oversubscription, throttling, scheduler unfairness, VM instability, degradation, downtime or failed provisioning;

vendor-side cybersecurity failures, ransomware, data loss, insider misconduct, malicious code, credential leakage, or cross-tenant exposure;

vendor-side breach of sanctions, export control, tax, labour, privacy, data residency, cybersecurity, environmental or sector-specific laws;

vendor refusal to provide support, service credits, refunds, migration assistance, logs, incident information or forensic cooperation;

physical or infrastructure-related failures, including but not limited to hardware faults, upstream data centre issues, power events, rack failures, hypervisor failures, storage corruption, BIOS/firmware issues or patching failures;

vendor insolvency, business failure, platform exit, delisting, de-prioritisation, change of pricing, change of region availability or commercial withdrawal.

5\. Third-Party Services and External Dependency Risks

Third-party risk transfer

AITECH does not own, operate,  or control the internet, blockchain networks, public cloud networks, wallet software, banking systems, payment processors, KYC/KYB providers, telecom systems, DNS providers, software dependencies or other third-party services used directly or indirectly in connection with the marketplace. All such services are outside AITECH’s control and are used at the user’s own risk.

To the maximum extent permitted by law, AITECH shall not be liable for any failure, loss, corruption, delay, fraud, interruption, non-performance, chargeback, false positive screening result, account restriction, payment delay, wallet compromise, smart-contract issue, chain congestion, chain reorganisation, fork event, third-party API failure, or other loss caused by third-party systems or dependencies.

<br>

<br>

6\. Eligibility, Onboarding, Screening and Account Controls

Account creation and screening

AITECH may require identity verification, business verification, sanctions screening, fraud checks, wallet screening, tax information, export-control information or supporting documentation at any time before or after onboarding, including on an ongoing basis where required for compliance or risk management purposes.&#x20;

The user must provide complete, current and accurate information. Any omission, inaccuracy, expired document, mismatch or suspicious activity may result to refusal, delay, suspension, restriction, cancellation or termination, where permitted by applicable law.

AITECH may rely on third-party screening providers and verification providers. While reasonable care is taken in selecting such providers, AITECH does not guarantee the accuracy, completeness, or availability of their outputs.

AITECH may refuse access, restrict accounts, or decline transactions where it reasonably determines that legal, regulatory, reputational, fraud, sanctions, export-control, security or abuse risk exists.

7\. Ordering, Provisioning, Availability and Technical Performance

No guarantee of uninterrupted or error-free service

The marketplace, vendor offerings and any related orchestration, console or API functionality are provided on an “as available” and “as is”  basis, to the maximum extent permitted by applicable law. Provisioning may fail, be delayed, be queued, be partially completed, be rolled back, or be cancelled due to technical issues, legal restrictions, screening requirements, capacity constraints, bugs, maintenance, cyber incidents, vendor-side problems or force majeure events.

AITECH does not guarantee continuous availability, uninterrupted access, exact benchmark performance, exact region placement, exact tenancy characteristics, exact dedicated-resource behaviour, exact storage durability, or exact latency outcomes. Performance may vary materially based on configuration, contention, software stack, workload, region, upstream vendor environment and other factors. Where service level agreements (SLAs) are expressly provided, they shall apply in accordance with their respective terms.

No responsibility for business interruption

The user bears all risk of lost revenue, lost customers, delayed launches, missed tenders, corrupted training runs, failed checkpoints, delayed experiments, degraded inference, failed autoscaling, missed deadlines or substitute-service costs.

The user must implement its own failover, backup, multi-region deployment, checkpointing and business continuity plan and shall not rely on the marketplace as a sole point of operational continuity.

8\. Billing, Metering, Taxes, Payments and Digital Asset Risks

Metering and billing protections for AITECH

Charges may be based on platform-side records, vendor-side records, third-party metering systems, payment processor records, blockchain records or other machine-generated usage data. Such data may contain timing discrepancies, rounding differences, classification errors or delayed adjustments. To the fullest extent permitted by law, such records shall be prima facie evidence of usage and charges unless AITECH determines otherwise.

AITECH may correct invoices, statements, charge calculations, usage logs, wallet calculations, exchange-rate assumptions, tax treatment, credits and balances where errors, anomalies, abuse indicators, refunds, chargebacks, vendor reconciliations, chain events or technical issues are identified.

AITECH does not act as a payment processor, custodian, or financial intermediary in relation to third-party payment flows or digital asset transactions unless expressly stated.

Digital asset and payment risks

The user bears all volatility risk, slippage risk, gas-fee risk, bridge risk, chain-congestion risk, wallet-compromise risk, erroneous-address risk, token-approval risk and irreversible-transfer risk associated with crypto or token-based payments.

To the maximum extent permitted by applicable law, AITECH is not responsible for third-party banking, payment service providers, on-ramp, off-ramp services, exchange or wallet failures, freezes, reversals, delays, rejections or compliance blocks.

The user is solely responsible for applicable taxes, including withholding, VAT/GST, customs, duties, transaction taxes, exchange fees and all regulatory reporting arising from its use of the marketplace, unless non-excludable law requires AITECH to collect or remit them.

9\. Data Protection, Privacy, Security and Incident Response

No absolute security; user retains primary responsibility

While AITECH may implement reasonable technical and organisational measures at the platform level, no infrastructure, website, API, software stack or hosted environment can be guaranteed to be completely secure. The user acknowledges the existence of inherent cybersecurity risks and accepts that unauthorised access, malware, denial-of-service, account takeover, data leakage, insider misuse, accidental exposure, open-source vulnerabilities, container vulnerabilities, compromised dependencies and other incidents may occur despite safeguards.

Except where non-excludable law applies or where AITECH expressly undertakes processor obligations in a separate DPA, the user remains solely responsible for determining whether the marketplace and any vendor offering are appropriate for personal data, regulated data, confidential data, source code, model weights, export-controlled data, customer data, trade secrets or other sensitive material.

Privacy and DPA hierarchy

Where AITECH acts as a processor, its obligations shall be limited to those expressly set out in the applicable Data Processing Agreement (DPA) and no additional obligations shall be implied.

Where AITECH acts as a data controller, its processing activities shall be governed by the applicable Privacy Notice.

Where a Vendor or Third-Party Service processes data, the user is responsible for ensuring that adequate notices, lawful bases, transfer mechanisms and contractual protections are in place with that party, to the extent required by applicable law.

To the maximum extent permitted by applicable law, AITECH is not responsible for user-side failure to classify data, redact data, minimise data, apply retention limits, encrypt data, pseudonymise data, control access, or compliance with data subject rights obligations.

* <br>
* <br>

10\. User Content, Workloads, AI/ML and Acceptable Use Risks

<br>

User control and user risk

The user is solely responsible for all code, prompts, scripts, data, containers, models, outputs, workflow logic, orchestration instructions and downstream uses of AI/ML workloads run through the marketplace.&#x20;

AITECH does not guarantee the legality, safety, accuracy, fairness, reproducibility, compliance, non-bias, non-hallucinatory character, non-infringing status or fitness of any output produced through the user’s workloads.

The user bears all risk arising from model behaviour, unsafe outputs, hallucinations, prompt leakage, harmful outputs, moderation failures, failed retrieval, agent mis-execution, automated decisions, and any downstream business, legal or human impact caused by the user’s AI/ML use.

AITECH acts solely as a provider of technical infrastructure and does not act as a provider, deployer, or operator of AI systems under applicable law unless expressly stated. Users are responsible for ensuring that their AI/ML use complies with applicable laws and regulations, including the EU Artificial Intelligence Act where applicable.

Prohibited uses and consequence allocation

The user must not use the marketplace for illegal, infringing, fraudulent, abusive, sanctionable, export-restricted, offensive or dangerous purposes, including unlawful surveillance, impersonation, malware, credential theft, deepfake fraud, disallowed content generation, exploit development or unlawful data scraping.

To the maximum extent permitted by applicable law, AITECH shall not be liable for any investigation, notice, takedown, regulator inquiry, civil claim or criminal exposure arising from the user’s content, workloads, or activities.

11\. Intellectual Property, Takedown and Non-Monitoring

<br>

No general monitoring obligation

To the fullest extent permitted by law, AITECH has no general obligation to monitor user conduct, review workloads, inspect datasets, examine code, validate licences, or proactively verify the legality of all content or uses. AITECH may, but is not obliged to, monitor or investigate where required for security, abuse prevention, legal compliance, platform integrity or business protection.

Intellectual Property (IP) and takedown protection

The user warrants that it owns, controls or has licensed all rights necessary for its content and workloads.

AITECH may, acting reasonably and in good faith, remove, disable, restrict or preserve content and account activity in response to IP notices, legal notices, court orders, platform complaints, policy concerns or good-faith risk assessments.

To the maximum extent permitted by applicable law, AITECH shall not be liable to the user for compliant or good-faith takedown, disablement, suspension or preservation action taken to protect the platform, comply with law or respond to notices.

* <br>

12\. Compliance, Export Controls, Sanctions and Restricted Uses

<br>

User compliance undertakings

The user is solely responsible for compliance with all laws applicable to its use case, including sanctions, export controls, AI regulation, cybersecurity law, privacy law, tax law, labour law, procurement law and sector-specific regulation.

The user represents that it is not a prohibited person, is not acting for a prohibited person, and will not use the marketplace for a prohibited end use or prohibited geography.

AITECH may block, suspend, reject, freeze, cancel or unwind transactions or access where required by law or where AITECH reasonably believes risk exists, and AITECH shall not be liable to the user for taking such protective action.

To the maximum extent permitted by applicable law, AITECH shall not be liable for actions taken in good faith to comply with legal or regulatory obligations or to mitigate risk.

AITECH may cooperate with regulators, law enforcement, or competent authorities and may disclose information where required by applicable law.

13\. Suspension, Restriction, Takedown and Termination Rights

<br>

Broad protective rights

AITECH may, at any time and without liability to the user except to the extent prohibited by law, suspend, restrict, delay, throttle, de-list, block, refuse, reverse, cancel, preserve, investigate or terminate access to the marketplace or any transaction where AITECH considers that legal risk, security risk, abuse risk, non-payment risk, vendor risk, fraud risk, sanctions risk, export-control risk, reputational risk, policy risk or operational risk exists.

Such actions may be taken to comply with applicable law, enforce platform policies, protect system integrity, prevent fraud or abuse, or manage operational risk.

Where reasonably practicable, AITECH will provide notice of such actions. However, the user acknowledges that immediate action may be required without prior notice in order to address urgent risks, including security incidents, legal obligations, or fraud prevention.

14\. Warranty Disclaimers and No-Reliance

<br>

Disclaimer of warranties

To the maximum extent permitted by law, the marketplace, all marketplace services, all documentation, all interfaces, all listings, all support materials and all related functionality are provided “as is”, “as available”, “with all faults” and without warranties or conditions of any kind, whether express, implied, statutory or otherwise.

AITECH specifically disclaims all implied warranties of merchantability, satisfactory quality, fitness for a particular purpose, title, quiet enjoyment, accuracy, reliability, non-infringement, uninterrupted availability, non-interference, compatible operation, security and regulatory suitability.

No reliance

To the maximum extent permitted by applicable law, the user acknowledges that it has not relied upon any representation, roadmap, marketing statement, benchmark, oral assurance, informal chat, commercial expectation, future feature statement or business projection except as expressly stated in a binding written agreement signed by AITECH.

No statement by a vendor, partner, community member, affiliate, advisor, marketer, ambassador, reseller or informal representative shall bind AITECH unless formally authorised in writing.

15\. Limitation of Liability

<br>

Excluded losses

To the maximum extent permitted by law, AITECH shall not be liable for any indirect, incidental, consequential, special, exemplary, punitive or enhanced damages.

AITECH shall not be liable for loss of profits, revenue, expected savings, opportunity, goodwill, customers, reputation, use, data, model weights, training artefacts, workloads, business interruption, procurement of substitute services, or regulatory exposure arising from use of the marketplace.

AITECH shall not be liable for losses caused by vendors, third parties, upstream infrastructure, public networks, open-source components, screening providers, payment rails or force majeure events.

Aggregate liability cap

Subject always to non-excludable law, AITECH’s total aggregate liability arising out of or in connection with the marketplace, whether in contract, tort, negligence, misrepresentation, strict liability, restitution or otherwise, shall not exceed the greater of: (a) the fees actually received by AITECH from the user for the specific marketplace services giving rise to the claim during the thirty (30) days immediately preceding the event giving rise to liability; or (b) US$100 where no such fees were paid.

This cap applies collectively to all claims, events, causes of action and legal theories, and is an essential basis on which access to the marketplace is made available.

Non-excludable matters

Nothing in this Disclaimer excludes or limits liability to the extent exclusion is prohibited by applicable law, including liability that cannot lawfully be limited for death or personal injury caused by negligence, fraud or fraudulent misrepresentation, or any other non-excludable matter.

16\. User Indemnities and Risk Transfer

<br>

User indemnity

To the maximum extent permitted by applicable law, the user shall defend, indemnify and hold harmless AITECH, its affiliates, officers, directors, employees, contractors, advisors and agents from and against all losses, liabilities, costs, penalties, fines, judgments, settlement amounts and professional fees arising out of or related to the user’s content, workloads, conduct, account, payments, legal breaches, vendor disputes, customer disputes or downstream operations.

This indemnity specifically includes claims arising from data breaches caused by the user, IP infringement caused by user content, unlawful datasets, unlawful AI outputs, misuse of vendor capacity, sanctions/export-control breaches, chargebacks, tax claims, regulator inquiries, third-party notices, and disputes between the user and any vendor or third party. AITECH reserves the right to assume control of the defense and settlement of any claim subject to indemnification.

17\. Complaints, Disputes, Class Action Waiver and Time Bar

<br>

Internal Resolution

Users must first raise complaints through AITECH’s designated support or legal channel and allow a reasonable opportunity for internal review.

AITECH may require supporting evidence, screenshots, billing records, wallet records, logs, notices or identification before reviewing a claim.

Procedural Provisions

To the maximum extent permitted by law, claims must be brought only in the claimant’s individual capacity and not as part of a class, representative, collective or group action.

To the maximum extent permitted by law, any claim relating to the marketplace must be commenced within one year after the cause of action accrues, failing which the claim is permanently barred.

Where permitted by applicable law and specified in the applicable Terms of Service, AITECH may require mediation or another pre-litigation process before formal proceedings.

18\. General Legal Protections

<br>

Change rights, severability and survival

AITECH may update, restate or replace this Disclaimer from time to time. Where required by applicable law, AITECH will provide reasonable notice of material changes. Updates shall take effect from the date of publication or such later effective date as specified.

If any provision of this Disclaimer is found to be invalid, unlawful, or unenforceable, it shall be modified or severed to the minimum extent necessary to make it valid and enforceable, and the remaining provisions shall remain in full force and effect to the maximum extent permitted by applicable law.

All provisions which by their nature are intended to survive termination or suspension shall continue in effect, including, without limitation, provisions relating to disclaimers, risk allocation, limitation of liability, indemnities, payment obligations, compliance, confidentiality, and dispute resolution.

* <br>
* <br>
* <br>
* <br>
* <br>
* <br>
* <br>
* <br>
* <br>
* <br>

Schedule 1. Risk Allocation Matrix

<table data-header-hidden><thead><tr><th valign="middle"></th><th valign="middle"></th><th valign="middle"></th></tr></thead><tbody><tr><td valign="middle">Risk Category</td><td valign="middle">Primary Risk Bearer</td><td valign="middle">AITECH Position</td></tr><tr><td valign="middle">User configuration, credentials and workload design</td><td valign="middle">User</td><td valign="middle">AITECH disclaims responsibility; user assumes risk.</td></tr><tr><td valign="middle">Vendor outages, hardware faults and underperformance</td><td valign="middle">Vendor / User</td><td valign="middle">AITECH not responsible unless expressly acting as direct provider.</td></tr><tr><td valign="middle">Third-party payment, wallet or banking failures</td><td valign="middle">User / Third Party</td><td valign="middle">AITECH not liable for external payment rail failures.</td></tr><tr><td valign="middle">User content legality, licences and IP clearance</td><td valign="middle">User</td><td valign="middle">User indemnifies AITECH for resulting claims.</td></tr><tr><td valign="middle">Sanctions, export-control and restricted-use breaches</td><td valign="middle">User</td><td valign="middle">AITECH may suspend or refuse service without liability.</td></tr><tr><td valign="middle">Data loss without user backup plan</td><td valign="middle">User</td><td valign="middle">User must maintain backup and recovery arrangements.</td></tr><tr><td valign="middle">Marketplace technical bug in platform-only function</td><td valign="middle">AITECH subject to law</td><td valign="middle">Liability limited, excluded and capped as stated herein.</td></tr><tr><td valign="middle">Vendor-side security incident or vendor misconduct</td><td valign="middle">Vendor / User</td><td valign="middle">AITECH disclaims liability for vendor-side failures.</td></tr><tr><td valign="middle">Regulatory claims arising from user business activities</td><td valign="middle">User</td><td valign="middle">AITECH not responsible for user’s downstream legal obligations.</td></tr></tbody></table>


# OPTING IN / OUT FOR PROMOTIONAL COMMUNICATIONS POLICY

Version:  1.2

Effective Date: June 5, 2025\
Last Updated: April 14, 2026

<br>

At Solidus AI Tech Inc., operating commercially under the trading name “AITECH CLOUD NETWORK” (“Solidus AITECH”, “Solidus”, “AITECH”, “AI TECH”, “we”, “us”, or “our”), we are committed to ensuring your rights and choices are respected when it comes to receiving promotional communications. This policy outlines how you can manage your marketing preferences, including how to opt in or opt out of receiving promotional materials from us.

***

1\. Opting In to Promotional Communications

When you engage with Solidus AITECH, you may be given the opportunity to opt in to receive promotional communications via:

* Email newsletters;
* Platform pop-ups or marketing banners;
* Registration or account setup pages;
* Event participation or marketing campaigns.

By opting in, you agree to receive marketing content such as product updates, new features, company announcements, offers, event invitations, surveys, and other promotional information.

Your consent is entirely voluntary and is not a prerequisite to accessing or using our core services.

***

2\. Methods for Opting Out

You have the right to opt out of receiving promotional communications from us at any time, free of charge and without any negative consequences to your use of our core services.

You can opt out by any of the following means:

* Clicking the “Unsubscribe” link at the bottom of any marketing email;
* Managing your communication preferences in your account settings (where available);
* Sending an email to <admin@aitech.io> with the subject line “Unsubscribe” or “Opt-Out Request”.

Once your opt-out request is received, we will remove you from our marketing list within a reasonable timeframe, typically within 7 business days.

***

3\. Important Notes on Transactional Communications

Please note that opting out of promotional emails does not stop transactional or service-related messages, such as:

* Account verification or password reset messages;
* Legal notices or terms of service updates;
* Notifications required to fulfill a product or service;
* Security alerts or breach notifications.

These messages are necessary for the administration and security of your account.

***

4\. Cookie-Based Advertising Preferences

Our use of cookies for personalized advertising is governed by our [Cookie Notice](https://aitech.io). You may manage cookie-based marketing preferences by:

* Adjusting your browser settings to block or delete cookies;
* Using our cookie consent banner to reject advertising cookies;
* Enabling "Do Not Track" in browsers (note: we do not currently respond to DNT signals).

***

5\. Third-Party Marketing Providers

If we use third-party services (e.g., Google Ads, Meta, Mailchimp) to send marketing communications, your opt-out request will also apply to messages sent via those platforms. We require all third parties to comply with privacy and data security standards.

***

6\. Data Protection and Breach Notification

Your contact preferences and personal data are securely stored and processed in accordance with our Privacy Policy and Marketing Consents Notice.

In the event of a data breach affecting your marketing data that poses a risk to your rights and freedoms, we will notify you promptly in accordance with our Data Breach Notification Policy Notice and relevant laws.

***

7\. Your Rights

You may also exercise your rights under global data privacy laws, including:

* The right to access, correct, or delete your data;
* The right to object to or restrict marketing-related processing;
* The right to lodge a complaint with a supervisory authority (if in the EU/UK).

To exercise your rights, email us at <admin@aitech.io> .

***

8\. Contact Us

If you have any questions or wish to change your promotional communication preferences, please contact:

Email: <admin@aitech.io>&#x20;

Mailing Address:  SOLIDUS AI TECH INC, PH The Century Tower, Office 317 Vía Ricardo J. Alfaro Corregimiento de Betania, Distrito de Panama, Panama City, Panama.

<br>


# Introduction


# What is Agent Forge

Agent Forge is a visual workflow editor that enables you to build AI-powered applications by connecting blocks on a canvas. Drag and drop components to create chatbots, automation workflows, and data processing pipelines without writing code.

### What Makes Agent Forge Powerful

**Multi-Model AI Support** - Connect to OpenAI, Anthropic, Google, Groq, Cerebras, and local models through Ollama. Switch providers without rebuilding workflows.

**60+ Pre-Built Tools** - Gmail, Slack, Notion, Google Sheets, Airtable, Supabase, Pinecone, and more. Extensible architecture allows custom tool integration.

**Flexible Execution** - Run workflows via chat interface, REST API, webhooks, scheduled jobs, or trigger from external systems.

**Lite and Workflow Modes** - Start fast in a conversational workspace, then switch into the full workflow builder when you need visual orchestration, debugging, and deployment.

**Powered by $ACN** - Use ACN for wallet top-ups, exclusive yearly subscriptions, and staking-based deployment access for agents and workflows.

**Production Deployment** - Deploy as APIs. Built-in monitoring, logging, and error handling.

**Real-time Collaboration** - Work simultaneously with team members on the same workflow, like Google Docs for AI development.

Connect multiple AI models, integrate with 60+ services, and deploy production-ready applications through an intuitive visual interface designed specifically for AI development.

### Core Building Blocks

**Processing Blocks**

* **Agent** - Execute AI model inference with any LLM provider
* **API** - Connect to REST endpoints and external services
* **Function** - Run custom JavaScript for data processing

**Logic Blocks**

* **Condition** - Create branching logic based on data evaluation
* **Router** - Route execution paths using AI-powered decision making
* **Loop** - Iterate over collections sequentially
* **Parallel** - Execute multiple operations concurrently

**Output Blocks**

* **Response** - Format and return final workflow results
* **Evaluator** - Validate outputs against defined criteria

### Built-in Integrations

**AI Models**: OpenAI, Anthropic, Google, Groq, Cerebras, Ollama

**Communication**: Gmail, Slack, Telegram, WhatsApp, Microsoft Teams

**Data Sources**: Notion, Google Sheets, Airtable, Supabase, Pinecone

**Web Services**: Firecrawl, Google Search, Exa AI, Perplexity

**Development**: GitHub, Jira, Linear, browser automation

### Use Cases

**AI Assistants** - Build chatbots with web search, calendar access, and email capabilities

**Content Generation** - Create blog posts, social media content, and marketing materials

**Data Processing** - Extract insights from documents, analyze datasets, and generate reports

**Process Automation** - Automate business workflows with event-driven triggers

**API Orchestration** - Combine multiple services into unified endpoints

### Key Features

**Multi-Provider AI Support** - Switch between OpenAI, Anthropic, Google, and local models without rebuilding workflows

**Real-time Collaboration** - Work simultaneously with team members on the same workflow

**Production-Ready** - Built-in error handling, logging, and monitoring for production deployments

### Getting Started

Ready to build your first workflow? Our Getting Started guide will walk you through creating a customer support assistant in under 10 minutes.


# Getting Started

{% hint style="info" %}
This tutorial takes about 10 minutes and covers the essential concepts of building workflows in Agent Forge.
{% endhint %}

This tutorial will guide you through building your first AI workflow in Agent Forge. We'll create a people research agent that can find information about individuals using state-of-the-art LLM-Search tools.

### What We're Building

A people research agent that:

1. Receives a person's name via chat interface
2. Uses an AI agent with advanced search capabilities
3. Searches the web using state-of-the-art LLM-Search tools (Exa)
4. Extracts structured information using a response format
5. Returns comprehensive data about the person

### Step-by-Step Tutorial

{% stepper %}
{% step %}

### Create workflow and add AI agent

Open Agent Forge and click "New Workflow" in the dashboard. Name it "Getting Started".

When you create a new workflow, it automatically includes a **Start block** - this is the entry point that receives input from users. For this example, we'll be triggering the workflow via chat, so we don't need to configure anything on the Start block.

Now drag an **Agent Block** onto the canvas from the blocks panel on the left.

Configure the Agent Block:

* **Model**: Select "OpenAI GPT-4o"
* **System Prompt**: "You are a people research agent. When given a person's name, use your available search tools to find comprehensive information about them including their location, profession, educational background, and other relevant details."
* **User Prompt**: Drag the connection from the Start block's output into this field (this connects `<start.input>` to the user prompt)
  {% endstep %}

{% step %}

### Add tools to the agent

Let's enhance our agent with tools for better capabilities. Click on the Agent block to select it.

In the **Tools** section:

* Click **Add Tool**
* Select **Exa** and **Linkup** from the available tools
* Add your API keys for both tools (this allows the agent to search the web and access additional information)
  {% endstep %}

{% step %}

### Test the basic workflow

Now let's test our workflow. Go to the **Chat panel** on the right side of the screen.

In the chat panel:

* Click the dropdown and select `agent1.content` (this will show us the output of our agent)
* Enter a test message like: "Who is Nikola Tesla?"
* Click "Send" to run the workflow

You should see the agent's response analyzing the person described in your text.
{% endstep %}

{% step %}

### Add structured output

Now let's make our agent return structured data. Click on the Agent block to select it.

In the **Response Format** section:

* Click the **magic wand icon** (✨) next to the schema field
* In the prompt that appears, type: "create a schema named person, that contains location, profession, and education"
* The AI will generate a JSON schema for you automatically
  {% endstep %}

{% step %}

### Test the structured output

Go back to the **Chat panel**.

Since we added a response format, new output options are now available:

* Click the dropdown and select the new structured output option (the schema we just created)
* Enter a new test message like: "Who is Alan Turing?"
* Click "Send" to run the workflow again

You should now see structured JSON output with the person's information organized into location, profession, and education fields.
{% endstep %}
{% endstepper %}

### What You Just Built

Congratulations! You've created your first AI workflow that:

* ✅ Receives text input via chat interface
* ✅ Uses AI to extract information from unstructured text
* ✅ Integrates external tools (Exa) for enhanced capabilities
* ✅ Returns structured JSON data using AI-generated schemas
* ✅ Demonstrates workflow testing and iteration
* ✅ Shows the power of visual workflow building

### Key Concepts You Learned

#### Block Types Used

| Title       | Target                                     |
| ----------- | ------------------------------------------ |
| Start Block | Entry point for user input (auto-included) |
| Agent Block | AI model for text processing and analysis  |

#### Core Workflow Concepts

**Data Flow**: Variables flow between blocks by dragging connections

**Chat Interface**: Test workflows in real-time using the chat panel with different output options

**Tool Integration**: Enhance agent capabilities by adding external tools like Exa

**Variable References**: Access block outputs using `<blockName.output>` syntax

**Structured Output**: Use JSON schemas to get consistent, structured data from AI

**AI-Generated Schemas**: Use the magic wand (✨) to generate schemas with natural language

**Iterative Development**: Test, modify, and re-test workflows easily


# Modes

Agent Forge gives you two ways to work: **Lite Mode** for fast, conversational building and **Workflow Mode** for full visual workflow control. Both modes use the same Agent Forge foundation, but they are designed for different levels of structure, visibility, and production readiness.

{% hint style="info" %}
Lite Mode is the fastest way to ask, prototype, and iterate. Workflow Mode is the full builder for designing, debugging, deploying, and operating production workflows.
{% endhint %}

## Overview

**Lite Mode** is a chat-first workspace. You describe what you want, attach files or skills when needed, and let Agent Forge help you build from a simple conversation. It is designed for quick tasks, exploration, and users who do not want to manage a canvas directly.

**Workflow Mode** is the complete workflow builder. You work with blocks on a canvas, connect data between steps, configure execution paths, inspect logs, use the built-in copilot, and deploy workflows through APIs, chat interfaces, webhooks, and schedules.

Both modes are part of the same product experience:

* **Lite Mode** emphasizes speed, conversation, and guided assistance
* **Workflow Mode** emphasizes structure, control, repeatability, and production readiness
* **Switching modes** lets you move between simple prompting and detailed workflow engineering
* **Mobile workspaces** use the Lite experience to keep the interface focused and usable on smaller screens

## Lite Mode

Lite Mode is the simplest way to use Agent Forge. Instead of starting with a blank workflow canvas, you start with a chat. You can ask Agent Forge for help, describe a task, attach context, and keep a history of conversations inside the workspace.

### What Lite Mode Is Best For

Lite Mode is ideal when you want to move quickly:

* **Quick AI tasks** - Ask questions, draft content, summarize information, or reason through a problem without building a full workflow
* **Early workflow discovery** - Describe the automation you want before deciding how it should be structured
* **Guided building** - Let Agent Forge help you turn plain language into a more concrete plan
* **Skill-based assistance** - Attach selected skills to a message so the agent receives additional instructions and domain context
* **File-assisted work** - Include relevant files in a message when the task needs more context
* **Lightweight iteration** - Start a new chat, revisit previous conversations, and refine the request over time

### Lite Mode Workspace

In Lite Mode, the workspace is centered around conversation:

* **Chats** — Create new conversations, open previous chats, rename threads, and continue work from earlier context.
* **Message Area** — Ask Agent Forge what you want to build, analyze, write, or automate.
* **Skills** — Attach reusable instructions to a specific message when the agent needs specialized guidance.
* **Artifacts** — Review generated outputs in a focused panel when the assistant creates richer results.

### How Lite Mode Handles Work

Lite Mode keeps the interface intentionally direct. The agent stays in an ask-oriented experience, so the conversation remains the main control surface. This is useful when the task is still exploratory or when you want Agent Forge to help before you commit to a full workflow design.

{% stepper %}
{% step %}

### Start with a request

Describe the outcome you want in natural language. This can be a simple question, a draft request, an automation idea, or a workflow concept.
{% endstep %}

{% step %}

### Add context

Attach files or selected skills when the agent needs more information about your domain, process, or expected output.
{% endstep %}

{% step %}

### Iterate in chat

Refine the result through follow-up messages. Lite Mode keeps the flow conversational so you can move quickly.
{% endstep %}

{% step %}

### Switch when structure matters

When the task needs a repeatable workflow, visual block configuration, debugging, or deployment, switch into Workflow Mode.
{% endstep %}
{% endstepper %}

### Lite Mode Safety Model

Lite Mode is designed to keep high-impact actions clear. Read-only actions such as searching, listing, retrieving, or fetching data can run with less interruption. Mutating actions such as creating, updating, deleting, sending, posting, uploading, or changing environment variables are treated more carefully.

This keeps Lite Mode useful for fast work while making important changes visible before they happen. Examples include:

* **Read operations** - Search documentation, list files, read documents, fetch data, or query existing information
* **Write operations** - Send an email, update a document, append rows to a sheet, create a calendar event, post to Slack, or change external systems
* **Unknown operations** - Actions that are not clearly read-only default to a more cautious path

{% hint style="warning" %}
Lite Mode is best for guided interaction and fast iteration. For complex workflows, repeated production runs, or detailed data routing, use Workflow Mode.
{% endhint %}

## Workflow Mode

Workflow Mode is the full Agent Forge workflow builder. It gives you direct access to the canvas, blocks, connections, templates, logs, debugging tools, deployment controls, and workflow configuration.

In Workflow Mode, you are not only asking Agent Forge for an answer. You are designing how a system should run.

### What Workflow Mode Is Best For

Workflow Mode is ideal when your work needs structure:

* **Production workflows** - Build repeatable automations with explicit inputs, outputs, and execution paths
* **Visual orchestration** - Connect blocks on a canvas and control how data moves between them
* **Multi-step logic** - Add conditions, routers, loops, parallel branches, APIs, functions, tools, and response formatting
* **Deployment** - Expose workflows through APIs, chat deployments, webhooks, and schedules
* **Debugging** - Run workflows step-by-step, inspect block outputs, and understand where a workflow succeeds or fails
* **Monitoring** - Review logs, performance, cost, and execution history
* **Templates** - Start from pre-built templates or publish workflows for reuse
* **YAML and JSON editing** - Edit workflow structure directly when a text-based representation is more efficient

### Workflow Mode Workspace

Workflow Mode exposes the full builder environment:

* **Workflow Canvas** — Drag blocks onto the canvas and connect them into a complete execution graph.
* **Control Bar** — Run, debug, duplicate, delete, export, auto-layout, publish, and manage workflow actions.
* **Blocks Panel** — Add agents, APIs, functions, routers, conditions, loops, parallel blocks, response blocks, and tools.
* **Copilot Panel** — Use the built-in copilot to help create, modify, explain, or improve workflows.
* **Template Library** — Start from existing workflow patterns instead of building every workflow from scratch.
* **Logs and Debugging** — Inspect workflow execution, block outputs, errors, timing, and cost information.

### How Workflow Mode Handles Work

Workflow Mode makes the workflow explicit. Each block has a job, each connection controls data flow, and each execution can be inspected through logs and block states.

{% stepper %}
{% step %}

### Design the workflow

Add blocks to represent each step of the process. Use Agent blocks for AI reasoning, API blocks for external services, Function blocks for custom logic, and orchestration blocks for control flow.
{% endstep %}

{% step %}

### Connect the data

Pass outputs from one block into another using variable references and connection interfaces. This creates a clear data path through the workflow.
{% endstep %}

{% step %}

### Test and debug

Run the workflow manually, inspect outputs, use debug controls, and adjust block configuration until the workflow behaves correctly.
{% endstep %}

{% step %}

### Deploy and monitor

Deploy the workflow as an API, chat interface, webhook-driven automation, or scheduled job. Review logs and execution history as the workflow runs.
{% endstep %}
{% endstepper %}

## Key Differences

Lite Mode and Workflow Mode are not competing builders. They are different levels of control over the same platform.

{% tabs %}
{% tab title="Experience" %}
**Lite Mode** uses a chat-centered interface where you interact through messages, files, skills, and conversation history.

**Workflow Mode** uses a visual workflow canvas where you place blocks, connect them, configure each step, and manage the full workflow lifecycle.
{% endtab %}

{% tab title="Control" %}
**Lite Mode** gives you a guided experience with fewer visible controls. It is optimized for speed and direct interaction.

**Workflow Mode** gives you detailed control over block settings, execution paths, variables, tools, deployment, logs, and debugging.
{% endtab %}

{% tab title="Best Fit" %}
**Lite Mode** is best for asking, exploring, drafting, summarizing, attaching context, and shaping an idea before it becomes a workflow.

**Workflow Mode** is best for repeatable processes, complex automations, multi-step workflows, production endpoints, and anything that needs observability.
{% endtab %}

{% tab title="Output" %}
**Lite Mode** usually produces conversational answers, generated artifacts, or guidance that you can refine through follow-up messages.

**Workflow Mode** produces workflows that can be tested, deployed, reused, shared, monitored, and improved over time.
{% endtab %}
{% endtabs %}

### Lite Mode Emphasizes

**Speed** - Start working immediately without choosing blocks or configuring a canvas.

**Conversation** - Keep the request and result in a single chat flow.

**Guidance** - Ask Agent Forge to help reason through the work before you build it.

**Low setup** - Useful when the task is still small, unclear, or exploratory.

**Focused interaction** - Especially useful on mobile and smaller screens.

### Workflow Mode Emphasizes

**Structure** - Represent each step as a block with clear inputs and outputs.

**Repeatability** - Run the same process reliably through manual execution, APIs, webhooks, or schedules.

**Observability** - Inspect logs, costs, block outputs, execution status, and errors.

**Control** - Configure models, tools, prompts, response schemas, routing, loops, custom code, and integrations.

**Deployment** - Turn a workflow into a production-ready interface or endpoint.

## When to Use Each Mode

Use **Lite Mode** when:

* You want the fastest path from idea to result
* You are still figuring out what the workflow should do
* You need help drafting, researching, summarizing, or planning
* You want to attach a skill or file to a specific request
* You are working from a smaller screen
* You do not need a reusable workflow yet

Use **Workflow Mode** when:

* You need to build a workflow that runs more than once
* You need exact control over each step
* You need branching logic, loops, parallel execution, APIs, or custom code
* You need to deploy the workflow for other systems or users
* You need logs, debugging, cost visibility, or execution history
* You want to publish, duplicate, export, or manage workflow templates

## Switching Between Modes

The mode switch appears in the workspace header on desktop. In Lite Mode, the button switches you into **Workflow Mode**. In Workflow Mode, the button switches you back to **Lite**.

Switching changes the interface you are working in:

* **Switch to Workflow Mode** opens the canvas-based workflow builder
* **Switch to Lite** returns to the chat-centered experience
* **Lite Mode chats** are kept separate from workflow-specific copilot chats
* **Workflow Mode pages** focus on workflows, templates, logs, and builder controls

{% hint style="info" %}
If you are on a mobile device, Agent Forge uses the Lite Mode experience so the workspace remains focused and easy to navigate.
{% endhint %}

## Block-Level Advanced Configuration

Workflow Mode also includes a smaller block-level concept: some blocks can switch between **Basic Mode** and **Advanced Mode** inside the block itself.

This is separate from the workspace-level Lite Mode and Workflow Mode switch.

**Basic block configuration** shows the most common fields for the block. It keeps setup fast and reduces noise when the default configuration is enough.

**Advanced block configuration** reveals additional fields for more exact control. These are often manual IDs, lower-level inputs, structured settings, or provider-specific options that are not needed for every workflow.

Examples of block-level advanced settings include:

* Manually entering a Google Docs document ID
* Manually entering a Google Sheets spreadsheet ID
* Providing a Slack channel ID directly
* Configuring structured starter input for manual runs
* Exposing provider-specific identifiers that are useful in production systems

{% hint style="warning" %}
Workflow Mode gives you the full workflow builder. Block-level Advanced Mode reveals additional configuration inside an individual block. They are related, but they are not the same switch.
{% endhint %}

## Recommended Workflow

A common pattern is to start simple and increase control only when the work needs it:

{% stepper %}
{% step %}

### Explore in Lite Mode

Use chat to describe the process, ask questions, attach context, and clarify what the workflow should accomplish.
{% endstep %}

{% step %}

### Move to Workflow Mode

Switch to the workflow builder when the process needs repeatable execution, multiple blocks, integrations, or deployment.
{% endstep %}

{% step %}

### Build the workflow

Add blocks, connect data, configure tools, define outputs, and test the workflow manually.
{% endstep %}

{% step %}

### Refine with block advanced settings

Turn on block-level Advanced Mode only where additional control is needed.
{% endstep %}

{% step %}

### Deploy and monitor

Expose the workflow through the right execution method and review logs as it runs.
{% endstep %}
{% endstepper %}


# Powered by $ACN

Agent Forge is powered by **$ACN**, the token used across the platform for crypto payments, usage wallet top-ups, exclusive yearly subscriptions, and staking-based deployment access.

{% hint style="info" %}
ACN connects billing and deployment access to the Agent Forge product layer. You can use it to top up your wallet, pay for discounted yearly plans, and unlock deployment capacity through staking.
{% endhint %}

### Where ACN Is Used

ACN is used in three major areas of Agent Forge:

* **Wallet top-ups** - Add balance to your Agent Forge wallet with ACN, then use that balance to keep workflows and copilot calls running.
* **Exclusive yearly subscriptions** - Pay for Plus or Pro yearly plans with ACN and receive a discounted yearly rate.
* **Staking tiers** - Stake ACN to unlock and expand deployment access for agents and workflows. Tier details are still being finalized, but more staked ACN means more deployment capacity.
* **Top Up with ACN**\
  Fund your Agent Forge wallet using ACN on Ethereum.
* **Yearly ACN Plans**\
  Subscribe yearly with ACN and access exclusive crypto discounts.
* **Stake for Deployments**\
  Stake ACN to unlock deployment tiers for agents and workflows.

### Wallet Top-Ups

ACN can be used to top up your Agent Forge wallet balance. This gives crypto users a usage-based billing path: instead of relying only on a monthly card subscription limit, you can keep a wallet balance and spend from it as you run workflows.

The wallet balance is used for workflow execution and copilot usage. If the wallet balance is too low, Agent Forge warns you before usage is interrupted.

{% stepper %}
{% step %}

#### Choose a top-up amount

Agent Forge supports preset amounts such as $5, $10, $20, $50, and $100, and custom top-ups within the configured platform limits.
{% endstep %}

{% step %}

#### Select ACN as the payment token

{% endstep %}

{% step %}

#### Choose Ethereum

ACN payments for top-ups and yearly subscriptions are supported on Ethereum.
{% endstep %}

{% step %}

#### Connect your wallet and confirm the ACN transfer

{% endstep %}

{% step %}

#### Agent Forge verifies the transaction

Agent Forge verifies the on-chain transaction, credits your wallet balance, and records the top-up in your wallet transaction history.
{% endstep %}
{% endstepper %}

Top-up payments are priced in USD and converted into the required ACN amount using the current token price at the time the payment intent is created. Payment intents expire after a limited window, so each top-up uses fresh pricing and a fresh treasury address confirmation.

### Yearly Subscriptions with ACN

ACN is also used for exclusive yearly subscription payments. When upgrading to Plus or Pro, users can choose between monthly card billing and a yearly crypto payment with ACN.

The yearly ACN path is designed as a discounted subscription option. Instead of paying month-to-month through Stripe, users can pay for a full year using ACN and receive a crypto-exclusive discount.

#### What the Yearly ACN Option Includes

* **Plus yearly with ACN** - Pay for the Plus plan annually using ACN.
* **Pro yearly with ACN** - Pay for the Pro plan annually using ACN.
* **Discounted yearly pricing** - The platform applies a yearly crypto discount to the base annual price.
* **Wallet credit on activation** - Crypto subscribers can receive an initial wallet credit tied to their plan, so they can start using the product after subscribing.

When a user chooses the ACN yearly payment option, Agent Forge creates a crypto payment intent, converts the discounted USD price into ACN, asks the user to confirm the wallet transaction, and verifies the payment on-chain before activating the subscription.

### Staking Tiers

ACN staking is the deployment access layer for Agent Forge. Users connect a wallet, stake ACN, and Agent Forge checks the wallet's staking status to determine which deployment capabilities are available.

The final tier names, thresholds, and exact staking requirements are still to be revealed. The core mechanism is:

**more staked ACN means more deployment capacity.**

In practical terms, staking tiers are intended to control how many agents and workflows a user can deploy, and which deployment features they can access. Higher tiers will unlock more deployment room for production use.

#### What Staking Unlocks

Staking is being designed around deployment access for:

* **Workflow deployments** - Deploy workflows so they can be used outside the editor.
* **Agent deployments** - Deploy agents as reusable production services.
* **API deployments** - Expose workflows through API endpoints.
* **Chat deployments** - Publish workflows as chat interfaces.
* **Registry access** - Register agents on-chain through the Agent Registry experience.

Current product surfaces already separate deployment access by staking tier. Lower tiers start with core deployment features, while higher tiers expand access and capacity. If staking lapses, Agent Forge can keep a short grace period before deploy features are deactivated.

{% hint style="warning" %}
Tier thresholds and final deployment limits are not final yet. The intended model is simple: stake ACN, unlock a tier, and receive deployment capacity based on that tier.
{% endhint %}

### Why ACN Matters in Agent Forge

ACN gives Agent Forge a native payment and access model for builders who want to operate through crypto instead of only card-based billing. It supports simple usage top-ups, discounted yearly subscriptions, and a staking mechanism that ties deployment access to long-term participation in the ecosystem.

For builders, this means ACN is not just a payment method. It is the token that powers usage, subscriptions, and deployment access across Agent Forge.


# Blocks


# starter

The Starter block is the entry point for a workflow. Every workflow begins from a starter-style input, whether it is run manually, executed through chat, called through an API, or triggered by another deployment method.

{% hint style="info" %}
Use the Starter block to define how a workflow receives its initial input. Downstream blocks can reference that input as workflow data.
{% endhint %}

### Overview

The Starter block supports two primary modes:

* **Run manually** - Start the workflow from the editor or through deployed execution paths
* **Chat** - Use the workflow as a conversational flow where chat messages become workflow input

### Configuration Options

#### Start Workflow

Choose how the workflow should start:

* `manual` for manual runs and structured execution
* `chat` for chat-driven workflows

#### Input Format

When the Starter block is configured for manual execution, Workflow Mode can expose an advanced input format. This defines structured fields that callers can provide when running the workflow through an API or other execution method.

### How It Works

{% stepper %}
{% step %}
Configure the Starter block with the execution style you want.
{% endstep %}

{% step %}
Pass user input, API payloads, or structured values into the workflow.
{% endstep %}

{% step %}
Reference the starter input from downstream blocks as the initial workflow data.
{% endstep %}
{% endstepper %}

### Inputs and Outputs

#### Input

| Parameter | Type | Description                 |
| --------- | ---- | --------------------------- |
| `input`   | json | Initial workflow input data |

#### Output

The Starter block does not produce a normal downstream output object. It initiates workflow execution and makes the initial input available to connected blocks.

### Notes

* Category: `blocks`
* Type: `starter`


# router

The Router block uses AI to intelligently decide which path your workflow should take next. Unlike Condition blocks that use simple rules, Router blocks can understand context and make smart routing decisions based on content analysis.

### Overview

{% stepper %}
{% step %}

#### Intelligent content routing

Use AI to understand intent and context
{% endstep %}

{% step %}

#### Dynamic path selection

Route workflows based on unstructured content analysis
{% endstep %}

{% step %}

#### Context-aware decisions

Make smart routing choices beyond simple rules
{% endstep %}

{% step %}

#### Multi-path management

Handle complex workflows with multiple potential destinations
{% endstep %}
{% endstepper %}

### Router vs Condition Blocks

<details>

<summary>When to Use Router</summary>

* AI-powered content analysis needed
* Unstructured or varying content types
* Intent-based routing (e.g., "route support tickets to departments")
* Context-aware decision making required

</details>

<details>

<summary>When to Use Condition</summary>

* Simple, rule-based decisions
* Structured data or numeric comparisons
* Fast, deterministic routing needed
* Boolean logic sufficient

</details>

### How It Works

The Router block:

{% stepper %}
{% step %}

#### Analyze content

Uses an LLM to understand input content and context
{% endstep %}

{% step %}

#### Evaluate targets

Compares content against available destination blocks
{% endstep %}

{% step %}

#### Select destination

Identifies the most appropriate path based on intent
{% endstep %}

{% step %}

#### Route execution

Directs workflow to the selected block
{% endstep %}
{% endstepper %}

### Configuration Options

#### Content/Prompt

The content or prompt that the Router will analyze to make routing decisions. This can be:

* A direct user query or input
* Output from a previous block
* A system-generated message

#### Target Blocks

The possible destination blocks that the Router can select from. The Router will automatically detect connected blocks, but you can also:

* Customize the descriptions of target blocks to improve routing accuracy
* Specify routing criteria for each target block
* Exclude certain blocks from being considered as routing targets

#### Model Selection

Choose an AI model to power the routing decision:

**OpenAI**: GPT-4o, o1, o3, o4-mini, gpt-4.1\
**Anthropic**: Claude 3.7 Sonnet\
**Google**: Gemini 2.5 Pro, Gemini 2.0 Flash\
**Other Providers**: Groq, Cerebras, xAI, DeepSeek\
**Local Models**: Any model running on Ollama

**Recommendation**: Use models with strong reasoning capabilities like GPT-4o or Claude 3.7 Sonnet for more accurate routing decisions.

#### API Key

Your API key for the selected LLM provider. This is securely stored and used for authentication.

#### Accessing Results

After a router makes a decision, you can access its outputs:

* **`<router.content>`**: Summary of the routing decision made
* **`<router.selected_path>`**: Details of the chosen destination block
* **`<router.tokens>`**: Token usage statistics from the LLM
* **`<router.model>`**: The model used for decision-making

### Advanced Features

#### Custom Routing Criteria

Define specific criteria for each target block:

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

#### Multi-Model Routing

Use different models for different routing scenarios:

```javascript
// Fast routing for simple cases
Model: GPT-4o-mini
Criteria: Simple, common routing patterns

// Complex routing for nuanced decisions
Model: Claude 3.7 Sonnet
Criteria: Complex content analysis required
```

#### Fallback Handling

Implement robust fallback mechanisms:

```javascript
// Router configuration
Primary Targets: ["Support", "Sales", "Technical"]
Fallback Target: "General" // Default when no specific match
Confidence Threshold: 0.7 // Minimum confidence for routing
```

### Inputs and Outputs

{% tabs %}
{% tab title="Configuration" %}

* **Content/Prompt**: Text to analyze for routing decisions
* **Target Blocks**: Connected blocks as potential destinations
* **Model**: AI model for routing analysis
* **API Key**: Authentication for selected LLM provider
  {% endtab %}

{% tab title="Variables" %}

* **router.content**: Summary of routing decision
* **router.selected\_path**: Details of chosen destination
* **router.tokens**: Token usage statistics
* **router.model**: Model used for decision-making
  {% endtab %}

{% tab title="Results" %}

* **Routing Decision**: Primary path selection result
* **Decision Context**: Analysis summary and reasoning
* **Access**: Available in blocks after the router
  {% endtab %}
  {% endtabs %}

### Example Use Cases

#### Customer Support Triage

{% stepper %}
{% step %}

#### Scenario: Route support tickets to specialized departments

1. User submits support request via form
2. Router analyzes ticket content and context
3. Technical issues → Engineering support agent
4. Billing questions → Finance support agent
   {% endstep %}
   {% endstepper %}

#### Content Classification

{% stepper %}
{% step %}

#### Scenario: Classify and route user-generated content

1. User submits content or feedback
2. Router analyzes content type and sentiment
3. Feature requests → Product team workflow
4. Bug reports → Technical support workflow
   {% endstep %}
   {% endstepper %}

#### Lead Qualification

{% stepper %}
{% step %}

#### Scenario: Route leads based on qualification criteria

1. Lead information captured from form
2. Router analyzes company size, industry, and needs
3. Enterprise leads → Sales team with custom pricing
4. SMB leads → Self-service onboarding flow
   {% endstep %}
   {% endstepper %}

#### Example

Router prompt:

```json
<function1.result>

Support Path: "Technical/support issues, bugs, API problems"
Billing Path: "Invoices, refunds, payment, subscription changes"
General Path: "Feedback, feature requests, anything else"
```

### Best Practices

* **Provide clear target descriptions**: Help the Router understand when to select each destination with specific, detailed descriptions
* **Use specific routing criteria**: Define clear conditions and examples for each path to improve accuracy
* **Implement fallback paths**: Connect a default destination for when no specific path is appropriate
* **Test with diverse inputs**: Ensure the Router handles various input types, edge cases, and unexpected content
* **Monitor routing performance**: Review routing decisions regularly and refine criteria based on actual usage patterns
* **Choose appropriate models**: Use models with strong reasoning capabilities for complex routing decisions


# workflow

The Workflow block allows you to execute other workflows as reusable components within your current workflow. This powerful feature enables modular design, code reuse, and the creation of complex nested workflows that can be composed from smaller, focused workflows.

{% hint style="info" %}
Workflow blocks enable modular design by allowing you to compose complex workflows from smaller, reusable components.
{% endhint %}

### Overview

The Workflow block serves as a bridge between workflows, enabling you to:

* **Reuse existing workflows**: Execute previously created workflows as components within new workflows
* **Create modular designs**: Break down complex processes into smaller, manageable workflows
* **Maintain separation of concerns**: Keep different business logic isolated in separate workflows
* **Enable team collaboration**: Share and reuse workflows across different projects and team members

### How It Works

The Workflow block:

1. Takes a reference to another workflow in your workspace
2. Passes input data from the current workflow to the child workflow
3. Executes the child workflow in an isolated context
4. Returns the results back to the parent workflow for further processing

### Configuration Options

#### Workflow Selection

Choose which workflow to execute from a dropdown list of available workflows in your workspace. The list includes:

* All workflows you have access to in the current workspace
* Workflows shared with you by other team members
* Both enabled and disabled workflows (though only enabled workflows can be executed)

#### Input Data

Define the data to pass to the child workflow:

* **Single Variable Input**: Select a variable or block output to pass to the child workflow
* **Variable References**: Use `<variable.name>` to reference workflow variables
* **Block References**: Use `<blockName.field>` to reference outputs from previous blocks
* **Automatic Mapping**: The selected data is automatically available as `start.input` in the child workflow
* **Optional**: The input field is optional - child workflows can run without input data
* **Type Preservation**: Variable types (strings, numbers, objects, etc.) are preserved when passed to the child workflow

#### Accessing Results

After a workflow executes, you can access its outputs:

* **`<workflow.response>`**: The complete output from the child workflow
* **`<workflow.name>`**: The name of the executed child workflow
* **`<workflow.success>`**: Boolean indicating successful completion
* **`<workflow.error>`**: Error details if the workflow failed
* **`<workflow.execution_time>`**: Time taken to execute the workflow

#### Execution Context

The child workflow executes with:

* Its own isolated execution context
* Access to the same workspace resources (API keys, environment variables)
* Proper workspace membership and permission checks
* Independent logging and monitoring

### Safety and Limitations

To prevent infinite recursion and ensure system stability, the Workflow block includes several safety mechanisms:

{% hint style="warning" %}
**Cycle Detection**: The system automatically detects and prevents circular dependencies between workflows to avoid infinite loops.
{% endhint %}

* **Maximum Depth Limit**: Nested workflows are limited to a maximum depth of 10 levels
* **Cycle Detection**: Automatic detection and prevention of circular workflow dependencies
* **Timeout Protection**: Child workflows inherit timeout settings to prevent indefinite execution
* **Resource Limits**: Memory and execution time limits apply to prevent resource exhaustion

### Advanced Features

#### Dynamic Workflow Selection

Select workflows dynamically based on runtime conditions:

```javascript
// In a Function block before the Workflow block
const workflowId = <condition.result> ? 'premium-workflow' : 'standard-workflow';
return { selectedWorkflow: workflowId };
```

#### Error Handling and Fallbacks

Implement robust error handling for child workflows:

```javascript
// In a Function block after the Workflow block
if (!<workflow.success>) {
  console.error('Child workflow failed:', <workflow.error>);
  // Implement fallback logic
  return { fallback: true, error: <workflow.error> };
}
return <workflow.response>;
```

#### Workflow Chaining

Chain multiple workflows together:

```javascript
// Pass output from one workflow to another
Workflow 1 Input: <start.input>
Workflow 2 Input: <workflow1.response>
Workflow 3 Input: <workflow2.response>
```

### Inputs and Outputs

{% tabs %}
{% tab title="Configuration" %}

* **Workflow Selection**: Choose which workflow to execute
* **Input Data**: Variable or block reference to pass to child workflow
* **Execution Context**: Isolated environment with workspace resources
  {% endtab %}

{% tab title="Variables" %}

* **workflow\.response**: Complete output from child workflow
* **workflow\.name**: Name of executed child workflow
* **workflow\.success**: Boolean indicating completion status
* **workflow\.error**: Error details if workflow failed
* **workflow\.execution\_time**: Time taken to execute
  {% endtab %}

{% tab title="Results" %}

* **Workflow Response**: Primary output from child workflow
* **Execution Status**: Success status and error information
* **Access**: Available in blocks after the workflow
  {% endtab %}
  {% endtabs %}

### Example Use Cases

#### Modular Customer Onboarding

**Scenario: Break down complex onboarding into reusable components**

1. Main workflow receives customer data
2. Workflow block executes validation workflow
3. Workflow block executes account setup workflow
4. Workflow block executes welcome email workflow

#### Microservice Architecture

**Scenario: Create independent service workflows**

1. Payment processing workflow handles transactions
2. Inventory management workflow updates stock
3. Notification workflow sends confirmations
4. Main workflow orchestrates all services

#### Conditional Processing

**Scenario: Execute different workflows based on conditions**

1. Condition block evaluates user type
2. Enterprise users → Complex approval workflow
3. Standard users → Simple approval workflow
4. Free users → Basic processing workflow

#### Example: Customer Validation Workflow

```javascript
// Main workflow passes customer data to validation workflow
const customerData = <start.input>;

// Validation workflow processes the data
const emailValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(customerData.email);
const phoneValid = /^\+?[1-9]\d{1,14}$/.test(customerData.phone);

return {
  customer: customerData,
  validation: {
    email: emailValid,
    phone: phoneValid,
    overall: emailValid && phoneValid
  }
};
```

### Best Practices

* **Keep workflows focused**: Design child workflows to handle specific, well-defined tasks with clear inputs and outputs
* **Minimize nesting depth**: Avoid deeply nested workflow hierarchies for better maintainability and performance
* **Handle errors gracefully**: Implement proper error handling for child workflow failures and provide fallback mechanisms
* **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


# api

The API block enables you to connect your workflow to external services through HTTP requests. It supports various methods like GET, POST, PUT, DELETE, and PATCH, allowing you to interact with virtually any API endpoint.

### Overview

The API block enables you to:

{% stepper %}
{% step %}

### Connect to external services

Make HTTP requests to REST APIs and web services
{% endstep %}

{% step %}

### Send and receive data

Process responses and transform data from external sources
{% endstep %}

{% step %}

### Integrate third-party platforms

Connect with services like Stripe, Slack, or custom APIs
{% endstep %}

{% step %}

### Handle authentication

Support various auth methods including Bearer tokens and API keys
{% endstep %}
{% endstepper %}

### Configuration Options

#### URL

The endpoint URL for the API request. This can be:

* A static URL entered directly in the block
* A dynamic URL connected from another block's output
* A URL with path parameters

#### Method

Select the HTTP method for your request:

* **GET**: Retrieve data from the server
* **POST**: Send data to the server to create a resource
* **PUT**: Update an existing resource on the server
* **DELETE**: Remove a resource from the server
* **PATCH**: Partially update an existing resource

#### Query Parameters

Define key-value pairs that will be appended to the URL as query parameters. For example:

```
Key: apiKey
Value: your_api_key_here

Key: limit
Value: 10
```

These would be added to the URL as `?apiKey=your_api_key_here&limit=10`.

#### Headers

Configure HTTP headers for your request. Common headers include:

```
Key: Content-Type
Value: application/json

Key: Authorization
Value: Bearer your_token_here
```

#### Request Body

For methods that support a request body (POST, PUT, PATCH), you can define the data to send. The body can be:

* JSON data entered directly in the block
* Data connected from another block's output
* Dynamically generated during workflow execution

#### Accessing Results

After an API request completes, you can access its outputs:

* **`<api.data>`**: The response body data from the API
* **`<api.status>`**: HTTP status code (200, 404, 500, etc.)
* **`<api.headers>`**: Response headers from the server
* **`<api.error>`**: Error details if the request failed

### Advanced Features

#### Dynamic URL Construction

Build URLs dynamically using variables from previous blocks:

```javascript
// In a Function block before the API
const userId = <start.userId>;
const apiUrl = `https://api.example.com/users/${userId}/profile`;
```

#### Request Retries

The API block automatically handles:

* Network timeouts with exponential backoff
* Rate limit responses (429 status codes)
* Server errors (5xx status codes) with retry logic
* Connection failures with reconnection attempts

#### Response Validation

Validate API responses before processing:

```javascript
// In a Function block after the API
if (<api.status> === 200) {
  const data = <api.data>;
  // Process successful response
} else {
  // Handle error response
  console.error(`API Error: ${<api.status>}`);
}
```

### Inputs and Outputs

{% tabs %}
{% tab title="Configuration" %}

* **URL**: The endpoint to send the request to
* **Method**: HTTP method (GET, POST, PUT, DELETE, PATCH)
* **Query Parameters**: Key-value pairs for URL parameters
* **Headers**: HTTP headers for authentication and content type
* **Body**: Request payload for POST/PUT/PATCH methods
  {% endtab %}

{% tab title="Variables" %}

* **api.data**: Response body data from the API call
* **api.status**: HTTP status code returned by server
* **api.headers**: Response headers from the server
* **api.error**: Error details if request failed
  {% endtab %}

{% tab title="Results" %}

* **Response Data**: Primary API response content
* **Status Information**: HTTP status and error details
* **Access**: Available in blocks after the API call
  {% endtab %}
  {% endtabs %}

### Example Use Cases

#### Fetch User Profile Data

Scenario: Retrieve user information from external service

1. Function block constructs user ID from input
2. API block calls GET `/users/{id}` endpoint
3. Function block processes and formats user data
4. Response block returns formatted profile

#### Create Support Ticket

Scenario: Submit support request to ticketing system

1. Agent analyzes user issue and generates ticket data
2. API block POSTs ticket to support system
3. Condition block checks if ticket was created successfully
4. Response block confirms ticket creation with ID

#### Payment Processing

Scenario: Process payment through Stripe API

1. Function block validates payment data
2. API block creates payment intent via Stripe
3. Condition block handles payment success/failure
4. Function block updates order status in database

### Best Practices

* **Use environment variables for sensitive data**: Don't hardcode API keys or credentials
* **Handle errors gracefully**: Connect error handling logic for failed requests
* **Validate responses**: Check status codes and response formats before processing data
* **Respect rate limits**: Be mindful of API rate limits and implement appropriate throttling


# condition

The Condition block allows you to branch your workflow execution path based on boolean expressions. It evaluates conditions and routes the workflow accordingly, enabling you to create dynamic, responsive workflows with different execution paths.

{% hint style="info" %}
Condition blocks enable deterministic decision-making without requiring an LLM, making them ideal for straightforward branching logic.
{% endhint %}

### Overview

The Condition block enables you to:

* **Create branching logic**: Route workflows based on boolean expressions
* **Make data-driven decisions**: Evaluate conditions using previous block outputs
* **Handle multiple scenarios**: Define multiple conditions with different paths
* **Provide deterministic routing**: Make decisions without requiring an LLM

### How It Works

The Condition block operates through a sequential evaluation process:

{% stepper %}
{% step %}

### Evaluate Expression

Processes the JavaScript/TypeScript boolean expression using current workflow data
{% endstep %}

{% step %}

### Determine Result

Returns true or false based on the expression evaluation
{% endstep %}

{% step %}

### Route Workflow

Directs execution to the appropriate destination block based on the result
{% endstep %}

{% step %}

### Provide Context

Generates metadata about the decision for debugging and monitoring
{% endstep %}
{% endstepper %}

### Configuration Options

#### Conditions

Define one or more conditions that will be evaluated. Each condition includes:

* **Expression**: A JavaScript/TypeScript expression that evaluates to true or false
* **Path**: The destination block to route to if the condition is true
* **Description**: Optional explanation of what the condition checks

You can create multiple conditions that are evaluated in order, with the first matching condition determining the execution path.

#### Condition Expression Format

Conditions use JavaScript syntax and can reference input values from previous blocks.

{% tabs %}
{% tab title="Score Threshold" %}

```javascript
// Check if a score is above a threshold
<agent.score> > 75
```

{% endtab %}

{% tab title="Text Analysis" %}

```javascript
// Check if a text contains specific keywords
<agent.text>.includes('urgent') || <agent.text>.includes('emergency')
```

{% endtab %}

{% tab title="Multiple Conditions" %}

```javascript
// Check multiple conditions
<agent.age> >= 18 && <agent.country> === 'US'
```

{% endtab %}
{% endtabs %}

#### Accessing Results

After a condition evaluates, you can access its outputs:

* **`<condition.result>`**: Boolean result of the condition evaluation
* **`<condition.matched_condition>`**: ID of the condition that was matched
* **`<condition.content>`**: Description of the evaluation result
* **`<condition.path>`**: Details of the chosen routing destination

### Advanced Features

#### Complex Expressions

Use JavaScript operators and functions in conditions:

```javascript
// String operations
<user.email>.endsWith('@company.com')

// Array operations
<api.tags>.includes('urgent')

// Mathematical operations
<agent.confidence> * 100 > 85

// Date comparisons
new Date(<api.created_at>) > new Date('2024-01-01')
```

#### Multiple Condition Evaluation

Conditions are evaluated in order until one matches:

```javascript
// Condition 1: Check for high priority
<ticket.priority> === 'high'

// Condition 2: Check for urgent keywords
<ticket.subject>.toLowerCase().includes('urgent')

// Condition 3: Default fallback
true
```

#### Error Handling

Conditions automatically handle:

* Undefined or null values with safe evaluation
* Type mismatches with appropriate fallbacks
* Invalid expressions with error logging
* Missing variables with default values

### Inputs and Outputs

{% tabs %}
{% tab title="Configuration" %}

* **Conditions**: Array of boolean expressions to evaluate
* **Expressions**: JavaScript/TypeScript conditions using block outputs
* **Routing Paths**: Destination blocks for each condition result
  {% endtab %}

{% tab title="Variables" %}

* **condition.result**: Boolean result of condition evaluation
* **condition.matched\_condition**: ID of the matched condition
* **condition.content**: Description of evaluation result
* **condition.path**: Details of chosen routing destination
  {% endtab %}

{% tab title="Results" %}

* **Boolean Result**: Primary condition evaluation outcome
* **Routing Information**: Path selection and condition details
* **Access**: Available in blocks after the condition
  {% endtab %}
  {% endtabs %}

### Example Use Cases

#### Customer Support Routing

**Scenario: Route support tickets based on priority**

1. API block fetches support ticket data
2. Condition checks if `<api.priority>` equals `'high'`
3. High priority tickets → Agent with escalation tools
4. Normal priority tickets → Standard support agent

#### Content Moderation

**Scenario: Filter content based on analysis results**

1. Agent analyzes user-generated content
2. Condition checks if `<agent.toxicity_score>` > 0.7
3. Toxic content → Moderation workflow
4. Clean content → Publishing workflow

#### User Onboarding Flow

**Scenario: Personalize onboarding based on user type**

1. Function block processes user registration data
2. Condition checks if `<user.account_type>` === `'enterprise'`
3. Enterprise users → Advanced setup workflow
4. Individual users → Simple onboarding workflow

### Best Practices

* **Order conditions correctly**: Place more specific conditions before general ones to ensure specific logic takes precedence over fallbacks
* **Include a default condition**: Add a catch-all condition (`true`) as the last condition to handle unmatched cases and prevent workflow execution from getting stuck
* **Keep expressions simple**: Use clear, straightforward boolean expressions for better readability and easier debugging
* **Document your conditions**: Add descriptions to explain the purpose of each condition for better team collaboration and maintenance
* **Test edge cases**: Verify conditions handle boundary values correctly by testing with values at the edges of your condition ranges


# agent

The Agent block serves as the interface between your workflow and Large Language Models (LLMs). It executes inference requests against various AI providers, processes natural language inputs according to defined instructions, and generates structured or unstructured outputs for downstream consumption.

### Overview

The Agent block enables you to:

* **Process natural language**: Analyze user input and generate contextual responses
* **Execute AI-powered tasks**: Perform content analysis, generation, and decision-making
* **Call external tools**: Access APIs, databases, and services during processing
* **Generate structured output**: Return JSON data that matches your schema requirements

### Configuration Options

#### System Prompt

The system prompt establishes the agent's operational parameters and behavioral constraints. This configuration defines the agent's role, response methodology, and processing boundaries for all incoming requests.

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

#### User Prompt

The user prompt represents the primary input data for inference processing. This parameter accepts natural language text or structured data that the agent will analyze and respond to. Input sources include:

* **Static Configuration**: Direct text input specified in the block configuration
* **Dynamic Input**: Data passed from upstream blocks through connection interfaces
* **Runtime Generation**: Programmatically generated content during workflow execution

#### Model Selection

The Agent block supports multiple LLM providers through a unified inference interface. Available models include:

* **OpenAI Models**: GPT-5, GPT-4o, o1, o3, o4-mini, gpt-4.1 (API-based inference)
* **Anthropic Models**: Claude 3.7 Sonnet (API-based inference)
* **Google Models**: Gemini 2.5 Pro, Gemini 2.0 Flash (API-based inference)
* **Alternative Providers**: Groq, Cerebras, xAI, DeepSeek (API-based inference)
* **Local Deployment**: Ollama-compatible models (self-hosted inference)

#### Temperature

Control the creativity and randomness of responses:

{% tabs %}
{% tab title="Low (0-0.3)" %}
More deterministic, focused responses. Best for factual tasks, customer support, and situations where accuracy is critical.
{% endtab %}

{% tab title="Medium (0.3-0.7)" %}
Balanced creativity and focus. Suitable for general purpose applications that require both accuracy and some creativity.
{% endtab %}

{% tab title="High (0.7-2.0)" %}
More creative, varied responses. Ideal for creative writing, brainstorming, and generating diverse ideas.
{% endtab %}
{% endtabs %}

The temperature range (0-1 or 0-2) varies depending on the selected model.

#### API Key

Your API key for the selected LLM provider. This is securely stored and used for authentication.

#### Tools

Tools extend the agent's capabilities through external API integrations and service connections. The tool system enables function calling, allowing the agent to execute operations beyond text generation.

**Tool Integration Process**:

1. Access the Tools configuration section within the Agent block
2. Select from 60+ pre-built integrations or define custom functions
3. Configure authentication parameters and operational constraints

**Available Tool Categories**:

* **Communication**: Gmail, Slack, Telegram, WhatsApp, Microsoft Teams
* **Data Sources**: Notion, Google Sheets, Airtable, Supabase, Pinecone
* **Web Services**: Firecrawl, Google Search, Exa AI, browser automation
* **Development**: GitHub, Jira, Linear repository and issue management
* **AI Services**: OpenAI, Perplexity, Hugging Face, ElevenLabs

**Tool Execution Control**:

* **Auto**: Model determines tool invocation based on context and necessity
* **Required**: Tool must be called during every inference request
* **None**: Tool definition available but excluded from model context

#### Response Format

The Response Format parameter enforces structured output generation through JSON Schema validation. This ensures consistent, machine-readable responses that conform to predefined data structures:

```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"]
  }
}
```

This configuration constrains the model's output to comply with the specified schema, preventing free-form text responses and ensuring structured data generation.

#### Accessing Results

After an agent completes, you can access its outputs:

* **`<agent.content>`**: The agent's response text or structured data
* **`<agent.tokens>`**: Token usage statistics (prompt, completion, total)
* **`<agent.tool_calls>`**: Details of any tools the agent used during execution
* **`<agent.cost>`**: Estimated cost of the API call (if available)

### Advanced Features

#### Memory Integration

Agents can maintain context across interactions using the memory system:

```javascript
// In a Function block before the agent
const memory = {
  conversation_history: previousMessages,
  user_preferences: userProfile,
  session_data: currentSession,
};
```

#### Structured Output Validation

Use JSON Schema to ensure consistent, machine-readable responses:

```json
{
  "type": "object",
  "properties": {
    "analysis": { "type": "string" },
    "confidence": { "type": "number", "minimum": 0, "maximum": 1 },
    "categories": { "type": "array", "items": { "type": "string" } }
  },
  "required": ["analysis", "confidence"]
}
```

#### Error Handling

Agents automatically handle common errors:

* API rate limits with exponential backoff
* Invalid tool calls with retry logic
* Network failures with connection recovery
* Schema validation errors with fallback responses

### Inputs and Outputs

{% tabs %}
{% tab title="Configuration" %}

* **System Prompt**: Instructions defining agent behavior and role
* **User Prompt**: Input text or data to process
* **Model**: AI model selection (OpenAI, Anthropic, Google, etc.)
* **Temperature**: Response randomness control (0-2)
* **Tools**: Array of available tools for function calling
* **Response Format**: JSON Schema for structured output
  {% endtab %}

{% tab title="Variables" %}

* **agent.content**: Agent's response text or structured data
* **agent.tokens**: Token usage statistics object
* **agent.tool\_calls**: Array of tool execution details
* **agent.cost**: Estimated API call cost (if available)
  {% endtab %}

{% tab title="Results" %}

* **Content**: Primary response output from the agent
* **Metadata**: Usage statistics and execution details
* **Access**: Available in blocks after the agent
  {% endtab %}
  {% endtabs %}

### Example Use Cases

#### Customer Support Automation

Scenario: Handle customer inquiries with database access

1. User submits support ticket via API block
2. Agent processes inquiry with product database tools
3. Agent generates response and creates follow-up ticket
4. Response block sends reply to customer

#### Multi-Model Content Analysis

Scenario: Analyze content with different AI models

1. Function block processes uploaded document
2. Agent with GPT-4o performs technical analysis
3. Agent with Claude analyzes sentiment and tone
4. Function block combines results for final report

#### Tool-Powered Research Assistant

Scenario: Research assistant with web search and document access

1. User query received via input
2. Agent searches web using Google Search tool
3. Agent accesses Notion database for internal docs
4. Agent compiles comprehensive research report

### Best Practices

* **Be specific in system prompts**: Clearly define the agent's role, tone, and limitations. The more specific your instructions are, the better the agent will be able to fulfill its intended purpose.
* **Choose the right temperature setting**: Use lower temperature settings (0-0.3) when accuracy is important, or increase temperature (0.7-2.0) for more creative or varied responses
* **Leverage tools effectively**: Integrate tools that complement the agent's purpose and enhance its capabilities. Be selective about which tools you provide to avoid overwhelming the agent. For tasks with little overlap, use another Agent block for the best results.


# evaluator

The Evaluator block uses AI to score and assess content quality based on metrics you define. Perfect for quality control, A/B testing, and ensuring your AI outputs meet specific standards.

## What You Can Evaluate

* **AI-Generated Content**: Score chatbot responses, generated articles, or marketing copy
* **User Input**: Evaluate customer feedback, survey responses, or form submissions
* **Content Quality**: Assess clarity, accuracy, relevance, and tone
* **Performance Metrics**: Track improvements over time with consistent scoring
* **A/B Testing**: Compare different approaches with objective metrics

## Configuration Options

### Evaluation Metrics

Define custom metrics to evaluate content against. Each metric includes:

* **Name**: A short identifier for the metric
* **Description**: A detailed explanation of what the metric measures
* **Range**: The numeric range for scoring (e.g., 1-5, 0-10)

Example metrics:

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

### Content

The content to be evaluated. This can be:

* Directly provided in the block configuration
* Connected from another block's output (typically an Agent block)
* Dynamically generated during workflow execution

### Model Selection

Choose an AI model to perform the evaluation:

* **OpenAI**: GPT-4o, o1, o3, o4-mini, gpt-4.1
* **Anthropic**: Claude 3.7 Sonnet
* **Google**: Gemini 2.5 Pro, Gemini 2.0 Flash
* **Other Providers**: Groq, Cerebras, xAI, DeepSeek
* **Local Models**: Any model running on Ollama

**Recommendation**: Use models with strong reasoning capabilities like GPT-4o or Claude 3.7 Sonnet for more accurate evaluations.

### API Key

Your API key for the selected LLM provider. This is securely stored and used for authentication.

## How It Works

{% stepper %}
{% step %}

### The Evaluator block takes the provided content and your custom metrics

{% endstep %}

{% step %}

### It generates a specialized prompt that instructs the LLM to evaluate the content

{% endstep %}

{% step %}

### The prompt includes clear guidelines on how to score each metric

{% endstep %}

{% step %}

### The LLM evaluates the content and returns numeric scores for each metric

{% endstep %}

{% step %}

### The Evaluator block formats these scores as structured output for use in your workflow

{% endstep %}
{% endstepper %}

## Inputs and Outputs

### Inputs

* **Content**: The text or structured data to evaluate
* **Metrics**: Custom evaluation criteria with scoring ranges
* **Model Settings**: LLM provider and parameters

### Outputs

* **Content**: A summary of the evaluation
* **Model**: The model used for evaluation
* **Tokens**: Usage statistics
* **Metric Scores**: Numeric scores for each defined metric

## Example Usage

Here's an example of how an Evaluator block might be configured for assessing customer service responses:

```yaml
# Example Evaluator Configuration
metrics:
  - name: Empathy
    description: How well does the response acknowledge and address the customer's emotional state?
    range:
      min: 1
      max: 5
  - name: Solution
    description: How effectively does the response solve the customer's problem?
    range:
      min: 1
      max: 5
  - name: Clarity
    description: How clear and easy to understand is the response?
    range:
      min: 1
      max: 5

model: Anthropic/claude-3-opus
```

## Best Practices

* **Use specific metric descriptions**: Clearly define what each metric measures to get more accurate evaluations
* **Choose appropriate ranges**: Select scoring ranges that provide enough granularity without being overly complex
* **Connect with Agent blocks**: Use Evaluator blocks to assess Agent block outputs and create feedback loops
* **Use consistent metrics**: For comparative analysis, maintain consistent metrics across similar evaluations
* **Combine multiple metrics**: Use several metrics to get a comprehensive evaluation


# function

The Function block lets you run custom JavaScript or TypeScript code in your workflow. Use it to transform data, perform calculations, or implement custom logic that isn't available in other blocks.

### Overview

The Function block enables you to:

* **Transform data**: Convert formats, parse text, manipulate arrays and objects
* **Perform calculations**: Math operations, statistics, financial calculations
* **Implement custom logic**: Complex conditionals, loops, and algorithms
* **Process external data**: Parse responses, format requests, handle authentication

### How It Works

{% stepper %}
{% step %}

### Receive Input

Access data from previous blocks via the `input` object
{% endstep %}

{% step %}

### Execute Code

Run your JavaScript/TypeScript code
{% endstep %}

{% step %}

### Return Results

Use `return` to pass data to the next block
{% endstep %}

{% step %}

### Handle Errors

Built-in error handling and logging
{% endstep %}
{% endstepper %}

### Configuration Options

#### Code Editor

Write your JavaScript/TypeScript code in a full-featured editor with:

* Syntax highlighting and error checking
* Line numbers and bracket matching
* Support for modern JavaScript features
* Native support for `fetch`

#### Accessing Input Data

Use the `input` object to access data from previous blocks:

```javascript
// Access data from connected blocks
const userData = <agent.userData>;
const orderData = <agent.orderData>;

// Access specific fields
const customerName = <agent.customer.name>;
const total = <agent.order.total>;
```

#### Common Examples

**Data Transformation**:

```javascript
// Convert and format data
const formatted = {
  name: <agent.user.firstName> + ' ' + <agent.user.lastName>,
  email: <agent.user.email>.toLowerCase(),
  joinDate: new Date(<agent.user.created>).toLocaleDateString()
};
return formatted;
```

**Calculations**:

```javascript
// Calculate discounts and totals
const subtotal = <agent.items>.reduce((sum, item) => sum + item.price, 0);
const discount = subtotal > 100 ? 0.1 : 0;
const total = subtotal * (1 - discount);

return { subtotal, discount, total };
```

**Data Validation**:

```javascript
// Validate email format
const email = <agent.email>;
const isValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);

if (!isValid) {
  throw new Error('Invalid email format');
}
return { email, isValid };
```

#### Accessing Results

After a function executes, you can access its outputs:

* **`<function.result>`**: The value returned from your function
* **`<function.stdout>`**: Any console.log() output from your code

### Advanced Features

#### Async/Await Support

Use async functions for complex operations:

```javascript
// Async function example
const processData = async () => {
  const data = <api.response>;
  
  // Process data with async operations
  const processed = await Promise.all(
    data.map(async (item) => {
      return {
        id: item.id,
        processed: true,
        timestamp: new Date().toISOString()
      };
    })
  );
  
  return processed;
};

return await processData();
```

#### Error Handling

Implement robust error handling:

```javascript
try {
  const result = <api.data>;
  
  if (!result || !result.length) {
    throw new Error('No data received');
  }
  
  return result.map(item => ({
    id: item.id,
    name: item.name.trim(),
    valid: true
  }));
} catch (error) {
  console.error('Processing failed:', error.message);
  return { error: error.message, valid: false };
}
```

#### Performance Optimization

Optimize for large datasets:

```javascript
// Efficient data processing
const data = <api.large_dataset>;

// Use efficient array methods
const processed = data
  .filter(item => item.status === 'active')
  .map(item => ({
    id: item.id,
    summary: item.description.substring(0, 100)
  }))
  .slice(0, 1000); // Limit results

return processed;
```

### Security and Limitations

{% hint style="warning" %}
Functions run in a secure environment with these restrictions:

* **Execution timeout**: 30 seconds maximum to prevent infinite loops
* **Memory limits**: Limited memory to prevent resource exhaustion
* **No network access**: Cannot make HTTP requests (use API blocks instead)
* **Limited APIs**: Only safe JavaScript APIs are available
  {% endhint %}

### Inputs and Outputs

{% tabs %}
{% tab title="Configuration" %}

* **Code**: Your JavaScript/TypeScript code to execute
* **Timeout**: Maximum execution time (defaults to 30 seconds)
* **Input Data**: All connected block outputs available via variables
  {% endtab %}

{% tab title="Variables" %}

* **function.result**: The value returned from your function
* **function.stdout**: Console.log() output from your code
* **function.error**: Error details if function failed
* **function.execution\_time**: Time taken to execute
  {% endtab %}

{% tab title="Results" %}

* **Function Result**: Primary output from your code
* **Debug Information**: Logs and execution details
* **Access**: Available in blocks after the function
  {% endtab %}
  {% endtabs %}

### Example Use Cases

#### Data Processing Pipeline

**Scenario: Transform API response into structured data**

1. API block fetches raw customer data
2. Function block processes and validates data
3. Function block calculates derived metrics
4. Response block returns formatted results

#### Business Logic Implementation

**Scenario: Calculate loyalty scores and tiers**

1. Agent retrieves customer purchase history
2. Function block calculates loyalty metrics
3. Function block determines customer tier
4. Condition block routes based on tier level

#### Data Validation and Sanitization

**Scenario: Validate and clean user input**

1. User input received from form submission
2. Function block validates email format and phone numbers
3. Function block sanitizes and normalizes data
4. API block saves validated data to database

#### Example: Loyalty Score Calculator

{% code title="loyalty-calculator.js" %}

```javascript
// Process customer data and calculate loyalty score
const { purchaseHistory, accountAge, supportTickets } = <agent>;

// 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: <agent.name>,
  loyaltyScore,
  loyaltyTier: loyaltyScore >= 80 ? "Platinum" : loyaltyScore >= 60 ? "Gold" : "Silver",
  metrics: { spendScore, frequencyScore, supportScore }
};
```

{% endcode %}

### Best Practices

* **Keep functions focused**: Write functions that do one thing well to improve maintainability and debugging
* **Handle errors gracefully**: Use try/catch blocks to handle potential errors and provide meaningful error messages
* **Test edge cases**: Ensure your code handles unusual inputs, null values, and boundary conditions correctly
* **Optimize for performance**: Be mindful of computational complexity and memory usage for large datasets
* **Use console.log() for debugging**: Leverage stdout output to debug and monitor function execution


# index

Blocks are the building components you connect together to create AI workflows. Think of them as specialized modules that each handle a specific task—from chatting with AI models to making API calls or processing data.

## Core Block Types

Agent Forge provides seven core block types that handle the essential functions of AI workflows:

### Processing Blocks

* [Agent](file:///blocks/agent) — Chat with AI models (OpenAI, Anthropic, Google, local models)
* [Function](file:///blocks/function) — Run custom JavaScript/TypeScript code
* [API](file:///blocks/api) — Connect to external services via HTTP requests

### Logic Blocks

* [Condition](file:///blocks/condition) — Branch workflow paths based on boolean expressions
* [Router](file:///blocks/router) — Use AI to intelligently route requests to different paths
* [Evaluator](file:///blocks/evaluator) — Score and assess content quality using AI

### Output Blocks

* [Response](file:///blocks/response) — Format and return final results from your workflow

### How Blocks Work

Each block has three main components:

* **Inputs**: Data coming into the block from other blocks or user input
* **Configuration**: Settings that control how the block behaves
* **Outputs**: Data the block produces for other blocks to use

{% stepper %}
{% step %}

#### Receive Input

Block receives data from connected blocks or user input
{% endstep %}

{% step %}

#### Process

Block processes the input according to its configuration
{% endstep %}

{% step %}

#### Output Results

Block produces output data for the next blocks in the workflow
{% endstep %}
{% endstepper %}

### Connecting Blocks

You create workflows by connecting blocks together. The output of one block becomes the input of another:

* **Drag to connect**: Drag from an output port to an input port
* **Multiple connections**: One output can connect to multiple inputs
* **Branching paths**: Some blocks can route to different paths based on conditions

### Common Patterns

#### Sequential Processing

Connect blocks in a chain where each block processes the output of the previous one:

```
User Input → Agent → Function → Response
```

#### Conditional Branching

Use Condition or Router blocks to create different paths:

```
User Input → Router → Agent A (for questions)
                   → Agent B (for commands)
```

#### Quality Control

Use Evaluator blocks to assess and filter outputs:

```
Agent → Evaluator → Condition → Response (if good)
                              → Agent (retry if bad)
```

### Block Configuration

Each block type has specific configuration options:

**All Blocks**:

* Input/output connections
* Error handling behavior
* Execution timeout settings

**AI Blocks** (Agent, Router, Evaluator):

* Model selection (OpenAI, Anthropic, Google, local)
* API keys and authentication
* Temperature and other model parameters
* System prompts and instructions

**Logic Blocks** (Condition, Function):

* Custom expressions or code
* Variable references
* Execution environment settings

**Integration Blocks** (API, Response):

* Endpoint configuration
* Headers and authentication
* Request/response formatting

<table data-view="cards"><thead><tr><th>Title</th><th data-card-target data-type="content-ref">Target</th></tr></thead><tbody><tr><td>Agent Block<br>Connect to AI models and create intelligent responses</td><td><a href="file:///blocks/agent">file:///blocks/agent</a></td></tr><tr><td>Function Block<br>Run custom code to process and transform data</td><td><a href="file:///blocks/function">file:///blocks/function</a></td></tr><tr><td>API Block<br>Integrate with external services and APIs</td><td><a href="file:///blocks/api">file:///blocks/api</a></td></tr><tr><td>Condition Block<br>Create branching logic based on data evaluation</td><td><a href="file:///blocks/condition">file:///blocks/condition</a></td></tr></tbody></table>


# mcp\_input

The MCP Input block turns a workflow into a callable MCP tool when the workflow is deployed through MCP. It defines the tool name, tool description, and input schema that MCP clients see.

{% hint style="info" %}
MCP Input is for workflows that should be exposed as tools to MCP clients. Use the MCP Tool block when a workflow needs to call tools from an external MCP server.
{% endhint %}

### Overview

The MCP Input block acts as the entry point for MCP tool execution:

* **Tool Name** - The name exposed to MCP clients
* **Tool Description** - A plain-language explanation of what the tool does
* **Input Schema** - The structured argument schema expected from the MCP client

### Configuration Options

#### Tool Name

The callable tool name. Use a concise, action-oriented name such as `get-weather`, `lookup-customer`, or `summarize-ticket`.

#### Tool Description

Describe what the tool does and when an MCP client should call it. Good descriptions help agents choose the right tool.

#### Input Schema

Define the structured fields the MCP client can send. These values become the tool arguments passed into the workflow.

### How It Works

{% stepper %}
{% step %}
Add an MCP Input block to the workflow.
{% endstep %}

{% step %}
Define the tool name, description, and schema.
{% endstep %}

{% step %}
Connect the MCP Input block to downstream workflow logic.
{% endstep %}

{% step %}
Deploy the workflow as MCP so clients can call it as a tool.
{% endstep %}
{% endstepper %}

### Inputs and Outputs

#### Input

| Parameter | Type | Description                        |
| --------- | ---- | ---------------------------------- |
| `input`   | json | Arguments passed by the MCP client |

#### Output

| Parameter  | Type | Description                                          |
| ---------- | ---- | ---------------------------------------------------- |
| `response` | json | Tool arguments passed downstream to connected blocks |

### Notes

* Category: `blocks`
* Type: `mcp_input`


# loop

Create iterative workflows with loops that execute blocks repeatedly.

The Loop block is a container block in Agent Forge that allows you to execute a group of blocks repeatedly. Loops enable iterative processing in your workflows.

{% hint style="info" %}
Loop blocks are container nodes that can hold other blocks inside them. The blocks inside a loop will execute multiple times based on your configuration.
{% endhint %}

## Overview

The Loop block enables you to:

* **Iterate over collections**: Process arrays or objects one item at a time
* **Repeat operations**: Execute blocks a fixed number of times

## Configuration Options

### Loop Type

Choose between two types of loops:

{% tabs %}
{% tab title="For Loop" %}
A numeric loop that executes a fixed number of times. Use this when you need to repeat an operation a specific number of times.

```
Example: Run 5 times
- Iteration 1
- Iteration 2
- Iteration 3
- Iteration 4
- Iteration 5
```

{% endtab %}

{% tab title="ForEach Loop" %}
A collection-based loop that iterates over each item in an array or object. Use this when you need to process a collection of items.

```
Example: Process ["apple", "banana", "orange"]
- Iteration 1: Process "apple"
- Iteration 2: Process "banana"
- Iteration 3: Process "orange"
```

{% endtab %}
{% endtabs %}

## How to Use Loops

### Creating a Loop

1. Drag a Loop block from the toolbar onto your canvas
2. Configure the loop type and parameters
3. Drag other blocks inside the loop container
4. Connect the blocks as needed

### Accessing Results

After a loop completes, you can access aggregated results:

* **`<loop.results>`**: Array of results from all loop iterations

## Example Use Cases

### Processing API Results

Scenario: Process multiple customer records

1. API block fetches customer list
2. ForEach loop iterates over each customer
3. Inside loop: Agent analyzes customer data
4. Inside loop: Function stores analysis results

### Iterative Content Generation

Scenario: Generate multiple variations

1. Set For loop to 5 iterations
2. Inside loop: Agent generates content variation
3. Inside loop: Evaluator scores the content
4. After loop: Function selects best variation

## Advanced Features

### Limitations

{% hint style="warning" %}
Container blocks (Loops and Parallels) cannot be nested inside each other. This means:

* You cannot place a Loop block inside another Loop block
* You cannot place a Parallel block inside a Loop block
* You cannot place any container block inside another container block

If you need multi-dimensional iteration, consider restructuring your workflow to use sequential loops or process data in stages.
{% endhint %}

{% hint style="info" %}
Loops execute sequentially, not in parallel. If you need concurrent execution, use the Parallel block instead.
{% endhint %}

## Inputs and Outputs

{% tabs %}
{% tab title="Configuration" %}

* **Loop Type**: Choose between `'for'` or `'forEach'`
* **Iterations**: Number of times to execute (for loops)
* **Collection**: Array or object to iterate over (forEach loops)
  {% endtab %}

{% tab title="Variables" %}

* **`loop.currentItem`**: Current item being processed
* **`loop.index`**: Current iteration number (0-based)
* **`loop.items`**: Full collection (forEach loops)
  {% endtab %}

{% tab title="Results" %}

* **`loop.results`**: Array of all iteration results
* **Structure**: Results maintain iteration order
* **Access**: Available in blocks after the loop
  {% endtab %}
  {% endtabs %}

## Best Practices

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


# x402\_payment

The x402 Payment block calls endpoints protected by the x402 payment protocol. It can inspect endpoint pricing, authorize a payment session from a connected wallet, and execute a paid POST request during workflow runs.

{% hint style="warning" %}
x402 Payment can authorize paid requests. Review endpoint pricing and wallet configuration before using this block in production workflows.
{% endhint %}

### Overview

Use the x402 Payment block when a workflow needs to access paid HTTP resources that challenge clients with x402 payment requirements.

The block supports:

* **Payment precheck** - Inspect endpoint pricing and payment challenge metadata
* **Wallet authorization** - Connect a wallet and authorize a payment session
* **Paid execution** - Send the POST request with payment authorization
* **Deployment support** - Reuse an authorized payment session during deployed workflow runs

### Configuration Options

#### Payment Access

The payment access control handles wallet connection, endpoint precheck, and authorization state for the block.

#### Endpoint

The x402-protected endpoint URL to call.

#### Body

The JSON request body to send to the paid endpoint.

### How It Works

{% stepper %}
{% step %}
Enter the x402-protected endpoint and request body.
{% endstep %}

{% step %}
Connect a wallet for the block.
{% endstep %}

{% step %}
Test the endpoint pricing challenge.
{% endstep %}

{% step %}
Authorize the payment session.
{% endstep %}

{% step %}
Run the workflow to execute the paid POST request.
{% endstep %}
{% endstepper %}

### Inputs and Outputs

#### Input

| Parameter  | Type   | Description                               |
| ---------- | ------ | ----------------------------------------- |
| `endpoint` | string | x402-protected endpoint URL               |
| `body`     | json   | JSON request body to POST to the endpoint |

#### Output

| Parameter         | Type   | Description                                 |
| ----------------- | ------ | ------------------------------------------- |
| `data`            | any    | Response body returned by the paid endpoint |
| `status`          | number | Final HTTP status code                      |
| `headers`         | json   | Final response headers                      |
| `paymentRequired` | json   | Decoded payment challenge metadata          |
| `paymentResponse` | json   | Decoded settlement response metadata        |
| `cost`            | json   | Network, asset, amount, and pay-to details  |

### Notes

* Category: `blocks`
* Type: `x402_payment`


# parallel

The Parallel block is a container block in Agent Forge that allows you to execute multiple instances of blocks concurrently.

{% hint style="info" %}
Parallel blocks are container nodes that execute their contents multiple times simultaneously, unlike loops which execute sequentially.
{% endhint %}

## Overview

The Parallel block enables you to:

1. **Distribute work**: Process multiple items concurrently
2. **Speed up execution**: Run independent operations simultaneously
3. **Handle bulk operations**: Process large datasets efficiently
4. **Aggregate results**: Collect outputs from all parallel executions

## Configuration Options

### Parallel Type

Choose between two types of parallel execution:

{% tabs %}
{% tab title="Count-based" %}
Execute a fixed number of parallel instances. Use this when you need to run the same operation multiple times concurrently.

```
Example: Run 5 parallel instances
- Instance 1 ┐
- Instance 2 ├─ All execute simultaneously
- Instance 3 │
- Instance 4 │
- Instance 5 ┘
```

{% endtab %}

{% tab title="Collection-based" %}
Distribute a collection across parallel instances. Each instance processes one item from the collection simultaneously.

```
Example: Process ["task1", "task2", "task3"] in parallel
- Instance 1: Process "task1" ┐
- Instance 2: Process "task2" ├─ All execute simultaneously
- Instance 3: Process "task3" ┘
```

{% endtab %}
{% endtabs %}

## How to Use Parallel Blocks

### Creating a Parallel Block

1. Drag a Parallel block from the toolbar onto your canvas
2. Configure the parallel type and parameters
3. Drag a single block inside the parallel container
4. Connect the block as needed

### Accessing Results

After a parallel block completes, you can access aggregated results:

* **`<parallel.results>`**: Array of results from all parallel instances

## Example Use Cases

### Batch API Processing

Scenario: Process multiple API calls simultaneously

1. Parallel block with collection of API endpoints
2. Inside parallel: API block calls each endpoint
3. After parallel: Process all responses together

### Multi-Model AI Processing

Scenario: Get responses from multiple AI models

1. Count-based parallel set to 3 instances
2. Inside parallel: Agent configured with different model per instance
3. After parallel: Compare and select best response

## Advanced Features

### Result Aggregation

Results from all parallel instances are automatically collected:

```javascript
// In a Function block after the parallel
const allResults = input.parallel.results;
// Returns: [result1, result2, result3, ...]
```

### Instance Isolation

Each parallel instance runs independently:

* Separate variable scopes
* No shared state between instances
* Failures in one instance don't affect others

### Limitations

{% hint style="warning" %}
Container blocks (Loops and Parallels) cannot be nested inside each other. This means:

* You cannot place a Loop block inside a Parallel block
* You cannot place another Parallel block inside a Parallel block
* You cannot place any container block inside another container block
  {% endhint %}

{% hint style="warning" %}
Parallel blocks can only contain a single block. You cannot have multiple blocks connected to each other inside a parallel - only the first block would execute in that case.
{% endhint %}

{% hint style="info" %}
While parallel execution is faster, be mindful of:

* API rate limits when making concurrent requests
* Memory usage with large datasets
* Maximum of 20 concurrent instances to prevent resource exhaustion
  {% endhint %}

## Parallel vs Loop

Understanding when to use each:

| Feature        | Parallel                          | Loop                 |
| -------------- | --------------------------------- | -------------------- |
| Execution      | Concurrent                        | Sequential           |
| Speed          | Faster for independent operations | Slower but ordered   |
| Order          | No guaranteed order               | Maintains order      |
| Use case       | Independent operations            | Dependent operations |
| Resource usage | Higher                            | Lower                |

## Inputs and Outputs

{% tabs %}
{% tab title="Configuration" %}

* **Parallel Type**: Choose between 'count' or 'collection'
* **Count**: Number of instances to run (count-based)
* **Collection**: Array or object to distribute (collection-based)
  {% endtab %}

{% tab title="Variables" %}

* **parallel.currentItem**: Item for this instance
* **parallel.index**: Instance number (0-based)
* **parallel.items**: Full collection (collection-based)
  {% endtab %}

{% tab title="Results" %}

* **parallel.results**: Array of all instance results
* **Access**: Available in blocks after the parallel
  {% endtab %}
  {% endtabs %}

## Best Practices

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


# mcp

The Model Context Protocol ([MCP](https://modelcontextprotocol.com/)) allows you to connect external tools and services using a standardized protocol, enabling you to integrate APIs and services directly into your workflows. With MCP, you can extend Agent Forge's capabilities by adding custom integrations that work seamlessly with your agents and workflows.

### What is MCP?

MCP is an open standard that enables AI assistants to securely connect to external data sources and tools. It provides a standardized way to:

* Connect to databases, APIs, and file systems
* Access real-time data from external services
* Execute custom tools and scripts
* Maintain secure, controlled access to external resources

### Configuring MCP Servers

MCP servers provide collections of tools that your agents can use. Configure them in workspace settings:

1. Navigate to your workspace settings
2. Go to the **MCP Servers** section
3. Click **Add MCP Server**
4. Enter the server configuration details
5. Save the configuration

You can also configure MCP servers directly from the toolbar in an Agent block for quick setup.

### Using MCP Tools in Agents

Once MCP servers are configured, their tools become available within your agent blocks:

1. Open an **Agent** block
2. In the **Tools** section, you'll see available MCP tools
3. Select the tools you want the agent to use
4. The agent can now access these tools during execution

### Permission Requirements

MCP functionality requires specific workspace permissions:

| Action                            | Required Permission               |
| --------------------------------- | --------------------------------- |
| Configure MCP servers in settings | **Admin**                         |
| Use MCP tools in agents           | **Write** or **Admin**            |
| View available MCP tools          | **Read**, **Write**, or **Admin** |
| Execute MCP Tool blocks           | **Write** or **Admin**            |

### Common Use Cases

#### Database Integration

Connect to databases to query, insert, or update data within your workflows.

#### API Integrations

Access external APIs and web services that don't have built-in Agent Forge integrations.

#### File System Access

Read, write, and manipulate files on local or remote file systems.

#### Custom Business Logic

Execute custom scripts or tools specific to your organization's needs.

#### Real-time Data Access

Fetch live data from external systems during workflow execution.

### Security Considerations

* MCP servers run with the permissions of the user who configured them
* Always verify MCP server sources before installation
* Use environment variables for sensitive configuration data
* Review MCP server capabilities before granting access to agents

### Troubleshooting

#### MCP Server Not Appearing

* Verify the server configuration is correct
* Check that you have the required permissions
* Ensure the MCP server is running and accessible

#### Tool Execution Failures

* Verify tool parameters are correctly formatted
* Check MCP server logs for error messages
* Ensure required authentication is configured

#### Permission Errors

* Confirm your workspace permission level
* Check if the MCP server requires additional authentication
* Verify the server is properly configured for your workspace


# response

The Response block is the final step in your workflow that formats and returns data to whoever called your workflow. It's like the "return" statement for your entire workflow—it packages up results and sends them back.

{% hint style="info" %}
Response blocks are terminal blocks - they end the workflow execution and cannot connect to other blocks.
{% endhint %}

### When You Need Response Blocks

**API Endpoints**: When your workflow is called via API, Response blocks format the return data\
**Webhooks**: Return confirmation or data back to the calling system\
**Testing**: See formatted results when testing your workflow\
**Data Export**: Structure data for external systems or reports

### Two Ways to Build Responses

{% tabs %}
{% tab title="Builder Mode (Recommended)" %}
Visual interface for building response structure:

* Drag and drop fields
* Reference workflow variables easily
* Visual preview of response structure
  {% endtab %}

{% tab title="Editor Mode (Advanced)" %}
Write JSON directly:

* Full control over response format
* Support for complex nested structures
* Use `<variable.name>` syntax for dynamic values
  {% endtab %}
  {% endtabs %}

### Configuration Options

#### Response Data

The response data is the main content that will be sent back to the API caller. This should be formatted as JSON and can include:

* Static values
* Dynamic references to workflow variables using the `<variable.name>` syntax
* Nested objects and arrays
* Any valid JSON structure

#### Status Code

Set the HTTP status code for the response. Common status codes include:

{% tabs %}
{% tab title="Success (2xx)" %}

* **200**: OK - Standard success response
* **201**: Created - Resource successfully created
* **204**: No Content - Success with no response body
  {% endtab %}

{% tab title="Client Error (4xx)" %}

* **400**: Bad Request - Invalid request parameters
* **401**: Unauthorized - Authentication required
* **404**: Not Found - Resource doesn't exist
* **422**: Unprocessable Entity - Validation errors
  {% endtab %}

{% tab title="Server Error (5xx)" %}

* **500**: Internal Server Error - Server-side error
* **502**: Bad Gateway - External service error
* **503**: Service Unavailable - Service temporarily down
  {% endtab %}
  {% endtabs %}

{% hint style="info" %}
Default status code is 200 if not specified.
{% endhint %}

#### Response Headers

Configure additional HTTP headers to include in the response.

Headers are configured as key-value pairs:

| Key           | Value            |
| ------------- | ---------------- |
| Content-Type  | application/json |
| Cache-Control | no-cache         |
| X-API-Version | 1.0              |

### Inputs and Outputs

{% tabs %}
{% tab title="Inputs" %}

* **data** (JSON, optional): The JSON data to send in the response body
* **status** (number, optional): HTTP status code (default: 200)
* **headers** (JSON, optional): Additional response headers
  {% endtab %}

{% tab title="Outputs" %}

* **data**: The response body data
* **status**: HTTP status code
* **headers**: Response headers
  {% endtab %}
  {% endtabs %}

### Variable References

Use the `<variable.name>` syntax to dynamically insert workflow variables into your response:

```json
{
  "user": {
    "id": "<variable.userId>",
    "name": "<variable.userName>",
    "email": "<variable.userEmail>"
  },
  "query": "<variable.searchQuery>",
  "results": "<variable.searchResults>",
  "totalFound": "<variable.resultCount>",
  "processingTime": "<variable.executionTime>ms"
}
```

{% hint style="warning" %}
Variable names are case-sensitive and must match exactly with the variables available in your workflow.
{% endhint %}

### Example Usage

Here's an example of how a Response block might be configured for a user search API:

```yaml
data: |
  {
    "success": true,
    "data": {
      "users": "<variable.searchResults>",
      "pagination": {
        "page": "<variable.currentPage>",
        "limit": "<variable.pageSize>",
        "total": "<variable.totalUsers>"
      }
    },
    "query": {
      "searchTerm": "<variable.searchTerm>",
      "filters": "<variable.appliedFilters>"
    },
    "timestamp": "<variable.timestamp>"
  }
status: 200
headers:
  - key: X-Total-Count
    value: <variable.totalUsers>
  - key: Cache-Control
    value: public, max-age=300
```

### Best Practices

* **Use meaningful status codes**: Choose appropriate HTTP status codes that accurately reflect the outcome of the workflow
* **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


# webhook

* Category: `triggers`
* Type: `webhook`


# Tools

Tools are powerful components in Agent Forge that allow your workflows to interact with external services, process data, and perform specialized tasks. They extend the capabilities of your agents and workflows by providing access to various APIs and services.

### What is a Tool?

A tool is a specialized component that provides a specific functionality or integration with external services. Tools can be used to search the web, interact with databases, process images, generate text or images, communicate via messaging platforms, and much more.

### Using Tools in Workflows

There are two primary ways to use tools in your Agent Forge workflows:

{% stepper %}
{% step %}

#### As Standalone Blocks

Tools can be added as individual blocks on the canvas when you need deterministic, direct access to their functionality. This gives you precise control over when and how the tool is called.
{% endstep %}

{% step %}

#### As Agent Tools

Tools can be added to Agent blocks by clicking "Add tools" and configuring the required parameters. This allows agents to dynamically choose which tools to use based on the context and requirements of the task.
{% endstep %}
{% endstepper %}

### Tool Configuration

Each tool requires specific configuration to function properly. Common configuration elements include:

* **API Keys**: Many tools require authentication through API keys
* **Connection Parameters**: Endpoints, database identifiers, etc.
* **Input Formatting**: How data should be structured for the tool
* **Output Handling**: How to process the results from the tool

### Available Tools

Agent Forge provides a diverse collection of tools for various purposes, including:

* **AI and Language Processing**: OpenAI, ElevenLabs, Translation services
* **Search and Research**: Google Search, Tavily, Exa, Perplexity
* **Document Manipulation**: Google Docs, Google Sheets, Notion, Confluence
* **Media Processing**: Vision, Image Generator
* **Communication**: Slack, WhatsApp, Twilio SMS, Gmail
* **Data Storage**: Pinecone, Supabase, Airtable
* **Development**: GitHub

Each tool has its own dedicated documentation page with detailed instructions on configuration and usage.

### Tool Outputs

Tools typically return structured data that can be processed by subsequent blocks in your workflow. The format of this data varies depending on the tool and operation but generally includes:

* The main content or result
* Metadata about the operation
* 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](file:///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.


# translate

### Translate

Translate is a tool that allows you to translate text between languages.

With Translate, you can:

* **Translate text**: Translate text between languages
* **Translate documents**: Translate documents between languages
* **Translate websites**: Translate websites between languages
* **Translate images**: Translate images between languages
* **Translate audio**: Translate audio between languages
* **Translate videos**: Translate videos between languages
* **Translate speech**: Translate speech between languages
* **Translate text**: Translate text between languages

### Usage Instructions

Convert text between languages while preserving meaning, nuance, and formatting. Utilize powerful language models to produce natural, fluent translations with appropriate cultural adaptations.

### Tools

#### `openai_chat`

**Output**

| Parameter | Type   | Description     |
| --------- | ------ | --------------- |
| `content` | string | Translated text |
| `model`   | string | Model used      |
| `tokens`  | any    | Token usage     |

#### `anthropic_chat`

#### `google_chat`

**Output**

| Parameter | Type   | Description     |
| --------- | ------ | --------------- |
| `content` | string | Translated text |
| `model`   | string | Model used      |
| `tokens`  | any    | Token usage     |

### Notes

* Category: `tools`
* Type: `translate`


# docusign

[DocuSign](https://www.docusign.com/) is an electronic signature platform for preparing, sending, signing, and tracking agreements. It is commonly used for contracts, approvals, onboarding packets, sales documents, and other signature-driven workflows.

In Agent Forge, the DocuSign integration allows agents and workflows to list envelopes, retrieve envelope details, and send envelopes from existing templates. This makes it possible to automate document routing while keeping signature execution inside DocuSign.

## Usage Instructions

Connect a DocuSign account with OAuth, select the operation, and provide the required envelope or template fields. Sending from a template requires a template ID and template roles formatted as a JSON array.

## Tools

### `docusign_list_envelopes`

List envelopes for the connected DocuSign account. Use the optional `fromDate` field to limit results to envelopes created after a specific date.

### `docusign_get_envelope`

Fetch details for a specific envelope by envelope ID.

### `docusign_send_envelope_from_template`

Send or draft an envelope from a DocuSign template using template roles.

## Input

| Parameter       | Type   | Required          | Description                                              |
| --------------- | ------ | ----------------- | -------------------------------------------------------- |
| `credential`    | string | Yes               | Connected DocuSign OAuth credential                      |
| `fromDate`      | string | No                | Filter envelopes created since a date                    |
| `envelopeId`    | string | For get envelope  | Envelope identifier                                      |
| `templateId`    | string | For template send | DocuSign template identifier                             |
| `templateRoles` | array  | For template send | Template role assignments                                |
| `emailSubject`  | string | No                | Envelope email subject                                   |
| `status`        | string | No                | `sent` to send immediately or `created` to save as draft |

## Output

| Parameter | Type | Description            |
| --------- | ---- | ---------------------- |
| `data`    | json | DocuSign response data |

## Notes

* Category: `tools`
* Type: `docusign`
* Authentication: DocuSign OAuth


# dropbox

Dropbox is a popular cloud storage and collaboration platform that enables individuals and teams to securely store, access, and share files from anywhere. Dropbox is designed for easy file management, syncing, and powerful collaboration, whether you're working solo or with a group.

With Dropbox in Agent Forge, you can:

* **Upload and download files**: Seamlessly upload any file to your Dropbox or retrieve content on demand
* **List folder contents**: Browse the files and folders within any Dropbox directory
* **Create new folders**: Organize your files by programmatically creating new folders in your Dropbox
* **Search files and folders**: Locate documents, images, or other items by name or content
* **Generate shared links**: Quickly create shareable public or private links for files and folders
* **Manage files**: Move, delete, or rename files and folders as part of automated workflows

These capabilities allow your Agent Forge agents to automate Dropbox operations directly within your workflows — from backing up important files to distributing content and maintaining organized folders. Use Dropbox as both a source and destination for files, enabling seamless cloud storage management as part of your business processes.

## Usage Instructions

Integrate Dropbox into your workflow for file management, sharing, and collaboration. Upload files, download content, create folders, manage shared links, and more.

## Tools

### `dropbox_upload`

Upload a file to Dropbox

#### Input

| Parameter     | Type    | Required | Description                                                                     |
| ------------- | ------- | -------- | ------------------------------------------------------------------------------- |
| `path`        | string  | Yes      | The path in Dropbox where the file should be saved (e.g., /folder/document.pdf) |
| `fileContent` | string  | Yes      | The base64 encoded content of the file to upload                                |
| `fileName`    | string  | No       | Optional filename (used if path is a folder)                                    |
| `mode`        | string  | No       | Write mode: add (default) or overwrite                                          |
| `autorename`  | boolean | No       | If true, rename the file if there is a conflict                                 |
| `mute`        | boolean | No       | If true, don't notify the user about this upload                                |

#### Output

| Parameter | Type   | Description                |
| --------- | ------ | -------------------------- |
| `file`    | object | The uploaded file metadata |

### `dropbox_download`

Download a file from Dropbox and get a temporary link

#### Input

| Parameter | Type   | Required | Description                                                   |
| --------- | ------ | -------- | ------------------------------------------------------------- |
| `path`    | string | Yes      | The path of the file to download (e.g., /folder/document.pdf) |

#### Output

| Parameter | Type   | Description       |
| --------- | ------ | ----------------- |
| `file`    | object | The file metadata |

### `dropbox_list_folder`

List the contents of a folder in Dropbox

#### Input

| Parameter          | Type    | Required | Description                                        |
| ------------------ | ------- | -------- | -------------------------------------------------- |
| `path`             | string  | Yes      | The path of the folder to list (use "" for root)   |
| `recursive`        | boolean | No       | If true, list contents recursively                 |
| `includeDeleted`   | boolean | No       | If true, include deleted files/folders             |
| `includeMediaInfo` | boolean | No       | If true, include media info for photos/videos      |
| `limit`            | number  | No       | Maximum number of results to return (default: 500) |

#### Output

| Parameter | Type  | Description                                |
| --------- | ----- | ------------------------------------------ |
| `entries` | array | List of files and folders in the directory |

### `dropbox_create_folder`

Create a new folder in Dropbox

#### Input

| Parameter    | Type    | Required | Description                                                     |
| ------------ | ------- | -------- | --------------------------------------------------------------- |
| `path`       | string  | Yes      | The path where the folder should be created (e.g., /new-folder) |
| `autorename` | boolean | No       | If true, rename the folder if there is a conflict               |

#### Output

| Parameter | Type   | Description                 |
| --------- | ------ | --------------------------- |
| `folder`  | object | The created folder metadata |

### `dropbox_delete`

Delete a file or folder in Dropbox (moves to trash)

#### Input

| Parameter | Type   | Required | Description                              |
| --------- | ------ | -------- | ---------------------------------------- |
| `path`    | string | Yes      | The path of the file or folder to delete |

#### Output

| Parameter  | Type   | Description                  |
| ---------- | ------ | ---------------------------- |
| `metadata` | object | Metadata of the deleted item |

### `dropbox_copy`

Copy a file or folder in Dropbox

#### Input

| Parameter    | Type    | Required | Description                                                    |
| ------------ | ------- | -------- | -------------------------------------------------------------- |
| `fromPath`   | string  | Yes      | The source path of the file or folder to copy                  |
| `toPath`     | string  | Yes      | The destination path for the copied file or folder             |
| `autorename` | boolean | No       | If true, rename the file if there is a conflict at destination |

#### Output

| Parameter  | Type   | Description                 |
| ---------- | ------ | --------------------------- |
| `metadata` | object | Metadata of the copied item |

### `dropbox_move`

Move or rename a file or folder in Dropbox

#### Input

| Parameter    | Type    | Required | Description                                                    |
| ------------ | ------- | -------- | -------------------------------------------------------------- |
| `fromPath`   | string  | Yes      | The source path of the file or folder to move                  |
| `toPath`     | string  | Yes      | The destination path for the moved file or folder              |
| `autorename` | boolean | No       | If true, rename the file if there is a conflict at destination |

#### Output

\| Parameter | Type | Description | | --------- | ---- | -------- | ----------- | | `metadata` | object | Metadata of the moved item |

### `dropbox_get_metadata`

Get metadata for a file or folder in Dropbox

#### Input

| Parameter          | Type    | Required | Description                                        |
| ------------------ | ------- | -------- | -------------------------------------------------- |
| `path`             | string  | Yes      | The path of the file or folder to get metadata for |
| `includeMediaInfo` | boolean | No       | If true, include media info for photos/videos      |
| `includeDeleted`   | boolean | No       | If true, include deleted files in results          |

#### Output

\| Parameter | Type | Description | | --------- | ---- | -------- | ----------- | | `metadata` | object | Metadata for the file or folder |

### `dropbox_create_shared_link`

Create a shareable link for a file or folder in Dropbox

#### Input

| Parameter             | Type   | Required | Description                                                     |
| --------------------- | ------ | -------- | --------------------------------------------------------------- |
| `path`                | string | Yes      | The path of the file or folder to share                         |
| `requestedVisibility` | string | No       | Visibility: public, team\_only, or password                     |
| `linkPassword`        | string | No       | Password for the shared link (only if visibility is password)   |
| `expires`             | string | No       | Expiration date in ISO 8601 format (e.g., 2025-12-31T23:59:59Z) |

#### Output

| Parameter    | Type   | Description             |
| ------------ | ------ | ----------------------- |
| `sharedLink` | object | The created shared link |

### `dropbox_search`

Search for files and folders in Dropbox

#### Input

| Parameter        | Type   | Required | Description                                                           |
| ---------------- | ------ | -------- | --------------------------------------------------------------------- |
| `query`          | string | Yes      | The search query                                                      |
| `path`           | string | No       | Limit search to a specific folder path                                |
| `fileExtensions` | string | No       | Comma-separated list of file extensions to filter by (e.g., pdf,xlsx) |
| `maxResults`     | number | No       | Maximum number of results to return (default: 100)                    |

#### Output

| Parameter | Type  | Description    |
| --------- | ----- | -------------- |
| `matches` | array | Search results |

## Notes

* Category: `tools`
* Type: `dropbox`


# discord

[Discord](https://discord.com/) is a communication platform that supports text, voice, and video interactions within servers and communities. Discord bots extend the platform’s capabilities by automating actions, responding to messages, and integrating with external systems.

With a Discord bot, you can:

* **Send messages**: Post automated updates or notifications into channels.
* **Read messages**: Retrieve recent chat messages for analysis or display.
* **Access server info**: Retrieve metadata such as server name, member count, and roles.
* **Access user info**: Fetch specific user information by their unique Discord ID.

In Agent Forge, the Discord integration allows your agents to interact with servers programmatically, automate notifications, and connect workflows with Discord communities.

### Setup Instructions

Follow these steps carefully to create a Discord bot, get your IDs, and connect everything properly.

#### Create a Discord Application and Bot

{% stepper %}
{% step %}
Go to the [Discord Developer Portal](https://discord.com/developers/applications).
{% endstep %}

{% step %}
Click **“New Application”** → give it a name and click **Create**.
{% endstep %}

{% step %}
In the left sidebar, click **“Bot”** → **“Add Bot”** → **“Yes, do it!”**
{% endstep %}

{% step %}
Under **TOKEN**, click **“Reset Token”** → copy the **Bot Token** and store it safely.

Example placeholder:

```
DISCORD_BOT_TOKEN=your_bot_token_here
```

{% endstep %}

{% step %}
Scroll down to **Privileged Gateway Intents** and enable:

* **Message Content Intent**
* **Server Members Intent** (if you want user data)
* **Presence Intent** (optional but useful for activity info)
  {% endstep %}

{% step %}
Click **Save Changes**.
{% endstep %}
{% endstepper %}

#### Invite the Bot to a Discord Server

{% stepper %}
{% step %}
In the **OAuth2 → URL Generator** section:

* Under **SCOPES**, check:
  * `bot`
  * `applications.commands`
* Under **BOT PERMISSIONS**, select:
  * `Send Messages`
  * `Read Message History`
  * `View Channels`
  * `Manage Messages` (optional)
    {% endstep %}

{% step %}
Copy the generated OAuth2 URL and open it in your browser.
{% endstep %}

{% step %}
Select a **server** you manage → click **Authorize** → complete CAPTCHA.
{% endstep %}

{% step %}
Your bot will now appear in the server’s member list.
{% endstep %}
{% endstepper %}

#### 3️⃣ Get Required IDs

You’ll need several Discord IDs for API access.

**Enable Developer Mode (one-time)**

{% stepper %}
{% step %}
Open Discord → click the **⚙️ Settings** icon → **Advanced**.
{% endstep %}

{% step %}
Turn on **Developer Mode**.
{% endstep %}
{% endstepper %}

Now you can right-click items to copy their unique IDs.

**Get the Server ID (Guild ID)**

* Right-click your **server icon** in Discord → **Copy Server ID**. : `DISCORD_SERVER_ID=123456789012345678`

**Get the Channel ID**

* Right-click the **channel name** → **Copy Channel ID**. : `DISCORD_CHANNEL_ID=123*********`

**Get a User ID**

* Right-click the **user’s profile picture or name** → **Copy User ID**. : `DISCORD_USER_ID=12345********`

### Tools

#### `discord_send_message`

Send a message to a Discord channel

**Input**

| Parameter   | Type   | Required | Description                                   |
| ----------- | ------ | -------- | --------------------------------------------- |
| `botToken`  | string | Yes      | The bot token for authentication              |
| `channelId` | string | Yes      | The Discord channel ID to send the message to |
| `content`   | string | No       | The text content of the message               |
| `serverId`  | string | Yes      | The Discord server ID (guild ID)              |

**Output**

| Parameter | Type   | Description     |
| --------- | ------ | --------------- |
| `message` | string | Message content |
| `data`    | any    | Response data   |

#### `discord_get_messages`

Retrieve messages from a Discord channel

**Input**

| Parameter   | Type   | Required | Description                                                    |
| ----------- | ------ | -------- | -------------------------------------------------------------- |
| `botToken`  | string | Yes      | The bot token for authentication                               |
| `channelId` | string | Yes      | The Discord channel ID to retrieve messages from               |
| `limit`     | number | No       | Maximum number of messages to retrieve (default: 10, max: 100) |

**Output**

| Parameter | Type   | Description     |
| --------- | ------ | --------------- |
| `message` | string | Message content |
| `data`    | any    | Response data   |

#### `discord_get_server`

Retrieve information about a Discord server (guild)

**Input**

| Parameter  | Type   | Required | Description                      |
| ---------- | ------ | -------- | -------------------------------- |
| `botToken` | string | Yes      | The bot token for authentication |
| `serverId` | string | Yes      | The Discord server ID (guild ID) |

**Output**

| Parameter | Type   | Description     |
| --------- | ------ | --------------- |
| `message` | string | Message content |
| `data`    | any    | Response data   |

#### `discord_get_user`

Retrieve information about a Discord user

**Input**

| Parameter  | Type   | Required | Description                          |
| ---------- | ------ | -------- | ------------------------------------ |
| `botToken` | string | Yes      | Discord bot token for authentication |
| `userId`   | string | Yes      | The Discord user ID                  |

**Output**

| Parameter | Type   | Description     |
| --------- | ------ | --------------- |
| `message` | string | Message content |
| `data`    | any    | Response data   |

### Notes

* Category: `tools`
* Type: `discord`


# etherscan

[Etherscan](https://etherscan.io/) is a block explorer and API platform for Ethereum and supported EVM networks. It provides transaction details, wallet histories, token transfers, verified contract source code, and contract ABIs.

In Agent Forge, the Etherscan integration allows workflows to retrieve Ethereum on-chain data directly from Etherscan APIs. Use it for transaction monitoring, wallet analysis, token transfer reporting, contract inspection, and agent-powered blockchain research.

### Usage Instructions

Provide an Etherscan API key, select an operation, and pass the required transaction hash, wallet address, or contract address. Advanced fields allow you to set chain ID, block ranges, pagination, result size, and sort order.

### Tools

#### `etherscan_get_tx`

Fetch transaction details by transaction hash.

#### `etherscan_get_address_txs`

Retrieve normal transactions for a wallet address.

#### `etherscan_get_token_txs`

Retrieve token transfer events for an address, optionally filtered by contract address.

#### `etherscan_get_contract_source`

Fetch verified contract source code and metadata.

#### `etherscan_get_contract_abi`

Fetch the verified ABI for a contract address.

### Common Inputs

| Parameter         | Type   | Required           | Description                                  |
| ----------------- | ------ | ------------------ | -------------------------------------------- |
| `apiKey`          | string | Yes                | Etherscan API key                            |
| `txHash`          | string | Operation-specific | Transaction hash                             |
| `address`         | string | Operation-specific | Wallet address                               |
| `contractAddress` | string | Operation-specific | Contract address                             |
| `chainId`         | number | No                 | EVM chain ID, defaulting to Ethereum mainnet |
| `startBlock`      | number | No                 | Starting block number                        |
| `endBlock`        | number | No                 | Ending block number                          |
| `page`            | number | No                 | Page number                                  |
| `offset`          | number | No                 | Results per page                             |
| `sort`            | string | No                 | Sort direction, `asc` or `desc`              |

### Output

| Parameter | Type   | Description                  |
| --------- | ------ | ---------------------------- |
| `data`    | json   | Full Etherscan response data |
| `status`  | string | Etherscan status value       |
| `message` | string | Etherscan response message   |
| `result`  | json   | Etherscan result payload     |

### Notes

* Category: `tools`
* Type: `etherscan`


# arxiv

[ArXiv](https://arxiv.org/) is a free, open-access repository of scientific research papers in fields such as physics, mathematics, computer science, quantitative biology, quantitative finance, statistics, electrical engineering, systems science, and economics. ArXiv provides a vast collection of preprints and published articles, making it a primary resource for researchers and practitioners worldwide.

With ArXiv, you can:

* **Search for academic papers**: Find research by keywords, author names, titles, categories, and more
* **Retrieve paper metadata**: Access abstracts, author lists, publication dates, and other bibliographic information
* **Download full-text PDFs**: Obtain the complete text of most papers for in-depth study
* **Explore author contributions**: View all papers by a specific author
* **Stay up-to-date**: Discover the latest submissions and trending topics in your field

In Agent Forge, the ArXiv integration enables your agents to programmatically search, retrieve, and analyze scientific papers from ArXiv. This allows you to automate literature reviews, build research assistants, or incorporate up-to-date scientific knowledge into your agentic workflows. Use ArXiv as a dynamic data source for research, discovery, and knowledge extraction within your Agent Forge projects.

### Usage Instructions

Search for academic papers, retrieve metadata, download papers, and access the vast collection of scientific research on ArXiv.

### Tools

#### `arxiv_search`

Search for academic papers on ArXiv by keywords, authors, titles, or other fields.

**Input**

| Parameter     | Type   | Required | Description                                                                                                                      |
| ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `searchQuery` | string | Yes      | The search query to execute                                                                                                      |
| `searchField` | string | No       | Field to search in: all, ti (title), au (author), abs (abstract), co (comment), jr (journal), cat (category), rn (report number) |
| `maxResults`  | number | No       | Maximum number of results to return (default: 10, max: 2000)                                                                     |
| `sortBy`      | string | No       | Sort by: relevance, lastUpdatedDate, submittedDate (default: relevance)                                                          |
| `sortOrder`   | string | No       | Sort order: ascending, descending (default: descending)                                                                          |

**Output**

| Parameter      | Type   | Description         |
| -------------- | ------ | ------------------- |
| `papers`       | json   | Found papers data   |
| `totalResults` | number | Total results count |
| `paper`        | json   | Paper details       |
| `authorPapers` | json   | Author papers list  |

#### `arxiv_get_paper`

Get detailed information about a specific ArXiv paper by its ID.

**Input**

| Parameter | Type   | Required | Description    |
| --------- | ------ | -------- | -------------- |
| `paperId` | string | Yes      | ArXiv paper ID |

**Output**

| Parameter      | Type   | Description         |
| -------------- | ------ | ------------------- |
| `papers`       | json   | Found papers data   |
| `totalResults` | number | Total results count |
| `paper`        | json   | Paper details       |
| `authorPapers` | json   | Author papers list  |

#### `arxiv_get_author_papers`

Search for papers by a specific author on ArXiv.

**Input**

| Parameter    | Type   | Required | Description                                                  |
| ------------ | ------ | -------- | ------------------------------------------------------------ |
| `authorName` | string | Yes      | Author name to search for                                    |
| `maxResults` | number | No       | Maximum number of results to return (default: 10, max: 2000) |

**Output**

| Parameter      | Type   | Description         |
| -------------- | ------ | ------------------- |
| `papers`       | json   | Found papers data   |
| `totalResults` | number | Total results count |
| `paper`        | json   | Paper details       |
| `authorPapers` | json   | Author papers list  |

### Notes

* Category: `tools`
* Type: `arxiv`


# google\_sheets

[Google Sheets](https://sheets.google.com/) is a powerful cloud-based spreadsheet application that allows users to create, edit, and collaborate on spreadsheets in real-time. As part of Google's productivity suite, Google Sheets offers a versatile platform for data organization, analysis, and visualization with robust formatting, formula, and sharing capabilities.

With Google Sheets, you can:

* **Create and edit spreadsheets**: Develop data-driven documents with comprehensive formatting and calculation options
* **Collaborate in real-time**: Work simultaneously with multiple users on the same spreadsheet
* **Analyze data**: Use formulas, functions, and pivot tables to process and understand your data
* **Visualize information**: Create charts, graphs, and conditional formatting to represent data visually
* **Access anywhere**: Use Google Sheets across devices with automatic cloud synchronization
* **Work offline**: Continue working without internet connection with changes syncing back online
* **Integrate with other services**: Connect with Google Drive, Forms, and third-party applications

In Agent Forge, the Google Sheets integration enables your agents to interact directly with spreadsheet data programmatically. This allows for powerful automation scenarios such as data extraction, analysis, reporting, and management. Your agents can read existing spreadsheets to extract information, write to spreadsheets to update data, and create new spreadsheets from scratch. This integration bridges the gap between your AI workflows and data management, enabling seamless interaction with structured data. By connecting Agent Forge with Google Sheets, you can automate data workflows, generate reports, extract insights from data, and maintain up-to-date information — all through your intelligent agents. The integration supports various data formats and range specifications, making it flexible enough to handle diverse data management needs while maintaining the collaborative and accessible nature of Google Sheets.

## Usage Instructions

Integrate Google Sheets functionality to manage spreadsheet data. Read data from specific ranges, write new data, update existing cells, and append data to the end of sheets using OAuth authentication. Supports various input and output formats for flexible data handling.

## Tools

### `google_sheets_read`

Read data from a Google Sheets spreadsheet

#### Input

| Parameter       | Type   | Required | Description                                |
| --------------- | ------ | -------- | ------------------------------------------ |
| `accessToken`   | string | Yes      | The access token for the Google Sheets API |
| `spreadsheetId` | string | Yes      | The ID of the spreadsheet to read from     |
| `range`         | string | No       | The range of cells to read from            |

#### Output

| Parameter        | Type   | Description           |
| ---------------- | ------ | --------------------- |
| `data`           | json   | Sheet data            |
| `metadata`       | json   | Operation metadata    |
| `updatedRange`   | string | Updated range         |
| `updatedRows`    | number | Updated rows count    |
| `updatedColumns` | number | Updated columns count |
| `updatedCells`   | number | Updated cells count   |
| `tableRange`     | string | Table range           |

### `google_sheets_write`

Write data to a Google Sheets spreadsheet

#### Input

| Parameter                 | Type    | Required | Description                                           |
| ------------------------- | ------- | -------- | ----------------------------------------------------- |
| `accessToken`             | string  | Yes      | The access token for the Google Sheets API            |
| `spreadsheetId`           | string  | Yes      | The ID of the spreadsheet to write to                 |
| `range`                   | string  | No       | The range of cells to write to                        |
| `values`                  | array   | Yes      | The data to write to the spreadsheet                  |
| `valueInputOption`        | string  | No       | The format of the data to write                       |
| `includeValuesInResponse` | boolean | No       | Whether to include the written values in the response |

#### Output

| Parameter        | Type   | Description           |
| ---------------- | ------ | --------------------- |
| `data`           | json   | Sheet data            |
| `metadata`       | json   | Operation metadata    |
| `updatedRange`   | string | Updated range         |
| `updatedRows`    | number | Updated rows count    |
| `updatedColumns` | number | Updated columns count |
| `updatedCells`   | number | Updated cells count   |
| `tableRange`     | string | Table range           |

### `google_sheets_update`

Update data in a Google Sheets spreadsheet

#### Input

| Parameter                 | Type    | Required | Description                                           |
| ------------------------- | ------- | -------- | ----------------------------------------------------- |
| `accessToken`             | string  | Yes      | The access token for the Google Sheets API            |
| `spreadsheetId`           | string  | Yes      | The ID of the spreadsheet to update                   |
| `range`                   | string  | No       | The range of cells to update                          |
| `values`                  | array   | Yes      | The data to update in the spreadsheet                 |
| `valueInputOption`        | string  | No       | The format of the data to update                      |
| `includeValuesInResponse` | boolean | No       | Whether to include the updated values in the response |

#### Output

| Parameter        | Type   | Description           |
| ---------------- | ------ | --------------------- |
| `data`           | json   | Sheet data            |
| `metadata`       | json   | Operation metadata    |
| `updatedRange`   | string | Updated range         |
| `updatedRows`    | number | Updated rows count    |
| `updatedColumns` | number | Updated columns count |
| `updatedCells`   | number | Updated cells count   |
| `tableRange`     | string | Table range           |

### `google_sheets_append`

Append data to the end of a Google Sheets spreadsheet

#### Input

| Parameter                 | Type    | Required | Description                                            |
| ------------------------- | ------- | -------- | ------------------------------------------------------ |
| `accessToken`             | string  | Yes      | The access token for the Google Sheets API             |
| `spreadsheetId`           | string  | Yes      | The ID of the spreadsheet to append to                 |
| `range`                   | string  | No       | The range of cells to append after                     |
| `values`                  | array   | Yes      | The data to append to the spreadsheet                  |
| `valueInputOption`        | string  | No       | The format of the data to append                       |
| `insertDataOption`        | string  | No       | How to insert the data (`OVERWRITE` or `INSERT_ROWS`)  |
| `includeValuesInResponse` | boolean | No       | Whether to include the appended values in the response |

#### Output

| Parameter        | Type   | Description           |
| ---------------- | ------ | --------------------- |
| `data`           | json   | Sheet data            |
| `metadata`       | json   | Operation metadata    |
| `updatedRange`   | string | Updated range         |
| `updatedRows`    | number | Updated rows count    |
| `updatedColumns` | number | Updated columns count |
| `updatedCells`   | number | Updated cells count   |
| `tableRange`     | string | Table range           |

## Notes

* Category: `tools`
* Type: `google_sheets`


# ahrefs

[Ahrefs](https://ahrefs.com/) is a leading SEO toolset for analyzing websites, tracking rankings, monitoring backlinks, and researching keywords. It provides detailed insights into your own website as well as your competitors, helping you make data-driven decisions to improve your search visibility.

With the Ahrefs integration in Agent Forge, you can:

* **Analyze Domain Rating & Authority**: Instantly check the Domain Rating (DR) and Ahrefs Rank of any website to gauge its authority.
* **Fetch Backlinks**: Retrieve a list of backlinks pointing to a site or specific URL, with details like anchor text, referring page DR, and more.
* **Get Backlink Statistics**: Access metrics on backlink types (dofollow, nofollow, text, image, redirect, etc.) for a domain or URL.
* **Explore Organic Keywords** *(planned)*: View keywords a domain ranks for and their positions in Google search results.
* **Discover Top Pages** *(planned)*: Identify the highest-performing pages by organic traffic and links.

These tools let your agents automate SEO research, monitor competitors, and generate reports—all as part of your workflow automations. To use the Ahrefs integration, you’ll need an Ahrefs Enterprise subscription with API access.

### Usage Instructions

Integrate Ahrefs SEO tools into your workflow. Analyze domain ratings, backlinks, organic keywords, top pages, and more. Requires an Ahrefs Enterprise plan with API access.

### Tools

#### `ahrefs_domain_rating`

Get the Domain Rating (DR) and Ahrefs Rank for a target domain. Domain Rating shows the strength of a website

**Input**

| Parameter | Type   | Required | Description                                                       |
| --------- | ------ | -------- | ----------------------------------------------------------------- |
| `target`  | string | Yes      | The target domain to analyze (e.g., example.com)                  |
| `date`    | string | No       | Date for historical data in YYYY-MM-DD format (defaults to today) |
| `apiKey`  | string | Yes      | Ahrefs API Key                                                    |

**Output**

| Parameter      | Type   | Description                                                     |
| -------------- | ------ | --------------------------------------------------------------- |
| `domainRating` | number | Domain Rating score (0-100)                                     |
| `ahrefsRank`   | number | Ahrefs Rank - global ranking based on backlink profile strength |

#### `ahrefs_backlinks`

Get a list of backlinks pointing to a target domain or URL. Returns details about each backlink including source URL, anchor text, and domain rating.

**Input**

| Parameter | Type   | Required | Description                                                                                                              |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `target`  | string | Yes      | The target domain or URL to analyze                                                                                      |
| `mode`    | string | No       | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains), exact (exact URL match) |
| `date`    | string | No       | Date for historical data in YYYY-MM-DD format (defaults to today)                                                        |
| `limit`   | number | No       | Maximum number of results to return (default: 100)                                                                       |
| `offset`  | number | No       | Number of results to skip for pagination                                                                                 |
| `apiKey`  | string | Yes      | Ahrefs API Key                                                                                                           |

**Output**

| Parameter   | Type  | Description                              |
| ----------- | ----- | ---------------------------------------- |
| `backlinks` | array | List of backlinks pointing to the target |

#### `ahrefs_backlinks_stats`

Get backlink statistics for a target domain or URL. Returns totals for different backlink types including dofollow, nofollow, text, image, and redirect links.

**Input**

| Parameter | Type   | Required | Description                                                                                                              |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `target`  | string | Yes      | The target domain or URL to analyze                                                                                      |
| `mode`    | string | No       | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains), exact (exact URL match) |
| `date`    | string | No       | Date for historical data in YYYY-MM-DD format (defaults to today)                                                        |
| `apiKey`  | string | Yes      | Ahrefs API Key                                                                                                           |

**Output**

| Parameter | Type   | Description                 |
| --------- | ------ | --------------------------- |
| `stats`   | object | Backlink statistics summary |

#### `ahrefs_referring_domains`

Get a list of domains that link to a target domain or URL. Returns unique referring domains with their domain rating, backlink counts, and discovery dates.

**Input**

| Parameter | Type   | Required | Description                                                                                                              |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `target`  | string | Yes      | The target domain or URL to analyze                                                                                      |
| `mode`    | string | No       | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains), exact (exact URL match) |
| `date`    | string | No       | Date for historical data in YYYY-MM-DD format (defaults to today)                                                        |
| `limit`   | number | No       | Maximum number of results to return (default: 100)                                                                       |
| `offset`  | number | No       | Number of results to skip for pagination                                                                                 |
| `apiKey`  | string | Yes      | Ahrefs API Key                                                                                                           |

**Output**

| Parameter          | Type  | Description                           |
| ------------------ | ----- | ------------------------------------- |
| `referringDomains` | array | List of domains linking to the target |

#### `ahrefs_organic_keywords`

Get organic keywords that a target domain or URL ranks for in Google search results. Returns keyword details including search volume, ranking position, and estimated traffic.

**Input**

| Parameter | Type   | Required | Description                                                                                                              |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `target`  | string | Yes      | The target domain or URL to analyze                                                                                      |
| `country` | string | No       | Country code for search results (e.g., us, gb, de). Default: us                                                          |
| `mode`    | string | No       | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains), exact (exact URL match) |
| `date`    | string | No       | Date for historical data in YYYY-MM-DD format (defaults to today)                                                        |
| `limit`   | number | No       | Maximum number of results to return (default: 100)                                                                       |
| `offset`  | number | No       | Number of results to skip for pagination                                                                                 |
| `apiKey`  | string | Yes      | Ahrefs API Key                                                                                                           |

**Output**

| Parameter  | Type  | Description                                   |
| ---------- | ----- | --------------------------------------------- |
| `keywords` | array | List of organic keywords the target ranks for |

#### `ahrefs_top_pages`

Get the top pages of a target domain sorted by organic traffic. Returns page URLs with their traffic, keyword counts, and estimated traffic value.

**Input**

| Parameter | Type   | Required | Description                                                                                                                                |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `target`  | string | Yes      | The target domain to analyze                                                                                                               |
| `country` | string | No       | Country code for traffic data (e.g., us, gb, de). Default: us                                                                              |
| `mode`    | string | No       | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains)                                            |
| `date`    | string | No       | Date for historical data in YYYY-MM-DD format (defaults to today)                                                                          |
| `limit`   | number | No       | Maximum number of results to return (default: 100)                                                                                         |
| `offset`  | number | No       | Number of results to skip for pagination                                                                                                   |
| `select`  | string | No       | Comma-separated list of fields to return (e.g., url,traffic,keywords,top\_keyword,value). Default: url,traffic,keywords,top\_keyword,value |
| `apiKey`  | string | Yes      | Ahrefs API Key                                                                                                                             |

**Output**

| Parameter | Type  | Description                          |
| --------- | ----- | ------------------------------------ |
| `pages`   | array | List of top pages by organic traffic |

#### `ahrefs_keyword_overview`

Get detailed metrics for a keyword including search volume, keyword difficulty, CPC, clicks, and traffic potential.

**Input**

| Parameter | Type   | Required | Description                                                   |
| --------- | ------ | -------- | ------------------------------------------------------------- |
| `keyword` | string | Yes      | The keyword to analyze                                        |
| `country` | string | No       | Country code for keyword data (e.g., us, gb, de). Default: us |
| `apiKey`  | string | Yes      | Ahrefs API Key                                                |

**Output**

| Parameter  | Type   | Description              |
| ---------- | ------ | ------------------------ |
| `overview` | object | Keyword metrics overview |

#### `ahrefs_broken_backlinks`

Get a list of broken backlinks pointing to a target domain or URL. Useful for identifying link reclamation opportunities.

**Input**

| Parameter | Type   | Required | Description                                                                                                              |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `target`  | string | Yes      | The target domain or URL to analyze                                                                                      |
| `mode`    | string | No       | Analysis mode: domain (entire domain), prefix (URL prefix), subdomains (include all subdomains), exact (exact URL match) |
| `date`    | string | No       | Date for historical data in YYYY-MM-DD format (defaults to today)                                                        |
| `limit`   | number | No       | Maximum number of results to return (default: 100)                                                                       |
| `offset`  | number | No       | Number of results to skip for pagination                                                                                 |
| `apiKey`  | string | Yes      | Ahrefs API Key                                                                                                           |

**Output**

| Parameter         | Type  | Description              |
| ----------------- | ----- | ------------------------ |
| `brokenBacklinks` | array | List of broken backlinks |

### Notes

* Category: `tools`
* Type: `ahrefs`


# airtable

[Airtable](https://airtable.com/) combines the familiarity of spreadsheets with the structure of databases. With this integration, agents can **read**, **create**, and **update** Airtable records as part of guided, reliable workflows.

**What you can do**

* Fetch multiple records from a base and filter/sort them.
* Retrieve an individual record by its ID.
* Create new entries with typed fields and attachments.
* Update existing records (single or bulk) to keep Airtable in sync with actions your agents take.

**Where this shines**

* Centralizing a “source of truth” dataset for decisions.
* Human-in-the-loop reviews (agents propose updates, teams approve in Airtable).
* Enrichment and scoring pipelines (read → enrich → write-back).
* Campaign/task orchestration across teams.

## Usage Instructions

{% stepper %}
{% step %}

#### Read

Read records to gather context (filter or sort as needed).
{% endstep %}

{% step %}

#### Decide

Decide in your logic layer (classify, verify, enrich, or route).
{% endstep %}

{% step %}

#### Write-back

Update records or create new rows to persist outcomes.
{% endstep %}
{% endstepper %}

### Example Workflow: Read → Decide → Bulk Update

* **Step 1**: Read all *open*, *high-priority* tasks.
* **Step 2**: Decide what changes are needed (e.g., mark as processed).
* **Step 3**: Write back updates in bulk using one API call.

This pattern is useful for cleaning queues, re-scoring tasks, or updating statuses.

### Example Workflow: Idempotent Create (Upsert by Email)

* **Step 1**: Check for an existing record using a unique field like `Email`.
* **Step 2**: If the record exists → update it with new values.
* **Step 3**: If no record exists → create it fresh.

This ensures no duplicates and mimics an **“upsert”** pattern that Airtable doesn’t natively provide.

## Tools

### `airtable_list_records`

Read multiple records from an Airtable table.

#### Input

| Parameter       | Type      | Required | Description                                                      |
| --------------- | --------- | -------- | ---------------------------------------------------------------- |
| `baseId`        | string    | Yes      | ID of the Airtable base (e.g., `appXXXXXXXXXXXXXX`)              |
| `tableId`       | string    | Yes      | ID or name of the table (e.g., `tblXXXXXXXXXXXXXX` or `"Tasks"`) |
| `maxRecords`    | number    | No       | Maximum number of records to return                              |
| `filterFormula` | string    | No       | Airtable formula to filter (e.g., `AND({Status}='Open')`)        |
| `view`          | string    | No       | Use a view’s filters/sorts                                       |
| `sort`          | array     | No       | Sort by fields, e.g., `[{"field":"Due","direction":"asc"}]`      |
| `fields`        | string\[] | No       | Limit returned fields                                            |

#### Output

| Parameter      | Type   | Description                                    |
| -------------- | ------ | ---------------------------------------------- |
| `records`      | json   | Array of records `{ id, fields, createdTime }` |
| `metadata`     | json   | Request/table metadata                         |
| `totalRecords` | number | Count of records retrieved                     |

```json
{
  "records": [
    {
      "id": "rec0tK7W0ICQikuee",
      "createdTime": "2025-07-29T09:49:30.000Z",
      "fields": {
        "Design Name": "Mobile App Onboarding",
        "Submission Date": "2025-08-22",
        "Designer": "Bob Smith",
        "Comments": "Reviewed by the design team."
      }
    }
  ],
  "metadata": { "totalRecords": 1 }
}
```

### `airtable_get_record`

Retrieve a single record from an Airtable table by its **record ID**.\
This is useful when you already know the record’s identifier (for example, from a previous listing) and want the full details.

#### Input

| Parameter  | Type   | Required | Description                          |
| ---------- | ------ | -------- | ------------------------------------ |
| `baseId`   | string | Yes      | ID of the Airtable base              |
| `tableId`  | string | Yes      | ID or name of the table              |
| `recordId` | string | Yes      | Unique record ID (e.g., `rec123XYZ`) |

#### Output

| Parameter  | Type | Description             |
| ---------- | ---- | ----------------------- |
| `record`   | json | Retrieved record object |
| `metadata` | json | Operation metadata      |

#### Example Output

```json
{
  "record": {
    "id": "rec0tK7W0ICQikuee",
    "createdTime": "2025-07-29T09:49:30.000Z",
    "fields": {
      "Design Name": "Mobile App Onboarding",
      "Submission Date": "2025-08-22",
      "Designer": "Bob Smith",
      "Comments": "Reviewed by the design team. Needs minor adjustments in the color scheme."
    }
  },
  "metadata": { "recordCount": 1 }
}
```

### `airtable_create_records`

Create one or more new records in a target Airtable table.\
This tool is most useful when ingesting data from external workflows, collecting user submissions, or creating rows for downstream tracking.

#### Input

| Parameter  | Type    | Required | Description                                                  |
| ---------- | ------- | -------- | ------------------------------------------------------------ |
| `baseId`   | string  | Yes      | ID of the Airtable base                                      |
| `tableId`  | string  | Yes      | ID or name of the table                                      |
| `records`  | array   | Yes      | Array of `{ fields: { ... } }` objects                       |
| `typecast` | boolean | No       | Coerce values into field types (helpful for selects/lookups) |

#### Output

| Parameter  | Type | Description                    |
| ---------- | ---- | ------------------------------ |
| `records`  | json | Newly created records with IDs |
| `metadata` | json | Response metadata              |

#### Example Input

```json
[
  {
    "fields": {
      "Design Name": "Mobile App Onboarding",
      "Submission Date": "2025-08-22",
      "Designer": "Bob Smith",
      "Comments": "Reviewed by the design team. Needs minor adjustments in the color scheme."
    }
  }
]
```

#### Example Output

```json
{
  "records": [
    {
      "id": "rec0tK7W0ICQikuee",
      "createdTime": "2025-07-29T09:49:30.000Z",
      "fields": {
        "Design Name": "Mobile App Onboarding",
        "Submission Date": "2025-08-22",
        "Designer": "Bob Smith",
        "Comments": "Reviewed by the design team. Needs minor adjustments in the color scheme."
      }
    }
  ],
  "metadata": {}
}
```

### `airtable_update_record`

Update a **single record** in Airtable by its unique `recordId`.\
This is commonly used in workflows where an agent enriches, verifies, or modifies data in-place — for example, marking a lead as *Qualified*, updating the status of a task, or adding comments to an entry.

#### Input

| Parameter  | Type    | Required | Description                                                                                              |
| ---------- | ------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `baseId`   | string  | Yes      | Airtable base ID (e.g., `appXXXXXXXXXXXXXX`)                                                             |
| `tableId`  | string  | Yes      | Table ID or name (e.g., `tblXXXXXXXXXXXXXX` or `"Tasks"`)                                                |
| `recordId` | string  | Yes      | Unique ID of the record to update                                                                        |
| `fields`   | object  | Yes      | A JSON object mapping field names to new values (inner dictionary only)                                  |
| `typecast` | boolean | No       | If true, Airtable will coerce values into field types (helpful for selects, lookups, and linked records) |

#### Output

| Parameter       | Type      | Description                             |
| --------------- | --------- | --------------------------------------- |
| `record`        | json      | The updated record object               |
| `metadata`      | json      | Information about the update operation  |
| `updatedFields` | string\[] | Array of field names that were modified |

#### Example Input

```json
{
  "recordId": "rec0tK7W0ICQikuee",
  "fields": {
    "Status": "Processed",
    "Comments": "Task completed successfully.",
    "Processed At": "2025-10-01T14:32:00.000Z"
  }
}
```

#### Example Output

```json
{
  "record": {
    "id": "rec0tK7W0ICQikuee",
    "createdTime": "2025-07-29T09:49:30.000Z",
    "fields": {
      "Design Name": "Mobile App Onboarding",
      "Status": "Processed",
      "Comments": "Task completed successfully.",
      "Processed At": "2025-10-01T14:32:00.000Z"
    }
  },
  "metadata": {
    "updatedFields": ["Status", "Comments", "Processed At"]
  }
}
```

### `airtable_update_multiple_records`

Update **multiple records** in Airtable within a single request.\
Use this for batch status changes, enrichment, and syncing external systems efficiently.

#### Input

| Parameter  | Type    | Required | Description                                                                                     |
| ---------- | ------- | -------- | ----------------------------------------------------------------------------------------------- |
| `baseId`   | string  | Yes      | Airtable base ID (e.g., `appXXXXXXXXXXXXXX`).                                                   |
| `tableId`  | string  | Yes      | Table ID or name (e.g., `tblXXXXXXXXXXXXXX` or `"Tasks"`).                                      |
| `updates`  | array   | Yes      | Array of update objects. Each item must include an `id` (record ID) and a `fields` map.         |
| `typecast` | boolean | No       | If `true`, Airtable coerces values into field types (useful for select, lookup, linked fields). |

Each update object should look like:

```json
{
  "id": "recXXXXXXXXXXXXXX",
  "fields": {
    "Status": "Processed",
    "Comments": "Updated in bulk run"
  }
}
```

#### Output

| Parameter          | Type   | Required | Description                                          |
| ------------------ | ------ | -------- | ---------------------------------------------------- |
| `records`          | json   | Yes      | List of updated record objects (IDs + fields).       |
| `metadata`         | json   | Yes      | Metadata about the operation.                        |
| `updatedRecordIds` | string | Yes      | AArray of record IDs that were updated successfully. |

#### Example Input

```json
{
  "updates": [
    {
      "id": "rec0tK7W0ICQikuee",
      "fields": {
        "Status": "Processed",
        "Processed At": "2025-10-02T10:15:00.000Z"
      }
    },
    {
      "id": "recDFByLwmeFEA3VI",
      "fields": {
        "Status": "Processed",
        "Processed At": "2025-10-02T10:15:00.000Z"
      }
    }
  ]
}
```

#### Example Output

```json
{
  "records": [
    {
      "id": "rec0tK7W0ICQikuee",
      "fields": {
        "Design Name": "Mobile App Onboarding",
        "Status": "Processed",
        "Processed At": "2025-10-02T10:15:00.000Z"
      }
    },
    {
      "id": "recDFByLwmeFEA3VI",
      "fields": {
        "Design Name": "Checkout Flow Improvement",
        "Status": "Processed",
        "Processed At": "2025-10-02T10:15:00.000Z"
      }
    }
  ],
  "metadata": {
    "updatedRecordIds": ["rec0tK7W0ICQikuee", "recDFByLwmeFEA3VI"]
  }
}
```

#### When to Use

* Bulk move tasks from Open → Processed.
* Apply enrichment (scores, segments) to many leads at once.
* Sync external systems that produce batch updates.
* Implement efficient read → decide → write-back pipelines.

#### Debugging Tips

* **Check IDs**: Prefer `tableId` (`tbl...`) in production. Table names can break if renamed.
* **Validate values**: Dates should be ISO 8601 (`YYYY-MM-DDTHH:mm:ssZ`). Ensure select options match exactly.
* **Log responses**: Keep track of Airtable’s error payloads. They often include hints about which field failed.
* **Reduce payloads**: Large bulk updates can trigger timeouts; split into multiple requests.
* **Use Views**: When filtering records, views encapsulate filter logic and reduce complexity in formulas.

### Best Practices

* Use **IDs instead of names** for stability.
* Add **timestamps** like `Updated At` or `Processed At` for traceability.
* Validate inputs before sending (email formats, select values).
* For upserts: **list → check by unique field → update or create**.
* Handle retries gracefully, especially with 429 rate limits.


# bscscan

[BSCScan](https://bscscan.com/) is a block explorer and API platform for BNB Smart Chain. It provides access to transaction details, account histories, token transfers, verified contract source code, and contract ABIs.

In Agent Forge, the BSCScan integration allows your agents and workflows to retrieve BNB Chain data directly from BSCScan APIs. This is useful for wallet monitoring, transaction analysis, token transfer tracking, contract inspection, and blockchain reporting workflows.

### Usage Instructions

Use BSCScan when your workflow needs BNB Chain data. Provide a BSCScan API key, choose an operation, and pass the required transaction hash, wallet address, or contract address.

Advanced fields allow you to set the chain ID, block range, pagination, result size, and sort direction.

### Tools

#### `bscscan_get_tx`

Fetch transaction details by transaction hash.

#### `bscscan_get_address_txs`

Retrieve normal transactions for a wallet address.

#### `bscscan_get_token_txs`

Retrieve token transfer events for an address, optionally filtered by token contract.

#### `bscscan_get_contract_source`

Fetch verified contract source code and metadata for a contract address.

#### `bscscan_get_contract_abi`

Fetch the verified ABI for a contract address.

### Common Inputs

| Parameter         | Type   | Required           | Description                                 |
| ----------------- | ------ | ------------------ | ------------------------------------------- |
| `apiKey`          | string | Yes                | BSCScan API key                             |
| `txHash`          | string | Operation-specific | Transaction hash                            |
| `address`         | string | Operation-specific | Wallet address                              |
| `contractAddress` | string | Operation-specific | Contract address                            |
| `chainId`         | number | No                 | EVM chain ID, defaulting to BNB Smart Chain |
| `startBlock`      | number | No                 | Starting block number                       |
| `endBlock`        | number | No                 | Ending block number                         |
| `page`            | number | No                 | Page number                                 |
| `offset`          | number | No                 | Results per page                            |
| `sort`            | string | No                 | Sort direction, `asc` or `desc`             |

### Output

| Parameter | Type   | Description                |
| --------- | ------ | -------------------------- |
| `data`    | json   | Full BSCScan response data |
| `status`  | string | BSCScan status value       |
| `message` | string | BSCScan response message   |
| `result`  | json   | BSCScan result payload     |

### Notes

* Category: `tools`
* Type: `bscscan`


# calendly

[Calendly](https://calendly.com/) is a popular scheduling automation platform that helps you book meetings, events, and appointments with ease. With Calendly, teams and individuals can streamline scheduling, reduce back-and-forth emails, and automate tasks around events.

With the Agent Forge Calendly integration, your agents can:

* **Retrieve information about your account and scheduled events**: Use tools to fetch user info, event types, and scheduled events for analysis or automation.
* **Manage event types and scheduling**: Access and list available event types for users or organizations, retrieve details about specific event types, and monitor scheduled meetings and invitee data.
* **Automate follow-ups and workflows**: When users schedule, reschedule, or cancel meetings, Agent Forge agents can automatically trigger corresponding workflows—such as sending reminders, updating CRMs, or notifying participants.
* **Integrate easily using webhooks**: Set up Agent Forge workflows to respond to real-time Calendly webhook events, including when invitees schedule, cancel, or interact with routing forms.

Whether you want to automate meeting prep, manage invites, or run custom workflows in response to scheduling activity, the Calendly tools in Agent Forge give you flexible and secure access. Unlock new automation by reacting instantly to scheduling changes—streamlining your team's operations and communications.

### Usage Instructions

Integrate Calendly into your workflow. Manage event types, scheduled events, invitees, and webhooks. Can also trigger workflows based on Calendly webhook events (invitee scheduled, invitee canceled, routing form submitted). Requires Personal Access Token.

### Tools

#### `calendly_get_current_user`

Get information about the currently authenticated Calendly user

**Input**

| Parameter | Type   | Required | Description                    |
| --------- | ------ | -------- | ------------------------------ |
| `apiKey`  | string | Yes      | Calendly Personal Access Token |

**Output**

| Parameter  | Type   | Description              |
| ---------- | ------ | ------------------------ |
| `resource` | object | Current user information |

#### `calendly_list_event_types`

Retrieve a list of all event types for a user or organization

**Input**

| Parameter      | Type    | Required | Description                                                                                                        |
| -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `apiKey`       | string  | Yes      | Calendly Personal Access Token                                                                                     |
| `user`         | string  | No       | Return only event types that belong to this user (URI format)                                                      |
| `organization` | string  | No       | Return only event types that belong to this organization (URI format)                                              |
| `count`        | number  | No       | Number of results per page (default: 20, max: 100)                                                                 |
| `pageToken`    | string  | No       | Page token for pagination                                                                                          |
| `sort`         | string  | No       | Sort order for results (e.g., "name:asc", "name:desc")                                                             |
| `active`       | boolean | No       | When true, show only active event types. When false or unchecked, show all event types (both active and inactive). |

**Output**

| Parameter    | Type  | Description                 |
| ------------ | ----- | --------------------------- |
| `collection` | array | Array of event type objects |

#### `calendly_get_event_type`

Get detailed information about a specific event type

**Input**

| Parameter       | Type   | Required | Description                                        |
| --------------- | ------ | -------- | -------------------------------------------------- |
| `apiKey`        | string | Yes      | Calendly Personal Access Token                     |
| `eventTypeUuid` | string | Yes      | Event type UUID (can be full URI or just the UUID) |

**Output**

| Parameter  | Type   | Description        |
| ---------- | ------ | ------------------ |
| `resource` | object | Event type details |

#### `calendly_list_scheduled_events`

Retrieve a list of scheduled events for a user or organization

**Input**

| Parameter        | Type   | Required | Description                                                                                                    |
| ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------- |
| `apiKey`         | string | Yes      | Calendly Personal Access Token                                                                                 |
| `user`           | string | No       | Return events that belong to this user (URI format). Either "user" or "organization" must be provided.         |
| `organization`   | string | No       | Return events that belong to this organization (URI format). Either "user" or "organization" must be provided. |
| `invitee_email`  | string | No       | Return events where invitee has this email                                                                     |
| `count`          | number | No       | Number of results per page (default: 20, max: 100)                                                             |
| `max_start_time` | string | No       | Return events with start time before this time (ISO 8601 format)                                               |
| `min_start_time` | string | No       | Return events with start time after this time (ISO 8601 format)                                                |
| `pageToken`      | string | No       | Page token for pagination                                                                                      |
| `sort`           | string | No       | Sort order for results (e.g., "start\_time:asc", "start\_time:desc")                                           |
| `status`         | string | No       | Filter by status ("active" or "canceled")                                                                      |

**Output**

| Parameter    | Type  | Description                      |
| ------------ | ----- | -------------------------------- |
| `collection` | array | Array of scheduled event objects |

#### `calendly_get_scheduled_event`

Get detailed information about a specific scheduled event

**Input**

| Parameter   | Type   | Required | Description                                             |
| ----------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`    | string | Yes      | Calendly Personal Access Token                          |
| `eventUuid` | string | Yes      | Scheduled event UUID (can be full URI or just the UUID) |

**Output**

| Parameter  | Type   | Description             |
| ---------- | ------ | ----------------------- |
| `resource` | object | Scheduled event details |

#### `calendly_list_event_invitees`

Retrieve a list of invitees for a scheduled event

**Input**

| Parameter   | Type   | Required | Description                                                          |
| ----------- | ------ | -------- | -------------------------------------------------------------------- |
| `apiKey`    | string | Yes      | Calendly Personal Access Token                                       |
| `eventUuid` | string | Yes      | Scheduled event UUID (can be full URI or just the UUID)              |
| `count`     | number | No       | Number of results per page (default: 20, max: 100)                   |
| `email`     | string | No       | Filter invitees by email address                                     |
| `pageToken` | string | No       | Page token for pagination                                            |
| `sort`      | string | No       | Sort order for results (e.g., "created\_at:asc", "created\_at:desc") |
| `status`    | string | No       | Filter by status ("active" or "canceled")                            |

**Output**

| Parameter    | Type  | Description              |
| ------------ | ----- | ------------------------ |
| `collection` | array | Array of invitee objects |

#### `calendly_cancel_event`

Cancel a scheduled event

**Input**

| Parameter   | Type   | Required | Description                                                       |
| ----------- | ------ | -------- | ----------------------------------------------------------------- |
| `apiKey`    | string | Yes      | Calendly Personal Access Token                                    |
| `eventUuid` | string | Yes      | Scheduled event UUID to cancel (can be full URI or just the UUID) |
| `reason`    | string | No       | Reason for cancellation (will be sent to invitees)                |

**Output**

| Parameter  | Type   | Description          |
| ---------- | ------ | -------------------- |
| `resource` | object | Cancellation details |

### Notes

* Category: `tools`
* Type: `calendly`


# browser\_use

[BrowserUse](https://browser-use.com/) enables agents to run **browser automation tasks** with natural-language instructions. It simulates human-like browsing to navigate sites, click elements, fill forms, scrape data, and execute multi-step workflows with optional live monitoring and structured results.

### Usage Instructions

Use this block when your agent needs to interact with the live web (research, form submission, scraping, testing).

{% stepper %}
{% step %}
Describe the task in plain English (the **`task`**).
{% endstep %}

{% step %}
(Optional) Provide **`variables`** (secrets/values the steps can use).
{% endstep %}

{% step %}
Choose whether to **`save_browser_data`** (persist cookies/session).
{% endstep %}

{% step %}
(Optional) Select **`model`** for reasoning (defaults to `gpt-4o`).
{% endstep %}

{% step %}
Provide your **`apiKey`**. (You can get it from here: <https://cloud.browser-use.com/>)
{% endstep %}

{% step %}
Run the block → it executes asynchronously and returns a **task `id`**, **`success`** status, **`output`**, and **`steps`** taken.
{% endstep %}
{% endstepper %}

**Great for**

* Automating repetitive web flows (login → search → click → extract).
* Collecting structured data from pages.
* Filing forms or tickets across internal tools.
* End-to-end smoke tests of web apps.

### Tools

#### `browser_use_run_task`

Run a single browser automation task.

**Input**

| Parameter           | Type    | Required | Description                                                                       |
| ------------------- | ------- | -------- | --------------------------------------------------------------------------------- |
| `task`              | string  | Yes      | Natural-language instruction describing what the browser should do.               |
| `variables`         | json    | No       | Key–value pairs available to the task (e.g., credentials, query terms).           |
| `save_browser_data` | boolean | No       | Persist session/browser data (cookies, history). Default: `false`.                |
| `model`             | string  | No       | LLM to use for reasoning (e.g., `gpt-4o`, `gemini-2.0-flash`). Default: `gpt-4o`. |
| `apiKey`            | string  | Yes      | BrowserUse API key (must be valid and funded).                                    |

**Output**

| Parameter | Type    | Description                                                                 |
| --------- | ------- | --------------------------------------------------------------------------- |
| `id`      | string  | Execution identifier for the task (useful for logs/support).                |
| `success` | boolean | Whether the task completed successfully.                                    |
| `output`  | any     | Raw result (e.g., extracted data, confirmation text, structured payload).   |
| `steps`   | json    | Detailed step list (visited URLs, DOM actions, extracted elements, timing). |

### Examples

#### Example 1 — Research summary

* **Task:** “Go to google.com, search ‘latest genAI eval frameworks’, open top 3 reputable results, summarize key differences.”
* **Variables:** `{ "region": "US" }` (optional)
* **Outcome:** `output` contains a concise comparison; `steps` shows search → click → parse.

#### Example 2 — Form submission

* **Task:** “Open example.com/login, sign in with provided credentials, go to /submit, fill and submit the form, confirm the success message.”
* **Variables:** `{ "username": "user", "password": "pass" }`
* **Outcome:** `success: true` and `output` includes confirmation; `steps` logs DOM actions.

#### Example 3 — Data extraction

* **Task:** “Visit site.com/pricing, extract the plan names, monthly prices, and feature lists into structured JSON.”
* **Outcome:** `output` returns structured data for downstream use.

### Best Practices

* **Keep instructions clear and bounded:** Provide goals, constraints, and what to return (e.g., “return JSON with fields X, Y, Z”).
* **Use variables for sensitive data:** Pass secrets via `variables` to keep prompts clean.
* **Persist sessions when needed:** Enable `save_browser_data` for flows that benefit from cookies (e.g., staying logged in).
* **Ask for structure:** If extracting data, tell the agent the exact fields/shape to return.
* **Fail fast with signal:** If a selector or page changes, ensure the task returns a helpful error in `output`.

### Troubleshooting

| Symptom                        | Likely Cause                          | What to Try                                                               |
| ------------------------------ | ------------------------------------- | ------------------------------------------------------------------------- |
| `success: false`, empty output | Site changed layout or selector       | Refine the `task` with clearer steps; specify buttons, forms, or URLs.    |
| Login keeps failing            | Session not persisted                 | Set `save_browser_data: true`. Pass credentials via `variables`.          |
| Rate-limit or bot detection    | Aggressive navigation/scraping        | Slow down steps; reduce frequency; add polite delays; target fewer pages. |
| Unexpected model behavior      | Model too weak/fast for complex flows | Set `model` to `gpt-4o` (default) or a more capable reasoning model.      |

### Notes

* **Category:** `tools`
* **Type:** `browser_use`
* The block executes tasks asynchronously and returns once the run completes (it polls for completion under the hood).


# coingecko

[CoinGecko](https://www.coingecko.com/) provides cryptocurrency market data, token metadata, exchange information, derivatives data, trending assets, categories, and NFT collection data.

In Agent Forge, the CoinGecko integration allows workflows to pull live and historical market intelligence into agents. Use it for crypto dashboards, token research agents, market monitoring, price alerts, asset comparison, and automated research pipelines.

## Usage Instructions

Choose the CoinGecko operation that matches the data you need. Most read-only public endpoints can run without an API key, while higher-volume or Pro API usage can include a CoinGecko API key in the advanced field.

## Tools

### Market Data

* `coingecko_simple_price` - Get current prices for one or more coins
* `coingecko_coins_markets` - List market data for selected coins
* `coingecko_market_chart` - Retrieve historical market chart data
* `coingecko_ohlc` - Retrieve OHLC price candles

### Discovery

* `coingecko_search` - Search for coins, exchanges, categories, and NFTs
* `coingecko_trending` - Get trending coins and NFTs

### Coin and Token Metadata

* `coingecko_coin_details` - Get detailed metadata for a coin
* `coingecko_token_price` - Get token prices by platform and contract address
* `coingecko_token_info` - Get token metadata by platform and contract address

### Taxonomy and Venues

* `coingecko_categories` - List coin categories
* `coingecko_exchanges` - List exchanges
* `coingecko_derivatives` - List derivative exchanges and markets

### NFT

* `coingecko_nft_list` - List NFT collections
* `coingecko_nft_details` - Get NFT collection details

## Common Inputs

| Parameter           | Type   | Required           | Description                                        |
| ------------------- | ------ | ------------------ | -------------------------------------------------- |
| `ids`               | string | Operation-specific | Coin IDs such as `bitcoin,ethereum`                |
| `vsCurrencies`      | string | Operation-specific | Quote currencies such as `usd,eur`                 |
| `vsCurrency`        | string | Operation-specific | Single quote currency                              |
| `coinId`            | string | Operation-specific | CoinGecko coin ID                                  |
| `days`              | string | Operation-specific | Historical window such as `1`, `7`, `30`, or `max` |
| `query`             | string | Operation-specific | Search query                                       |
| `assetPlatformId`   | string | Operation-specific | Platform ID such as `ethereum`                     |
| `contractAddress`   | string | Operation-specific | Token contract address                             |
| `contractAddresses` | string | Operation-specific | Comma-separated token contract addresses           |
| `nftId`             | string | Operation-specific | NFT collection ID                                  |
| `apiKey`            | string | No                 | Optional CoinGecko API key                         |

## Output

| Parameter | Type | Description             |
| --------- | ---- | ----------------------- |
| `data`    | json | CoinGecko response data |

## Notes

* Category: `tools`
* Type: `coingecko`


# clay

[Clay](https://www.clay.com/) is a data enrichment and workflow automation platform that helps teams streamline lead generation, research, and data operations through powerful integrations and flexible inputs.

Learn how to use the Clay Tool in Agent Forge to seamlessly insert data into a Clay workbook through webhook triggers. This tutorial walks you through setting up a webhook, configuring data mapping, and automating real-time updates to your Clay workbooks. Perfect for streamlining lead generation and data enrichment directly from your workflow!

{% embed url="<https://www.youtube.com/embed/cx_75X5sI_s>" %}

With Clay, you can:

* **Enrich agent outputs**: Automatically feed your Agent Forge agent data into Clay tables for structured tracking and analysis
* **Trigger workflows via webhooks**: Use Clay’s webhook support to initiate Agent Forge agent tasks from within Clay
* **Leverage data loops**: Seamlessly iterate over enriched data rows with agents that operate across dynamic datasets

In Agent Forge, the Clay integration allows your agents to push structured data into Clay tables via webhooks. This makes it easy to collect, enrich, and manage dynamic outputs such as leads, research summaries, or action items—all in a collaborative, spreadsheet-like interface. Your agents can populate rows in real time, enabling asynchronous workflows where AI-generated insights are captured, reviewed, and used by your team. Whether you're automating research, enriching CRM data, or tracking operational outcomes, Clay becomes a living data layer that interacts intelligently with your agents. By connecting Agent Forge with Clay, you gain a powerful way to operationalize agent results, loop over datasets with precision, and maintain a clean, auditable record of AI-driven work.

### Usage Instructions

Populate Clay workbook with data using a JSON or plain text. Enables direct communication and notifications with channel confirmation.

### Tools

#### `clay_populate`

Populate Clay with data from a JSON file. Enables direct communication and notifications with timestamp tracking and channel confirmation.

**Input**

| Parameter    | Type   | Required | Description                                |
| ------------ | ------ | -------- | ------------------------------------------ |
| `webhookURL` | string | Yes      | The webhook URL to populate                |
| `data`       | json   | Yes      | The data to populate                       |
| `authToken`  | string | Yes      | Auth token for Clay webhook authentication |

**Output**

| Parameter | Type | Description   |
| --------- | ---- | ------------- |
| `data`    | any  | Response data |

**Multiple Batch upload**

```json
[
  {
    "Company": "Northwind",
    "Website": "https://northwind.example",
    "Contact Name": "Alex Park",
    "Email": "alex@northwind.example",
    "Source": "Forge Research"
  },
  {
    "Company": "Globex",
    "Website": "https://globex.example",
    "Contact Name": "Sam Rivera",
    "Email": "sam@globex.example",
    "Score": 87
  }
]
```

### Notes

* Category: `tools`
* Type: `clay`


# confluence

[Confluence](https://www.atlassian.com/software/confluence) is Atlassian's powerful team collaboration and knowledge management platform. It serves as a centralized workspace where teams can create, organize, and share information across departments and organizations.

With Confluence, you can:

* **Create structured documentation**: Build comprehensive wikis, project plans, and knowledge bases with rich formatting
* **Collaborate in real-time**: Work together on documents with teammates, with comments, mentions, and editing capabilities
* **Organize information hierarchically**: Structure content with spaces, pages, and nested hierarchies for intuitive navigation
* **Integrate with other tools**: Connect with Jira, Trello, and other Atlassian products for seamless workflow integration
* **Control access permissions**: Manage who can view, edit, or comment on specific content

In Agent Forge, the Confluence integration enables your agents to access and leverage your organization's knowledge base. Agents can retrieve information from Confluence pages, search for specific content, and even update documentation when needed. This allows your workflows to incorporate the collective knowledge stored in your Confluence instance, making it possible to build agents that can reference internal documentation, follow established procedures, and maintain up-to-date information resources as part of their operations.

### Usage Instructions

Connect to Confluence workspaces to retrieve and search documentation. Access page content, metadata, and integrate Confluence documentation into your workflows.

### Tools

#### `confluence_retrieve`

Retrieve content from Confluence pages using the Confluence API.

**Input**

| Parameter     | Type   | Required | Description                                                                                 |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `accessToken` | string | Yes      | OAuth access token for Confluence                                                           |
| `domain`      | string | Yes      | Your Confluence domain (e.g., yourcompany.atlassian.net)                                    |
| `pageId`      | string | Yes      | Confluence page ID to retrieve                                                              |
| `cloudId`     | string | No       | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `ts`      | string  | Timestamp                |
| `pageId`  | string  | Page identifier          |
| `content` | string  | Page content             |
| `title`   | string  | Page title               |
| `success` | boolean | Operation success status |

#### `confluence_update`

Update a Confluence page using the Confluence API.

**Input**

| Parameter     | Type   | Required | Description                                                                                 |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `accessToken` | string | Yes      | OAuth access token for Confluence                                                           |
| `domain`      | string | Yes      | Your Confluence domain (e.g., yourcompany.atlassian.net)                                    |
| `pageId`      | string | Yes      | Confluence page ID to update                                                                |
| `title`       | string | No       | New title for the page                                                                      |
| `content`     | string | No       | New content for the page in Confluence storage format                                       |
| `version`     | number | No       | Version number of the page (required for preventing conflicts)                              |
| `cloudId`     | string | No       | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `ts`      | string  | Timestamp                |
| `pageId`  | string  | Page identifier          |
| `content` | string  | Page content             |
| `title`   | string  | Page title               |
| `success` | boolean | Operation success status |

### Notes

* Category: `tools`
* Type: `confluence`


# datadog

[Datadog](https://datadoghq.com/) is a comprehensive monitoring and analytics platform for infrastructure, applications, logs, and more. It enables organizations to gain real-time visibility into the health and performance of systems, detect anomalies, and automate incident response.

With Datadog, you can:

* **Monitor metrics**: Collect, visualize, and analyze metrics from servers, cloud services, and custom applications.
* **Query time series data**: Run advanced queries on performance metrics for trend analysis and reporting.
* **Manage monitors and events**: Set up monitors to detect issues, trigger alerts, and create events for observability.
* **Handle downtimes**: Schedule and programmatically manage planned downtimes to suppress alerts during maintenance.
* **Analyze logs and traces** *(with additional setup in Datadog)*: Centralize and inspect logs or distributed traces for deeper troubleshooting.

Agent Forge’s Datadog integration lets your agents automate these operations and interact with your Datadog account programmatically. Use it to submit custom metrics, query timeseries data, manage monitors, create events, and streamline your monitoring workflows directly within Agent Forge automations.

### Usage Instructions

Integrate Datadog monitoring into workflows. Submit metrics, manage monitors, query logs, create events, handle downtimes, and more.

### Tools

#### `datadog_submit_metrics`

Submit custom metrics to Datadog. Use for tracking application performance, business metrics, or custom monitoring data.

**Input**

| Parameter | Type   | Required | Description                                                                                                                                                |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `series`  | string | Yes      | JSON array of metric series to submit. Each series should include metric name, type (gauge/rate/count), points (timestamp/value pairs), and optional tags. |
| `apiKey`  | string | Yes      | Datadog API key                                                                                                                                            |
| `site`    | string | No       | Datadog site/region (default: datadoghq.com)                                                                                                               |

**Output**

| Parameter | Type    | Description                                     |
| --------- | ------- | ----------------------------------------------- |
| `success` | boolean | Whether the metrics were submitted successfully |
| `errors`  | array   | Any errors that occurred during submission      |

#### `datadog_query_timeseries`

Query metric timeseries data from Datadog. Use for analyzing trends, creating reports, or retrieving metric values.

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `query`          | string | Yes      | Datadog metrics query (e.g., "avg:system.cpu.user{\*}") |
| `from`           | number | Yes      | Start time as Unix timestamp in seconds                 |
| `to`             | number | Yes      | End time as Unix timestamp in seconds                   |
| `apiKey`         | string | Yes      | Datadog API key                                         |
| `applicationKey` | string | Yes      | Datadog Application key                                 |
| `site`           | string | No       | Datadog site/region (default: datadoghq.com)            |

**Output**

| Parameter | Type   | Description                                                      |
| --------- | ------ | ---------------------------------------------------------------- |
| `series`  | array  | Array of timeseries data with metric name, tags, and data points |
| `status`  | string | Query status                                                     |

#### `datadog_create_event`

Post an event to the Datadog event stream. Use for deployment notifications, alerts, or any significant occurrences.

**Input**

| Parameter        | Type   | Required | Description                                                                          |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------ |
| `title`          | string | Yes      | Event title                                                                          |
| `text`           | string | Yes      | Event body/description. Supports markdown.                                           |
| `alertType`      | string | No       | Alert type: error, warning, info, success, user\_update, recommendation, or snapshot |
| `priority`       | string | No       | Event priority: normal or low                                                        |
| `host`           | string | No       | Host name to associate with this event                                               |
| `tags`           | string | No       | Comma-separated list of tags (e.g., "env:production,service:api")                    |
| `aggregationKey` | string | No       | Key to aggregate events together                                                     |
| `sourceTypeName` | string | No       | Source type name for the event                                                       |
| `dateHappened`   | number | No       | Unix timestamp when the event occurred (defaults to now)                             |
| `apiKey`         | string | Yes      | Datadog API key                                                                      |
| `site`           | string | No       | Datadog site/region (default: datadoghq.com)                                         |

**Output**

| Parameter | Type   | Description               |
| --------- | ------ | ------------------------- |
| `event`   | object | The created event details |

#### `datadog_create_monitor`

Create a new monitor/alert in Datadog. Monitors can track metrics, service checks, events, and more.

**Input**

| Parameter        | Type   | Required | Description                                                                                                                           |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `name`           | string | Yes      | Monitor name                                                                                                                          |
| `type`           | string | Yes      | Monitor type: metric alert, service check, event alert, process alert, log alert, query alert, composite, synthetics alert, slo alert |
| `query`          | string | Yes      | Monitor query (e.g., "avg(last\_5m):avg:system.cpu.idle{\*} < 20")                                                                    |
| `message`        | string | No       | Message to include with notifications. Can include @-mentions and markdown.                                                           |
| `tags`           | string | No       | Comma-separated list of tags                                                                                                          |
| `priority`       | number | No       | Monitor priority (1-5, where 1 is highest)                                                                                            |
| `options`        | string | No       | JSON string of monitor options (thresholds, notify\_no\_data, renotify\_interval, etc.)                                               |
| `apiKey`         | string | Yes      | Datadog API key                                                                                                                       |
| `applicationKey` | string | Yes      | Datadog Application key                                                                                                               |
| `site`           | string | No       | Datadog site/region (default: datadoghq.com)                                                                                          |

**Output**

| Parameter | Type   | Description                 |
| --------- | ------ | --------------------------- |
| `monitor` | object | The created monitor details |

#### `datadog_get_monitor`

Retrieve details of a specific monitor by ID.

**Input**

| Parameter        | Type    | Required | Description                                                       |
| ---------------- | ------- | -------- | ----------------------------------------------------------------- |
| `monitorId`      | string  | Yes      | The ID of the monitor to retrieve                                 |
| `groupStates`    | string  | No       | Comma-separated group states to include: alert, warn, no data, ok |
| `withDowntimes`  | boolean | No       | Include downtime data with the monitor                            |
| `apiKey`         | string  | Yes      | Datadog API key                                                   |
| `applicationKey` | string  | Yes      | Datadog Application key                                           |
| `site`           | string  | No       | Datadog site/region (default: datadoghq.com)                      |

**Output**

| Parameter | Type   | Description         |
| --------- | ------ | ------------------- |
| `monitor` | object | The monitor details |

#### `datadog_list_monitors`

List all monitors in Datadog with optional filtering by name, tags, or state.

**Input**

| Parameter        | Type    | Required | Description                                                         |
| ---------------- | ------- | -------- | ------------------------------------------------------------------- |
| `groupStates`    | string  | No       | Comma-separated group states to filter by: alert, warn, no data, ok |
| `name`           | string  | No       | Filter monitors by name (partial match)                             |
| `tags`           | string  | No       | Comma-separated list of tags to filter by                           |
| `monitorTags`    | string  | No       | Comma-separated list of monitor tags to filter by                   |
| `withDowntimes`  | boolean | No       | Include downtime data with monitors                                 |
| `page`           | number  | No       | Page number for pagination (0-indexed)                              |
| `pageSize`       | number  | No       | Number of monitors per page (max 1000)                              |
| `apiKey`         | string  | Yes      | Datadog API key                                                     |
| `applicationKey` | string  | Yes      | Datadog Application key                                             |
| `site`           | string  | No       | Datadog site/region (default: datadoghq.com)                        |

**Output**

| Parameter  | Type  | Description      |
| ---------- | ----- | ---------------- |
| `monitors` | array | List of monitors |

#### `datadog_mute_monitor`

Mute a monitor to temporarily suppress notifications.

**Input**

| Parameter        | Type   | Required | Description                                                                    |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `monitorId`      | string | Yes      | The ID of the monitor to mute                                                  |
| `scope`          | string | No       | Scope to mute (e.g., "host:myhost"). If not specified, mutes all scopes.       |
| `end`            | number | No       | Unix timestamp when the mute should end. If not specified, mutes indefinitely. |
| `apiKey`         | string | Yes      | Datadog API key                                                                |
| `applicationKey` | string | Yes      | Datadog Application key                                                        |
| `site`           | string | No       | Datadog site/region (default: datadoghq.com)                                   |

**Output**

| Parameter | Type    | Description                                |
| --------- | ------- | ------------------------------------------ |
| `success` | boolean | Whether the monitor was successfully muted |

#### `datadog_query_logs`

Search and retrieve logs from Datadog. Use for troubleshooting, analysis, or monitoring.

**Input**

| Parameter        | Type   | Required | Description                                                       |
| ---------------- | ------ | -------- | ----------------------------------------------------------------- |
| `query`          | string | Yes      | Log search query (e.g., "service:web-app status:error")           |
| `from`           | string | Yes      | Start time in ISO-8601 format or relative (e.g., "now-1h")        |
| `to`             | string | Yes      | End time in ISO-8601 format or relative (e.g., "now")             |
| `limit`          | number | No       | Maximum number of logs to return (default: 50, max: 1000)         |
| `sort`           | string | No       | Sort order: timestamp (oldest first) or -timestamp (newest first) |
| `indexes`        | string | No       | Comma-separated list of log indexes to search                     |
| `apiKey`         | string | Yes      | Datadog API key                                                   |
| `applicationKey` | string | Yes      | Datadog Application key                                           |
| `site`           | string | No       | Datadog site/region (default: datadoghq.com)                      |

**Output**

| Parameter | Type  | Description         |
| --------- | ----- | ------------------- |
| `logs`    | array | List of log entries |

#### `datadog_send_logs`

Send log entries to Datadog for centralized logging and analysis.

**Input**

| Parameter | Type   | Required | Description                                                                                                   |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- |
| `logs`    | string | Yes      | JSON array of log entries. Each entry should have message and optionally ddsource, ddtags, hostname, service. |
| `apiKey`  | string | Yes      | Datadog API key                                                                                               |
| `site`    | string | No       | Datadog site/region (default: datadoghq.com)                                                                  |

**Output**

| Parameter | Type    | Description                             |
| --------- | ------- | --------------------------------------- |
| `success` | boolean | Whether the logs were sent successfully |

#### `datadog_create_downtime`

Schedule a downtime to suppress monitor notifications during maintenance windows.

**Input**

| Parameter                       | Type    | Required | Description                                                                         |
| ------------------------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `scope`                         | string  | Yes      | Scope to apply downtime to (e.g., "host:myhost", "env:production", or "\*" for all) |
| `message`                       | string  | No       | Message to display during downtime                                                  |
| `start`                         | number  | No       | Unix timestamp for downtime start (defaults to now)                                 |
| `end`                           | number  | No       | Unix timestamp for downtime end                                                     |
| `timezone`                      | string  | No       | Timezone for the downtime (e.g., "America/New\_York")                               |
| `monitorId`                     | string  | No       | Specific monitor ID to mute                                                         |
| `monitorTags`                   | string  | No       | Comma-separated monitor tags to match (e.g., "team:backend,priority:high")          |
| `muteFirstRecoveryNotification` | boolean | No       | Mute the first recovery notification                                                |
| `apiKey`                        | string  | Yes      | Datadog API key                                                                     |
| `applicationKey`                | string  | Yes      | Datadog Application key                                                             |
| `site`                          | string  | No       | Datadog site/region (default: datadoghq.com)                                        |

**Output**

| Parameter  | Type   | Description                  |
| ---------- | ------ | ---------------------------- |
| `downtime` | object | The created downtime details |

#### `datadog_list_downtimes`

List all scheduled downtimes in Datadog.

**Input**

| Parameter        | Type    | Required | Description                                  |
| ---------------- | ------- | -------- | -------------------------------------------- |
| `currentOnly`    | boolean | No       | Only return currently active downtimes       |
| `monitorId`      | string  | No       | Filter by monitor ID                         |
| `apiKey`         | string  | Yes      | Datadog API key                              |
| `applicationKey` | string  | Yes      | Datadog Application key                      |
| `site`           | string  | No       | Datadog site/region (default: datadoghq.com) |

**Output**

| Parameter   | Type  | Description       |
| ----------- | ----- | ----------------- |
| `downtimes` | array | List of downtimes |

#### `datadog_cancel_downtime`

Cancel a scheduled downtime.

**Input**

| Parameter        | Type   | Required | Description                                  |
| ---------------- | ------ | -------- | -------------------------------------------- |
| `downtimeId`     | string | Yes      | The ID of the downtime to cancel             |
| `apiKey`         | string | Yes      | Datadog API key                              |
| `applicationKey` | string | Yes      | Datadog Application key                      |
| `site`           | string | No       | Datadog site/region (default: datadoghq.com) |

**Output**

| Parameter | Type    | Description                                    |
| --------- | ------- | ---------------------------------------------- |
| `success` | boolean | Whether the downtime was successfully canceled |

### Notes

* Category: `tools`
* Type: `datadog`


# elevenlabs

[ElevenLabs](https://elevenlabs.io/) is a state-of-the-art text-to-speech (TTS) platform with lifelike, expressive voices. Use it to turn agent outputs into natural audio for assistants, IVRs, demos, accessibility features, and more.

## Quick Setup

{% stepper %}
{% step %}

### Get your API key

1. Sign in at [**elevenlabs.io**](https://elevenlabs.io/).
2. In the **left sidebar**, open the **Developers** tab.
3. Go to **API Keys** → **Create / View**.
4. **Copy your API key** and store it securely (you’ll paste this into the block’s `apiKey`).
   {% endstep %}

{% step %}

### Find your Voice ID

There are two easy ways:

* **From the ElevenLabs UI**
  1. In the **left sidebar**, open the **Voices** tab.
  2. Click a voice from your library or the VoiceLab.
  3. Copy the **Voice ID** shown in the voice details panel (or from the voice URL/details modal if available).
* **From the API (optional)**
  * Call the “List Voices” endpoint to retrieve available voices and copy the `voice_id` you want to use.

> Make sure the voice you pick is **included in your current plan** (premium/pro voices may require higher tiers).
> {% endstep %}
> {% endstepper %}

## Usage Instructions

Use the **ElevenLabs** block to generate speech from text. Provide:

* `text` — the content you want spoken
* `voiceId` — a voice available to your plan
* `apiKey` — your ElevenLabs API key
* *(optional)* `modelId` — defaults to `eleven_monolingual_v1`

The block returns an `audioUrl` pointing to the generated audio.

## Tools

### `elevenlabs_tts`

Convert text to speech using an ElevenLabs voice.

#### Input

| Parameter | Type   | Required | Description                                     |
| --------- | ------ | -------- | ----------------------------------------------- |
| `text`    | string | Yes      | The text to convert to speech.                  |
| `voiceId` | string | Yes      | The target voice ID (must be available to you). |
| `modelId` | string | No       | Model to use. Default: `eleven_monolingual_v1`. |
| `apiKey`  | string | Yes      | Your ElevenLabs API key.                        |

#### Output

| Parameter  | Type   | Description                      |
| ---------- | ------ | -------------------------------- |
| `audioUrl` | string | URL of the generated audio file. |

## Troubleshooting

### Common error

**`Error generating speech: Request failed with status 400`**

**Likely causes**

* The **voice is not available** on your **current plan** (e.g., premium/proprietary voice requiring a higher tier).
* **Insufficient credits** in your ElevenLabs account.
* A required input is missing or malformed (`text`, `voiceId`, or `apiKey`).
* The `modelId` is invalid for your account/region.
* The text violates provider content rules or exceeds internal limits.

**How to fix**

* **Check plan & credits:** In ElevenLabs, confirm your subscription tier and remaining credits. Either switch to a voice your plan supports or upgrade your plan.
* **Validate inputs:** Ensure `text` is non-empty, `voiceId` is correct, and the **API key** is valid.
* **Try default model:** Omit `modelId` (use default) or switch back to `eleven_monolingual_v1`.
* **Shorten or sanitize text:** Trim very long inputs or remove problematic characters.
* **Test another voice:** Pick a standard voice you know your plan includes from the Voices tab.

> If errors persist, re-copy the **API key** from **Developers → API Keys** and test with a known supported voice from **Voices**.

## Best Practices

* **Keep text concise:** Very long inputs can increase latency and cost.
* **Choose voices by use case:** Narration vs. assistant voices, multilingual needs, etc.
* **Cache stable audio:** If you reuse the same text/voice often, store the generated audio to save credits.
* **Handle fallbacks:** If a preferred voice fails, retry with a standard voice available to all tiers.

## Notes

* **Category:** `tools`
* **Type:** `elevenlabs`
* Requires a valid **API key** (Developers tab) and a **Voice ID** (Voices tab).


# exa

[Exa](https://exa.ai/) is an AI-powered search engine designed specifically for developers and researchers, providing highly relevant and up-to-date information from across the web. It combines advanced semantic search capabilities with AI understanding to deliver more accurate and contextually relevant results than traditional search engines.

With Exa, you can:

* **Search with natural language**: Find information using conversational queries and questions
* **Get precise results**: Receive highly relevant search results with semantic understanding
* **Access up-to-date information**: Retrieve current information from across the web
* **Find similar content**: Discover related resources based on content similarity
* **Extract webpage contents**: Retrieve and process the full text of web pages
* **Answer questions with citations**: Ask questions and receive direct answers with supporting sources
* **Perform research tasks**: Automate multi-step research workflows to gather, synthesize, and summarize information

In Agent Forge, the Exa integration allows your agents to search the web for information, retrieve content from specific URLs, find similar resources, answer questions with citations, and conduct research tasks—all programmatically through API calls. This enables your agents to access real-time information from the internet, enhancing their ability to provide accurate, current, and relevant responses. The integration is particularly valuable for research tasks, information gathering, content discovery, and answering questions that require up-to-date information from across the web.

### Usage Instructions

Search the web, retrieve content, find similar links, and answer questions using Exa's powerful AI search capabilities.

### Tools

#### `exa_search`

Search the web using Exa AI. Returns relevant search results with titles, URLs, and text snippets.

**Input**

| Parameter       | Type    | Required | Description                                                     |
| --------------- | ------- | -------- | --------------------------------------------------------------- |
| `query`         | string  | Yes      | The search query to execute                                     |
| `numResults`    | number  | No       | Number of results to return (default: 10, max: 25)              |
| `useAutoprompt` | boolean | No       | Whether to use autoprompt to improve the query (default: false) |
| `type`          | string  | No       | Search type: neural, keyword, auto or fast (default: auto)      |
| `apiKey`        | string  | Yes      | Exa AI API Key                                                  |

**Output**

| Parameter      | Type   | Description         |
| -------------- | ------ | ------------------- |
| `results`      | json   | Search results      |
| `similarLinks` | json   | Similar links found |
| `answer`       | string | Generated answer    |
| `citations`    | json   | Answer citations    |
| `research`     | json   | Research findings   |

#### `exa_get_contents`

Retrieve the contents of webpages using Exa AI. Returns the title, text content, and optional summaries for each URL.

**Input**

| Parameter      | Type    | Required | Description                                                                            |
| -------------- | ------- | -------- | -------------------------------------------------------------------------------------- |
| `urls`         | string  | Yes      | Comma-separated list of URLs to retrieve content from                                  |
| `text`         | boolean | No       | If true, returns full page text with default settings. If false, disables text return. |
| `summaryQuery` | string  | No       | Query to guide the summary generation                                                  |
| `apiKey`       | string  | Yes      | Exa AI API Key                                                                         |

**Output**

| Parameter      | Type   | Description         |
| -------------- | ------ | ------------------- |
| `results`      | json   | Search results      |
| `similarLinks` | json   | Similar links found |
| `answer`       | string | Generated answer    |
| `citations`    | json   | Answer citations    |
| `research`     | json   | Research findings   |

#### `exa_find_similar_links`

Find webpages similar to a given URL using Exa AI. Returns a list of similar links with titles and text snippets.

**Input**

| Parameter    | Type    | Required | Description                                              |
| ------------ | ------- | -------- | -------------------------------------------------------- |
| `url`        | string  | Yes      | The URL to find similar links for                        |
| `numResults` | number  | No       | Number of similar links to return (default: 10, max: 25) |
| `text`       | boolean | No       | Whether to include the full text of the similar pages    |
| `apiKey`     | string  | Yes      | Exa AI API Key                                           |

**Output**

| Parameter      | Type   | Description         |
| -------------- | ------ | ------------------- |
| `results`      | json   | Search results      |
| `similarLinks` | json   | Similar links found |
| `answer`       | string | Generated answer    |
| `citations`    | json   | Answer citations    |
| `research`     | json   | Research findings   |

#### `exa_answer`

Get an AI-generated answer to a question with citations from the web using Exa AI.

**Input**

| Parameter | Type    | Required | Description                                    |
| --------- | ------- | -------- | ---------------------------------------------- |
| `query`   | string  | Yes      | The question to answer                         |
| `text`    | boolean | No       | Whether to include the full text of the answer |
| `apiKey`  | string  | Yes      | Exa AI API Key                                 |

**Output**

| Parameter      | Type   | Description         |
| -------------- | ------ | ------------------- |
| `results`      | json   | Search results      |
| `similarLinks` | json   | Similar links found |
| `answer`       | string | Generated answer    |
| `citations`    | json   | Answer citations    |
| `research`     | json   | Research findings   |

#### `exa_research`

Perform comprehensive research using AI to generate detailed reports with citations

**Input**

| Parameter     | Type    | Required | Description                          |
| ------------- | ------- | -------- | ------------------------------------ |
| `query`       | string  | Yes      | Research query or topic              |
| `includeText` | boolean | No       | Include full text content in results |
| `apiKey`      | string  | Yes      | Exa AI API Key                       |

**Output**

| Parameter      | Type   | Description         |
| -------------- | ------ | ------------------- |
| `results`      | json   | Search results      |
| `similarLinks` | json   | Similar links found |
| `answer`       | string | Generated answer    |
| `citations`    | json   | Answer citations    |
| `research`     | json   | Research findings   |

### Notes

* Category: `tools`
* Type: `exa`


# firecrawl

[Firecrawl](https://firecrawl.dev/) is a powerful web scraping and content extraction API that integrates seamlessly into Agent Forge, enabling developers to extract clean, structured content from any website. This integration provides a simple way to transform web pages into usable data formats like Markdown and HTML while preserving the essential content.

With Firecrawl in Agent Forge, you can:

* **Extract clean content**: Remove ads, navigation elements, and other distractions to get just the main content
* **Convert to structured formats**: Transform web pages into Markdown, HTML, or JSON
* **Capture metadata**: Extract SEO metadata, Open Graph tags, and other page information
* **Handle JavaScript-heavy sites**: Process content from modern web applications that rely on JavaScript
* **Filter content**: Focus on specific parts of a page using CSS selectors
* **Process at scale**: Handle high-volume scraping needs with a reliable API
* **Search the web**: Perform intelligent web searches and retrieve structured results
* **Crawl entire sites**: Crawl multiple pages from a website and aggregate their content

In Agent Forge, the Firecrawl integration enables your agents to access and process web content programmatically as part of their workflows. Supported operations include:

* **Scrape**: Extract structured content (Markdown, HTML, metadata) from a single web page.
* **Search**: Search the web for information using Firecrawl's intelligent search capabilities.
* **Crawl**: Crawl multiple pages from a website, returning structured content and metadata for each page.

This allows your agents to gather information from websites, extract structured data, and use that information to make decisions or generate insights—all without having to navigate the complexities of raw HTML parsing or browser automation. Simply configure the Firecrawl block with your API key, select the operation (Scrape, Search, or Crawl), and provide the relevant parameters. Your agents can immediately begin working with web content in a clean, structured format.

## Usage Instructions

Extract content from any website with advanced web scraping or search the web for information. Retrieve clean, structured data from web pages with options to focus on main content, or intelligently search for information across the web.

## Tools

{% tabs %}
{% tab title="firecrawl\_scrape" %}
Extract structured content from web pages with comprehensive metadata support. Converts content to markdown or HTML while capturing SEO metadata, Open Graph tags, and page information.

#### Input

| Parameter       | Type   | Required | Description                    |
| --------------- | ------ | -------- | ------------------------------ |
| `url`           | string | Yes      | The URL to scrape content from |
| `scrapeOptions` | json   | No       | Options for content scraping   |
| `apiKey`        | string | Yes      | Firecrawl API key              |

#### Output

| Parameter     | Type   | Description           |
| ------------- | ------ | --------------------- |
| `markdown`    | string | Page content markdown |
| `html`        | any    | Raw HTML content      |
| `metadata`    | json   | Page metadata         |
| `data`        | json   | Search results data   |
| `warning`     | any    | Warning messages      |
| `pages`       | json   | Crawled pages data    |
| `total`       | number | Total pages found     |
| `creditsUsed` | number | Credits consumed      |
| {% endtab %}  |        |                       |

{% tab title="firecrawl\_search" %}
Search for information on the web using Firecrawl

#### Input

| Parameter | Type   | Required | Description             |
| --------- | ------ | -------- | ----------------------- |
| `query`   | string | Yes      | The search query to use |
| `apiKey`  | string | Yes      | Firecrawl API key       |

#### Output

| Parameter     | Type   | Description           |
| ------------- | ------ | --------------------- |
| `markdown`    | string | Page content markdown |
| `html`        | any    | Raw HTML content      |
| `metadata`    | json   | Page metadata         |
| `data`        | json   | Search results data   |
| `warning`     | any    | Warning messages      |
| `pages`       | json   | Crawled pages data    |
| `total`       | number | Total pages found     |
| `creditsUsed` | number | Credits consumed      |
| {% endtab %}  |        |                       |

{% tab title="firecrawl\_crawl" %}
Crawl entire websites and extract structured content from all accessible pages

#### Input

| Parameter         | Type    | Required | Description                                     |
| ----------------- | ------- | -------- | ----------------------------------------------- |
| `url`             | string  | Yes      | The website URL to crawl                        |
| `limit`           | number  | No       | Maximum number of pages to crawl (default: 100) |
| `onlyMainContent` | boolean | No       | Extract only main content from pages            |
| `apiKey`          | string  | Yes      | Firecrawl API Key                               |

#### Output

| Parameter     | Type   | Description           |
| ------------- | ------ | --------------------- |
| `markdown`    | string | Page content markdown |
| `html`        | any    | Raw HTML content      |
| `metadata`    | json   | Page metadata         |
| `data`        | json   | Search results data   |
| `warning`     | any    | Warning messages      |
| `pages`       | json   | Crawled pages data    |
| `total`       | number | Total pages found     |
| `creditsUsed` | number | Credits consumed      |
| {% endtab %}  |        |                       |
| {% endtabs %} |        |                       |

## Notes

* Category: `tools`
* Type: `firecrawl`


# github

[GitHub](https://github.com/) is the world’s leading code hosting platform that enables collaboration, version control, and automation for developers and teams.

With GitHub, you can:

* **Host repositories** — Store public or private code with Git versioning.
* **Manage pull requests** — Review and merge contributions efficiently.
* **Track issues and discussions** — Organize bugs, feature requests, and tasks.
* **Automate workflows** — Use GitHub Actions for CI/CD and task automation.
* **Collaborate securely** — Manage permissions, reviews, and API access for teams.

In Agent Forge, the GitHub integration allows your agents to interact directly with repositories — fetching commits, posting PR comments, retrieving repo metadata, and automating reviews.\
This bridges your AI workflows with your software projects for seamless collaboration.

### How to Get a GitHub Personal Access Token (PAT Classic)

Follow these steps to generate a **Personal Access Token (Classic)** which grants your agent access to the GitHub API:

{% stepper %}
{% step %}

#### Go to GitHub Settings

1. Log in to your [GitHub account](https://github.com/).
2. In the top-right corner, click your **profile icon → Settings**.
   {% endstep %}

{% step %}

#### Open Developer Settings

1. In the left sidebar, scroll down and click **Developer settings**.
2. Then select **Personal access tokens → Tokens (classic)**.
   {% endstep %}

{% step %}

#### Generate a New Token

1. Click **Generate new token → Generate new token (classic)**.
2. Enter a **token name** (e.g., *Agent Forge Integration*).
3. (Optional) Set an **expiration** — “No expiration” is fine for local setups, but you can choose a shorter duration for security.
4. Select **Scopes** (permissions). Common scopes include:
   * `repo` — full control of private repositories
   * `read:user` — read profile information
   * `user:email` — access verified email address
   * `workflow` — manage GitHub Actions workflows
     {% endstep %}

{% step %}

#### Generate and Save Your Token

1. Click **Generate token** at the bottom.
2. **Copy your token immediately** — you won’t see it again!\
   Example: `ghp_aBcD1234EfGhI567*******************`
3. Store it in a secure location (e.g., `.env` file, secret manager).
   {% endstep %}

{% step %}

#### Use in Agent Forge or API Calls

Paste your token into the `apiKey` or `apiToken` field when configuring GitHub tool blocks.

> **Security Tip:** Never share your PAT publicly or commit it to your repo. Treat it like a password.
> {% endstep %}
> {% endstepper %}

### Usage Instructions

The GitHub tools in Agent Forge let your agents:

* Fetch pull request data (titles, diffs, and commits)
* Comment on open PRs
* Retrieve repository metadata and statistics
* Get the latest commits across branches

### Tools

#### `github_pr`

Fetch pull request details (including diffs and files changed).

**Input**

| Parameter    | Type   | Required | Description                |
| ------------ | ------ | -------- | -------------------------- |
| `owner`      | string | Yes      | Repository owner           |
| `repo`       | string | Yes      | Repository name            |
| `pullNumber` | number | Yes      | Pull request number        |
| `apiKey`     | string | Yes      | GitHub PAT (classic) token |

**Output**

| Parameter  | Type   | Description       |
| ---------- | ------ | ----------------- |
| `content`  | string | Response content  |
| `metadata` | json   | Response metadata |

#### `github_comment`

Post comments on pull requests.

**Input**

| Parameter    | Type   | Required | Description                |
| ------------ | ------ | -------- | -------------------------- |
| `owner`      | string | Yes      | Repository owner           |
| `repo`       | string | Yes      | Repository name            |
| `pullNumber` | number | Yes      | PR number                  |
| `body`       | string | Yes      | Comment content            |
| `apiKey`     | string | Yes      | GitHub PAT (classic) token |

**Output**

| Parameter  | Type   | Description       |
| ---------- | ------ | ----------------- |
| `content`  | string | Response content  |
| `metadata` | json   | Response metadata |

#### `github_repo_info`

Retrieve repository metadata — stars, forks, language, and more.

**Input**

| Parameter | Type   | Required | Description                |
| --------- | ------ | -------- | -------------------------- |
| `owner`   | string | Yes      | Repository owner           |
| `repo`    | string | Yes      | Repository name            |
| `apiKey`  | string | Yes      | GitHub PAT (classic) token |

**Output**

| Parameter  | Type   | Description       |
| ---------- | ------ | ----------------- |
| `content`  | string | Repository data   |
| `metadata` | json   | Response metadata |

#### `github_latest_commit`

Get the latest commit details for a branch.

**Input**

| Parameter | Type   | Required | Description                    |
| --------- | ------ | -------- | ------------------------------ |
| `owner`   | string | Yes      | Repository owner               |
| `repo`    | string | Yes      | Repository name                |
| `branch`  | string | No       | Branch name (defaults to main) |
| `apiKey`  | string | Yes      | GitHub PAT (classic) token     |

**Output**

| Parameter  | Type   | Description       |
| ---------- | ------ | ----------------- |
| `content`  | string | Commit details    |
| `metadata` | json   | Response metadata |

### Notes

* **Category:** `tools`
* **Type:** `github`
* Works with **Personal Access Token (Classic)** or **fine-grained PATs** if configured properly.
* Requires `repo` scope for private repositories and `read:user` for profile queries.
* You can manage and revoke tokens anytime under **Settings → Developer Settings → Personal Access Tokens (classic)**.


# gmail

[Gmail](https://gmail.com/) is Google's popular email service that provides a robust platform for sending, receiving, and managing email communications. With over 1.8 billion active users worldwide, Gmail offers a feature-rich experience with powerful search capabilities, organizational tools, and integration options.

With Gmail, you can:

* **Send and receive emails**: Communicate with contacts through a clean, intuitive interface
* **Organize messages**: Use labels, folders, and filters to keep your inbox organized
* **Search efficiently**: Find specific messages quickly with Google's powerful search technology
* **Automate workflows**: Create filters and rules to automatically process incoming emails
* **Access from anywhere**: Use Gmail across devices with synchronized content and settings
* **Integrate with other services**: Connect with Google Calendar, Drive, and other productivity tools

In Agent Forge, the Gmail integration enables your agents to send, read, and search emails programmatically. This allows for powerful automation scenarios such as sending notifications, processing incoming messages, extracting information from emails, and managing communication workflows. Your agents can compose and send personalized emails, search for specific messages using Gmail's query syntax, and extract content from emails to use in other parts of your workflow. Coming soon, agents will also be able to listen for new emails in real-time, enabling responsive workflows that can trigger actions based on incoming messages. This integration bridges the gap between your AI workflows and email communications, enabling seamless interaction with one of the world's most widely used communication platforms.

### Usage Instructions

Integrate Gmail functionality to send email messages within your workflow. Automate email communications and process email content using OAuth authentication.

### Tools

#### `gmail_send`

Send emails using Gmail

**Input**

| Parameter     | Type   | Required | Description                |
| ------------- | ------ | -------- | -------------------------- |
| `accessToken` | string | Yes      | Access token for Gmail API |
| `to`          | string | Yes      | Recipient email address    |
| `subject`     | string | Yes      | Email subject              |
| `body`        | string | Yes      | Email body content         |

**Output**

| Parameter  | Type   | Description      |
| ---------- | ------ | ---------------- |
| `content`  | string | Response content |
| `metadata` | json   | Email metadata   |

#### `gmail_draft`

Draft emails using Gmail

**Input**

| Parameter     | Type   | Required | Description                |
| ------------- | ------ | -------- | -------------------------- |
| `accessToken` | string | Yes      | Access token for Gmail API |
| `to`          | string | Yes      | Recipient email address    |
| `subject`     | string | Yes      | Email subject              |
| `body`        | string | Yes      | Email body content         |

**Output**

| Parameter  | Type   | Description      |
| ---------- | ------ | ---------------- |
| `content`  | string | Response content |
| `metadata` | json   | Email metadata   |

#### `gmail_read`

Read emails from Gmail

**Input**

| Parameter     | Type    | Required | Description                                                  |
| ------------- | ------- | -------- | ------------------------------------------------------------ |
| `accessToken` | string  | Yes      | Access token for Gmail API                                   |
| `messageId`   | string  | No       | ID of the message to read                                    |
| `folder`      | string  | No       | Folder/label to read emails from                             |
| `unreadOnly`  | boolean | No       | Only retrieve unread messages                                |
| `maxResults`  | number  | No       | Maximum number of messages to retrieve (default: 1, max: 10) |

**Output**

| Parameter  | Type   | Description      |
| ---------- | ------ | ---------------- |
| `content`  | string | Response content |
| `metadata` | json   | Email metadata   |

#### `gmail_search`

Search emails in Gmail

**Input**

| Parameter     | Type   | Required | Description                         |
| ------------- | ------ | -------- | ----------------------------------- |
| `accessToken` | string | Yes      | Access token for Gmail API          |
| `query`       | string | Yes      | Search query for emails             |
| `maxResults`  | number | No       | Maximum number of results to return |

**Output**

| Parameter  | Type   | Description      |
| ---------- | ------ | ---------------- |
| `content`  | string | Response content |
| `metadata` | json   | Email metadata   |

### Notes

* Category: `tools`
* Type: `gmail`


# google\_docs

[Google Docs](https://docs.google.com/) is a powerful cloud-based document creation and editing service that allows users to create, edit, and collaborate on documents in real-time. As part of Google's productivity suite, Google Docs offers a versatile platform for text documents with robust formatting, commenting, and sharing capabilities.

With Google Docs, you can:

* **Create and edit documents**: Develop text documents with comprehensive formatting options
* **Collaborate in real-time**: Work simultaneously with multiple users on the same document
* **Track changes**: View revision history and restore previous versions
* **Comment and suggest**: Provide feedback and propose edits without changing the original content
* **Access anywhere**: Use Google Docs across devices with automatic cloud synchronization
* **Work offline**: Continue working without internet connection with changes syncing when back online
* **Integrate with other services**: Connect with Google Drive, Sheets, Slides, and third-party applications

In Agent Forge, the Google Docs integration enables your agents to interact directly with document content programmatically. This allows for powerful automation scenarios such as document creation, content extraction, collaborative editing, and document management. Your agents can read existing documents to extract information, write to documents to update content, and create new documents from scratch. This integration bridges the gap between your AI workflows and document management, enabling seamless interaction with one of the world's most widely used document platforms. By connecting Agent Forge with Google Docs, you can automate document workflows, generate reports, extract insights from documents, and maintain documentation - all through your intelligent agents.

## Usage Instructions

Integrate Google Docs functionality to manage documents. Read content from existing documents, write to documents, and create new documents using OAuth authentication. Supports text content manipulation for document creation and editing.

## Tools

### `google_docs_read`

Read content from a Google Docs document

#### Input

| Parameter     | Type   | Required | Description                              |
| ------------- | ------ | -------- | ---------------------------------------- |
| `accessToken` | string | Yes      | The access token for the Google Docs API |
| `documentId`  | string | Yes      | The ID of the document to read           |

#### Output

| Parameter        | Type    | Description           |
| ---------------- | ------- | --------------------- |
| `content`        | string  | Document content      |
| `metadata`       | json    | Document metadata     |
| `updatedContent` | boolean | Content update status |

### `google_docs_write`

Write or update content in a Google Docs document

#### Input

| Parameter     | Type   | Required | Description                              |
| ------------- | ------ | -------- | ---------------------------------------- |
| `accessToken` | string | Yes      | The access token for the Google Docs API |
| `documentId`  | string | Yes      | The ID of the document to write to       |
| `content`     | string | Yes      | The content to write to the document     |

#### Output

| Parameter        | Type    | Description           |
| ---------------- | ------- | --------------------- |
| `content`        | string  | Document content      |
| `metadata`       | json    | Document metadata     |
| `updatedContent` | boolean | Content update status |

### `google_docs_create`

Create a new Google Docs document

#### Input

| Parameter        | Type   | Required | Description                                                   |
| ---------------- | ------ | -------- | ------------------------------------------------------------- |
| `accessToken`    | string | Yes      | The access token for the Google Docs API                      |
| `title`          | string | Yes      | The title of the document to create                           |
| `content`        | string | No       | The content of the document to create                         |
| `folderSelector` | string | No       | Select the folder to create the document in                   |
| `folderId`       | string | No       | The ID of the folder to create the document in (internal use) |

#### Output

| Parameter        | Type    | Description           |
| ---------------- | ------- | --------------------- |
| `content`        | string  | Document content      |
| `metadata`       | json    | Document metadata     |
| `updatedContent` | boolean | Content update status |

## Notes

* Category: `tools`
* Type: `google_docs`


# google\_drive

[Google Drive](https://drive.google.com/) is Google's cloud storage and file synchronization service that allows users to store files, synchronize files across devices, and share files with others. As a core component of Google's productivity ecosystem, Google Drive offers robust storage, organization, and collaboration capabilities.

With Google Drive, you can:

* **Store files in the cloud**: Upload and access your files from anywhere with internet access
* **Organize content**: Create folders, use color coding, and implement naming conventions
* **Share and collaborate**: Control access permissions and work simultaneously on files
* **Search efficiently**: Find files quickly with Google's powerful search technology
* **Access across devices**: Use Google Drive on desktop, mobile, and web platforms
* **Integrate with other services**: Connect with Google Docs, Sheets, Slides, and third-party applications

In Agent Forge, the Google Drive integration enables your agents to interact directly with your cloud storage programmatically. This allows for powerful automation scenarios such as file management, content organization, and document workflows. Your agents can upload new files to specific folders, download existing files to process their contents, and list folder contents to navigate your storage structure. This integration bridges the gap between your AI workflows and your document management system, enabling seamless file operations without manual intervention. By connecting Agent Forge with Google Drive, you can automate file-based workflows, manage documents intelligently, and incorporate cloud storage operations into your agent's capabilities.

## Usage Instructions

Integrate Google Drive functionality to manage files and folders. Upload new files, get content from existing files, create new folders, and list contents of folders using OAuth authentication. Supports file operations with custom MIME types and folder organization.

## Tools

### `google_drive_upload`

Upload a file to Google Drive

#### Input

| Parameter        | Type   | Required | Description                                               |
| ---------------- | ------ | -------- | --------------------------------------------------------- |
| `accessToken`    | string | Yes      | The access token for the Google Drive API                 |
| `fileName`       | string | Yes      | The name of the file to upload                            |
| `content`        | string | Yes      | The content of the file to upload                         |
| `mimeType`       | string | No       | The MIME type of the file to upload                       |
| `folderSelector` | string | No       | Select the folder to upload the file to                   |
| `folderId`       | string | No       | The ID of the folder to upload the file to (internal use) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file`    | json | File data   |
| `files`   | json | Files list  |

### `google_drive_create_folder`

Create a new folder in Google Drive

#### Input

| Parameter        | Type   | Required | Description                                      |
| ---------------- | ------ | -------- | ------------------------------------------------ |
| `accessToken`    | string | Yes      | The access token for the Google Drive API        |
| `fileName`       | string | Yes      | Name of the folder to create                     |
| `folderSelector` | string | No       | Select the parent folder to create the folder in |
| `folderId`       | string | No       | ID of the parent folder (internal use)           |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file`    | json | File data   |
| `files`   | json | Files list  |

### `google_drive_list`

List files and folders in Google Drive

#### Input

| Parameter        | Type   | Required | Description                                            |
| ---------------- | ------ | -------- | ------------------------------------------------------ |
| `accessToken`    | string | Yes      | The access token for the Google Drive API              |
| `folderSelector` | string | No       | Select the folder to list files from                   |
| `folderId`       | string | No       | The ID of the folder to list files from (internal use) |
| `query`          | string | No       | A query to filter the files                            |
| `pageSize`       | number | No       | The number of files to return                          |
| `pageToken`      | string | No       | The page token to use for pagination                   |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file`    | json | File data   |
| `files`   | json | Files list  |

## Notes

* Category: `tools`
* Type: `google_drive`


# google\_calendar

[Google Calendar](https://calendar.google.com/) is Google’s industry-leading scheduling service that simplifies event management, meeting coordination, and task planning. Integrated across the Google ecosystem, it enables users to create, manage, and share events effortlessly.

With Google Calendar, you can:

* **Create and manage events** — Schedule meetings, reminders, and appointments.
* **Send invites** — Automatically notify participants via email or calendar updates.
* **Use natural language** — Quickly create events like *“Team sync tomorrow at 3 PM”*.
* **Manage multiple calendars** — Organize events across different calendars.
* **View and search events** — Quickly locate scheduled activities with advanced filters.

In Agent Forge, the Google Calendar integration allows agents to automate scheduling: creating and retrieving events, inviting attendees, and managing schedules programmatically.\
This makes it ideal for AI-driven workflows such as automated meeting scheduling, task coordination, and availability tracking.

## Setup Instructions

To use Google Calendar tools, you’ll need:

1. A **Google account** with Calendar access.
2. A valid **OAuth access token** for the Google Calendar API (see your integration setup in Agent Forge).
3. The correct **calendar permissions** — if your email lacks edit access to a calendar, event creation may fail.

{% hint style="info" %}
**Note:**\
Sometimes, you may encounter an error when creating or editing events — especially if your Google account does not have permission to modify that specific calendar.\
Ensure that:

* The authenticated account owns or has “Make changes to events” permission for the target calendar.
* The calendar is not read-only (e.g., shared with “View only” access).
* The OAuth token was generated for the correct user.
  {% endhint %}

## Usage Instructions

Once configured, the integration supports:

* Creating and modifying events.
* Listing upcoming or past events.
* Retrieving event details.
* Sending or updating invitations automatically.

Email invitations are sent asynchronously and depend on both the recipient’s Calendar settings and your account’s permissions.

## Tools

### `google_calendar_create`

Create a new event in Google Calendar.

#### Input

| Parameter       | Type   | Required | Description                                                      |
| --------------- | ------ | -------- | ---------------------------------------------------------------- |
| `accessToken`   | string | Yes      | OAuth token for Google Calendar API                              |
| `calendarId`    | string | No       | Calendar ID (defaults to `primary`)                              |
| `summary`       | string | Yes      | Event title                                                      |
| `description`   | string | No       | Event description                                                |
| `location`      | string | No       | Event location                                                   |
| `startDateTime` | string | Yes      | Start time in RFC3339 format (e.g., `2025-06-03T10:00:00-08:00`) |
| `endDateTime`   | string | Yes      | End time in RFC3339 format                                       |
| `timeZone`      | string | No       | Time zone (e.g., `America/Los_Angeles`)                          |
| `attendees`     | array  | No       | Array of attendee email addresses                                |
| `sendUpdates`   | string | No       | How to send updates (`all`, `externalOnly`, or `none`)           |

#### Output

| Parameter  | Type   | Description                |
| ---------- | ------ | -------------------------- |
| `content`  | string | Operation response content |
| `metadata` | json   | Event metadata             |

### `google_calendar_list`

List events from a Google Calendar.

#### Input

| Parameter     | Type    | Required | Description                         |
| ------------- | ------- | -------- | ----------------------------------- |
| `accessToken` | string  | Yes      | OAuth token                         |
| `calendarId`  | string  | No       | Calendar ID (defaults to `primary`) |
| `timeMin`     | string  | No       | Start boundary (RFC3339 timestamp)  |
| `timeMax`     | string  | No       | End boundary (RFC3339 timestamp)    |
| `orderBy`     | string  | No       | Sort order (`startTime`, `updated`) |
| `showDeleted` | boolean | No       | Include deleted events              |

#### Output

| Parameter  | Type   | Description                |
| ---------- | ------ | -------------------------- |
| `content`  | string | Operation response content |
| `metadata` | json   | Event metadata             |

#### Screenshot

### `google_calendar_get`

Retrieve details of a specific event.

#### Input

| Parameter     | Type   | Required | Description                         |
| ------------- | ------ | -------- | ----------------------------------- |
| `accessToken` | string | Yes      | OAuth token                         |
| `calendarId`  | string | No       | Calendar ID (defaults to `primary`) |
| `eventId`     | string | Yes      | ID of the event                     |

#### Output

| Parameter  | Type   | Description    |
| ---------- | ------ | -------------- |
| `content`  | string | Event data     |
| `metadata` | json   | Event metadata |

#### Screenshot

### `google_calendar_quick_add`

Create events using natural language text.

#### Input

| Parameter     | Type   | Required | Description                                        |
| ------------- | ------ | -------- | -------------------------------------------------- |
| `accessToken` | string | Yes      | OAuth token                                        |
| `calendarId`  | string | No       | Calendar ID (defaults to `primary`)                |
| `text`        | string | Yes      | Text such as “Lunch with Sarah at noon tomorrow”   |
| `attendees`   | array  | No       | Array or comma-separated string of attendee emails |
| `sendUpdates` | string | No       | Update mode (`all`, `externalOnly`, or `none`)     |

#### Output

| Parameter  | Type   | Description            |
| ---------- | ------ | ---------------------- |
| `content`  | string | Response text          |
| `metadata` | json   | Created event metadata |

#### Screenshot

### `google_calendar_invite`

Add or update attendees for an existing event.

#### Input

| Parameter         | Type    | Required | Description                                    |
| ----------------- | ------- | -------- | ---------------------------------------------- |
| `accessToken`     | string  | Yes      | OAuth token                                    |
| `calendarId`      | string  | No       | Calendar ID (defaults to `primary`)            |
| `eventId`         | string  | Yes      | Event ID                                       |
| `attendees`       | array   | Yes      | Array of emails to invite                      |
| `sendUpdates`     | string  | No       | Update mode (`all`, `externalOnly`, or `none`) |
| `replaceExisting` | boolean | No       | Replace existing attendees (default `false`)   |

#### Output

| Parameter  | Type   | Description                |
| ---------- | ------ | -------------------------- |
| `content`  | string | Operation response content |
| `metadata` | json   | Updated event metadata     |

{% hint style="warning" %}
**Tip:**\
If event creation fails with a `403` or “Insufficient permissions” error, check whether:

* You are authenticated with the correct Google account.
* The calendar belongs to a shared workspace or organization requiring elevated access.
* The target calendar allows programmatic edits via API.
  {% endhint %}

## Notes

* **Category:** `tools`
* **Type:** `google_calendar`
* Requires OAuth access with appropriate scopes (`https://www.googleapis.com/auth/calendar`).
* Event creation or editing might fail if your account does not have sufficient calendar permissions.


# google\_maps

[Google Maps Platform](https://developers.google.com/maps/documentation) provides APIs for geocoding, place search, place details, and route directions.

In Agent Forge, the Google Maps integration allows agents to turn addresses into coordinates, reverse geocode coordinates, look up places, search nearby businesses, run text searches, and retrieve directions. This is useful for location-aware assistants, field operations, travel workflows, logistics, lead enrichment, and local search automation.

## Usage Instructions

Provide a Google Maps API key, select the operation, and fill in the required location, place, query, or route fields. Different operations expose different required inputs.

## Tools

### `google_maps_geocode`

Convert a street address into geographic coordinates.

### `google_maps_reverse_geocode`

Convert latitude and longitude into address information.

### `google_maps_place_details`

Retrieve details for a known Google Place ID.

### `google_maps_nearby_search`

Search for places near a coordinate within a specified radius.

### `google_maps_text_search`

Search for places using a natural language query.

### `google_maps_directions`

Retrieve route directions between an origin and destination.

## Input

| Parameter     | Type   | Required                              | Description                                                 |
| ------------- | ------ | ------------------------------------- | ----------------------------------------------------------- |
| `apiKey`      | string | Yes                                   | Google Maps API key                                         |
| `address`     | string | For geocoding                         | Street address                                              |
| `lat`         | string | For reverse geocode and nearby search | Latitude                                                    |
| `lng`         | string | For reverse geocode and nearby search | Longitude                                                   |
| `placeId`     | string | For place details                     | Google Place ID                                             |
| `fields`      | string | No                                    | Comma-separated place detail fields                         |
| `radius`      | number | For nearby search                     | Search radius in meters                                     |
| `keyword`     | string | No                                    | Nearby search keyword                                       |
| `type`        | string | No                                    | Nearby search place type                                    |
| `query`       | string | For text search                       | Text search query                                           |
| `origin`      | string | For directions                        | Route origin                                                |
| `destination` | string | For directions                        | Route destination                                           |
| `mode`        | string | No                                    | Travel mode such as driving, walking, bicycling, or transit |

## Output

| Parameter      | Type   | Description               |
| -------------- | ------ | ------------------------- |
| `data`         | json   | Google Maps response data |
| `status`       | string | Google Maps status        |
| `errorMessage` | string | Google Maps error message |

## Notes

* Category: `tools`
* Type: `google_maps`


# google\_search

[Google Search](https://www.google.com/) is the world’s most widely used search engine. This block lets your agents fetch live results via Google’s Custom Search JSON API (often called the Google Search API) and use them inside workflows for research, fact-checking, and data gathering.

### Setup (one-time)

Follow these steps to get a **Search Engine ID (`searchEngineId` / `cx`)** and an **API key**:

{% stepper %}
{% step %}

#### Create a Programmable Search Engine (CSE)

1. Open **Programmable Search Engine**: [programmablesearchengine.google.com/about](https://programmablesearchengine.google.com/about/)
2. Click **Get started** → create a new search engine.
3. Choose what to search:
   * **Entire web** (recommended for broad queries), or
   * **Specific sites** (restrict to one or more domains).
4. After creating, go to your CSE **Control Panel** → copy the **Search engine ID** (also shown as **cx**).\
   You’ll pass this as `searchEngineId` to the tool.
   {% endstep %}

{% step %}

#### Enable the Google Search API

1. In your Google Cloud project, enable **Custom Search JSON API** (sometimes listed as **google\_search\_api** or **Custom Search API**).
2. Ensure **Billing** is enabled on the project (Google may require billing for sustained usage or higher quotas).
   {% endstep %}

{% step %}

#### Create an API Key (Google Cloud)

1. In the same Google Cloud project (you can reuse a project you already use for **BigQuery**):
   * Go to **APIs & Services → Credentials**.
   * Click **Create credentials → API key**.
2. Copy the generated **API key** and store it securely.
3. (Optional but recommended) **Restrict** the key:
   * **API restrictions:** limit to the **Custom Search API**.
   * **Application restrictions:** HTTP referrers or IPs as appropriate.
     {% endstep %}
     {% endstepper %}

### Usage Instructions

This tool queries Google via the **Custom Search JSON API**. You’ll provide:

* `query` — the search text
* `searchEngineId` — your CSE ID (cx)
* `apiKey` — your Google API key
* `num` — number of results (1–10, default 10)

### Tools

#### `google_search`

Search the web with the Custom Search API.

**Input**

| Parameter        | Type   | Required | Description                                        |
| ---------------- | ------ | -------- | -------------------------------------------------- |
| `query`          | string | Yes      | The search query to execute                        |
| `searchEngineId` | string | Yes      | Your CSE ID (aka `cx`)                             |
| `num`            | string | No       | Number of results to return (default: 10, max: 10) |
| `apiKey`         | string | Yes      | Google API key                                     |

**Output**

| Parameter           | Type | Description         |
| ------------------- | ---- | ------------------- |
| `items`             | json | Search result items |
| `searchInformation` | json | Search metadata     |

### Troubleshooting

* **403 / Daily limit exceeded**\
  You’ve hit your free quota or billing isn’t enabled. Enable billing or raise quota in your Cloud project.
* **400 / Invalid `cx` or `key`**\
  Verify your **Search engine ID** and **API key**; ensure the key is restricted to the correct API.
* **Empty results with broad queries**\
  Check your CSE settings: if restricted to specific sites, switch to **Search the entire web** or add more sites.
* **`num` > 10 ignored**\
  The API caps each call at 10 results; paginate if you need more.
* **Referrer/IP restrictions blocking calls**\
  If you restricted the key, confirm your requests match the allowed referrers or IP addresses.

### Notes

* **Category:** `tools`
* **Type:** `google_search`
* Uses Google’s **Custom Search JSON API** behind the scenes.
* Requires a **Programmable Search Engine (CSE)** and an **API key** created in your Google Cloud project (a project that also hosts **BigQuery** is fine).


# google\_slides

[Google Slides](https://slides.google.com/) is a dynamic cloud-based presentation application that allows users to create, edit, collaborate on, and present slideshows in real-time. As part of Google's productivity suite, Google Slides offers a flexible platform for designing engaging presentations, collaborating with others, and sharing content seamlessly through the cloud.

Learn how to integrate the Google Slides tools in Agent Forge to effortlessly manage presentations as part of your automated workflows. With Agent Forge, you can read, write, create, and update Google Slides presentations directly through your agents and automated processes, making it easy to deliver up-to-date information, generate custom reports, or produce branded decks programmatically.

With Google Slides, you can:

* **Create and edit presentations**: Design visually appealing slides with themes, layouts, and multimedia content
* **Collaborate in real-time**: Work simultaneously with teammates, comment, assign tasks, and receive live feedback on presentations
* **Present anywhere**: Display presentations online or offline, share links, or publish to the web
* **Add images and rich content**: Insert images, graphics, charts, and videos to make your presentations engaging
* **Integrate with other services**: Connect seamlessly with Google Drive, Docs, Sheets, and other third-party tools
* **Access from any device**: Use Google Slides on desktops, laptops, tablets, and mobile devices for maximum flexibility

In Agent Forge, the Google Slides integration enables your agents to interact directly with presentation files programmatically. Automate tasks like reading slide content, inserting new slides or images, replacing text throughout a deck, generating new presentations, and retrieving slide thumbnails. This empowers you to scale content creation, keep presentations up-to-date, and embed them into automated document workflows. By connecting Agent Forge with Google Slides, you facilitate AI-driven presentation management—making it easy to generate, update, or extract information from presentations without manual effort.

## Usage Instructions

Integrate Google Slides into the workflow. Can read, write, create presentations, replace text, add slides, add images, and get thumbnails.

## Tools

### `google_slides_read`

Read content from a Google Slides presentation

#### Input

| Parameter        | Type   | Required | Description                        |
| ---------------- | ------ | -------- | ---------------------------------- |
| `presentationId` | string | Yes      | The ID of the presentation to read |

#### Output

| Parameter  | Type | Description                                        |
| ---------- | ---- | -------------------------------------------------- |
| `slides`   | json | Array of slides with their content                 |
| `metadata` | json | Presentation metadata including ID, title, and URL |

### `google_slides_write`

Write or update content in a Google Slides presentation

#### Input

| Parameter        | Type   | Required | Description                                                  |
| ---------------- | ------ | -------- | ------------------------------------------------------------ |
| `presentationId` | string | Yes      | The ID of the presentation to write to                       |
| `content`        | string | Yes      | The content to write to the slide                            |
| `slideIndex`     | number | No       | The index of the slide to write to (defaults to first slide) |

#### Output

| Parameter        | Type    | Description                                                |
| ---------------- | ------- | ---------------------------------------------------------- |
| `updatedContent` | boolean | Indicates if presentation content was updated successfully |
| `metadata`       | json    | Updated presentation metadata including ID, title, and URL |

### `google_slides_create`

Create a new Google Slides presentation

#### Input

| Parameter        | Type   | Required | Description                                                       |
| ---------------- | ------ | -------- | ----------------------------------------------------------------- |
| `title`          | string | Yes      | The title of the presentation to create                           |
| `content`        | string | No       | The content to add to the first slide                             |
| `folderSelector` | string | No       | Select the folder to create the presentation in                   |
| `folderId`       | string | No       | The ID of the folder to create the presentation in (internal use) |

#### Output

| Parameter  | Type | Description                                                |
| ---------- | ---- | ---------------------------------------------------------- |
| `metadata` | json | Created presentation metadata including ID, title, and URL |

### `google_slides_replace_all_text`

Find and replace all occurrences of text throughout a Google Slides presentation

#### Input

| Parameter        | Type    | Required | Description                                                                                                    |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| `presentationId` | string  | Yes      | The ID of the presentation                                                                                     |
| `findText`       | string  | Yes      | The text to find (e.g., `{{placeholder}}`)                                                                     |
| `replaceText`    | string  | Yes      | The text to replace with                                                                                       |
| `matchCase`      | boolean | No       | Whether the search should be case-sensitive (default: true)                                                    |
| `pageObjectIds`  | string  | No       | Comma-separated list of slide object IDs to limit replacements to specific slides (leave empty for all slides) |

#### Output

| Parameter            | Type   | Description                                          |
| -------------------- | ------ | ---------------------------------------------------- |
| `occurrencesChanged` | number | Number of text occurrences that were replaced        |
| `metadata`           | json   | Operation metadata including presentation ID and URL |

### `google_slides_add_slide`

Add a new slide to a Google Slides presentation with a specified layout

#### Input

| Parameter               | Type   | Required | Description                                                                                                                                                     |
| ----------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `presentationId`        | string | Yes      | The ID of the presentation                                                                                                                                      |
| `layout`                | string | No       | The predefined layout for the slide (BLANK, TITLE, TITLE\_AND\_BODY, TITLE\_ONLY, SECTION\_HEADER, etc.). Defaults to BLANK.                                    |
| `insertionIndex`        | number | No       | The optional zero-based index indicating where to insert the slide. If not specified, the slide is added at the end.                                            |
| `placeholderIdMappings` | string | No       | JSON array of placeholder mappings to assign custom object IDs to placeholders. Format: `[{"layoutPlaceholder":{"type":"TITLE"},"objectId":"custom_title_id"}]` |

#### Output

| Parameter  | Type   | Description                                                   |
| ---------- | ------ | ------------------------------------------------------------- |
| `slideId`  | string | The object ID of the newly created slide                      |
| `metadata` | json   | Operation metadata including presentation ID, layout, and URL |

### `google_slides_add_image`

Insert an image into a specific slide in a Google Slides presentation

#### Input

| Parameter        | Type   | Required | Description                                                                    |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| `presentationId` | string | Yes      | The ID of the presentation                                                     |
| `pageObjectId`   | string | Yes      | The object ID of the slide/page to add the image to                            |
| `imageUrl`       | string | Yes      | The publicly accessible URL of the image (must be PNG, JPEG, or GIF, max 50MB) |
| `width`          | number | No       | Width of the image in points (default: 300)                                    |
| `height`         | number | No       | Height of the image in points (default: 200)                                   |
| `positionX`      | number | No       | X position from the left edge in points (default: 100)                         |
| `positionY`      | number | No       | Y position from the top edge in points (default: 100)                          |

#### Output

| Parameter  | Type   | Description                                                |
| ---------- | ------ | ---------------------------------------------------------- |
| `imageId`  | string | The object ID of the newly created image                   |
| `metadata` | json   | Operation metadata including presentation ID and image URL |

### `google_slides_get_thumbnail`

Generate a thumbnail image of a specific slide in a Google Slides presentation

#### Input

| Parameter        | Type   | Required | Description                                                                                      |
| ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `presentationId` | string | Yes      | The ID of the presentation                                                                       |
| `pageObjectId`   | string | Yes      | The object ID of the slide/page to get a thumbnail for                                           |
| `thumbnailSize`  | string | No       | The size of the thumbnail: SMALL (200px), MEDIUM (800px), or LARGE (1600px). Defaults to MEDIUM. |
| `mimeType`       | string | No       | The MIME type of the thumbnail image: PNG or GIF. Defaults to PNG.                               |

#### Output

| Parameter    | Type   | Description                                                     |
| ------------ | ------ | --------------------------------------------------------------- |
| `contentUrl` | string | URL to the thumbnail image (valid for 30 minutes)               |
| `width`      | number | Width of the thumbnail in pixels                                |
| `height`     | number | Height of the thumbnail in pixels                               |
| `metadata`   | json   | Operation metadata including presentation ID and page object ID |

## Notes

* Category: `tools`
* Type: `google_slides`


# hubspot

[HubSpot](https://www.hubspot.com/) is a comprehensive CRM platform that provides a full suite of marketing, sales, and customer service tools to help businesses grow better. With its powerful automation capabilities and extensive API, HubSpot has become one of the world's leading CRM platforms, serving businesses of all sizes across industries.

HubSpot CRM offers a complete solution for managing customer relationships, from initial contact through to long-term customer success. The platform combines contact management, deal tracking, marketing automation, and customer service tools into a unified system that helps teams stay aligned and focused on customer success.

Key features of HubSpot CRM include:

* Contact & Company Management: Comprehensive database for storing and organizing customer and prospect information
* Deal Pipeline: Visual sales pipeline for tracking opportunities through customizable stages
* Marketing Events: Track and manage marketing campaigns and events with detailed attribution
* Ticket Management: Customer support ticketing system for tracking and resolving customer issues
* Quotes & Line Items: Create and manage sales quotes with detailed product line items
* User & Team Management: Organize teams, assign ownership, and track user activity across the platform

In Agent Forge, the HubSpot integration enables your AI agents to seamlessly interact with your CRM data and automate key business processes. This creates powerful opportunities for intelligent lead qualification, automated contact enrichment, deal management, customer support automation, and data synchronization across your tech stack. The integration allows agents to create, retrieve, update, and search across all major HubSpot objects, enabling sophisticated workflows that can respond to CRM events, maintain data quality, and ensure your team has the most up-to-date customer information. By connecting Agent Forge with HubSpot, you can build AI agents that automatically qualify leads, route support tickets, update deal stages based on customer interactions, generate quotes, and keep your CRM data synchronized with other business systems—ultimately increasing team productivity and improving customer experiences.

## Usage Instructions

Integrate HubSpot into your workflow. Manage contacts, companies, deals, tickets, and other CRM objects with powerful automation capabilities. Can be used in trigger mode to start workflows when contacts are created, deleted, or updated.

## Tools

### `hubspot_get_users`

Retrieve all users from HubSpot account

#### Input

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `limit`   | string | No       | Number of results to return (default: 100) |

#### Output

| Parameter  | Type    | Description                   |
| ---------- | ------- | ----------------------------- |
| `users`    | array   | Array of HubSpot user objects |
| `metadata` | object  | Operation metadata            |
| `success`  | boolean | Operation success status      |

### `hubspot_list_contacts`

Retrieve all contacts from HubSpot account with pagination support

#### Input

| Parameter      | Type   | Required | Description                                                                     |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------- |
| `limit`        | string | No       | Maximum number of results per page (max 100, default 100)                       |
| `after`        | string | No       | Pagination cursor for next page of results                                      |
| `properties`   | string | No       | Comma-separated list of properties to return (e.g., "email,firstname,lastname") |
| `associations` | string | No       | Comma-separated list of object types to retrieve associated IDs for             |

#### Output

| Parameter  | Type    | Description                      |
| ---------- | ------- | -------------------------------- |
| `contacts` | array   | Array of HubSpot contact objects |
| `paging`   | object  | Pagination information           |
| `metadata` | object  | Operation metadata               |
| `success`  | boolean | Operation success status         |

### `hubspot_get_contact`

Retrieve a single contact by ID or email from HubSpot

#### Input

| Parameter      | Type   | Required | Description                                                                            |
| -------------- | ------ | -------- | -------------------------------------------------------------------------------------- |
| `contactId`    | string | Yes      | The ID or email of the contact to retrieve                                             |
| `idProperty`   | string | No       | Property to use as unique identifier (e.g., "email"). If not specified, uses record ID |
| `properties`   | string | No       | Comma-separated list of properties to return                                           |
| `associations` | string | No       | Comma-separated list of object types to retrieve associated IDs for                    |

#### Output

| Parameter  | Type    | Description                            |
| ---------- | ------- | -------------------------------------- |
| `contact`  | object  | HubSpot contact object with properties |
| `metadata` | object  | Operation metadata                     |
| `success`  | boolean | Operation success status               |

### `hubspot_create_contact`

Create a new contact in HubSpot. Requires at least one of: email, firstname, or lastname

#### Input

| Parameter      | Type   | Required | Description                                                                                                                                                                          |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `properties`   | object | Yes      | Contact properties as JSON object. Must include at least one of: email, firstname, or lastname                                                                                       |
| `associations` | array  | No       | Array of associations to create with the contact (e.g., companies, deals). Each object should have "to" (with "id") and "types" (with "associationCategory" and "associationTypeId") |

#### Output

| Parameter  | Type    | Description                    |
| ---------- | ------- | ------------------------------ |
| `contact`  | object  | Created HubSpot contact object |
| `metadata` | object  | Operation metadata             |
| `success`  | boolean | Operation success status       |

### `hubspot_update_contact`

Update an existing contact in HubSpot by ID or email

#### Input

| Parameter    | Type   | Required | Description                                                                            |
| ------------ | ------ | -------- | -------------------------------------------------------------------------------------- |
| `contactId`  | string | Yes      | The ID or email of the contact to update                                               |
| `idProperty` | string | No       | Property to use as unique identifier (e.g., "email"). If not specified, uses record ID |
| `properties` | object | Yes      | Contact properties to update as JSON object                                            |

#### Output

| Parameter  | Type    | Description                    |
| ---------- | ------- | ------------------------------ |
| `contact`  | object  | Updated HubSpot contact object |
| `metadata` | object  | Operation metadata             |
| `success`  | boolean | Operation success status       |

### `hubspot_search_contacts`

Search for contacts in HubSpot using filters, sorting, and queries

#### Input

| Parameter      | Type   | Required | Description                                                                                |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `filterGroups` | array  | No       | Array of filter groups. Each group contains filters with propertyName, operator, and value |
| `sorts`        | array  | No       | Array of sort objects with propertyName and direction ("ASCENDING" or "DESCENDING")        |
| `query`        | string | No       | Search query string                                                                        |
| `properties`   | array  | No       | Array of property names to return                                                          |
| `limit`        | number | No       | Maximum number of results to return (max 100)                                              |
| `after`        | string | No       | Pagination cursor for next page                                                            |

#### Output

| Parameter  | Type    | Description                               |
| ---------- | ------- | ----------------------------------------- |
| `contacts` | array   | Array of matching HubSpot contact objects |
| `total`    | number  | Total number of matching contacts         |
| `paging`   | object  | Pagination information                    |
| `metadata` | object  | Operation metadata                        |
| `success`  | boolean | Operation success status                  |

### `hubspot_list_companies`

Retrieve all companies from HubSpot account with pagination support

#### Input

| Parameter      | Type   | Required | Description                                                         |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `limit`        | string | No       | Maximum number of results per page (max 100, default 100)           |
| `after`        | string | No       | Pagination cursor for next page of results                          |
| `properties`   | string | No       | Comma-separated list of properties to return                        |
| `associations` | string | No       | Comma-separated list of object types to retrieve associated IDs for |

#### Output

| Parameter   | Type    | Description                      |
| ----------- | ------- | -------------------------------- |
| `companies` | array   | Array of HubSpot company objects |
| `paging`    | object  | Pagination information           |
| `metadata`  | object  | Operation metadata               |
| `success`   | boolean | Operation success status         |

### `hubspot_get_company`

Retrieve a single company by ID or domain from HubSpot

#### Input

| Parameter      | Type   | Required | Description                                                                             |
| -------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `companyId`    | string | Yes      | The ID or domain of the company to retrieve                                             |
| `idProperty`   | string | No       | Property to use as unique identifier (e.g., "domain"). If not specified, uses record ID |
| `properties`   | string | No       | Comma-separated list of properties to return                                            |
| `associations` | string | No       | Comma-separated list of object types to retrieve associated IDs for                     |

#### Output

| Parameter  | Type    | Description                            |
| ---------- | ------- | -------------------------------------- |
| `company`  | object  | HubSpot company object with properties |
| `metadata` | object  | Operation metadata                     |
| `success`  | boolean | Operation success status               |

### `hubspot_create_company`

Create a new company in HubSpot

#### Input

| Parameter      | Type   | Required | Description                                                            |
| -------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `properties`   | object | Yes      | Company properties as JSON object (e.g., name, domain, city, industry) |
| `associations` | array  | No       | Array of associations to create with the company                       |

#### Output

| Parameter  | Type    | Description                    |
| ---------- | ------- | ------------------------------ |
| `company`  | object  | Created HubSpot company object |
| `metadata` | object  | Operation metadata             |
| `success`  | boolean | Operation success status       |

### `hubspot_update_company`

Update an existing company in HubSpot by ID or domain

#### Input

| Parameter    | Type   | Required | Description                                                                             |
| ------------ | ------ | -------- | --------------------------------------------------------------------------------------- |
| `companyId`  | string | Yes      | The ID or domain of the company to update                                               |
| `idProperty` | string | No       | Property to use as unique identifier (e.g., "domain"). If not specified, uses record ID |
| `properties` | object | Yes      | Company properties to update as JSON object                                             |

#### Output

| Parameter  | Type    | Description                    |
| ---------- | ------- | ------------------------------ |
| `company`  | object  | Updated HubSpot company object |
| `metadata` | object  | Operation metadata             |
| `success`  | boolean | Operation success status       |

### `hubspot_search_companies`

Search for companies in HubSpot using filters, sorting, and queries

#### Input

| Parameter      | Type   | Required | Description                                                                                |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `filterGroups` | array  | No       | Array of filter groups. Each group contains filters with propertyName, operator, and value |
| `sorts`        | array  | No       | Array of sort objects with propertyName and direction ("ASCENDING" or "DESCENDING")        |
| `query`        | string | No       | Search query string                                                                        |
| `properties`   | array  | No       | Array of property names to return                                                          |
| `limit`        | number | No       | Maximum number of results to return (max 100)                                              |
| `after`        | string | No       | Pagination cursor for next page                                                            |

#### Output

| Parameter   | Type    | Description                               |
| ----------- | ------- | ----------------------------------------- |
| `companies` | array   | Array of matching HubSpot company objects |
| `total`     | number  | Total number of matching companies        |
| `paging`    | object  | Pagination information                    |
| `metadata`  | object  | Operation metadata                        |
| `success`   | boolean | Operation success status                  |

### `hubspot_list_deals`

Retrieve all deals from HubSpot account with pagination support

#### Input

| Parameter      | Type   | Required | Description                                                         |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `limit`        | string | No       | Maximum number of results per page (max 100, default 100)           |
| `after`        | string | No       | Pagination cursor for next page of results                          |
| `properties`   | string | No       | Comma-separated list of properties to return                        |
| `associations` | string | No       | Comma-separated list of object types to retrieve associated IDs for |

#### Output

| Parameter  | Type    | Description                   |
| ---------- | ------- | ----------------------------- |
| `deals`    | array   | Array of HubSpot deal objects |
| `paging`   | object  | Pagination information        |
| `metadata` | object  | Operation metadata            |
| `success`  | boolean | Operation success status      |

## Notes

* Category: `tools`
* Type: `hubspot`


# grafana

[Grafana](https://grafana.com/) is a leading open-source platform for monitoring, observability, and visualization. It allows users to query, visualize, alert on, and analyze data from a variety of sources, making it an essential tool for infrastructure and application monitoring.

With Grafana, you can:

* **Visualize data**: Build and customize dashboards to display metrics, logs, and traces in real time
* **Monitor health and status**: Check the health of your Grafana instance and connected data sources
* **Manage alerts and annotations**: Set up alert rules, manage notifications, and annotate dashboards with important events
* **Organize content**: Organize dashboards and data sources into folders for better access management

In Agent Forge, the Grafana integration empowers your agents to interact directly with your Grafana instance via API, enabling actions such as:

* Checking the Grafana server, database, and data source health status
* Retrieving, listing, and managing dashboards, alert rules, annotations, data sources, and folders
* Automating the monitoring of your infrastructure by integrating Grafana data and alerts into your workflow automations

These capabilities enable Agent Forge agents to monitor systems, proactively respond to alerts, and help ensure the reliability and visibility of your services — all as part of your automated workflows.

### Usage Instructions

Integrate Grafana into workflows. Manage dashboards, alerts, annotations, data sources, folders, and monitor health status.

### Tools

#### `grafana_get_dashboard`

Get a dashboard by its UID

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `dashboardUid`   | string | Yes      | The UID of the dashboard to retrieve                    |

**Output**

| Parameter   | Type | Description                                     |
| ----------- | ---- | ----------------------------------------------- |
| `dashboard` | json | The full dashboard JSON object                  |
| `meta`      | json | Dashboard metadata (version, permissions, etc.) |

#### `grafana_list_dashboards`

Search and list all dashboards

**Input**

| Parameter        | Type    | Required | Description                                             |
| ---------------- | ------- | -------- | ------------------------------------------------------- |
| `apiKey`         | string  | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string  | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string  | No       | Organization ID for multi-org Grafana instances         |
| `query`          | string  | No       | Search query to filter dashboards by title              |
| `tag`            | string  | No       | Filter by tag (comma-separated for multiple tags)       |
| `folderIds`      | string  | No       | Filter by folder IDs (comma-separated)                  |
| `starred`        | boolean | No       | Only return starred dashboards                          |
| `limit`          | number  | No       | Maximum number of dashboards to return                  |

**Output**

| Parameter    | Type  | Description                      |
| ------------ | ----- | -------------------------------- |
| `dashboards` | array | List of dashboard search results |

#### `grafana_create_dashboard`

Create a new dashboard

**Input**

| Parameter        | Type    | Required | Description                                             |
| ---------------- | ------- | -------- | ------------------------------------------------------- |
| `apiKey`         | string  | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string  | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string  | No       | Organization ID for multi-org Grafana instances         |
| `title`          | string  | Yes      | The title of the new dashboard                          |
| `folderUid`      | string  | No       | The UID of the folder to create the dashboard in        |
| `tags`           | string  | No       | Comma-separated list of tags                            |
| `timezone`       | string  | No       | Dashboard timezone (e.g., browser, utc)                 |
| `refresh`        | string  | No       | Auto-refresh interval (e.g., 5s, 1m, 5m)                |
| `panels`         | string  | No       | JSON array of panel configurations                      |
| `overwrite`      | boolean | No       | Overwrite existing dashboard with same title            |
| `message`        | string  | No       | Commit message for the dashboard version                |

**Output**

| Parameter | Type   | Description                             |
| --------- | ------ | --------------------------------------- |
| `id`      | number | The numeric ID of the created dashboard |
| `uid`     | string | The UID of the created dashboard        |
| `url`     | string | The URL path to the dashboard           |
| `status`  | string | Status of the operation (success)       |
| `version` | number | The version number of the dashboard     |
| `slug`    | string | URL-friendly slug of the dashboard      |

#### `grafana_update_dashboard`

Update an existing dashboard. Fetches the current dashboard and merges your changes.

**Input**

| Parameter        | Type    | Required | Description                                             |
| ---------------- | ------- | -------- | ------------------------------------------------------- |
| `apiKey`         | string  | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string  | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string  | No       | Organization ID for multi-org Grafana instances         |
| `dashboardUid`   | string  | Yes      | The UID of the dashboard to update                      |
| `title`          | string  | No       | New title for the dashboard                             |
| `folderUid`      | string  | No       | New folder UID to move the dashboard to                 |
| `tags`           | string  | No       | Comma-separated list of new tags                        |
| `timezone`       | string  | No       | Dashboard timezone (e.g., browser, utc)                 |
| `refresh`        | string  | No       | Auto-refresh interval (e.g., 5s, 1m, 5m)                |
| `panels`         | string  | No       | JSON array of panel configurations                      |
| `overwrite`      | boolean | No       | Overwrite even if there is a version conflict           |
| `message`        | string  | No       | Commit message for this version                         |

**Output**

| Parameter | Type   | Description                             |
| --------- | ------ | --------------------------------------- |
| `id`      | number | The numeric ID of the updated dashboard |
| `uid`     | string | The UID of the updated dashboard        |
| `url`     | string | The URL path to the dashboard           |
| `status`  | string | Status of the operation (success)       |
| `version` | number | The new version number of the dashboard |
| `slug`    | string | URL-friendly slug of the dashboard      |

#### `grafana_delete_dashboard`

Delete a dashboard by its UID

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `dashboardUid`   | string | Yes      | The UID of the dashboard to delete                      |

**Output**

| Parameter | Type   | Description                        |
| --------- | ------ | ---------------------------------- |
| `title`   | string | The title of the deleted dashboard |
| `message` | string | Confirmation message               |
| `id`      | number | The ID of the deleted dashboard    |

#### `grafana_list_alert_rules`

List all alert rules in the Grafana instance

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |

**Output**

| Parameter | Type  | Description         |
| --------- | ----- | ------------------- |
| `rules`   | array | List of alert rules |

#### `grafana_get_alert_rule`

Get a specific alert rule by its UID

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `alertRuleUid`   | string | Yes      | The UID of the alert rule to retrieve                   |

**Output**

| Parameter      | Type   | Description                    |
| -------------- | ------ | ------------------------------ |
| `uid`          | string | Alert rule UID                 |
| `title`        | string | Alert rule title               |
| `condition`    | string | Alert condition                |
| `data`         | json   | Alert rule query data          |
| `folderUID`    | string | Parent folder UID              |
| `ruleGroup`    | string | Rule group name                |
| `noDataState`  | string | State when no data is returned |
| `execErrState` | string | State on execution error       |
| `annotations`  | json   | Alert annotations              |
| `labels`       | json   | Alert labels                   |

#### `grafana_create_alert_rule`

Create a new alert rule

**Input**

| Parameter        | Type   | Required | Description                                                        |
| ---------------- | ------ | -------- | ------------------------------------------------------------------ |
| `apiKey`         | string | Yes      | Grafana Service Account Token                                      |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>)            |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances                    |
| `title`          | string | Yes      | The title of the alert rule                                        |
| `folderUid`      | string | Yes      | The UID of the folder to create the alert in                       |
| `ruleGroup`      | string | Yes      | The name of the rule group                                         |
| `condition`      | string | Yes      | The refId of the query or expression to use as the alert condition |
| `data`           | string | Yes      | JSON array of query/expression data objects                        |
| `forDuration`    | string | No       | Duration to wait before firing (e.g., 5m, 1h)                      |
| `noDataState`    | string | No       | State when no data is returned (NoData, Alerting, OK)              |
| `execErrState`   | string | No       | State on execution error (Alerting, OK)                            |
| `annotations`    | string | No       | JSON object of annotations                                         |
| `labels`         | string | No       | JSON object of labels                                              |

**Output**

| Parameter   | Type   | Description                       |
| ----------- | ------ | --------------------------------- |
| `uid`       | string | The UID of the created alert rule |
| `title`     | string | Alert rule title                  |
| `folderUID` | string | Parent folder UID                 |
| `ruleGroup` | string | Rule group name                   |

#### `grafana_update_alert_rule`

Update an existing alert rule. Fetches the current rule and merges your changes.

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `alertRuleUid`   | string | Yes      | The UID of the alert rule to update                     |
| `title`          | string | No       | New title for the alert rule                            |
| `folderUid`      | string | No       | New folder UID to move the alert to                     |
| `ruleGroup`      | string | No       | New rule group name                                     |
| `condition`      | string | No       | New condition refId                                     |
| `data`           | string | No       | New JSON array of query/expression data objects         |
| `forDuration`    | string | No       | Duration to wait before firing (e.g., 5m, 1h)           |
| `noDataState`    | string | No       | State when no data is returned (NoData, Alerting, OK)   |
| `execErrState`   | string | No       | State on execution error (Alerting, OK)                 |
| `annotations`    | string | No       | JSON object of annotations                              |
| `labels`         | string | No       | JSON object of labels                                   |

**Output**

| Parameter   | Type   | Description                       |
| ----------- | ------ | --------------------------------- |
| `uid`       | string | The UID of the updated alert rule |
| `title`     | string | Alert rule title                  |
| `folderUID` | string | Parent folder UID                 |
| `ruleGroup` | string | Rule group name                   |

#### `grafana_delete_alert_rule`

Delete an alert rule by its UID

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `alertRuleUid`   | string | Yes      | The UID of the alert rule to delete                     |

**Output**

| Parameter | Type   | Description          |
| --------- | ------ | -------------------- |
| `message` | string | Confirmation message |

#### `grafana_list_contact_points`

List all alert notification contact points

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |

**Output**

| Parameter       | Type  | Description            |
| --------------- | ----- | ---------------------- |
| `contactPoints` | array | List of contact points |

#### `grafana_create_annotation`

Create an annotation on a dashboard or as a global annotation

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `text`           | string | Yes      | The text content of the annotation                      |
| `tags`           | string | No       | Comma-separated list of tags                            |
| `dashboardUid`   | string | Yes      | UID of the dashboard to add the annotation to           |
| `panelId`        | number | No       | ID of the panel to add the annotation to                |
| `time`           | number | No       | Start time in epoch milliseconds (defaults to now)      |
| `timeEnd`        | number | No       | End time in epoch milliseconds (for range annotations)  |

**Output**

| Parameter | Type   | Description                      |
| --------- | ------ | -------------------------------- |
| `id`      | number | The ID of the created annotation |
| `message` | string | Confirmation message             |

#### `grafana_list_annotations`

Query annotations by time range, dashboard, or tags

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `from`           | number | No       | Start time in epoch milliseconds                        |
| `to`             | number | No       | End time in epoch milliseconds                          |
| `dashboardUid`   | string | Yes      | Dashboard UID to query annotations from                 |
| `panelId`        | number | No       | Filter by panel ID                                      |
| `tags`           | string | No       | Comma-separated list of tags to filter by               |
| `type`           | string | No       | Filter by type (alert or annotation)                    |
| `limit`          | number | No       | Maximum number of annotations to return                 |

**Output**

| Parameter     | Type  | Description         |
| ------------- | ----- | ------------------- |
| `annotations` | array | List of annotations |

#### `grafana_update_annotation`

Update an existing annotation

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `annotationId`   | number | Yes      | The ID of the annotation to update                      |
| `text`           | string | Yes      | New text content for the annotation                     |
| `tags`           | string | No       | Comma-separated list of new tags                        |
| `time`           | number | No       | New start time in epoch milliseconds                    |
| `timeEnd`        | number | No       | New end time in epoch milliseconds                      |

**Output**

| Parameter | Type   | Description                      |
| --------- | ------ | -------------------------------- |
| `id`      | number | The ID of the updated annotation |
| `message` | string | Confirmation message             |

#### `grafana_delete_annotation`

Delete an annotation by its ID

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `annotationId`   | number | Yes      | The ID of the annotation to delete                      |

**Output**

| Parameter | Type   | Description          |
| --------- | ------ | -------------------- |
| `message` | string | Confirmation message |

#### `grafana_list_data_sources`

List all data sources configured in Grafana

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |

**Output**

| Parameter     | Type  | Description          |
| ------------- | ----- | -------------------- |
| `dataSources` | array | List of data sources |

#### `grafana_get_data_source`

Get a data source by its ID or UID

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `dataSourceId`   | string | Yes      | The ID or UID of the data source to retrieve            |

**Output**

| Parameter   | Type    | Description                             |
| ----------- | ------- | --------------------------------------- |
| `id`        | number  | Data source ID                          |
| `uid`       | string  | Data source UID                         |
| `name`      | string  | Data source name                        |
| `type`      | string  | Data source type                        |
| `url`       | string  | Data source connection URL              |
| `database`  | string  | Database name (if applicable)           |
| `isDefault` | boolean | Whether this is the default data source |
| `jsonData`  | json    | Additional data source configuration    |

#### `grafana_list_folders`

List all folders in Grafana

**Input**

| Parameter        | Type   | Required | Description                                             |
| ---------------- | ------ | -------- | ------------------------------------------------------- |
| `apiKey`         | string | Yes      | Grafana Service Account Token                           |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>) |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances         |
| `limit`          | number | No       | Maximum number of folders to return                     |
| `page`           | number | No       | Page number for pagination                              |

**Output**

| Parameter | Type  | Description     |
| --------- | ----- | --------------- |
| `folders` | array | List of folders |

#### `grafana_create_folder`

Create a new folder in Grafana

**Input**

| Parameter        | Type   | Required | Description                                                  |
| ---------------- | ------ | -------- | ------------------------------------------------------------ |
| `apiKey`         | string | Yes      | Grafana Service Account Token                                |
| `baseUrl`        | string | Yes      | Grafana instance URL (e.g., <https://your-grafana.com>)      |
| `organizationId` | string | No       | Organization ID for multi-org Grafana instances              |
| `title`          | string | Yes      | The title of the new folder                                  |
| `uid`            | string | No       | Optional UID for the folder (auto-generated if not provided) |

**Output**

| Parameter   | Type    | Description                                             |
| ----------- | ------- | ------------------------------------------------------- |
| `id`        | number  | The numeric ID of the created folder                    |
| `uid`       | string  | The UID of the created folder                           |
| `title`     | string  | The title of the created folder                         |
| `url`       | string  | The URL path to the folder                              |
| `hasAcl`    | boolean | Whether the folder has custom ACL permissions           |
| `canSave`   | boolean | Whether the current user can save the folder            |
| `canEdit`   | boolean | Whether the current user can edit the folder            |
| `canAdmin`  | boolean | Whether the current user has admin rights on the folder |
| `canDelete` | boolean | Whether the current user can delete the folder          |
| `createdBy` | string  | Username of who created the folder                      |
| `created`   | string  | Timestamp when the folder was created                   |
| `updatedBy` | string  | Username of who last updated the folder                 |
| `updated`   | string  | Timestamp when the folder was last updated              |
| `version`   | number  | Version number of the folder                            |

### Notes

* Category: `tools`
* Type: `grafana`


# huggingface

[HuggingFace](https://huggingface.co/) is a leading AI platform that provides access to thousands of pre-trained machine learning models and powerful inference capabilities. With its extensive model hub and robust API, HuggingFace offers comprehensive tools for both research and production AI applications.

With HuggingFace, you can:

* Access pre-trained models: Utilize models for text generation, translation, image processing, and more
* Generate AI completions: Create content using state-of-the-art language models through the Inference API
* Natural language processing: Process and analyze text with specialized NLP models
* Deploy at scale: Host and serve models for production applications
* Customize models: Fine-tune existing models for specific use cases

In Agent Forge, the HuggingFace integration enables your agents to programmatically generate completions using the HuggingFace Inference API. This allows for powerful automation scenarios such as content generation, text analysis, code completion, and creative writing. Your agents can generate completions with natural language prompts, access specialized models for different tasks, and integrate AI-generated content into workflows. This integration bridges the gap between your AI workflows and machine learning capabilities, enabling seamless AI-powered automation with one of the world's most comprehensive ML platforms.

### Usage Instructions

Generate completions using Hugging Face Inference API with access to various open-source models. Leverage cutting-edge AI models for chat completions, content generation, and AI-powered conversations with customizable parameters.

### Tools

#### `huggingface_chat`

Generate completions using Hugging Face Inference API

**Input**

| Parameter      | Type   | Required | Description                                                            |
| -------------- | ------ | -------- | ---------------------------------------------------------------------- |
| `systemPrompt` | string | No       | System prompt to guide the model behavior                              |
| `content`      | string | Yes      | The user message content to send to the model                          |
| `provider`     | string | Yes      | The provider to use for the API request (e.g., novita, cerebras, etc.) |
| `model`        | string | Yes      | Model to use for chat completions (e.g., deepseek/deepseek-v3-0324)    |
| `maxTokens`    | number | No       | Maximum number of tokens to generate                                   |
| `temperature`  | number | No       | Sampling temperature (0-2). Higher values make output more random      |
| `apiKey`       | string | Yes      | Hugging Face API token                                                 |

**Output**

| Parameter | Type   | Description        |
| --------- | ------ | ------------------ |
| `content` | string | Generated response |
| `model`   | string | Model used         |
| `usage`   | json   | Token usage stats  |

### Notes

* Category: `tools`
* Type: `huggingface`


# hunter

### Usage Instructions

Search for email addresses, verify their deliverability, discover companies, and enrich contact data using Hunter.io's powerful email finding capabilities.

### Tools

#### `hunter_discover`

Returns companies matching a set of criteria using Hunter.io AI-powered search.

**Input**

| Parameter      | Type   | Required | Description                                 |
| -------------- | ------ | -------- | ------------------------------------------- |
| `query`        | string | No       | Natural language search query for companies |
| `domain`       | string | No       | Company domain names to filter by           |
| `headcount`    | string | No       | Company size filter (e.g.,                  |
| `company_type` | string | No       | Type of organization                        |
| `technology`   | string | No       | Technology used by companies                |
| `apiKey`       | string | Yes      | Hunter.io API Key                           |

**Output**

| Parameter         | Type   | Description           |
| ----------------- | ------ | --------------------- |
| `results`         | json   | Search results        |
| `emails`          | json   | Email addresses found |
| `email`           | string | Found email address   |
| `score`           | number | Confidence score      |
| `result`          | string | Verification result   |
| `status`          | string | Status message        |
| `total`           | number | Total results count   |
| `personal_emails` | number | Personal emails count |
| `generic_emails`  | number | Generic emails count  |

#### `hunter_domain_search`

Returns all the email addresses found using one given domain name, with sources.

**Input**

| Parameter    | Type   | Required | Description                                             |
| ------------ | ------ | -------- | ------------------------------------------------------- |
| `domain`     | string | Yes      | Domain name to search for email addresses               |
| `limit`      | number | No       | Maximum email addresses to return (default: 10)         |
| `offset`     | number | No       | Number of email addresses to skip                       |
| `type`       | string | No       | Filter for personal or generic emails                   |
| `seniority`  | string | No       | Filter by seniority level: junior, senior, or executive |
| `department` | string | No       | Filter by specific departments (e.g., sales, marketing) |
| `apiKey`     | string | Yes      | Hunter.io API Key                                       |

**Output**

| Parameter         | Type   | Description           |
| ----------------- | ------ | --------------------- |
| `results`         | json   | Search results        |
| `emails`          | json   | Email addresses found |
| `email`           | string | Found email address   |
| `score`           | number | Confidence score      |
| `result`          | string | Verification result   |
| `status`          | string | Status message        |
| `total`           | number | Total results count   |
| `personal_emails` | number | Personal emails count |
| `generic_emails`  | number | Generic emails count  |

#### `hunter_email_finder`

Finds the most likely email address for a person given their name and company domain.

**Input**

| Parameter    | Type   | Required | Description         |
| ------------ | ------ | -------- | ------------------- |
| `domain`     | string | Yes      | Company domain name |
| `first_name` | string | Yes      | Person              |
| `last_name`  | string | Yes      | Person              |
| `company`    | string | No       | Company name        |
| `apiKey`     | string | Yes      | Hunter.io API Key   |

**Output**

| Parameter         | Type   | Description           |
| ----------------- | ------ | --------------------- |
| `results`         | json   | Search results        |
| `emails`          | json   | Email addresses found |
| `email`           | string | Found email address   |
| `score`           | number | Confidence score      |
| `result`          | string | Verification result   |
| `status`          | string | Status message        |
| `total`           | number | Total results count   |
| `personal_emails` | number | Personal emails count |
| `generic_emails`  | number | Generic emails count  |

#### `hunter_email_verifier`

Verifies the deliverability of an email address and provides detailed verification status.

**Input**

| Parameter | Type   | Required | Description                 |
| --------- | ------ | -------- | --------------------------- |
| `email`   | string | Yes      | The email address to verify |
| `apiKey`  | string | Yes      | Hunter.io API Key           |

**Output**

| Parameter         | Type   | Description           |
| ----------------- | ------ | --------------------- |
| `results`         | json   | Search results        |
| `emails`          | json   | Email addresses found |
| `email`           | string | Found email address   |
| `score`           | number | Confidence score      |
| `result`          | string | Verification result   |
| `status`          | string | Status message        |
| `total`           | number | Total results count   |
| `personal_emails` | number | Personal emails count |
| `generic_emails`  | number | Generic emails count  |

#### `hunter_companies_find`

Enriches company data using domain name.

**Input**

| Parameter | Type   | Required | Description                     |
| --------- | ------ | -------- | ------------------------------- |
| `domain`  | string | Yes      | Domain to find company data for |
| `apiKey`  | string | Yes      | Hunter.io API Key               |

**Output**

| Parameter         | Type   | Description           |
| ----------------- | ------ | --------------------- |
| `results`         | json   | Search results        |
| `emails`          | json   | Email addresses found |
| `email`           | string | Found email address   |
| `score`           | number | Confidence score      |
| `result`          | string | Verification result   |
| `status`          | string | Status message        |
| `total`           | number | Total results count   |
| `personal_emails` | number | Personal emails count |
| `generic_emails`  | number | Generic emails count  |

#### `hunter_email_count`

Returns the total number of email addresses found for a domain or company.

**Input**

| Parameter | Type   | Required | Description                                                        |
| --------- | ------ | -------- | ------------------------------------------------------------------ |
| `domain`  | string | No       | Domain to count emails for (required if company not provided)      |
| `company` | string | No       | Company name to count emails for (required if domain not provided) |
| `type`    | string | No       | Filter for personal or generic emails only                         |
| `apiKey`  | string | Yes      | Hunter.io API Key                                                  |

**Output**

| Parameter         | Type   | Description           |
| ----------------- | ------ | --------------------- |
| `results`         | json   | Search results        |
| `emails`          | json   | Email addresses found |
| `email`           | string | Found email address   |
| `score`           | number | Confidence score      |
| `result`          | string | Verification result   |
| `status`          | string | Status message        |
| `total`           | number | Total results count   |
| `personal_emails` | number | Personal emails count |
| `generic_emails`  | number | Generic emails count  |

### Notes

* Category: `tools`
* Type: `hunter`


# jina

[Jina AI](https://jina.ai/) is a powerful content extraction tool that seamlessly integrates with Agent Forge to transform web content into clean, readable text. This integration allows developers to easily incorporate web content processing capabilities into their agentic workflows.

Jina AI Reader specializes in extracting the most relevant content from web pages, removing clutter, advertisements, and formatting issues to produce clean, structured text that's optimized for language models and other text processing tasks.

With the Jina AI integration in Agent Forge, you can:

* **Extract clean content** from any web page by simply providing a URL
* **Process complex web layouts** into structured, readable text
* **Maintain important context** while removing unnecessary elements
* **Prepare web content** for further processing in your agent workflows
* **Streamline research tasks** by quickly converting web information into usable data

This integration is particularly valuable for building agents that need to gather and process information from the web, conduct research, or analyze online content as part of their workflow.

### Usage Instructions

Transform web content into clean, readable text using Jina AI's advanced extraction capabilities. Extract meaningful content from websites while preserving important information and optionally gathering links.

### Tools

#### `jina_read_url`

Extract and process web content into clean, LLM-friendly text using Jina AI Reader. Supports advanced content parsing, link gathering, and multiple output formats with configurable processing options.

**Input**

| Parameter       | Type    | Required | Description                                   |
| --------------- | ------- | -------- | --------------------------------------------- |
| `url`           | string  | Yes      | The URL to read and convert to markdown       |
| `useReaderLMv2` | boolean | No       | Whether to use ReaderLM-v2 for better quality |
| `gatherLinks`   | boolean | No       | Whether to gather all links at the end        |
| `jsonResponse`  | boolean | No       | Whether to return response in JSON format     |
| `apiKey`        | string  | Yes      | Your Jina AI API key                          |

**Output**

| Parameter | Type   | Description       |
| --------- | ------ | ----------------- |
| `content` | string | Extracted content |

### Notes

* Category: `tools`
* Type: `jina`


# jira

[Jira](https://www.atlassian.com/jira) is a leading project management and issue tracking platform that helps teams plan, track, and manage agile software development projects effectively. As part of the Atlassian suite, Jira has become the industry standard for software development teams and project management professionals worldwide.

Jira provides a comprehensive set of tools for managing complex projects through its flexible and customizable workflow system. With its robust API and integration capabilities, Jira enables teams to streamline their development processes and maintain clear visibility of project progress.

Key features of Jira include:

* Agile Project Management: Support for Scrum and Kanban methodologies with customizable boards and workflows
* Issue Tracking: Sophisticated tracking system for bugs, stories, epics, and tasks with detailed reporting
* Workflow Automation: Powerful automation rules to streamline repetitive tasks and processes
* Advanced Search: JQL (Jira Query Language) for complex issue filtering and reporting

In Agent Forge, the Jira integration allows your agents to seamlessly interact with your project management workflow. This creates opportunities for automated issue creation, updates, and tracking as part of your AI workflows. The integration enables agents to create, retrieve, and update Jira issues programmatically, facilitating automated project management tasks and ensuring that important information is properly tracked and documented. By connecting Agent Forge with Jira, you can build intelligent agents that maintain project visibility while automating routine project management tasks, enhancing team productivity and ensuring consistent project tracking.

### Usage Instructions

Connect to Jira workspaces to read, write, and update issues. Access content, metadata, and integrate Jira documentation into your workflows.

### Tools

#### `jira_retrieve`

Retrieve detailed information about a specific Jira issue

**Input**

| Parameter     | Type   | Required | Description                                                                             |
| ------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
| `accessToken` | string | Yes      | OAuth access token for Jira                                                             |
| `domain`      | string | Yes      | Your Jira domain (e.g., yourcompany.atlassian.net)                                      |
| `projectId`   | string | No       | Jira project ID to retrieve issues from. If not provided, all issues will be retrieved. |
| `issueKey`    | string | Yes      | Jira issue key to retrieve (e.g., PROJ-123)                                             |
| `cloudId`     | string | No       | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain.   |

**Output**

| Parameter     | Type    | Description       |
| ------------- | ------- | ----------------- |
| `ts`          | string  | Timestamp         |
| `issueKey`    | string  | Issue key         |
| `summary`     | string  | Issue summary     |
| `description` | string  | Issue description |
| `created`     | string  | Creation date     |
| `updated`     | string  | Update date       |
| `success`     | boolean | Operation success |
| `url`         | string  | Issue URL         |

#### `jira_update`

Update a Jira issue

**Input**

| Parameter     | Type   | Required | Description                                                                           |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `accessToken` | string | Yes      | OAuth access token for Jira                                                           |
| `domain`      | string | Yes      | Your Jira domain (e.g., yourcompany.atlassian.net)                                    |
| `projectId`   | string | No       | Jira project ID to update issues in. If not provided, all issues will be retrieved.   |
| `issueKey`    | string | Yes      | Jira issue key to update                                                              |
| `summary`     | string | No       | New summary for the issue                                                             |
| `description` | string | No       | New description for the issue                                                         |
| `status`      | string | No       | New status for the issue                                                              |
| `priority`    | string | No       | New priority for the issue                                                            |
| `assignee`    | string | No       | New assignee for the issue                                                            |
| `cloudId`     | string | No       | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |

**Output**

| Parameter     | Type    | Description       |
| ------------- | ------- | ----------------- |
| `ts`          | string  | Timestamp         |
| `issueKey`    | string  | Issue key         |
| `summary`     | string  | Issue summary     |
| `description` | string  | Issue description |
| `created`     | string  | Creation date     |
| `updated`     | string  | Update date       |
| `success`     | boolean | Operation success |
| `url`         | string  | Issue URL         |

#### `jira_write`

Write a Jira issue

**Input**

| Parameter     | Type   | Required | Description                                                                           |
| ------------- | ------ | -------- | ------------------------------------------------------------------------------------- |
| `accessToken` | string | Yes      | OAuth access token for Jira                                                           |
| `domain`      | string | Yes      | Your Jira domain (e.g., yourcompany.atlassian.net)                                    |
| `projectId`   | string | Yes      | Project ID for the issue                                                              |
| `summary`     | string | Yes      | Summary for the issue                                                                 |
| `description` | string | No       | Description for the issue                                                             |
| `priority`    | string | No       | Priority for the issue                                                                |
| `assignee`    | string | No       | Assignee for the issue                                                                |
| `cloudId`     | string | No       | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
| `issueType`   | string | Yes      | Type of issue to create (e.g., Task, Story)                                           |

**Output**

| Parameter     | Type    | Description       |
| ------------- | ------- | ----------------- |
| `ts`          | string  | Timestamp         |
| `issueKey`    | string  | Issue key         |
| `summary`     | string  | Issue summary     |
| `description` | string  | Issue description |
| `created`     | string  | Creation date     |
| `updated`     | string  | Update date       |
| `success`     | boolean | Operation success |
| `url`         | string  | Issue URL         |

#### `jira_bulk_read`

Retrieve multiple Jira issues in bulk

**Input**

| Parameter     | Type   | Required | Description                                        |
| ------------- | ------ | -------- | -------------------------------------------------- |
| `accessToken` | string | Yes      | OAuth access token for Jira                        |
| `domain`      | string | Yes      | Your Jira domain (e.g., yourcompany.atlassian.net) |
| `projectId`   | string | Yes      | Jira project ID                                    |
| `cloudId`     | string | No       | Jira cloud ID                                      |

**Output**

| Parameter     | Type    | Description       |
| ------------- | ------- | ----------------- |
| `ts`          | string  | Timestamp         |
| `issueKey`    | string  | Issue key         |
| `summary`     | string  | Issue summary     |
| `description` | string  | Issue description |
| `created`     | string  | Creation date     |
| `updated`     | string  | Update date       |
| `success`     | boolean | Operation success |
| `url`         | string  | Issue URL         |

### Notes

* Category: `tools`
* Type: `jira`


# linear

[Linear](https://linear.app/) is a leading project management and issue tracking platform that helps teams plan, track, and manage their work effectively. As a modern project management tool, Linear has become increasingly popular among software development teams and project management professionals for its streamlined interface and powerful features.

Linear provides a comprehensive set of tools for managing complex projects through its flexible and customizable workflow system. With its robust API and integration capabilities, Linear enables teams to streamline their development processes and maintain clear visibility of project progress.

Key features of Linear include:

* Agile Project Management: Support for Scrum and Kanban methodologies with customizable boards and workflows
* Issue Tracking: Sophisticated tracking system for bugs, stories, epics, and tasks with detailed reporting
* Workflow Automation: Powerful automation rules to streamline repetitive tasks and processes
* Advanced Search: Complex filtering and reporting capabilities for efficient issue management

In Agent Forge, the Linear integration allows your agents to seamlessly interact with your project management workflow. This creates opportunities for automated issue creation, updates, and tracking as part of your AI workflows. The integration enables agents to read existing issues and create new ones programmatically, facilitating automated project management tasks and ensuring that important information is properly tracked and documented. By connecting Agent Forge with Linear, you can build intelligent agents that maintain project visibility while automating routine project management tasks, enhancing team productivity and ensuring consistent project tracking.

### Usage Instructions

Integrate with Linear to fetch, filter, and create issues directly from your workflow.

### Tools

#### `linear_read_issues`

Fetch and filter issues from Linear

**Input**

| Parameter   | Type   | Required | Description       |
| ----------- | ------ | -------- | ----------------- |
| `teamId`    | string | Yes      | Linear team ID    |
| `projectId` | string | Yes      | Linear project ID |

**Output**

| Parameter | Type | Description       |
| --------- | ---- | ----------------- |
| `issues`  | json | Issues list       |
| `issue`   | json | Single issue data |

#### `linear_create_issue`

Create a new issue in Linear

**Input**

| Parameter     | Type   | Required | Description       |
| ------------- | ------ | -------- | ----------------- |
| `teamId`      | string | Yes      | Linear team ID    |
| `projectId`   | string | Yes      | Linear project ID |
| `title`       | string | Yes      | Issue title       |
| `description` | string | No       | Issue description |

**Output**

| Parameter | Type | Description       |
| --------- | ---- | ----------------- |
| `issues`  | json | Issues list       |
| `issue`   | json | Single issue data |

### Notes

* Category: `tools`
* Type: `linear`


# linkedin

### LinkedIn

[LinkedIn](https://www.linkedin.com/) is the world’s largest professional networking platform, empowering users to build their careers, connect with their network, and share professional content. LinkedIn is widely used by professionals across industries for personal branding, recruiting, job search, and business development.

With LinkedIn, you can easily share posts to your personal feed to engage with your network, and access information about your profile to highlight your professional achievements. Automated integration with Agent Forge allows you to leverage LinkedIn functionality programmatically—enabling agents and workflows to post updates, report on your professional presence, and keep your feed active without manual effort.

Key LinkedIn features available through this integration include:

* **Share Posts:** Automatically publish professional updates, articles, or announcements to your LinkedIn personal feed.
* **Profile Information:** Retrieve detailed information about your LinkedIn profile to monitor or use in downstream tasks within your workflows.

These capabilities make it easy to keep your LinkedIn network engaged and to extend your professional reach efficiently as part of your AI or workflow automation strategy.

### Usage Instructions

Integrate LinkedIn into workflows. Share posts to your personal feed and access your LinkedIn profile information.

### Tools

#### `linkedin_share_post`

Share a post to your personal LinkedIn feed

**Input**

| Parameter         | Type   | Required | Description                                                          |
| ----------------- | ------ | -------- | -------------------------------------------------------------------- |
| `text`            | string | Yes      | The text content of your LinkedIn post                               |
| `visibility`      | string | No       | Who can see this post: "PUBLIC" or "CONNECTIONS" (default: "PUBLIC") |
| `request`         | string | No       | No description                                                       |
| `output`          | string | No       | No description                                                       |
| `specificContent` | string | No       | No description                                                       |
| `shareCommentary` | string | No       | No description                                                       |
| `headers`         | string | No       | No description                                                       |

**Output**

| Parameter | Type    | Description                       |
| --------- | ------- | --------------------------------- |
| `success` | boolean | Operation success status          |
| `postId`  | string  | Created post ID                   |
| `profile` | json    | LinkedIn profile information      |
| `error`   | string  | Error message if operation failed |

#### `linkedin_get_profile`

Retrieve your LinkedIn profile information

**Input**

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |

**Output**

| Parameter | Type    | Description                       |
| --------- | ------- | --------------------------------- |
| `success` | boolean | Operation success status          |
| `postId`  | string  | Created post ID                   |
| `profile` | json    | LinkedIn profile information      |
| `error`   | string  | Error message if operation failed |

### Notes

* Category: `tools`
* Type: `linkedin`


# linkup

[Linkup](https://linkup.so/) is a powerful web search tool that integrates seamlessly with Agent Forge, allowing your AI agents to access up-to-date information from the web with proper source attribution.

Linkup enhances your AI agents by providing them with the ability to search the web for current information. When integrated into your agent's toolkit:

* **Real-time Information Access**: Agents can retrieve the latest information from the web, keeping responses current and relevant.
* **Source Attribution**: All information comes with proper citations, ensuring transparency and credibility.
* **Simple Implementation**: Add Linkup to your agents toolset with minimal configuration.
* **Contextual Awareness**: Agents can use web information while maintaining their personality and conversational style.

To implement Linkup in your agent, simply add the tool to your agent's configuration. Your agent will then be able to search the web whenever they need to answer questions requiring current information.

### Usage Instructions

Linkup Search allows you to search and retrieve up-to-date information from the web with source attribution.

### Tools

#### `linkup_search`

Search the web for information using Linkup

**Input**

| Parameter    | Type   | Required | Description                                |
| ------------ | ------ | -------- | ------------------------------------------ |
| `q`          | string | Yes      | The search query                           |
| `depth`      | string | Yes      | Search depth (has to either be             |
| `outputType` | string | Yes      | Type of output to return (has to either be |
| `apiKey`     | string | Yes      | Enter your Linkup API key                  |

**Output**

| Parameter | Type   | Description       |
| --------- | ------ | ----------------- |
| `answer`  | string | Generated answer  |
| `sources` | json   | Source references |

### Notes

* Category: `tools`
* Type: `linkup`


# mailchimp

[Mailchimp](https://mailchimp.com/) is a powerful marketing automation platform that enables you to manage audiences, campaigns, and a wide range of marketing activities all in one place. Mailchimp’s robust API and integrations let you automate outreach, email marketing, reporting, and audience management directly from your workflows in Agent Forge.

With the Mailchimp tools in Agent Forge, you can:

* **Manage Audiences (Lists):**
  * List and retrieve all your Mailchimp audiences (lists) for easy management.
  * Get comprehensive information about a specific audience.
  * Create new audiences and keep your segmentation up-to-date.
* **List Members:**
  * Access and manage list members (subscribers), retrieve member details, and keep your email lists synchronized.
* **Campaign Management:**
  * Automate campaign creation, send campaigns, and analyze campaign performance with comprehensive reporting.
* **Marketing Automation:**
  * Manage automated workflows, set up triggers, and schedule emails to streamline your nurture processes.
* **Templates, Segments, and Tags:**
  * Retrieve and manage your email templates for consistent branding.
  * Access and update audience segments to target specific groups.
  * Create and manage tags to further organize your contacts.
* **Advanced List Controls:**
  * Manage merge fields and interest categories (groups) to collect rich, structured data from your subscribers.
  * Handle landing pages, signup forms, and other lead-capture tools to maximize conversions.
* **Batch Operations and Reporting:**
  * Run batch jobs for bulk operations and streamline large updates.
  * Retrieve detailed reports on campaigns, automations, and audience growth to inform your marketing strategy.

By using Mailchimp within Agent Forge, your agents and workflows can automate email marketing at scale—growing your audience, personalizing outreach, optimizing engagement, and making data-driven decisions. Whether you’re syncing CRM records, triggering campaigns in response to in-product actions, or managing subscriber data, Mailchimp’s tools in Agent Forge deliver complete programmatic control over your marketing automation.

### Usage Instructions

Integrate Mailchimp into the workflow. Can manage audiences (lists), list members, campaigns, automation workflows, templates, reports, segments, tags, merge fields, interest categories, landing pages, signup forms, and batch operations.

### Tools

#### `mailchimp_get_audiences`

Retrieve a list of audiences (lists) from Mailchimp

**Input**

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix       |
| `count`   | string | No       | Number of results (default: 10, max: 1000) |
| `offset`  | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                 |
| --------- | ------- | --------------------------- |
| `success` | boolean | Operation success status    |
| `output`  | object  | Audiences data and metadata |

#### `mailchimp_get_audience`

Retrieve details of a specific audience (list) from Mailchimp

**Input**

| Parameter | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix |
| `listId`  | string | Yes      | The unique ID for the list           |

**Output**

| Parameter | Type    | Description                |
| --------- | ------- | -------------------------- |
| `success` | boolean | Operation success status   |
| `output`  | object  | Audience data and metadata |

#### `mailchimp_create_audience`

Create a new audience (list) in Mailchimp

**Input**

| Parameter            | Type   | Required | Description                              |
| -------------------- | ------ | -------- | ---------------------------------------- |
| `apiKey`             | string | Yes      | Mailchimp API key with server prefix     |
| `audienceName`       | string | Yes      | The name of the list                     |
| `contact`            | string | Yes      | JSON object of contact information       |
| `permissionReminder` | string | Yes      | Permission reminder text                 |
| `campaignDefaults`   | string | Yes      | JSON object of default campaign settings |
| `emailTypeOption`    | string | Yes      | Support multiple email formats           |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Created audience data    |

#### `mailchimp_update_audience`

Update an existing audience (list) in Mailchimp

**Input**

| Parameter            | Type   | Required | Description                              |
| -------------------- | ------ | -------- | ---------------------------------------- |
| `apiKey`             | string | Yes      | Mailchimp API key with server prefix     |
| `listId`             | string | Yes      | The unique ID for the list               |
| `audienceName`       | string | No       | The name of the list                     |
| `permissionReminder` | string | No       | Permission reminder text                 |
| `campaignDefaults`   | string | No       | JSON object of default campaign settings |
| `emailTypeOption`    | string | No       | Support multiple email formats           |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Updated audience data    |

#### `mailchimp_delete_audience`

Delete an audience (list) from Mailchimp

**Input**

| Parameter | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix |
| `listId`  | string | Yes      | The unique ID for the list to delete |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

#### `mailchimp_get_members`

Retrieve a list of members from a Mailchimp audience

**Input**

| Parameter | Type   | Required | Description                                                   |
| --------- | ------ | -------- | ------------------------------------------------------------- |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix                          |
| `listId`  | string | Yes      | The unique ID for the list                                    |
| `status`  | string | No       | Filter by status (subscribed, unsubscribed, cleaned, pending) |
| `count`   | string | No       | Number of results (default: 10, max: 1000)                    |
| `offset`  | string | No       | Number of results to skip                                     |

**Output**

| Parameter | Type    | Description               |
| --------- | ------- | ------------------------- |
| `success` | boolean | Operation success status  |
| `output`  | object  | Members data and metadata |

#### `mailchimp_get_member`

Retrieve details of a specific member from a Mailchimp audience

**Input**

| Parameter         | Type   | Required | Description                          |
| ----------------- | ------ | -------- | ------------------------------------ |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix |
| `listId`          | string | Yes      | The unique ID for the list           |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash     |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Member data and metadata |

#### `mailchimp_add_member`

Add a new member to a Mailchimp audience

**Input**

| Parameter      | Type   | Required | Description                          |
| -------------- | ------ | -------- | ------------------------------------ |
| `apiKey`       | string | Yes      | Mailchimp API key with server prefix |
| `listId`       | string | Yes      | The unique ID for the list           |
| `emailAddress` | string | Yes      | Member email address                 |
| `status`       | string | Yes      | Subscriber status                    |
| `mergeFields`  | string | No       | JSON object of merge fields          |
| `interests`    | string | No       | JSON object of interests             |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Added member data        |

#### `mailchimp_add_or_update_member`

Add a new member or update an existing member in a Mailchimp audience (upsert)

**Input**

| Parameter         | Type   | Required | Description                          |
| ----------------- | ------ | -------- | ------------------------------------ |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix |
| `listId`          | string | Yes      | The unique ID for the list           |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash     |
| `emailAddress`    | string | Yes      | Member email address                 |
| `statusIfNew`     | string | Yes      | Subscriber status if new member      |
| `mergeFields`     | string | No       | JSON object of merge fields          |
| `interests`       | string | No       | JSON object of interests             |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Member data              |

#### `mailchimp_update_member`

Update an existing member in a Mailchimp audience

**Input**

| Parameter         | Type   | Required | Description                          |
| ----------------- | ------ | -------- | ------------------------------------ |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix |
| `listId`          | string | Yes      | The unique ID for the list           |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash     |
| `emailAddress`    | string | No       | Member email address                 |
| `status`          | string | No       | Subscriber status                    |
| `mergeFields`     | string | No       | JSON object of merge fields          |
| `interests`       | string | No       | JSON object of interests             |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Updated member data      |

#### `mailchimp_delete_member`

Delete a member from a Mailchimp audience

**Input**

| Parameter         | Type   | Required | Description                          |
| ----------------- | ------ | -------- | ------------------------------------ |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix |
| `listId`          | string | Yes      | The unique ID for the list           |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash     |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

#### `mailchimp_archive_member`

Permanently archive (delete) a member from a Mailchimp audience

**Input**

| Parameter         | Type   | Required | Description                          |
| ----------------- | ------ | -------- | ------------------------------------ |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix |
| `listId`          | string | Yes      | The unique ID for the list           |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash     |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Archive confirmation     |

#### `mailchimp_unarchive_member`

Restore an archived member to a Mailchimp audience

**Input**

| Parameter         | Type   | Required | Description                          |
| ----------------- | ------ | -------- | ------------------------------------ |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix |
| `listId`          | string | Yes      | The unique ID for the list           |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash     |
| `emailAddress`    | string | Yes      | Member email address                 |
| `status`          | string | Yes      | Subscriber status                    |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Unarchived member data   |

#### `mailchimp_get_campaigns`

Retrieve a list of campaigns from Mailchimp

**Input**

| Parameter      | Type   | Required | Description                                                         |
| -------------- | ------ | -------- | ------------------------------------------------------------------- |
| `apiKey`       | string | Yes      | Mailchimp API key with server prefix                                |
| `campaignType` | string | No       | Filter by campaign type (regular, plaintext, absplit, rss, variate) |
| `status`       | string | No       | Filter by status (save, paused, schedule, sending, sent)            |
| `count`        | string | No       | Number of results (default: 10, max: 1000)                          |
| `offset`       | string | No       | Number of results to skip                                           |

**Output**

| Parameter | Type    | Description                 |
| --------- | ------- | --------------------------- |
| `success` | boolean | Operation success status    |
| `output`  | object  | Campaigns data and metadata |

#### `mailchimp_get_campaign`

Retrieve details of a specific campaign from Mailchimp

**Input**

| Parameter    | Type   | Required | Description                          |
| ------------ | ------ | -------- | ------------------------------------ |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix |
| `campaignId` | string | Yes      | The unique ID for the campaign       |

**Output**

| Parameter | Type    | Description                |
| --------- | ------- | -------------------------- |
| `success` | boolean | Operation success status   |
| `output`  | object  | Campaign data and metadata |

#### `mailchimp_create_campaign`

Create a new campaign in Mailchimp

**Input**

| Parameter          | Type   | Required | Description                          |
| ------------------ | ------ | -------- | ------------------------------------ |
| `apiKey`           | string | Yes      | Mailchimp API key with server prefix |
| `campaignType`     | string | Yes      | Campaign type                        |
| `campaignSettings` | string | Yes      | JSON object of campaign settings     |
| `recipients`       | string | No       | JSON object of recipients            |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Created campaign data    |

#### `mailchimp_update_campaign`

Update an existing campaign in Mailchimp

**Input**

| Parameter          | Type   | Required | Description                          |
| ------------------ | ------ | -------- | ------------------------------------ |
| `apiKey`           | string | Yes      | Mailchimp API key with server prefix |
| `campaignId`       | string | Yes      | The unique ID for the campaign       |
| `campaignSettings` | string | No       | JSON object of campaign settings     |
| `recipients`       | string | No       | JSON object of recipients            |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Updated campaign data    |

#### `mailchimp_delete_campaign`

Delete a campaign from Mailchimp

**Input**

| Parameter    | Type   | Required | Description                              |
| ------------ | ------ | -------- | ---------------------------------------- |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix     |
| `campaignId` | string | Yes      | The unique ID for the campaign to delete |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

#### `mailchimp_send_campaign`

Send a Mailchimp campaign

**Input**

| Parameter    | Type   | Required | Description                            |
| ------------ | ------ | -------- | -------------------------------------- |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix   |
| `campaignId` | string | Yes      | The unique ID for the campaign to send |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Send confirmation        |

#### `mailchimp_schedule_campaign`

Schedule a Mailchimp campaign to be sent at a specific time

**Input**

| Parameter      | Type   | Required | Description                                |
| -------------- | ------ | -------- | ------------------------------------------ |
| `apiKey`       | string | Yes      | Mailchimp API key with server prefix       |
| `campaignId`   | string | Yes      | The unique ID for the campaign to schedule |
| `scheduleTime` | string | Yes      | ISO 8601 format date and time              |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Schedule confirmation    |

#### `mailchimp_unschedule_campaign`

Unschedule a previously scheduled Mailchimp campaign

**Input**

| Parameter    | Type   | Required | Description                                  |
| ------------ | ------ | -------- | -------------------------------------------- |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix         |
| `campaignId` | string | Yes      | The unique ID for the campaign to unschedule |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Unschedule confirmation  |

#### `mailchimp_replicate_campaign`

Create a copy of an existing Mailchimp campaign

**Input**

| Parameter    | Type   | Required | Description                                 |
| ------------ | ------ | -------- | ------------------------------------------- |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix        |
| `campaignId` | string | Yes      | The unique ID for the campaign to replicate |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Replicated campaign data |

#### `mailchimp_get_campaign_content`

Retrieve the HTML and plain-text content for a Mailchimp campaign

**Input**

| Parameter    | Type   | Required | Description                          |
| ------------ | ------ | -------- | ------------------------------------ |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix |
| `campaignId` | string | Yes      | The unique ID for the campaign       |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Campaign content data    |

#### `mailchimp_set_campaign_content`

Set the content for a Mailchimp campaign

**Input**

| Parameter    | Type   | Required | Description                             |
| ------------ | ------ | -------- | --------------------------------------- |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix    |
| `campaignId` | string | Yes      | The unique ID for the campaign          |
| `html`       | string | No       | The HTML content for the campaign       |
| `plainText`  | string | No       | The plain-text content for the campaign |
| `templateId` | string | No       | The ID of the template to use           |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Campaign content data    |

#### `mailchimp_get_automations`

Retrieve a list of automations from Mailchimp

**Input**

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix       |
| `count`   | string | No       | Number of results (default: 10, max: 1000) |
| `offset`  | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                   |
| --------- | ------- | ----------------------------- |
| `success` | boolean | Operation success status      |
| `output`  | object  | Automations data and metadata |

#### `mailchimp_get_automation`

Retrieve details of a specific automation from Mailchimp

**Input**

| Parameter    | Type   | Required | Description                               |
| ------------ | ------ | -------- | ----------------------------------------- |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix      |
| `workflowId` | string | Yes      | The unique ID for the automation workflow |

**Output**

| Parameter | Type    | Description                  |
| --------- | ------- | ---------------------------- |
| `success` | boolean | Operation success status     |
| `output`  | object  | Automation data and metadata |

#### `mailchimp_start_automation`

Start all emails in a Mailchimp automation workflow

**Input**

| Parameter    | Type   | Required | Description                               |
| ------------ | ------ | -------- | ----------------------------------------- |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix      |
| `workflowId` | string | Yes      | The unique ID for the automation workflow |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Start confirmation       |

#### `mailchimp_pause_automation`

Pause all emails in a Mailchimp automation workflow

**Input**

| Parameter    | Type   | Required | Description                               |
| ------------ | ------ | -------- | ----------------------------------------- |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix      |
| `workflowId` | string | Yes      | The unique ID for the automation workflow |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Pause confirmation       |

#### `mailchimp_add_subscriber_to_automation`

Manually add a subscriber to a workflow email queue

**Input**

| Parameter         | Type   | Required | Description                               |
| ----------------- | ------ | -------- | ----------------------------------------- |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix      |
| `workflowId`      | string | Yes      | The unique ID for the automation workflow |
| `workflowEmailId` | string | Yes      | The unique ID for the workflow email      |
| `emailAddress`    | string | Yes      | Email address of the subscriber           |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Subscriber queue data    |

#### `mailchimp_get_templates`

Retrieve a list of templates from Mailchimp

**Input**

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix       |
| `count`   | string | No       | Number of results (default: 10, max: 1000) |
| `offset`  | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                 |
| --------- | ------- | --------------------------- |
| `success` | boolean | Operation success status    |
| `output`  | object  | Templates data and metadata |

#### `mailchimp_get_template`

Retrieve details of a specific template from Mailchimp

**Input**

| Parameter    | Type   | Required | Description                          |
| ------------ | ------ | -------- | ------------------------------------ |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix |
| `templateId` | string | Yes      | The unique ID for the template       |

**Output**

| Parameter | Type    | Description                |
| --------- | ------- | -------------------------- |
| `success` | boolean | Operation success status   |
| `output`  | object  | Template data and metadata |

#### `mailchimp_create_template`

Create a new template in Mailchimp

**Input**

| Parameter      | Type   | Required | Description                          |
| -------------- | ------ | -------- | ------------------------------------ |
| `apiKey`       | string | Yes      | Mailchimp API key with server prefix |
| `templateName` | string | Yes      | The name of the template             |
| `templateHtml` | string | Yes      | The HTML content for the template    |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Created template data    |

#### `mailchimp_update_template`

Update an existing template in Mailchimp

**Input**

| Parameter      | Type   | Required | Description                          |
| -------------- | ------ | -------- | ------------------------------------ |
| `apiKey`       | string | Yes      | Mailchimp API key with server prefix |
| `templateId`   | string | Yes      | The unique ID for the template       |
| `templateName` | string | No       | The name of the template             |
| `templateHtml` | string | No       | The HTML content for the template    |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Updated template data    |

#### `mailchimp_delete_template`

Delete a template from Mailchimp

**Input**

| Parameter    | Type   | Required | Description                              |
| ------------ | ------ | -------- | ---------------------------------------- |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix     |
| `templateId` | string | Yes      | The unique ID for the template to delete |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

#### `mailchimp_get_campaign_reports`

Retrieve a list of campaign reports from Mailchimp

**Input**

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix       |
| `count`   | string | No       | Number of results (default: 10, max: 1000) |
| `offset`  | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                        |
| --------- | ------- | ---------------------------------- |
| `success` | boolean | Operation success status           |
| `output`  | object  | Campaign reports data and metadata |

#### `mailchimp_get_campaign_report`

Retrieve the report for a specific campaign from Mailchimp

**Input**

| Parameter    | Type   | Required | Description                          |
| ------------ | ------ | -------- | ------------------------------------ |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix |
| `campaignId` | string | Yes      | The unique ID for the campaign       |

**Output**

| Parameter | Type    | Description                       |
| --------- | ------- | --------------------------------- |
| `success` | boolean | Operation success status          |
| `output`  | object  | Campaign report data and metadata |

#### `mailchimp_get_segments`

Retrieve a list of segments from a Mailchimp audience

**Input**

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix       |
| `listId`  | string | Yes      | The unique ID for the list                 |
| `count`   | string | No       | Number of results (default: 10, max: 1000) |
| `offset`  | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                |
| --------- | ------- | -------------------------- |
| `success` | boolean | Operation success status   |
| `output`  | object  | Segments data and metadata |

#### `mailchimp_get_segment`

Retrieve details of a specific segment from a Mailchimp audience

**Input**

| Parameter   | Type   | Required | Description                          |
| ----------- | ------ | -------- | ------------------------------------ |
| `apiKey`    | string | Yes      | Mailchimp API key with server prefix |
| `listId`    | string | Yes      | The unique ID for the list           |
| `segmentId` | string | Yes      | The unique ID for the segment        |

**Output**

| Parameter | Type    | Description               |
| --------- | ------- | ------------------------- |
| `success` | boolean | Operation success status  |
| `output`  | object  | Segment data and metadata |

#### `mailchimp_create_segment`

Create a new segment in a Mailchimp audience

**Input**

| Parameter        | Type   | Required | Description                          |
| ---------------- | ------ | -------- | ------------------------------------ |
| `apiKey`         | string | Yes      | Mailchimp API key with server prefix |
| `listId`         | string | Yes      | The unique ID for the list           |
| `segmentName`    | string | Yes      | The name of the segment              |
| `segmentOptions` | string | No       | JSON object of segment options       |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Created segment data     |

#### `mailchimp_update_segment`

Update an existing segment in a Mailchimp audience

**Input**

| Parameter        | Type   | Required | Description                          |
| ---------------- | ------ | -------- | ------------------------------------ |
| `apiKey`         | string | Yes      | Mailchimp API key with server prefix |
| `listId`         | string | Yes      | The unique ID for the list           |
| `segmentId`      | string | Yes      | The unique ID for the segment        |
| `segmentName`    | string | No       | The name of the segment              |
| `segmentOptions` | string | No       | JSON object of segment options       |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Updated segment data     |

#### `mailchimp_delete_segment`

Delete a segment from a Mailchimp audience

**Input**

| Parameter   | Type   | Required | Description                             |
| ----------- | ------ | -------- | --------------------------------------- |
| `apiKey`    | string | Yes      | Mailchimp API key with server prefix    |
| `listId`    | string | Yes      | The unique ID for the list              |
| `segmentId` | string | Yes      | The unique ID for the segment to delete |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

#### `mailchimp_get_segment_members`

Retrieve members of a specific segment from a Mailchimp audience

**Input**

| Parameter   | Type   | Required | Description                                |
| ----------- | ------ | -------- | ------------------------------------------ |
| `apiKey`    | string | Yes      | Mailchimp API key with server prefix       |
| `listId`    | string | Yes      | The unique ID for the list                 |
| `segmentId` | string | Yes      | The unique ID for the segment              |
| `count`     | string | No       | Number of results (default: 10, max: 1000) |
| `offset`    | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                       |
| --------- | ------- | --------------------------------- |
| `success` | boolean | Operation success status          |
| `output`  | object  | Segment members data and metadata |

#### `mailchimp_add_segment_member`

Add a member to a specific segment in a Mailchimp audience

**Input**

| Parameter      | Type   | Required | Description                          |
| -------------- | ------ | -------- | ------------------------------------ |
| `apiKey`       | string | Yes      | Mailchimp API key with server prefix |
| `listId`       | string | Yes      | The unique ID for the list           |
| `segmentId`    | string | Yes      | The unique ID for the segment        |
| `emailAddress` | string | Yes      | Email address of the member          |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Added member data        |

#### `mailchimp_remove_segment_member`

Remove a member from a specific segment in a Mailchimp audience

**Input**

| Parameter         | Type   | Required | Description                          |
| ----------------- | ------ | -------- | ------------------------------------ |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix |
| `listId`          | string | Yes      | The unique ID for the list           |
| `segmentId`       | string | Yes      | The unique ID for the segment        |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash     |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Removal confirmation     |

#### `mailchimp_get_member_tags`

Retrieve tags associated with a member in a Mailchimp audience

**Input**

| Parameter         | Type   | Required | Description                          |
| ----------------- | ------ | -------- | ------------------------------------ |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix |
| `listId`          | string | Yes      | The unique ID for the list           |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash     |

**Output**

| Parameter | Type    | Description                   |
| --------- | ------- | ----------------------------- |
| `success` | boolean | Operation success status      |
| `output`  | object  | Member tags data and metadata |

#### `mailchimp_add_member_tags`

Add tags to a member in a Mailchimp audience

**Input**

| Parameter         | Type   | Required | Description                          |
| ----------------- | ------ | -------- | ------------------------------------ |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix |
| `listId`          | string | Yes      | The unique ID for the list           |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash     |
| `tags`            | string | Yes      | JSON array of tags                   |

**Output**

| Parameter | Type    | Description               |
| --------- | ------- | ------------------------- |
| `success` | boolean | Operation success status  |
| `output`  | object  | Tag addition confirmation |

#### `mailchimp_remove_member_tags`

Remove tags from a member in a Mailchimp audience

**Input**

| Parameter         | Type   | Required | Description                             |
| ----------------- | ------ | -------- | --------------------------------------- |
| `apiKey`          | string | Yes      | Mailchimp API key with server prefix    |
| `listId`          | string | Yes      | The unique ID for the list              |
| `subscriberEmail` | string | Yes      | Member email address or MD5 hash        |
| `tags`            | string | Yes      | JSON array of tags with inactive status |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Tag removal confirmation |

#### `mailchimp_get_merge_fields`

Retrieve a list of merge fields from a Mailchimp audience

**Input**

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix       |
| `listId`  | string | Yes      | The unique ID for the list                 |
| `count`   | string | No       | Number of results (default: 10, max: 1000) |
| `offset`  | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                    |
| --------- | ------- | ------------------------------ |
| `success` | boolean | Operation success status       |
| `output`  | object  | Merge fields data and metadata |

#### `mailchimp_get_merge_field`

Retrieve details of a specific merge field from a Mailchimp audience

**Input**

| Parameter | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix |
| `listId`  | string | Yes      | The unique ID for the list           |
| `mergeId` | string | Yes      | The unique ID for the merge field    |

**Output**

| Parameter | Type    | Description                   |
| --------- | ------- | ----------------------------- |
| `success` | boolean | Operation success status      |
| `output`  | object  | Merge field data and metadata |

#### `mailchimp_create_merge_field`

Create a new merge field in a Mailchimp audience

**Input**

| Parameter   | Type   | Required | Description                                                                                                     |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- |
| `apiKey`    | string | Yes      | Mailchimp API key with server prefix                                                                            |
| `listId`    | string | Yes      | The unique ID for the list                                                                                      |
| `mergeName` | string | Yes      | The name of the merge field                                                                                     |
| `mergeType` | string | Yes      | The type of the merge field (text, number, address, phone, date, url, imageurl, radio, dropdown, birthday, zip) |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Created merge field data |

#### `mailchimp_update_merge_field`

Update an existing merge field in a Mailchimp audience

**Input**

| Parameter   | Type   | Required | Description                          |
| ----------- | ------ | -------- | ------------------------------------ |
| `apiKey`    | string | Yes      | Mailchimp API key with server prefix |
| `listId`    | string | Yes      | The unique ID for the list           |
| `mergeId`   | string | Yes      | The unique ID for the merge field    |
| `mergeName` | string | No       | The name of the merge field          |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Updated merge field data |

#### `mailchimp_delete_merge_field`

Delete a merge field from a Mailchimp audience

**Input**

| Parameter | Type   | Required | Description                                 |
| --------- | ------ | -------- | ------------------------------------------- |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix        |
| `listId`  | string | Yes      | The unique ID for the list                  |
| `mergeId` | string | Yes      | The unique ID for the merge field to delete |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

#### `mailchimp_get_interest_categories`

Retrieve a list of interest categories from a Mailchimp audience

**Input**

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix       |
| `listId`  | string | Yes      | The unique ID for the list                 |
| `count`   | string | No       | Number of results (default: 10, max: 1000) |
| `offset`  | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                           |
| --------- | ------- | ------------------------------------- |
| `success` | boolean | Operation success status              |
| `output`  | object  | Interest categories data and metadata |

#### `mailchimp_get_interest_category`

Retrieve details of a specific interest category from a Mailchimp audience

**Input**

| Parameter            | Type   | Required | Description                             |
| -------------------- | ------ | -------- | --------------------------------------- |
| `apiKey`             | string | Yes      | Mailchimp API key with server prefix    |
| `listId`             | string | Yes      | The unique ID for the list              |
| `interestCategoryId` | string | Yes      | The unique ID for the interest category |

**Output**

| Parameter | Type    | Description                         |
| --------- | ------- | ----------------------------------- |
| `success` | boolean | Operation success status            |
| `output`  | object  | Interest category data and metadata |

#### `mailchimp_create_interest_category`

Create a new interest category in a Mailchimp audience

**Input**

| Parameter               | Type   | Required | Description                                                         |
| ----------------------- | ------ | -------- | ------------------------------------------------------------------- |
| `apiKey`                | string | Yes      | Mailchimp API key with server prefix                                |
| `listId`                | string | Yes      | The unique ID for the list                                          |
| `interestCategoryTitle` | string | Yes      | The title of the interest category                                  |
| `interestCategoryType`  | string | Yes      | The type of interest category (checkboxes, dropdown, radio, hidden) |

**Output**

| Parameter | Type    | Description                    |
| --------- | ------- | ------------------------------ |
| `success` | boolean | Operation success status       |
| `output`  | object  | Created interest category data |

#### `mailchimp_update_interest_category`

Update an existing interest category in a Mailchimp audience

**Input**

| Parameter               | Type   | Required | Description                             |
| ----------------------- | ------ | -------- | --------------------------------------- |
| `apiKey`                | string | Yes      | Mailchimp API key with server prefix    |
| `listId`                | string | Yes      | The unique ID for the list              |
| `interestCategoryId`    | string | Yes      | The unique ID for the interest category |
| `interestCategoryTitle` | string | No       | The title of the interest category      |

**Output**

| Parameter | Type    | Description                    |
| --------- | ------- | ------------------------------ |
| `success` | boolean | Operation success status       |
| `output`  | object  | Updated interest category data |

#### `mailchimp_delete_interest_category`

Delete an interest category from a Mailchimp audience

**Input**

| Parameter            | Type   | Required | Description                                       |
| -------------------- | ------ | -------- | ------------------------------------------------- |
| `apiKey`             | string | Yes      | Mailchimp API key with server prefix              |
| `listId`             | string | Yes      | The unique ID for the list                        |
| `interestCategoryId` | string | Yes      | The unique ID for the interest category to delete |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

#### `mailchimp_get_interests`

Retrieve a list of interests from an interest category in a Mailchimp audience

**Input**

| Parameter            | Type   | Required | Description                                |
| -------------------- | ------ | -------- | ------------------------------------------ |
| `apiKey`             | string | Yes      | Mailchimp API key with server prefix       |
| `listId`             | string | Yes      | The unique ID for the list                 |
| `interestCategoryId` | string | Yes      | The unique ID for the interest category    |
| `count`              | string | No       | Number of results (default: 10, max: 1000) |
| `offset`             | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                 |
| --------- | ------- | --------------------------- |
| `success` | boolean | Operation success status    |
| `output`  | object  | Interests data and metadata |

#### `mailchimp_get_interest`

Retrieve details of a specific interest from an interest category in a Mailchimp audience

**Input**

| Parameter            | Type   | Required | Description                             |
| -------------------- | ------ | -------- | --------------------------------------- |
| `apiKey`             | string | Yes      | Mailchimp API key with server prefix    |
| `listId`             | string | Yes      | The unique ID for the list              |
| `interestCategoryId` | string | Yes      | The unique ID for the interest category |
| `interestId`         | string | Yes      | The unique ID for the interest          |

**Output**

| Parameter | Type    | Description                |
| --------- | ------- | -------------------------- |
| `success` | boolean | Operation success status   |
| `output`  | object  | Interest data and metadata |

#### `mailchimp_create_interest`

Create a new interest in an interest category in a Mailchimp audience

**Input**

| Parameter            | Type   | Required | Description                             |
| -------------------- | ------ | -------- | --------------------------------------- |
| `apiKey`             | string | Yes      | Mailchimp API key with server prefix    |
| `listId`             | string | Yes      | The unique ID for the list              |
| `interestCategoryId` | string | Yes      | The unique ID for the interest category |
| `interestName`       | string | Yes      | The name of the interest                |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Created interest data    |

#### `mailchimp_update_interest`

Update an existing interest in an interest category in a Mailchimp audience

**Input**

| Parameter            | Type   | Required | Description                             |
| -------------------- | ------ | -------- | --------------------------------------- |
| `apiKey`             | string | Yes      | Mailchimp API key with server prefix    |
| `listId`             | string | Yes      | The unique ID for the list              |
| `interestCategoryId` | string | Yes      | The unique ID for the interest category |
| `interestId`         | string | Yes      | The unique ID for the interest          |
| `interestName`       | string | No       | The name of the interest                |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Updated interest data    |

#### `mailchimp_delete_interest`

Delete an interest from an interest category in a Mailchimp audience

**Input**

| Parameter            | Type   | Required | Description                              |
| -------------------- | ------ | -------- | ---------------------------------------- |
| `apiKey`             | string | Yes      | Mailchimp API key with server prefix     |
| `listId`             | string | Yes      | The unique ID for the list               |
| `interestCategoryId` | string | Yes      | The unique ID for the interest category  |
| `interestId`         | string | Yes      | The unique ID for the interest to delete |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

#### `mailchimp_get_landing_pages`

Retrieve a list of landing pages from Mailchimp

**Input**

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix       |
| `count`   | string | No       | Number of results (default: 10, max: 1000) |
| `offset`  | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                     |
| --------- | ------- | ------------------------------- |
| `success` | boolean | Operation success status        |
| `output`  | object  | Landing pages data and metadata |

#### `mailchimp_get_landing_page`

Retrieve details of a specific landing page from Mailchimp

**Input**

| Parameter | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix |
| `pageId`  | string | Yes      | The unique ID for the landing page   |

**Output**

| Parameter | Type    | Description                    |
| --------- | ------- | ------------------------------ |
| `success` | boolean | Operation success status       |
| `output`  | object  | Landing page data and metadata |

#### `mailchimp_create_landing_page`

Create a new landing page in Mailchimp

**Input**

| Parameter          | Type   | Required | Description                          |
| ------------------ | ------ | -------- | ------------------------------------ |
| `apiKey`           | string | Yes      | Mailchimp API key with server prefix |
| `landingPageType`  | string | Yes      | The type of landing page (signup)    |
| `landingPageTitle` | string | No       | The title of the landing page        |

**Output**

| Parameter | Type    | Description               |
| --------- | ------- | ------------------------- |
| `success` | boolean | Operation success status  |
| `output`  | object  | Created landing page data |

#### `mailchimp_update_landing_page`

Update an existing landing page in Mailchimp

**Input**

| Parameter          | Type   | Required | Description                          |
| ------------------ | ------ | -------- | ------------------------------------ |
| `apiKey`           | string | Yes      | Mailchimp API key with server prefix |
| `pageId`           | string | Yes      | The unique ID for the landing page   |
| `landingPageTitle` | string | No       | The title of the landing page        |

**Output**

| Parameter | Type    | Description               |
| --------- | ------- | ------------------------- |
| `success` | boolean | Operation success status  |
| `output`  | object  | Updated landing page data |

#### `mailchimp_delete_landing_page`

Delete a landing page from Mailchimp

**Input**

| Parameter | Type   | Required | Description                                  |
| --------- | ------ | -------- | -------------------------------------------- |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix         |
| `pageId`  | string | Yes      | The unique ID for the landing page to delete |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

#### `mailchimp_publish_landing_page`

Publish a landing page in Mailchimp

**Input**

| Parameter | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix |
| `pageId`  | string | Yes      | The unique ID for the landing page   |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Publish confirmation     |

#### `mailchimp_unpublish_landing_page`

Unpublish a landing page in Mailchimp

**Input**

| Parameter | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix |
| `pageId`  | string | Yes      | The unique ID for the landing page   |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Unpublish confirmation   |

#### `mailchimp_get_batch_operations`

Retrieve a list of batch operations from Mailchimp

**Input**

| Parameter | Type   | Required | Description                                |
| --------- | ------ | -------- | ------------------------------------------ |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix       |
| `count`   | string | No       | Number of results (default: 10, max: 1000) |
| `offset`  | string | No       | Number of results to skip                  |

**Output**

| Parameter | Type    | Description                        |
| --------- | ------- | ---------------------------------- |
| `success` | boolean | Operation success status           |
| `output`  | object  | Batch operations data and metadata |

#### `mailchimp_get_batch_operation`

Retrieve details of a specific batch operation from Mailchimp

**Input**

| Parameter | Type   | Required | Description                           |
| --------- | ------ | -------- | ------------------------------------- |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix  |
| `batchId` | string | Yes      | The unique ID for the batch operation |

**Output**

| Parameter | Type    | Description                       |
| --------- | ------- | --------------------------------- |
| `success` | boolean | Operation success status          |
| `output`  | object  | Batch operation data and metadata |

#### `mailchimp_create_batch_operation`

Create a new batch operation in Mailchimp

**Input**

| Parameter    | Type   | Required | Description                          |
| ------------ | ------ | -------- | ------------------------------------ |
| `apiKey`     | string | Yes      | Mailchimp API key with server prefix |
| `operations` | string | Yes      | JSON array of operations             |

**Output**

| Parameter | Type    | Description                  |
| --------- | ------- | ---------------------------- |
| `success` | boolean | Operation success status     |
| `output`  | object  | Created batch operation data |

#### `mailchimp_delete_batch_operation`

Delete a batch operation from Mailchimp

**Input**

| Parameter | Type   | Required | Description                                     |
| --------- | ------ | -------- | ----------------------------------------------- |
| `apiKey`  | string | Yes      | Mailchimp API key with server prefix            |
| `batchId` | string | Yes      | The unique ID for the batch operation to delete |

**Output**

| Parameter | Type    | Description              |
| --------- | ------- | ------------------------ |
| `success` | boolean | Operation success status |
| `output`  | object  | Deletion confirmation    |

### Notes

* Category: `tools`
* Type: `mailchimp`


# mem0

[Mem0](https://mem0.ai/) is a powerful memory management system designed specifically for AI agents. It provides a persistent, searchable memory store that enables agents to remember past interactions, learn from experiences, and maintain context across conversations and workflow executions.

With Mem0, you can:

* **Store agent memories**: Save conversation history, user preferences, and important context
* **Retrieve relevant information**: Use semantic search to find the most relevant past interactions
* **Build context-aware agents**: Enable your agents to reference past conversations and maintain continuity
* **Personalize interactions**: Tailor responses based on user history and preferences
* **Implement long-term memory**: Create agents that learn and adapt over time
* **Scale memory management**: Handle memory needs for multiple users and complex workflows

In Agent Forge, the Mem0 integration enables your agents to maintain persistent memory across workflow executions. This allows for more natural, context-aware interactions where agents can recall past conversations, remember user preferences, and build upon previous interactions. By connecting Agent Forge with Mem0, you can create agents that feel more human-like in their ability to remember and learn from past experiences. The integration supports adding new memories, searching existing memories semantically, and retrieving specific memory records. This memory management capability is essential for building sophisticated agents that can maintain context over time, personalize interactions based on user history, and continuously improve their performance through accumulated knowledge.

### Usage Instructions

Add, search, retrieve, and delete memories using Mem0. Store conversation history, user preferences, and context across workflow executions for enhanced AI agent capabilities.

### Tools

#### `mem0_add_memories`

Add memories to Mem0 for persistent storage and retrieval

**Input**

| Parameter  | Type   | Required | Description                                    |
| ---------- | ------ | -------- | ---------------------------------------------- |
| `userId`   | string | Yes      | User ID associated with the memory             |
| `messages` | json   | Yes      | Array of message objects with role and content |
| `apiKey`   | string | Yes      | Your Mem0 API key                              |

**Output**

| Parameter       | Type | Description        |
| --------------- | ---- | ------------------ |
| `ids`           | any  | Memory identifiers |
| `memories`      | any  | Memory data        |
| `searchResults` | any  | Search results     |

#### `mem0_search_memories`

Search for memories in Mem0 using semantic search

**Input**

| Parameter | Type   | Required | Description                            |
| --------- | ------ | -------- | -------------------------------------- |
| `userId`  | string | Yes      | User ID to search memories for         |
| `query`   | string | Yes      | Search query to find relevant memories |
| `limit`   | number | No       | Maximum number of results to return    |
| `apiKey`  | string | Yes      | Your Mem0 API key                      |

**Output**

| Parameter       | Type | Description        |
| --------------- | ---- | ------------------ |
| `ids`           | any  | Memory identifiers |
| `memories`      | any  | Memory data        |
| `searchResults` | any  | Search results     |

#### `mem0_get_memories`

Retrieve memories from Mem0 by ID or filter criteria

**Input**

| Parameter   | Type   | Required | Description                                                  |
| ----------- | ------ | -------- | ------------------------------------------------------------ |
| `userId`    | string | Yes      | User ID to retrieve memories for                             |
| `memoryId`  | string | No       | Specific memory ID to retrieve                               |
| `startDate` | string | No       | Start date for filtering by created\_at (format: YYYY-MM-DD) |
| `endDate`   | string | No       | End date for filtering by created\_at (format: YYYY-MM-DD)   |
| `limit`     | number | No       | Maximum number of results to return                          |
| `apiKey`    | string | Yes      | Your Mem0 API key                                            |

**Output**

| Parameter       | Type | Description        |
| --------------- | ---- | ------------------ |
| `ids`           | any  | Memory identifiers |
| `memories`      | any  | Memory data        |
| `searchResults` | any  | Search results     |

### Notes

* Category: `tools`
* Type: `mem0`


# messari

[Messari](https://messari.io/) provides crypto market intelligence, including asset profiles, market metrics, trading venue information, and news.

In Agent Forge, the Messari integration allows agents and workflows to enrich crypto research with structured asset data. Use it for token research, market summaries, investment monitoring, narrative tracking, and automated crypto reporting.

### Usage Instructions

Select a Messari operation and provide an asset key such as a symbol or slug. Advanced fields allow pagination and result limits for markets and news. A Messari API key can be provided when your usage requires authenticated access.

### Tools

#### `messari_get_asset_profile`

Retrieve profile and descriptive metadata for an asset.

#### `messari_get_asset_metrics`

Retrieve market metrics for an asset.

#### `messari_get_asset_markets`

Retrieve markets and venues associated with an asset.

#### `messari_get_asset_news`

Retrieve recent news for an asset.

### Input

| Parameter  | Type   | Required | Description                                      |
| ---------- | ------ | -------- | ------------------------------------------------ |
| `assetKey` | string | Yes      | Asset symbol or slug, such as `bitcoin` or `btc` |
| `apiKey`   | string | No       | Optional Messari API key                         |
| `page`     | number | No       | Page number for market results                   |
| `limit`    | number | No       | Result limit for markets or news                 |

### Output

| Parameter | Type | Description            |
| --------- | ---- | ---------------------- |
| `data`    | json | Messari response data  |
| `status`  | json | Messari status payload |

### Notes

* Category: `tools`
* Type: `messari`


# microsoft\_teams

[Microsoft Teams](https://teams.microsoft.com/) is a robust communication and collaboration platform that enables users to engage in real-time messaging, meetings, and content sharing within teams and organizations. As part of Microsoft's productivity ecosystem, Microsoft Teams offers seamless chat functionality integrated with Office 365, allowing users to post messages, coordinate work, and stay connected across devices and workflows.

With Microsoft Teams, you can:

* **Send and receive messages**: Communicate instantly with individuals or groups in chat threads
* **Collaborate in real-time**: Share updates and information across teams within channels and chats
* **Organize conversations**: Maintain context with threaded discussions and persistent chat history
* **Share files and content**: Attach and view documents, images, and links directly in chat
* **Integrate with Microsoft 365**: Seamlessly connect with Outlook, SharePoint, OneDrive, and more
* **Access across devices**: Use Teams on desktop, web, and mobile with cloud-synced conversations
* **Secure communication**: Leverage enterprise-grade security and compliance features

In Agent Forge, the Microsoft Teams integration enables your agents to interact directly with chat messages programmatically. This allows for powerful automation scenarios such as sending updates, posting alerts, coordinating tasks, and responding to conversations in real time. Your agents can write new messages to chats or channels, update content based on workflow data, and engage with users where collaboration happens. By integrating Agent Forge with Microsoft Teams, you bridge the gap between intelligent workflows and team communication — empowering your agents to streamline collaboration, automate communication tasks, and keep your teams aligned.

### Usage Instructions

Integrate Microsoft Teams functionality to manage messages. Read content from existing messages and write to messages using OAuth authentication. Supports text content manipulation for message creation and editing.

### Tools

#### `microsoft_teams_read_chat`

Read content from a Microsoft Teams chat

**Input**

| Parameter     | Type   | Required | Description                                  |
| ------------- | ------ | -------- | -------------------------------------------- |
| `accessToken` | string | Yes      | The access token for the Microsoft Teams API |
| `chatId`      | string | Yes      | The ID of the chat to read from              |

**Output**

| Parameter        | Type    | Description           |
| ---------------- | ------- | --------------------- |
| `content`        | string  | Message content       |
| `metadata`       | json    | Message metadata      |
| `updatedContent` | boolean | Content update status |

#### `microsoft_teams_write_chat`

Write or update content in a Microsoft Teams chat

**Input**

| Parameter     | Type   | Required | Description                                  |
| ------------- | ------ | -------- | -------------------------------------------- |
| `accessToken` | string | Yes      | The access token for the Microsoft Teams API |
| `chatId`      | string | Yes      | The ID of the chat to write to               |
| `content`     | string | Yes      | The content to write to the message          |

**Output**

| Parameter        | Type    | Description           |
| ---------------- | ------- | --------------------- |
| `content`        | string  | Message content       |
| `metadata`       | json    | Message metadata      |
| `updatedContent` | boolean | Content update status |

#### `microsoft_teams_read_channel`

Read content from a Microsoft Teams channel

**Input**

| Parameter     | Type   | Required | Description                                  |
| ------------- | ------ | -------- | -------------------------------------------- |
| `accessToken` | string | Yes      | The access token for the Microsoft Teams API |
| `teamId`      | string | Yes      | The ID of the team to read from              |
| `channelId`   | string | Yes      | The ID of the channel to read from           |

**Output**

| Parameter        | Type    | Description           |
| ---------------- | ------- | --------------------- |
| `content`        | string  | Message content       |
| `metadata`       | json    | Message metadata      |
| `updatedContent` | boolean | Content update status |

#### `microsoft_teams_write_channel`

Write or send a message to a Microsoft Teams channel

**Input**

| Parameter     | Type   | Required | Description                                  |
| ------------- | ------ | -------- | -------------------------------------------- |
| `accessToken` | string | Yes      | The access token for the Microsoft Teams API |
| `teamId`      | string | Yes      | The ID of the team to write to               |
| `channelId`   | string | Yes      | The ID of the channel to write to            |
| `content`     | string | Yes      | The content to write to the channel          |

**Output**

| Parameter        | Type    | Description           |
| ---------------- | ------- | --------------------- |
| `content`        | string  | Message content       |
| `metadata`       | json    | Message metadata      |
| `updatedContent` | boolean | Content update status |

### Notes

* Category: `tools`
* Type: `microsoft_teams`


# microsoft\_excel

Read, write, and update data

[Microsoft Teams](https://www.microsoft.com/en-us/microsoft-365/excel) is a powerful spreadsheet application that enables data management, analysis, and visualization. Through the Microsoft Excel integration in Agent Forge, you can programmatically read, write, and manipulate spreadsheet data to support your workflow automation needs.

With Microsoft Excel integration, you can:

* **Read Spreadsheet Data**: Access data from specific ranges, sheets, and cells
* **Write and Update Data**: Add new data or modify existing spreadsheet content
* **Manage Tables**: Create and manipulate tabular data structures
* **Handle Multiple Sheets**: Work with multiple worksheets in a workbook
* **Process Data**: Import, export, and transform spreadsheet data

In Agent Forge, the Microsoft Excel integration provides seamless access to spreadsheet functionality through OAuth authentication. You can read data from specific ranges, write new information, update existing cells, and handle various data formats. The integration supports both reading and writing operations with flexible input and output options. This enables you to build workflows that can effectively manage spreadsheet data, whether you're extracting information for analysis, updating records automatically, or maintaining data consistency across your applications.

## Usage Instructions

Integrate Microsoft Excel functionality to manage spreadsheet data. Read data from specific ranges, write new data, update existing cells, and manipulate table data using OAuth authentication. Supports various input and output formats for flexible data handling.

## Tools

### `microsoft_excel_read`

Read data from a Microsoft Excel spreadsheet

#### Input

| Parameter       | Type   | Required | Description                                  |
| --------------- | ------ | -------- | -------------------------------------------- |
| `accessToken`   | string | Yes      | The access token for the Microsoft Excel API |
| `spreadsheetId` | string | Yes      | The ID of the spreadsheet to read from       |
| `range`         | string | No       | The range of cells to read from              |

#### Output

| Parameter        | Type   | Description           |
| ---------------- | ------ | --------------------- |
| `data`           | json   | Sheet data            |
| `metadata`       | json   | Operation metadata    |
| `updatedRange`   | string | Updated range         |
| `updatedRows`    | number | Updated rows count    |
| `updatedColumns` | number | Updated columns count |
| `updatedCells`   | number | Updated cells count   |
| `index`          | number | Row index             |
| `values`         | json   | Table values          |

### `microsoft_excel_write`

Write data to a Microsoft Excel spreadsheet

#### Input

| Parameter                 | Type    | Required | Description                                           |
| ------------------------- | ------- | -------- | ----------------------------------------------------- |
| `accessToken`             | string  | Yes      | The access token for the Microsoft Excel API          |
| `spreadsheetId`           | string  | Yes      | The ID of the spreadsheet to write to                 |
| `range`                   | string  | No       | The range of cells to write to                        |
| `values`                  | array   | Yes      | The data to write to the spreadsheet                  |
| `valueInputOption`        | string  | No       | The format of the data to write                       |
| `includeValuesInResponse` | boolean | No       | Whether to include the written values in the response |

#### Output

| Parameter        | Type   | Description           |
| ---------------- | ------ | --------------------- |
| `data`           | json   | Sheet data            |
| `metadata`       | json   | Operation metadata    |
| `updatedRange`   | string | Updated range         |
| `updatedRows`    | number | Updated rows count    |
| `updatedColumns` | number | Updated columns count |
| `updatedCells`   | number | Updated cells count   |
| `index`          | number | Row index             |
| `values`         | json   | Table values          |

### `microsoft_excel_table_add`

Add new rows to a Microsoft Excel table

#### Input

| Parameter       | Type   | Required | Description                                                        |
| --------------- | ------ | -------- | ------------------------------------------------------------------ |
| `accessToken`   | string | Yes      | The access token for the Microsoft Excel API                       |
| `spreadsheetId` | string | Yes      | The ID of the spreadsheet containing the table                     |
| `tableName`     | string | Yes      | The name of the table to add rows to                               |
| `values`        | array  | Yes      | The data to add to the table (array of arrays or array of objects) |

#### Output

| Parameter        | Type   | Description           |
| ---------------- | ------ | --------------------- |
| `data`           | json   | Sheet data            |
| `metadata`       | json   | Operation metadata    |
| `updatedRange`   | string | Updated range         |
| `updatedRows`    | number | Updated rows count    |
| `updatedColumns` | number | Updated columns count |
| `updatedCells`   | number | Updated cells count   |
| `index`          | number | Row index             |
| `values`         | json   | Table values          |

## Notes

* Category: `tools`
* Type: `microsoft_excel`


# openai

[OpenAI](https://www.openai.com/) is a leading AI research and deployment company that offers a suite of powerful AI models and APIs. OpenAI provides cutting-edge technologies including large language models (like GPT-4), image generation (DALL-E), and embeddings that enable developers to build sophisticated AI-powered applications.

With OpenAI, you can:

* **Generate text**: Create human-like text for various applications using GPT models
* **Create images**: Transform text descriptions into visual content with DALL-E
* **Produce embeddings**: Convert text into numerical vectors for semantic search and analysis
* **Build AI assistants**: Develop conversational agents with specialized knowledge
* **Process and analyze data**: Extract insights and patterns from unstructured text
* **Translate languages**: Convert content between different languages with high accuracy
* **Summarize content**: Condense long-form text while preserving key information

In Agent Forge, the OpenAI integration enables your agents to leverage these powerful AI capabilities programmatically as part of their workflows. This allows for sophisticated automation scenarios that combine natural language understanding, content generation, and semantic analysis. Your agents can generate vector embeddings from text, which are numerical representations that capture semantic meaning, enabling advanced search, classification, and recommendation systems. Additionally, through the DALL-E integration, agents can create images from text descriptions, opening up possibilities for visual content generation. This integration bridges the gap between your workflow automation and state-of-the-art AI capabilities, enabling your agents to understand context, generate relevant content, and make intelligent decisions based on semantic understanding. By connecting Agent Forge with OpenAI, you can create agents that process information more intelligently, generate creative content, and deliver more personalized experiences to users.

### Usage Instructions

Convert text into numerical vector representations using OpenAI's embedding models. Transform text data into embeddings for semantic search, clustering, and other vector-based operations.

### Tools

#### `openai_embeddings`

Generate embeddings from text using OpenAI

**Input**

| Parameter        | Type   | Required | Description                            |
| ---------------- | ------ | -------- | -------------------------------------- |
| `input`          | string | Yes      | Text to generate embeddings for        |
| `model`          | string | No       | Model to use for embeddings            |
| `encodingFormat` | string | No       | The format to return the embeddings in |
| `apiKey`         | string | Yes      | OpenAI API key                         |

**Output**

| Parameter    | Type   | Description          |
| ------------ | ------ | -------------------- |
| `embeddings` | json   | Generated embeddings |
| `model`      | string | Model used           |
| `usage`      | json   | Token usage          |

### Notes

* Category: `tools`
* Type: `openai`


# mistral\_parse

The Mistral Parse tool provides a powerful way to extract and process content from PDF documents using [Mistral's OCR API](https://mistral.ai/). This tool leverages advanced optical character recognition to accurately extract text and structure from PDF files, making it easy to incorporate document data into your agent workflows.

With the Mistral Parse tool, you can:

* **Extract text from PDFs**: Accurately convert PDF content to text, markdown, or JSON formats
* **Process PDFs from URLs**: Directly extract content from PDFs hosted online by providing their URLs
* **Maintain document structure**: Preserve formatting, tables, and layout from the original PDFs
* **Extract images**: Optionally include embedded images from the PDFs
* **Select specific pages**: Process only the pages you need from multi-page documents

The Mistral Parse tool is particularly useful for scenarios where your agents need to work with PDF content, such as analyzing reports, extracting data from forms, or processing text from scanned documents. It simplifies the process of making PDF content available to your agents, allowing them to work with information stored in PDFs just as easily as with direct text input.

### Usage Instructions

Extract text and structure from PDF documents using Mistral's OCR API. Configure processing options and get the content in your preferred format. For URLs, they must be publicly accessible and point to a valid PDF file. Note: Google Drive, Dropbox, and other cloud storage links are not supported; use a direct download URL from a web server instead.

### Tools

#### `mistral_parser`

Parse PDF documents using Mistral OCR API

**Input**

| Parameter            | Type    | Required | Description                                                            |
| -------------------- | ------- | -------- | ---------------------------------------------------------------------- |
| `filePath`           | string  | Yes      | URL to a PDF document to be processed                                  |
| `fileUpload`         | object  | No       | File upload data from file-upload component                            |
| `resultType`         | string  | No       | Type of parsed result (markdown, text, or json). Defaults to markdown. |
| `includeImageBase64` | boolean | No       | Include base64-encoded images in the response                          |
| `pages`              | array   | No       | Specific pages to process (array of page numbers, starting from 0)     |
| `imageLimit`         | number  | No       | Maximum number of images to extract from the PDF                       |
| `imageMinSize`       | number  | No       | Minimum height and width of images to extract from the PDF             |
| `apiKey`             | string  | Yes      | Mistral API key (MISTRAL\_API\_KEY)                                    |

**Output**

| Parameter  | Type   | Description         |
| ---------- | ------ | ------------------- |
| `content`  | string | Extracted content   |
| `metadata` | json   | Processing metadata |

### Notes

* Category: `tools`
* Type: `mistral_parse`


# notion

[Notion](https://www.notion.so/) is an all-in-one workspace that combines notes, documents, wikis, and project management tools into a single platform. It offers a flexible and customizable environment where users can create, organize, and collaborate on content in various formats.

With Notion, you can:

* **Create versatile content**: Build documents, wikis, databases, kanban boards, calendars, and more
* **Organize information**: Structure content hierarchically with nested pages and powerful databases
* **Collaborate seamlessly**: Share workspaces and pages with team members for real-time collaboration
* **Customize your workspace**: Design your ideal workflow with flexible templates and building blocks
* **Connect information**: Link between pages and databases to create a knowledge network
* **Access anywhere**: Use Notion across web, desktop, and mobile platforms with automatic syncing

In Agent Forge, the Notion integration enables your agents to interact directly with your Notion workspace programmatically. This allows for powerful automation scenarios such as knowledge management, content creation, and information retrieval. Your agents can:

* **Read Notion pages**: Extract content and metadata from any Notion page.
* **Read Notion databases**: Retrieve database structure and information.
* **Write to pages**: Append new content to existing Notion pages.
* **Create new pages**: Generate new Notion pages under a parent page, with custom titles and content.
* **Query databases**: Search and filter database entries using advanced filter and sort criteria.
* **Search workspace**: Search across your entire Notion workspace for pages or databases matching specific queries.
* **Create new databases**: Programmatically create new databases with custom properties and structure.

This integration bridges the gap between your AI workflows and your knowledge base, enabling seamless documentation and information management. By connecting Agent Forge with Notion, you can automate documentation processes, maintain up-to-date information repositories, generate reports, and organize information intelligently—all through your intelligent agents.

## Usage Instructions

Integrate with Notion to read content from pages, write new content, and create new pages.

**Example of pageId/databaseId (underlined)**

## Tools

### `notion_read`

Read content from a Notion page

#### Input

| Parameter     | Type   | Required | Description                       |
| ------------- | ------ | -------- | --------------------------------- |
| `accessToken` | string | Yes      | Notion OAuth access token         |
| `pageId`      | string | Yes      | The ID of the Notion page to read |

#### Output

| Parameter  | Type   | Description   |
| ---------- | ------ | ------------- |
| `content`  | string | Page content  |
| `metadata` | any    | Page metadata |

### `notion_read_database`

Read database information and structure from Notion

#### Input

| Parameter     | Type   | Required | Description                           |
| ------------- | ------ | -------- | ------------------------------------- |
| `accessToken` | string | Yes      | Notion OAuth access token             |
| `databaseId`  | string | Yes      | The ID of the Notion database to read |

#### Output

| Parameter  | Type   | Description   |
| ---------- | ------ | ------------- |
| `content`  | string | Page content  |
| `metadata` | any    | Page metadata |

### `notion_write`

Append content to a Notion page

#### Input

| Parameter     | Type   | Required | Description                                    |
| ------------- | ------ | -------- | ---------------------------------------------- |
| `accessToken` | string | Yes      | Notion OAuth access token                      |
| `pageId`      | string | Yes      | The ID of the Notion page to append content to |
| `content`     | string | Yes      | The content to append to the page              |

#### Output

| Parameter  | Type   | Description   |
| ---------- | ------ | ------------- |
| `content`  | string | Page content  |
| `metadata` | any    | Page metadata |

### `notion_create_page`

Create a new page in Notion

#### Input

| Parameter     | Type   | Required | Description                                       |
| ------------- | ------ | -------- | ------------------------------------------------- |
| `accessToken` | string | Yes      | Notion OAuth access token                         |
| `parentId`    | string | Yes      | ID of the parent page                             |
| `title`       | string | No       | Title of the new page                             |
| `content`     | string | No       | Optional content to add to the page upon creation |

#### Output

| Parameter  | Type   | Description   |
| ---------- | ------ | ------------- |
| `content`  | string | Page content  |
| `metadata` | any    | Page metadata |

### `notion_query_database`

Query and filter Notion database entries with advanced filtering

#### Input

| Parameter     | Type   | Required | Description                                          |
| ------------- | ------ | -------- | ---------------------------------------------------- |
| `accessToken` | string | Yes      | Notion OAuth access token                            |
| `databaseId`  | string | Yes      | The ID of the database to query                      |
| `filter`      | string | No       | Filter conditions as JSON (optional)                 |
| `sorts`       | string | No       | Sort criteria as JSON array (optional)               |
| `pageSize`    | number | No       | Number of results to return (default: 100, max: 100) |

#### Output

| Parameter  | Type   | Description   |
| ---------- | ------ | ------------- |
| `content`  | string | Page content  |
| `metadata` | any    | Page metadata |

### `notion_search`

Search across all pages and databases in Notion workspace

#### Input

| Parameter     | Type   | Required | Description                                                   |
| ------------- | ------ | -------- | ------------------------------------------------------------- |
| `accessToken` | string | Yes      | Notion OAuth access token                                     |
| `query`       | string | No       | Search terms (leave empty to get all pages)                   |
| `filterType`  | string | No       | Filter by object type: page, database, or leave empty for all |
| `pageSize`    | number | No       | Number of results to return (default: 100, max: 100)          |

#### Output

| Parameter  | Type   | Description   |
| ---------- | ------ | ------------- |
| `content`  | string | Page content  |
| `metadata` | any    | Page metadata |

### `notion_create_database`

Create a new database in Notion with custom properties

#### Input

| Parameter     | Type   | Required | Description                                                         |
| ------------- | ------ | -------- | ------------------------------------------------------------------- |
| `accessToken` | string | Yes      | Notion OAuth access token                                           |
| `parentId`    | string | Yes      | ID of the parent page where the database will be created            |
| `title`       | string | Yes      | Title for the new database                                          |
| `properties`  | string | No       | Database properties as JSON object (optional, will create a default |

#### Output

| Parameter  | Type   | Description   |
| ---------- | ------ | ------------- |
| `content`  | string | Page content  |
| `metadata` | any    | Page metadata |

## Notes

* Category: `tools`
* Type: `notion`


# outlook

[Microsoft Outlook](https://outlook.office365.com/) is a comprehensive email and calendar platform that helps users manage communications, schedules, and tasks efficiently. As part of Microsoft's productivity suite, Outlook offers robust tools for sending and organizing emails, coordinating meetings, and integrating seamlessly with Microsoft 365 applications — enabling individuals and teams to stay organized and connected across devices.

With Microsoft Outlook, you can:

* **Send and receive emails**: Communicate clearly and professionally with individuals or distribution lists
* **Manage calendars and events**: Schedule meetings, set reminders, and view availability
* **Organize your inbox**: Use folders, categories, and rules to keep your email streamlined
* **Access contacts and tasks**: Keep track of key people and action items in one place
* **Integrate with Microsoft 365**: Work seamlessly with Word, Excel, Teams, and other Microsoft apps
* **Access across devices**: Use Outlook on desktop, web, and mobile with real-time sync
* **Maintain privacy and security**: Leverage enterprise-grade encryption and compliance controls

In Agent Forge, the Microsoft Outlook integration enables your agents to interact directly with email and calendar data programmatically. This allows for powerful automation scenarios such as sending custom email updates, parsing incoming messages for workflow triggers, creating calendar events, and managing task reminders. By connecting Agent Forge with Microsoft Outlook, you enable intelligent agents to automate communications, streamline scheduling, and maintain visibility into organizational correspondence — all within your workflow ecosystem.

## Usage Instructions

Integrate Outlook functionality to read, draft, and send email messages within your workflow. Automate email communications and process email content using OAuth authentication.

## Tools

### `outlook_send`

Send emails using Outlook

#### Input

| Parameter     | Type   | Required | Description                  |
| ------------- | ------ | -------- | ---------------------------- |
| `accessToken` | string | Yes      | Access token for Outlook API |
| `to`          | string | Yes      | Recipient email address      |
| `subject`     | string | Yes      | Email subject                |
| `body`        | string | Yes      | Email body content           |

#### Output

| Parameter | Type   | Description      |
| --------- | ------ | ---------------- |
| `message` | string | Response message |
| `results` | json   | Email results    |

### `outlook_draft`

Draft emails using Outlook

#### Input

| Parameter     | Type   | Required | Description                  |
| ------------- | ------ | -------- | ---------------------------- |
| `accessToken` | string | Yes      | Access token for Outlook API |
| `to`          | string | Yes      | Recipient email address      |
| `subject`     | string | Yes      | Email subject                |
| `body`        | string | Yes      | Email body content           |

#### Output

| Parameter | Type   | Description      |
| --------- | ------ | ---------------- |
| `message` | string | Response message |
| `results` | json   | Email results    |

### `outlook_read`

Read emails from Outlook

#### Input

| Parameter     | Type   | Required | Description                                                |
| ------------- | ------ | -------- | ---------------------------------------------------------- |
| `accessToken` | string | Yes      | OAuth access token for Outlook                             |
| `folder`      | string | No       | Folder ID to read emails from (default: Inbox)             |
| `maxResults`  | number | No       | Maximum number of emails to retrieve (default: 1, max: 10) |

#### Output

| Parameter | Type   | Description      |
| --------- | ------ | ---------------- |
| `message` | string | Response message |
| `results` | json   | Email results    |

## Notes

* Category: `tools`
* Type: `outlook`




---

[Next Page](/llms-full.txt/1)

