Roster for LangGraph
Add live organizational context to stateful agents.
Connect LangGraph to Roster so agents can resolve who owns, approves, reviews, handles, or receives an escalation without hard-coding people into graph logic.
LangGraph controls how the agent proceeds. Roster resolves who should act.
Last verified 07/14/2026
Organizational decisions do not belong in graph code
LangGraph gives developers low-level control over state, branching, durable execution, and human-in-the-loop steps.
But the graph still needs a current answer when a node reaches a person-dependent decision:
“Who owns this service?”
“Who can approve this request in Canada?”
“Who reviews a change above this threshold?”
“Who should receive this escalation?”
“Who is covering for the normal approver?”
Embedding names, email addresses, or static org-chart logic in nodes makes the graph brittle. The answer may depend on project membership, business role, geography, directory state, labels, or an active delegation. Roster keeps that organizational context outside the graph and exposes participant resolution as a reusable runtime tool.
How Roster fits into a LangGraph agent
LangGraph agents can consume MCP tools through the LangChain MCP adapters package. Roster is configured as a remote Streamable HTTP MCP server.
LangGraph agent or workflow
↓
LangChain MCP adapter
↓
Roster Streamable HTTP MCP server
↓
Project + participant model
↓
Directory users, groups, roles, memberships, and delegations
↓
Resolved owner, approver, reviewer, or escalation contactWhat LangGraph agents can resolve
Connect Roster to LangGraph
LangGraph agents can consume MCP tools through the LangChain MCP adapters package. Configure Roster as a remote HTTP server and pass a scoped bearer token through headers.
pip install langchain-mcp-adaptersimport os
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient(
{
"roster": {
"transport": "http",
"url": "https://roster.example.com/mcp",
"headers": {
"Authorization": f"Bearer {os.environ['ROSTER_API_KEY']}"
},
}
}
)
roster_tools = await client.get_tools()Add the returned Roster tools to the agent that needs participant resolution. The API key requires mcp:resolve to call resolve. Add mcp:resolve-requests:read, mcp:projects:read, or mcp:participants:read only when the agent also needs those read surfaces. Effective access remains limited by the key owner's Roster permissions and resource rules.
Resolve-only automation scope
For resolve-only workflows, use narrow scopes. The key belongs to a Roster identity and remains constrained by that identity's Roster permissions and target-resource rules.
mcp:resolve
mcp:resolve-requests:read
mcp:projects:read
mcp:participants:readMake resolution an explicit graph step
For predictable behavior, add a dedicated node that calls Roster when the workflow reaches an ownership, approval, review, or escalation decision. Store the structured result in graph state, then route based on the outcome.
Recommended states:
- resolved participant found
- no eligible participant found
- out_of_scope or no eligible participant returned
- authorization failure
- Roster unavailable
Do not silently fall back to a name inferred from the
prompt, repository, or model memory.Example: route a production approval
A release graph reaches its approval node with the project, environment, risk level, and requested deployment time in state.
“Who should approve the Atlas production deployment?”
- The node calls Roster:
resolve( query: "Who should approve the Atlas production deployment?" ) - Roster evaluates the applicable project, participant definition, labels and metadata, directory membership, active status, and delegations.
- The graph stores the resolved participant and creates the approval task.
- If no eligible participant is returned, the graph enters an explicit exception path instead of guessing.
The graph continues along its resolved branch, or along a defined exception branch when Roster returns no eligible participant.
Roster complements LangGraph
LangGraph remains responsible for agent state, control flow, persistence, checkpoints, tool execution, and human-in-the-loop orchestration.
Roster provides the organizational decision layer used when that graph needs a person, group, role, or delegate. It does not replace LangGraph state, routing logic, or execution infrastructure.