> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Call Actions

> Choose how to invoke StackOne actions: direct API, MCP, A2A, or SDKs

Once an account is linked, you can call its actions from your product. For the full journey up to that point — API key, connector profile, account linking — see the [Embed overview](/embed/getting-started).

<Info>
  **Actions** are the atomic operations in StackOne: `salesforce_list_contacts`, `gmail_send_message`, `google_drive_list_files`, etc. Every protocol is just a different way to invoke the same underlying actions.
</Info>

All protocols route through the **same engine**, so authentication, rate limiting, data transformation, and error recovery are handled for every action. The choice comes down to your use case and how you're building.

## Protocols

<CardGroup cols={2}>
  <Card title="Agent SDK" icon="code" href="/embed/call-actions/agent-sdk">
    **Native TypeScript/Python** with framework integrations (LangChain, CrewAI, OpenAI)
  </Card>

  <Card title="MCP" icon="plug" href="/embed/call-actions/mcp">
    **Open standard** for AI tools. Works with Claude, Cursor, Vercel AI, n8n
  </Card>

  <Card title="A2A" icon="robot" href="/embed/call-actions/agent2agent">
    Call a pre-built agent per integration, for multi-agent orchestration.
  </Card>

  <Card title="RPC/HTTP" icon="terminal" href="/embed/call-actions/rpc-http">
    Call an action from any backend or script with no agent or framework.
  </Card>
</CardGroup>

## Which protocol?

| | [Agent SDK](/embed/call-actions/agent-sdk) | [MCP](/embed/call-actions/mcp) | [A2A](/embed/call-actions/agent2agent) | [RPC/HTTP](/embed/call-actions/rpc-http) |
| - | - | - | - | - |
| **Use case** | AI agents with frameworks | MCP-compatible clients | Multi-agent systems | Traditional apps, scripts |
| **Best for** | Programmatic control: load, filter, and select tools dynamically | Quick setup, IDE agents, switching accounts by header | Agent orchestration, context isolation, long-running async tasks | Full control, non-agentic |
| **Skip it when** | You just want tools in an existing MCP client | You need programmatic control or custom error handling | You need synchronous responses in a single agent | You're building an AI agent |
| **Requires code** | Yes | No (config only) | Yes | Yes |
| **Works with** | Any AI framework (LangChain, CrewAI, Vercel AI SDK, …) | Any MCP client (Claude, Cursor, Windsurf, n8n, …) | Any A2A orchestrator | Any HTTP client |

## Mixing protocols

Many production setups combine protocols. They all use the same actions and authentication, so you can mix and match:

* **RPC/HTTP for backend jobs** (scheduled syncs, data pipelines)
* **Agent SDK for your product** (customer-facing AI features)
* **MCP for internal tools** (Cursor, Claude Desktop for your team)
* **A2A for complex workflows** (multi-agent orchestration)

<Tip>
  Exposing hundreds of actions? Use [Tool Discovery](/features/tool-discovery) so the agent searches at runtime instead of overloading its context window. It works through both MCP (`search_execute` mode) and the SDK (tool search).
</Tip>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.