Tool Calls Accessing the Agent

Read agent.dependencies inside a tool by accepting the agent as a parameter.

tool_calls_accesing_agent.py
"""
Tool Calls Accesing Agent
=============================

Demonstrates tool calls accesing agent.
"""

import json

import httpx
from agno.agent import Agent

# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------


def get_top_hackernews_stories(agent: Agent) -> str:
    num_stories = agent.dependencies.get("num_stories", 5) if agent.dependencies else 5

    # Fetch top story IDs
    response = httpx.get("https://hacker-news.firebaseio.com/v0/topstories.json")
    story_ids = response.json()

    # Fetch story details
    stories = []
    for story_id in story_ids[:num_stories]:
        story_response = httpx.get(
            f"https://hacker-news.firebaseio.com/v0/item/{story_id}.json"
        )
        story = story_response.json()
        if "text" in story:
            story.pop("text", None)
        stories.append(story)
    return json.dumps(stories)


agent = Agent(
    dependencies={
        "num_stories": 3,
    },
    tools=[get_top_hackernews_stories],
    markdown=True,
)

# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
    agent.print_response("What are the top hackernews stories?", stream=True)

Agno injects the agent argument when executing this tool; the model does not supply it. The example reads num_stories=3 from that agent's dependencies and fetches three Hacker News listings. It returns story metadata and links, not the linked articles' full content.

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno openai

Export your OpenAI API key

export OPENAI_API_KEY="your_openai_api_key_here"

Run the example

Save the code above as tool_calls_accesing_agent.py, then run:

python tool_calls_accesing_agent.py

Full source: cookbook/91_tools/tool_calls_accesing_agent.py