> ## Documentation Index
> Fetch the complete documentation index at: https://cobo.com/products/agentic-wallet/manual/llms.txt
> Use this file to discover all available pages before exploring further.

# Agno

> 5-minute Agno quickstart with pact submission and denial-aware tool behavior.

## Before you start

Complete the [CLI quickstart](/products/agentic-wallet/manual/developer/cli) first so your runtime already has a paired wallet, API key, and wallet UUID.

## 5-minute outcome

1. Register `CoboAgentWalletTools` with Agno agent
2. Submit a pact and wait for owner approval
3. Execute success plus denial sequence
4. Retry based on denial guidance
5. Validate in audit logs

## Step 1: Install

```bash theme={null}
pip install "cobo-agentic-wallet[agno]"
```

## Step 2: Configure environment

```bash theme={null}
export AGENT_WALLET_API_URL=https://api.agenticwallet.cobo.com
export AGENT_WALLET_API_KEY=your-api-key
export OPENAI_API_KEY=your-openai-api-key
```

## Step 3: Create Agno agent

```python title="agno_quickstart.py" theme={null}
import asyncio
import os

from agno.agent import Agent
from agno.models.openai import OpenAIChat

from cobo_agentic_wallet import WalletAPIClient
from cobo_agentic_wallet.integrations.agno import CoboAgentWalletTools

INCLUDE_TOOLS = [
    "submit_pact", "get_pact", "transfer_tokens",
    "estimate_transfer_fee", "get_transaction_record_by_request_id", "get_audit_logs",
]


async def main() -> None:
    _ = os.environ["OPENAI_API_KEY"]  # consumed implicitly by Agno's OpenAIChat
    wallet_id = os.environ["AGENT_WALLET_WALLET_ID"]
    destination = os.environ.get("CAW_DESTINATION", "0x1111111111111111111111111111111111111111")
    prompt = (
        f"Use wallet {wallet_id}. Submit a pact for a controlled transfer task and wait until "
        f"it is active. Using the newly created pact, transfer 0.001 SETH to {destination} on "
        f"SETH. Next, using the same pact, attempt 0.005 SETH. If denied, follow the denial "
        f"guidance and retry with a compliant amount. Track the result by request_id and "
        f"summarize what happened."
    )

    async with WalletAPIClient(
        base_url=os.environ["AGENT_WALLET_API_URL"],
        api_key=os.environ["AGENT_WALLET_API_KEY"],
    ) as client:
        toolkit = CoboAgentWalletTools(client=client, include_tools=INCLUDE_TOOLS)
        try:
            agent = Agent(
                model=OpenAIChat(id="gpt-4.1-mini"),
                tools=[toolkit],
                markdown=True,
            )
            response = await agent.arun(prompt)
            print(response.content)
        finally:
            await toolkit.aclose()


asyncio.run(main())
```

If you want to keep the runtime narrower at first, select a smaller tool subset:

```python theme={null}
tools = CoboAgentWalletTools(
    client=client,
    include_tools=[
        "submit_pact",
        "get_pact",
        "transfer_tokens",
        "estimate_transfer_fee",
        "get_transaction_record_by_request_id",
        "get_audit_logs",
    ],
)
```

## Step 4: Validate behavior

Look for:

* pact submission and activation confirmation
* successful first transfer
* denial details surfaced as tool output
* corrected retry
* audit confirmation

## Go further

`CoboAgentWalletTools` gives you the widened CAW runtime toolkit as Agno-native tools. You can extend it:

* **Write custom Agno tools** — subclass or define additional tool functions backed by `WalletAPIClient` for your specific use case (e.g. multi-step DeFi flows, price-conditional transfers). Register them alongside `CoboAgentWalletTools`.
* **Use the Python SDK for structured operations** — call `WalletAPIClient` directly outside the agent for operations that need deterministic outcomes: pact management, batch queries, and policy dry-runs.
* **Pair with CLI for onboarding and ops** — use `caw` for provisioning and debugging without touching agent code.
* **Use role-based presets** — start with Pact Drafting, Execution, and Observer responsibilities rather than giving every agent the full toolkit.

<CardGroup cols={2}>
  <Card title="Python SDK" href="/products/agentic-wallet/manual/developer/api-client-python">
    Use WalletAPIClient directly for custom tool functions.
  </Card>
</CardGroup>
