Tool Calls Accessing the Agent
Read agent.dependencies inside a tool by accepting the agent as a parameter.
"""
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/activateInstall dependencies
uv pip install -U agno openaiExport 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.pyFull source: cookbook/91_tools/tool_calls_accesing_agent.py