Dynamic Tools
Add or remove tools dynamically based on runtime dependencies.
Dynamic Tools.
1"""2Dynamic Tools3=============================45Dynamic Tools.6"""78from datetime import datetime910from kern.agent import Agent11from kern.models.openai import OpenAIResponses12from kern.run import RunContext131415def get_runtime_tools(run_context: RunContext):16 """Return tools dynamically based on session state."""1718 def get_time() -> str:19 return datetime.utcnow().isoformat()2021 def get_project() -> str:22 project = (run_context.session_state or {}).get("project", "unknown")23 return f"Current project: {project}"2425 return [get_time, get_project]262728# ---------------------------------------------------------------------------29# Create Agent30# ---------------------------------------------------------------------------31agent = Agent(32 name="Dynamic Tools Agent",33 model=OpenAIResponses(id="gpt-5.2"),34 tools=get_runtime_tools,35)3637# ---------------------------------------------------------------------------38# Run Agent39# ---------------------------------------------------------------------------40if __name__ == "__main__":41 agent.print_response(42 "Use available tools to report current context.",43 session_state={"project": "cookbook-restructure"},44 stream=True,45 )Run the Example
1# Clone and setup repo2git clone https://github.com/kern-ai/kern.git3cd kern/cookbook/02_agents/15_dependencies45# Create and activate virtual environment6./scripts/demo_setup.sh7source .venvs/demo/bin/activate89python dynamic_tools.py