Enterprise Knowledge Agents - A tutorial series on building knowledge graph-powered AI agents with Microsoft Agent Framework and GraphRAG. Exposes GraphRAG tools via HTTP/SSE for MCP-compatible clients.
This server provides 7 tools with mixed definition quality. All tools have descriptions and input schemas are present, but descriptions vary significantly in depth and LLM-optimization. Parameter schemas are properly typed but lack detailed format guidance. Output schemas are not documented. Tool naming follows verb_noun convention well. However, the server lacks structured error handling guidance, parameter validation details, and composition documentation. The local tools (format_as_table, extract_key_entities) are well-designed with clear, specific descriptions, while the GraphRAG search tools (search_knowledge_graph, local_search, global_search) have adequate but somewhat generic descriptions that could better explain WHEN to use each variant and what to expect from the response.
Extract named entities (people, projects, teams, technologies) from a text snippet.
Format a list of items as a Markdown table.
Get details about a specific entity.
Perform thematic search across the entire knowledge graph. Best for broad organizational questions: - "What are the main projects?" - "Summarize the organizational structure" - "What Azure services are used?"
List entities from the knowledge graph.
Perform entity-focused search on the knowledge graph. Best for specific questions about entities and relationships: - "Who leads Project Alpha?" - "What technologies are used in Project Beta?" - "Who resolved the GraphRAG incident?"
Output schemas are not documented. Tools return data but LLMs cannot know what fields to expect, forcing them to parse responses blindly and increasing hallucination risk.
Parameter descriptions lack format/constraint details. 'response_type' defaults to 'DEFAULT_RESPONSE_TYPE' with no explanation of valid values or what the default actually is. 'community_level' (0-2) constraint is stated but not in the description text itself.
No error handling guidance. Tools return READ_ONLY risk but no documentation on what happens on failure, how to retry, or what the LLM should do if a query yields no results.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 62 | - | v1 |
Search the GraphRAG knowledge graph. This is the main entry point for GraphRAG queries. It routes to local or global search based on the search_type parameter.
get_entity description is minimal (30 chars): 'Get details about a specific entity.' Does not explain what fields are returned, when to use it vs list_entities, or what happens if entity is not found.
list_entities has no explanation of pagination or result limits. If GraphRAG has thousands of entities, how many are returned? Is there offset/limit support? This is undocumented.
Three search tools (search_knowledge_graph, local_search, global_search) exist with overlapping purposes. Naming and descriptions could more clearly differentiate when to use search_knowledge_graph (dispatcher) vs local_search (entity-focused) vs global_search (thematic).