> ## Documentation Index
> Fetch the complete documentation index at: https://docs.danubeai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# LangChain and LangGraph

> Use Danube tools from LangChain agents and LangGraph graphs

## Install

```bash theme={null}
pip install "danube[langchain]"
export DANUBE_API_KEY=...
```

## LangGraph

```python theme={null}
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from danube import DanubeClient
from danube.integrations.langchain import danube_tools

tools = danube_tools(DanubeClient())
agent = create_react_agent(ChatOpenAI(model="gpt-4.1"), tools)

state = agent.invoke({"messages": [("user", "Post 'deploy finished' to #ops on Slack")]})
print(state["messages"][-1].content)
```

## LangChain agents

```python theme={null}
from langchain.agents import AgentExecutor, create_tool_calling_agent

agent = create_tool_calling_agent(llm, tools, prompt)
AgentExecutor(agent=agent, tools=tools).invoke({"input": "Top Hacker News stories, please"})
```

`danube_tools(client)` returns three `StructuredTool`s with pydantic argument schemas:

| tool                   | arguments                          |
| ---------------------- | ---------------------------------- |
| `danube_search_tools`  | `query: str`, `limit: int`         |
| `danube_describe_tool` | `tool_id: str`                     |
| `danube_execute_tool`  | `tool_id: str`, `parameters: dict` |

Options: `service_id`, `ready_only`, `max_results`, as in the other adapters. Results come back as JSON text, capped at 20,000 characters.
