Agent frameworks
Criora’s MCP server at https://criora.com/mcp works in any agent framework that speaks the Model Context Protocol over Streamable HTTP. It needs no account and no key. Each example below gives an agent every Criora tool, and each was run against the live server with the library versions it names. Data API and AI agents lists the tools and what each one answers.
LangChain
pip install langchain langchain-anthropic langchain-mcp-adapters
import asyncio
from langchain.agents import create_agent
from langchain_mcp_adapters.client import MultiServerMCPClient
CRIORA = {"transport": "streamable_http", "url": "https://criora.com/mcp"}
async def main():
tools = await MultiServerMCPClient({"criora": CRIORA}).get_tools()
agent = create_agent("anthropic:claude-sonnet-5-5", tools)
question = "Is it safe to travel to Manila next week?"
answer = await agent.ainvoke({"messages": question})
print(answer["messages"][-1].content)
asyncio.run(main())
Run with langchain 1.4 and langchain-mcp-adapters 0.3. Any chat model LangChain supports can take the Claude model’s place.
LlamaIndex
pip install llama-index-core llama-index-tools-mcp llama-index-llms-anthropic
import asyncio
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.anthropic import Anthropic
from llama_index.tools.mcp import BasicMCPClient, McpToolSpec
async def main():
criora = McpToolSpec(client=BasicMCPClient("https://criora.com/mcp"))
tools = await criora.to_tool_list_async()
agent = FunctionAgent(tools=tools, llm=Anthropic(model="claude-sonnet-5-5"))
question = "Which countries face the most dangerous weather this week?"
print(await agent.run(question))
asyncio.run(main())
Run with llama-index-core 0.14 and llama-index-tools-mcp 0.4.
OpenAI Agents SDK
pip install openai-agents
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp
async def main():
params = {"url": "https://criora.com/mcp"}
async with MCPServerStreamableHttp(name="Criora", params=params) as criora:
agent = Agent(
name="Risk analyst",
instructions="Answer with Criora's data and name its sources.",
mcp_servers=[criora],
)
question = "How exposed is Rotterdam to river flooding by 2050?"
result = await Runner.run(agent, question)
print(result.final_output)
asyncio.run(main())
Run with openai-agents 0.20. To let OpenAI’s Responses API call the server itself, with no MCP client in your code, give the agent HostedMCPTool(tool_config={"type": "mcp", "server_label": "criora", "server_url": "https://criora.com/mcp", "require_approval": "never"}) in tools instead.
n8n
- Add an AI Agent node and connect a chat model to it.
- Under Tool, add an MCP Client Tool.
- Set Endpoint to
https://criora.com/mcp, Server Transport to HTTP Streamable, Authentication to None and Tools to Include to All.
Good to know
- Answers are concise by default: the fields that answer the question. Pass
response_format: "detailed"to a tool for every field, such as each report’s provenance or a warning’s full text. - Every answer names its sources, and a hazard answer gives each source’s licence and attribution in
credit. When you publish what an agent found, credit Criora and the source it names, as Data API and AI agents sets out under sources and attribution. - The server is read-only and free to use under the Terms of Service.