# General Message Passing (https://docs.axelar.dev/gmp/overview)



General Message Passing (GMP) lets a contract on one chain call a contract on any other chain connected to Axelar. With GMP you can:

* call a contract on chain B from chain A,
* call a contract on chain B from chain A and attach gateway tokens (consensus EVM chains only; to move any other token, use the [Interchain Token Service](https://docs.axelar.dev/llms.mdx/its/overview/content.md)).

<Callout emoji="🚨">
  The security of your app is limited by the security of the chains it
  integrates with. Do your due diligence on every chain your contracts are
  deployed to.
</Callout>

<Callout title="Using an AI agent?">
  Give it [`llms.txt`](https://docs.axelar.dev/llms.txt): an index of every page
  of these docs, each linked to its Markdown, so the agent can read the pages it
  needs. The bot icon next to GitHub in the sidebar copies its link, and **Copy
  Markdown** at the top of each page copies that page.
</Callout>

## How a message is delivered [#how-a-message-is-delivered]

1. **Source chain:** your contract calls the Axelar gateway (on EVM chains, `callContract`) and pays gas for the whole route to the gas service.
2. **Axelar:** the message is verified against the source chain, by Axelar validators for consensus chains or by Amplifier verifiers for Amplifier chains, and routed to the destination chain.
3. **Destination chain:** the gateway records the approved message, and a relayer calls your destination contract, which checks the approval with the gateway before running its logic.

<object type="image/svg+xml" data="/images/assets/general-message-overview.svg" className="hidden dark:block w-full max-w-[40rem] mx-auto py-6">
  Your browser does not support SVG
</object>

<object type="image/svg+xml" data="/images/assets/general-message-overview-light.svg" className=" dark:hidden w-full max-w-[40rem] mx-auto py-6">
  Your browser does not support SVG
</object>

You can follow any message on Axelarscan ([mainnet](https://axelarscan.io/gmp) | [testnet](https://testnet.axelarscan.io/gmp)). If it gets stuck, see [Track and recover](https://docs.axelar.dev/llms.mdx/gmp/track-and-recover/transaction-states/content.md). For the details of each step, see [Message flow](https://docs.axelar.dev/llms.mdx/gmp/how-it-works/message-flow/content.md) and [Message verification](https://docs.axelar.dev/llms.mdx/gmp/how-it-works/message-verification/content.md).

## Integrations [#integrations]

<Cards>
  <Card title="EVM" href="/gmp/integrations/evm/intro">
    Send and receive messages from Solidity contracts through the Axelar gateway.
  </Card>

  <Card title="Solana" href="/gmp/integrations/solana/intro">
    Send and receive messages from Solana programs.
  </Card>

  <Card title="Sui" href="/gmp/integrations/sui/intro">
    Send and receive messages from Sui Move packages.
  </Card>

  <Card title="Stellar" href="/gmp/integrations/stellar/intro">
    Send and receive messages from Soroban contracts.
  </Card>

  <Card title="XRPL" href="/gmp/integrations/xrpl">
    Send messages from the XRP Ledger.
  </Card>

  <Card title="Cosmos" href="/gmp/integrations/cosmos/overview">
    Send and receive messages from Cosmos chains over IBC.
  </Card>
</Cards>

## Tools [#tools]

* [Axelarscan](https://axelarscan.io/gmp): track messages, and recover them if they get stuck.
* [AxelarJS SDK](https://docs.axelar.dev/llms.mdx/gmp/resources/axelarjs-sdk/content.md): query and recover messages, and estimate gas, from JavaScript.
* [Examples and tutorials](https://docs.axelar.dev/llms.mdx/gmp/resources/examples-and-tutorials/content.md): sample apps, a local development environment and step-by-step tutorials.
* [References](https://docs.axelar.dev/llms.mdx/gmp/resources/references/content.md): contract source code and repositories.


---

All pages of these docs, as Markdown: https://docs.axelar.dev/llms.txt