flowchart TB browser([Browser]) subgraph NEXTJS["Next.js Server"] route["API Route
(auth + context assembly)"] agent["LangChain Agent"] subgraph TOOLS["Agent Tools"] metatools["Meta-tools
describe_tool / execute_tool / load_skill"] end mcpclient["MCP Client
(HTTP transport)"] end llm["LLM Provider
(OpenAI / Bedrock / OpenAI-compatible)"] subgraph MCP["Prowler MCP Server"] app_tools["prowler_* tools
(auth required)"] hub_tools["prowler_hub_* tools
(no auth)"] docs_tools["prowler_docs_* tools
(no auth)"] end api["Prowler API"] hub["hub.prowler.com"] docs["docs.prowler.com
(Mintlify)"] browser <-->|SSE stream| route route --> agent agent <-->|LLM API| llm agent --> metatools metatools --> mcpclient mcpclient -->|MCP HTTP ยท Bearer token
for prowler_* only| app_tools mcpclient -->|MCP HTTP| hub_tools mcpclient -->|MCP HTTP| docs_tools app_tools -->|REST| api hub_tools -->|REST| hub docs_tools -->|REST| docs