posthog-mcp-server
Server Quality Checklist
Latest release: v1.0.0
- Disambiguation5/5
Each tool targets a distinct resource-action pair: events, persons, dashboards, insights, feature flags, cohorts, experiments, actions, and project info. The list/get/execute/evaluate verbs clearly differentiate operations on the same resource.
Naming Consistency5/5All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_events, get_person, evaluate_feature_flag), with verbs like list, get, execute, and evaluate used uniformly for their respective operations.
Tool Count5/513 tools is well-scoped for a PostHog analytics server, covering major data types (events, persons, dashboards, insights, flags, cohorts, experiments, actions) without excessive granularity. Each tool serves a distinct purpose.
Completeness4/5The tool set provides comprehensive read-only querying across PostHog's core domains. Minor gaps exist: no direct list_insights endpoint (insights only via dashboards/execute_insight) and no write/update/delete operations, but these are likely intentional for a query-oriented server.
Average 3.8/5 across 13 of 13 tools scored.
See the Tool Scores section below for per-tool breakdowns.
This repository is archived. Archived repositories automatically receive an F maintenance tier.
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
This repository includes a glama.json configuration file.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It says 'List all' but doesn't mention the default limit of 100, pagination, or other behavioral aspects. The output fields are specified, but key behavioral details are missing, making 'all' potentially misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that front-loads the purpose and key output details. It is appropriately concise, though it could have included a note about the limit behavior without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool, the description covers the return fields and purpose, but it omits the default limit behavior and fails to mention that 'all' is constrained by the limit parameter. This gap makes the description somewhat incomplete given no annotations or output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters (limit and search), so the description adds no additional meaning. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('all PostHog cohorts'), plus the fields shown. This distinguishes it from sibling tools like list_events and list_persons, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for listing cohorts, but gives no explicit guidance on when to use it versus alternatives. There are no exclusions or named sibling alternatives, so it relies on the implicit resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that results are returned, but does not mention whether execution has side effects, costs, or requires special permissions. The refresh behavior is only implied by schema, not described in text. This is insufficient for an execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the action and resource. The two sentences contain relevant information without extra fluff. However, the vague 'raw insight definition' phrase introduces some ambiguity, reducing clarity slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema and no annotations, the description is incomplete for understanding the full behavior. It does not describe what the returned results look like, possible errors, performance implications, or whether the operation is read-only. A tool that executes insights likely needs more context to be used safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters with clear descriptions (100% coverage), so the description adds marginal value. It does add a useful cross-reference to list_dashboards, but the phrase 'pass a raw insight definition' is not reflected in the schema and could mislead users about accepted inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Execute a saved PostHog insight by ID' and the result: 'return the results'. It distinguishes itself from sibling tools by explicitly referencing saved insights and pointing to list_dashboards for finding IDs, making the tool's purpose clear and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage hint: 'Use list_dashboards to find insight IDs', which guides the user on how to obtain a required input. It does not explicitly state when to avoid using this tool or mention alternatives, but the context is clear enough for common use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the read-only operation and the returned fields (name, steps, creation date), which is useful. However, it does not mention pagination, the effect of the limit parameter, or any authorization requirements. These are common expectations for list operations, but the lack of detail holds the score to a midway point.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, economical sentence that front-loads the action and resource, then adds a useful parenthetical and output field list. No superfluous words or redundancy, perfect for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but without annotations or an output schema the description should be more comprehensive. It covers the core purpose and a sample of returned fields, yet omits mention of limit/pagination behavior and does not offer guidance compared to sibling list tools. This is adequate but leaves clear gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the single optional 'limit' parameter with a default of 50, so the baseline is 3. The description does not add any additional meaning or clarification about parameter usage, effectively relying entirely on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'List PostHog event actions' and adds the clarifying parenthetical 'custom event definitions' to distinguish from raw events. It also mentions the returned fields (name, steps, creation date), making the purpose unmistakable and differentiating it from sibling tools like list_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided about when to use this tool versus alternatives such as list_events or list_persons. The phrase 'custom event definitions' implies a use case, but there is no direct statement of conditions or exclusions, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that it shows 'name, status, and key results' but fails to disclose that the 'all' is subject to a limit parameter (default 50), which could mislead users expecting truly all results. It also omits pagination or other behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose and followed by a brief mention of returned fields. Every word earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description is mostly adequate. It states purpose and output fields, but misses the critical detail about the limit behavior and does not explain how to retrieve a specific experiment (though sibling naming implies it). The 'all' vs 'limit' discrepancy is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the 'limit' parameter, so coverage is 100%. However, the description's use of 'List all' directly conflicts with the parameter's purpose of capping results, and the description adds no additional meaning beyond the schema. The contradiction undermines clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all PostHog experiments (A/B tests)' with a specific verb and resource, and the scope is 'in the project'. It distinguishes from sibling tools like get_experiment (which likely retrieves a single experiment) and list_events (a different resource). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this tool is for listing all experiments. It does not explicitly name alternatives or exclusions, but the phrase 'all experiments' implies when to use it versus get_experiment for a single experiment. No misleading guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says 'List all' but includes a limit parameter (default 50), which creates ambiguity about whether the result is truly all dashboards or truncated. It does not explicitly state read-only behavior or pagination details, though the listing action implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that is front-loaded with the core purpose and includes useful output details. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and no output schema, so the description covers the basic purpose and return fields. However, the 'all' vs limit discrepancy and lack of pagination details leave gaps that an agent might need to know, such as whether the limit can cause partial results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single parameter (limit), so the description adds no additional meaning beyond the schema. Baseline of 3 is appropriate because the parameter is already well-documented in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('PostHog dashboards') and clarifies scope ('in the project'). It also distinguishes itself from siblings like get_dashboard by indicating it lists multiple dashboards and states the returned fields (names, IDs, widget counts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through its clear purpose but provides no explicit guidance on when to choose this over alternatives such as get_dashboard. No exclusions or alternative references are mentioned, only the implied context of listing dashboards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden for behavioral disclosure. It reveals that the tool returns person properties, creation date, and event count, but does not mention error behavior (e.g., not found) or any side effects. This is acceptable but limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, target, and return value with no unnecessary words. It is highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter get tool with no output schema, the description adequately covers purpose and return values. It lacks explicit error-handling details and alternative guidance, but these are minor for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for the distinct_id parameter, describing it as 'The person's distinct_id to look up'. The description adds no additional semantic meaning beyond repeating the identifier, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a specific PostHog person by distinct_id, using the verb 'Get' with a specific resource and identifier. It distinguishes from sibling tools like list_persons by indicating it fetches a single person by ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a distinct_id, but does not explicitly state when to use this tool versus alternatives such as list_persons. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states that it lists all flags and shows specific fields, which gives some transparency about return values. However, it does not mention pagination behavior, side effects (though read-only is implied by 'List'), or any permission requirements beyond what the schema parameters suggest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the action, and every word contributes. It avoids verbosity and repeats no schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool without an output schema, the description is fairly complete: it states the resource, scope, and what fields are returned. The schema fills in parameter details. However, it lacks explicit differentiation from sibling tools and any note about default limits or filtering behavior beyond the parameter definitions, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for both parameters (limit and active), so schema coverage is 100%. The description does not add any additional meaning to the parameters beyond what the schema already states, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('PostHog feature flags') and mentions the project scope, clearly distinguishing it from sibling tools like evaluate_feature_flag. It also lists the fields returned (name, key, active status, rollout percentage), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing feature flags and gives context (project scope), but it does not explicitly state when to use this tool versus alternatives such as evaluate_feature_flag. No exclusion or alternative guidance is provided, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It usefully mentions that the response includes insights and widgets, but it does not explicitly state that the operation is read-only, describe error behavior (e.g., not found), or note any permissions. The verb 'get' implies read-only, but the lack of explicit safety information and only minimal response detail leaves some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and resource, and includes relevant response content. Every word serves a purpose, with no redundancy or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the core purpose and indicates what the response will include. It lacks explicit usage guidance relative to list_dashboards, and does not describe pagination or error handling, but given the tool's low complexity, the description is largely complete and sufficient for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a clear description for dashboard_id ('The dashboard ID to retrieve') with 100% coverage. The tool description adds no further parameter semantics, such as format, constraints, or examples, so it does not enhance what the schema already offers. Baseline of 3 is appropriate since schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', identifies the resource as a 'specific PostHog dashboard by ID', and specifies expected content ('insights and widgets'). This unambiguously distinguishes it from sibling tools like list_dashboards, which would list dashboards rather than retrieve a single one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a dashboard ID is known to fetch that single dashboard, and the emphasis on 'specific' and 'by ID' sets clear context for when to use it. However, it does not explicitly mention alternatives such as list_dashboards for finding dashboard IDs or state when not to use this tool, so it falls short of fully explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. It indicates a read operation ('Get') and describes the output contents, but does not explicitly state side-effect-free behavior, permission requirements, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and object, and contains no filler. Every word adds value by specifying the resource scope and the contents of the results.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-ID retrieval tool, the description specifies the resource and what the detailed results include. It could mention not-found behavior or prerequisites, but the schema and low complexity make this sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the only parameter (experiment_id) with 100% description coverage. The tool description adds no additional parameter semantics, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' with a clear resource ('specific PostHog experiment') and enumerates distinct return contents (variants, metrics, statistical significance). This clearly distinguishes it from sibling list_experiments, which would list experiments rather than retrieve one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for retrieving detailed results when you have a specific experiment ID, contrasting with list_experiments. It provides clear context, but does not explicitly mention alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly implies a read-only operation with 'Query' and mentions 'recent events' (suggesting ordering). However, it doesn't disclose any limitations such as default limit, maximum limit, pagination behavior, or how properties filters are formatted beyond what the schema already states. It adds some context but not rich behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action ('Query events from PostHog'). Every phrase earns its place, listing filters and return behavior without waste. Excellent for a tool of this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list/query tool with no output schema and no annotations, the description covers the primary purpose, filter options, and return type ('recent events'). It doesn't explain the exact response structure or pagination, but the description is sufficient given the tool's simplicity and the schema's parameter documentation. A slightly more explicit note about ordering or pagination would make it perfect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already having a clear description. The description summarizes the filter categories (event name, person, date range, properties), which adds marginal value by grouping them, but it doesn't introduce new meaning beyond the schema. This matches the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Query events from PostHog' with a specific verb and resource. It further lists filter dimensions (event name, person, date range, properties) and specifies the output ('Returns recent events'). This distinguishes it from sibling tools like list_persons or list_dashboards, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this tool is for querying event data from PostHog. While it doesn't explicitly name alternatives or exclusion criteria, the sibling tools are all for different resources (persons, dashboards, feature flags, etc.), so there's no ambiguity about when to use this tool. The absence of an alternative event tool makes the usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure burden. It adds search and pagination context, but does not mention response format, default limits, or any limitations. For a simple read-only list operation, this is adequate but not rich, lacking details like whether results are sorted or how the list is structured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the purpose and key features without verbosity. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple list operation with three optional parameters and no output schema. The description covers the essential aspects (listing, search, pagination) and is sufficient for an agent to understand the tool's function. It could mention that it returns a list of persons or that search is optional, but these are implicit, so it remains reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with each parameter described (limit, offset, search). The description adds no new meaning beyond what the schema already provides; it merely restates that search is by name or distinct_id, which the schema also says. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List PostHog persons (users)' with a specific verb and resource. It distinguishes itself from sibling tools like get_person (which retrieves a single person) and list_events (which lists events), making the tool's purpose immediately obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing or searching persons, explicitly mentioning search by name or distinct_id and pagination. It does not explicitly state when not to use it or reference alternatives like get_person, but the context is clear enough that an agent would know to use this for listing rather than fetching a single person.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It clearly states what the tool returns (enabled state and variant value), which is the core behavioral expectation. It implies a read-only operation via 'evaluate' and 'returns', though it does not explicitly discuss side effects, error conditions, or permissions. This is adequate for a simple evaluation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: two sentences totaling about 20 words. It states the action and the return value without any redundancy or extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is complete enough. It explains the return value, and the schema fully documents both parameters. The context of sibling tools makes the tool's role clear. It lacks mention of edge cases (e.g., missing flag) but that is not critical for a basic evaluation function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond the schema, but the parameter names (flag_key, distinct_id) are self-explanatory, making the schema sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Evaluate') and resource ('feature flag for a specific user'), clearly distinguishing it from sibling tools like list_feature_flags which list flags without user context. It precisely states the scope and action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a specific user' implies this tool is for evaluating a flag against a single user, contrasting with list_feature_flags. It provides clear contextual usage without explicitly naming alternatives or exclusions, but the purpose is evident and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It does disclose the operation is a 'get' (implying read-only) and lists output fields, but it does not mention authentication requirements, rate limits, or error behavior. This leaves some gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that concisely states the purpose and the specific data points returned. Every word contributes meaning, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description explains the return values (name, ID, created date, available features), which is essential. It does not specify the data structure or types, but for a simple project-info getter, this is largely sufficient. The description is complete enough for the low complexity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, so the schema provides no parameter semantics. The description does not attempt to document parameters, which is unnecessary. With no parameters, a baseline of 4 is given, and the description adds value by clarifying what the tool returns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('PostHog project'), and explicitly lists the returned fields (name, ID, created date, available features). This clearly distinguishes it from sibling tools that target events, persons, dashboards, or feature flags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you need project-level information. However, it does not explicitly mention alternatives or exclusions relative to sibling tools. The context is clear but lacks direct 'use this when' guidance, so a score of 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/friendlygeorge/posthog-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server