evident
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
The tools mostly have distinct purposes: fetch grabs raw content, extract does structured LLM extraction, recipes are deterministic parsers, health_check verifies things. There's some boundary fuzziness between fetch and extract (both fetch a URL), and between extract and use_recipe (both produce structured data), but descriptions strongly clarify which to use when.
Naming Consistency4/5Tools use consistent snake_case naming with imperative verbs (fetch, extract, list, use, health_check). 'list_recipes' and 'use_recipe' pair well, and 'health_check' is clear. Minor inconsistency: health_check is a compound noun rather than verb_noun, and 'extract'/'fetch' are bare verbs without object nouns, though still readable.
Tool Count5/5Five tools is well-scoped for a web-scraping/extraction server. Each tool serves a distinct layer of the pipeline (fetching, LLM extraction, deterministic recipes, recipe invocation, health verification), with no redundant or padding tools.
Completeness4/5The surface covers the full extraction lifecycle: discover recipes (list_recipes), use them (use_recipe), fall back to generic extraction (extract), basic fetching (fetch), and verification (health_check). Minor gap: no listing or discovery of available entities/boards beyond recipes, and no way to retrieve cached/past results, but the core workflow is complete.
Average 4.1/5 across 5 of 5 tools scored. Lowest: 3.2/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 21 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under Apache 2.0.
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.
Add a glama.json file to provide metadata about your server.
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
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that this is a verification/reporting operation (non-mutating), and partially explains behavior: checks endpoint reachability and 'expected top-level shape' for recipes, and 'runs through the ladder' for URLs. However, 'the ladder' is undefined jargon, and the odd parenthetical about 'known-good test slug' is confusing and doesn't clarify what a failed check actually does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness2/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the purpose well, but the parenthetical about 'known-good test slug isn't available generically' is confusing, self-referential, and nearly unparseable. This sentence should be rewritten or removed since it undermines clarity without adding actionable value. The description is somewhat rambling and could be tightened.
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?
There is an output schema present, so return-value details are covered structurally. The tool has only 1 parameter which is reasonably explained, but the parenthetical confusion and the undefined 'ladder' concept leave notable gaps. Given the absent annotations and moderate complexity of dual-target behavior, the description should be more explicit about what constitutes a healthy versus broken result.
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?
There is only 1 parameter (target) with 0% schema description coverage, so the description must compensate. It does explain that target accepts either a recipe id or a plain URL and differentiates the behavior for each. However, it doesn't describe the expected format of the target (how to distinguish a recipe id from a URL, any prefix/ID format), leaving some ambiguity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: verify a recipe or raw URL is still working, and distinguishes it from the silent-failure alternative of discovering breakage only after a real search. It names the two input forms (recipe id or plain URL) and what each checks. However, it doesn't explicitly name sibling tools like fetch or use_recipe to differentiate, and the purpose is somewhat muddled by the parenthetical about 'known-good test slug isn't available generically'.
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 conveys when to use it (proactively verify before discovering breakage), and distinguishes recipe-id checks from URL checks. However, it doesn't explicitly state when NOT to use it or name alternative tools (fetch, use_recipe, extract) to clarify boundaries. The usage guidance is implied rather than explicit.
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. The description gives useful hints (raw API responses often don't include entity name, hence entity_name param) but doesn't disclose side effects, whether it writes to a system, rate limits, auth requirements, what gets persisted/attached, or what happens on invocation—whether results are stored or merely returned. For an 'invoke' tool with zero annotation coverage, this is a notable gap.
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 compact and well-organized, with each parameter getting its own brief docstring line with concrete examples. The prose is efficient with minimal waste. It could be slightly more front-loaded about the overall action, but the docstring-style format is clean and scannable.
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?
There is an output schema present, which partially reduces the burden on the description for return-value explanation. The description explains the three parameters well and covers the invocation semantics. However, it omits behavioral context that matters for a recipe invocation: does it write/update data, is it safe/idempotent, are there prerequisites beyond a valid recipe_id? With no annotations, these gaps make the description feel incomplete for a tool that evidently has side effects worth understanding.
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?
Schema description coverage is 0%, so the description must fully compensate. It does well: recipe_id gets concrete examples (ats_greenhouse, ats_lever, ats_ashby), slug gets a Greenhouse board token example with the boards.greenhouse.io/<slug> URL pattern, and entity_name gets its rationale (results often lack company name) plus an example. This adds meaningful value well beyond the bare schema field titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: invoke a specific recipe by id against one entity's slug/identifier on that platform. The verb 'invoke' plus the resource (recipe by id) is specific. It distinguishes somewhat from siblings by referencing list_recipes as the source for recipe ids, though it doesn't explicitly contrast with fetch/extract.
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 references list_recipes as the source for recipe ids, giving implicit guidance on how to obtain valid recipe_id values. It provides clear contextual use (invoking recipes against a platform entity). However, it doesn't explicitly state when NOT to use this tool or name specific alternatives, though the sibling context (fetch/extract/list_recipes) makes the distinction reasonably inferable.
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 present, the description carries full behavioral burden and does well: it discloses that the tool uses an LLM (hence slower/less deterministic), requires ANTHROPIC_API_KEY, and specifies failure behavior (diagnosable failure, not crash). This is meaningful operational context beyond the schema. It could note potential cost/latency implications but already covers the key operational constraints.
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 well-organized with a purpose paragraph followed by an Args section. The json_schema example is slightly verbose but earns its place since it demonstrates the exact expected format. One minor inefficiency: the API-key disclosure could be more concise, but the overall structure is clean and front-loaded with the primary purpose.
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 moderately complex (LLM-based, 3 params including a nested JSON schema string), and despite no annotations, the description covers purpose, fallback behavior, an example, auth requirement, and failure mode. The output schema is present, so return-value documentation isn't required. A note on typical latency or cost of LLM extraction would be a nice addition, but the core operational needs are satisfied.
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?
Schema description coverage is 0%, so the description must compensate for all three parameters. It does: url (URL to extract from), json_schema (JSON Schema string with a concrete example), and instructions (optional guidance). The json_schema example is particularly valuable since the schema's title 'Json Schema' alone is insufficient for an agent to construct a valid value.
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 (fetch+extract), the resource (URL with structured fields), and the mechanism (LLM-based, works on ANY site). It explicitly distinguishes itself from the sibling `list_recipes`/`use_recipe` tools, noting the alternative is for sites with dedicated deterministic recipes. This is specific and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit when-to-use directive: use `list_recipes` first if a deterministic recipe may exist, otherwise use this tool for generic extraction. This directly addresses the usage decision relative to its sibling tools and provides clear guidance on the alternative path.
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, the description carries the full behavioral burden. It does well here: discloses the return shape (confidence, method, tier), instructs the agent to check confidence before trusting, and guarantees no silent empty results on failure (failure_reason). This is rich, actionable behavioral context.
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?
Well-structured with a clear one-line summary, then formatted Args section, then return/failure details. Every sentence earns its place — no fluff, front-loaded with the key purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having only 2 simple params and an output schema, this is a complex tool (multi-tier escalation). The description covers the fetch strategy, both parameters, the return contract, confidence guidance, and failure semantics. Exceptionally complete for its complexity level.
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?
With 0% schema coverage, the description must compensate fully. It documents both parameters: url (clear from name/schema) and mode, explaining markdown vs raw semantics with clear defaults. The mode explanation adds real value beyond the schema's bare type/default.
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?
Clear verb+resource ("Fetch a URL") with specific mechanism described (resilience ladder with tier escalation). Distinguishes itself from sibling extract tool by being the URL-fetching primitive, and references a distinctive multi-tier strategy.
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?
Describes the escalation behavior (static -> rendered, escalating when failure suggests it helps), giving an agent context on how the tool self-optimizes. Doesn't explicitly name alternatives or say when NOT to use it, but the clear scope of the tool makes this a minor gap.
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 behavioral disclosure burden. It conveys that the tool is a read-only listing operation (implicitly safe, non-destructive) and frames recipes as 'verified parsers' with a speed/confidence advantage. It doesn't explicitly state return format, but the presence of an output schema partially covers return-value disclosure. For a simple list op with no annotations, this is solid.
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 deliver complete value with zero waste. The first sentence states the purpose with concrete examples, and the second provides actionable usage guidance that ties into a sibling tool (extract). Every clause earns its place; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is parameterless with a clean purpose and an output schema present, the description is complete. It explains what the tool returns (registered extraction recipes) and how to use it in the workflow (before extract with manual schema). The presence of an output schema relieves the description from detailing return structure. Nothing meaningful is missing.
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?
This tool has 0 parameters, so per the rubric the baseline is 4. There is no schema info to add value beyond, and the tool genuinely doesn't need parameters. The description focuses entirely on output semantics rather than inputs, which is appropriate for a parameterless list operation.
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 states the specific purpose: 'List every registered extraction recipe (platform-specific, verified parsers — e.g. Greenhouse, Lever, Ashby job boards).' The verb 'List' clearly identifies the action and the resource (extraction recipes) is precisely scoped. It distinguishes from siblings by naming the resource type and examples, making it unambiguous what this tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Check this before calling `extract` with a manual schema: a matching recipe is faster and higher-confidence than LLM extraction.' This tells the agent exactly when to use this tool (before extract) and explains the rationale, effectively framing it as a prerequisite decision step.
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/Kaushalendra-Marcus/evident'
If you have feedback or need assistance with the MCP directory API, please join our Discord server