Skip to main content
Glama

Studizba Analytics

English · Русский

A self-hosted historical collector, analytics engine, dashboard, REST API, and MCP server for public Studizba teacher reviews at BMSTU.

The project preserves source snapshots, tracks revisions instead of overwriting them, calculates confidence-aware teacher and department metrics, and exposes every score together with its evidence and formula metadata.

What it includes

  • adaptive asynchronous collection of departments, teacher cards, and paginated reviews;

  • gzip source snapshots identified by SHA-256;

  • PostgreSQL history for teacher snapshots, review versions, crawl events, and schedules;

  • Russian full-text and trigram search with domain synonym expansion;

  • optional OpenAI-compatible structured review analysis;

  • evidence validation that rejects model quotes absent from the original review;

  • confidence weighting, time decay, Bayesian shrinkage, polarization, and department coverage metrics;

  • FastAPI dashboard and OpenAPI surface;

  • stdio and Streamable HTTP MCP servers;

  • explicit refresh operations and observable background progress.

Related MCP server: Mashov MCP Server

Architecture

Studizba HTML/AJAX
        │
        ▼
async collector ── gzip snapshots ── change journal / adaptive schedule
        │
        ▼
PostgreSQL + pg_trgm + Russian FTS
        │
        ├── optional LLM adapter → validated structured evidence
        ├── statistical aggregation → teacher/department metrics
        ├── FastAPI dashboard and REST API
        └── MCP server

Quick start

Requirements: Python 3.10+, PostgreSQL 16+, and Docker Compose if you want the bundled database service.

git clone https://github.com/ari3lYT/studizba-analytics.git
cd studizba-analytics
cp credentials.example.json credentials.local.json
chmod 600 credentials.local.json
docker compose up -d postgres
python3 -m venv .venv
.venv/bin/pip install -e '.[dev]'
.venv/bin/studizba init-db

Credentials can also be supplied through STUDIZBA_USERNAME, STUDIZBA_PASSWORD, GLM_API_KEY, GLM_MODEL, GLM_BASE_URL, and DATABASE_URL.

Start with a small validation run:

.venv/bin/studizba bootstrap --details-limit 10
.venv/bin/studizba status

Then run a resumable full collection and aggregation:

.venv/bin/studizba bootstrap
.venv/bin/studizba analyze --limit 200 --concurrency 3
.venv/bin/studizba aggregate

The collector backs off after failures and gradually reduces the refresh frequency of unchanged pages. Raw snapshots allow parser and analytics changes to be replayed without requesting the source again.

Services

.venv/bin/studizba serve-dashboard --host 127.0.0.1 --port 8898
STUDIZBA_ROOT="$PWD" .venv/bin/studizba-mcp
STUDIZBA_ROOT="$PWD" .venv/bin/studizba-mcp-http

Example systemd and nginx files live in deploy/. Review paths, users, ports, and access controls before installing them.

MCP capabilities

The MCP surface includes teacher and department search, review search, score explanations, rankings, comparisons, history, recent changes, monitoring status, and explicit refresh operations.

Scores are not returned as unexplained numbers: explain_score includes the formula version, sample size, coverage, confidence, dates, source URLs, and validated evidence spans.

Tests

.venv/bin/pytest -q -m 'not live'

Committed fixtures are small synthetic pages. The repository intentionally contains no copied production reviews, session cookies, account credentials, database dumps, or crawl state. Live tests are isolated behind the live marker.

Responsible use

  • Respect the source site's terms, robots policy, and operational capacity.

  • Keep concurrency low and preserve adaptive delays.

  • Treat reviews as subjective reports, not facts about a person.

  • Do not expose credentials, raw session state, or private data through a public deployment.

  • Use authentication and rate limits before enabling refresh or analysis endpoints for untrusted users.

License

GPL-3.0-or-later. See LICENSE.

Available Tools

18 tools
compare_departmentsC

Compare several departments.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsNo
department_idsYes

TDQS

C2.1/5.0
Behavior1/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, and it says nothing about whether the operation is read-only, whether it has side effects, what output it returns, or what data scope it covers. The word 'compare' weakly implies a read operation, but no behavioral trait is actually disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short, but this is under-specification rather than deliberate conciseness. It states the purpose in one sentence and then stops, leaving essential context about parameters and behavior absent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has two parameters, no output schema, no annotations, and a vague one-line description. It does not explain what a 'comparison' returns, what metrics are available, or how the result should be interpreted. This is inadequate for an agent to invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does 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 the undocumented parameters. It only loosely matches 'several departments' to department_ids and does not explain the metrics parameter, how metrics should be formatted, or what values are valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description has a clear verb ('compare') and resource ('departments'), and 'several' hints that multiple departments are involved. It is clear enough to identify the basic operation, though it does not distinguish itself from siblings like rank_departments or compare_teachers beyond the entity type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as compare_teachers, rank_departments, or get_department_analytics. The description implies a comparison use case but provides no exclusions, prerequisites, or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_teachersC

Compare several teachers on independent metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsNo
teacher_idsYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It only states that the tool compares teachers on metrics, but doesn't disclose what metrics are available, whether comparison is aggregated or per-entity, how results are formatted, or any limitations. This is insufficient for a comparison tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, which is good for readability, but it is so terse that it omits essential details. It's not wordy, but under-specification is not conciseness. A slightly longer description with key details would be better.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (optional metrics, required teacher list) and lack of output schema or annotations, the description is incomplete. It doesn't specify what metrics are supported, what output the agent can expect, or edge cases like comparing a single teacher. The agent would need to guess or test to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameter meanings. It does not mention teacher_ids or metrics at all. The agent is left without any indication of valid metric names, required format for teacher IDs, or constraints like minimum number of teachers. The description adds no value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'compare' with resource 'teachers' and adds 'on independent metrics', which conveys the core function. It distinguishes from rank_teachers by implying side-by-side comparison, but doesn't explicitly name alternatives or contrast with siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus rank_teachers, search_teachers, or get_teacher_analytics. The description doesn't mention use cases, prerequisites, or when not to use it. An agent would have to infer that this is for direct comparison of specific teachers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_scoreB

Explain any teacher metric with confidence, formula and exact evidence spans.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
metricYes
teacher_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description is the sole source of behavioral info. It states the tool returns confidence, formula, and evidence spans, implying a read-only operation. However, it does not disclose error behavior, permissions, rate limits, or what happens for invalid metrics, leaving gaps in the expected behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence that front-loads the tool's purpose and outputs. Every word earns its place, and there is no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three parameters, no annotations, and no output schema, this description is too thin. It omits what values 'metric' accepts, what 'limit' controls, and the structure of the returned explanation, leaving agents to guess both input and output contracts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It implies that 'metric' names a teacher metric and 'teacher_id' identifies the teacher, but it never explains the meaning or format of 'limit'. The description adds only minimal disambiguation and fails to clarify parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('explain'), resource ('teacher metric'), and the key outputs ('confidence, formula and exact evidence spans'). This clearly distinguishes it from sibling tools that retrieve analytics or reviews, since it explains the score's provenance rather than merely returning it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to prefer this tool over siblings like get_teacher_analytics or get_rating_history. There is no mention of use cases, prerequisites, or exclusions, forcing the agent to infer appropriateness.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_department_analyticsB

Get department metrics including draw risk, variance and coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
department_idYes

TDQS

B3.1/5.0
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 disclosing behavioral traits. The verb 'Get' implies a read-only operation but does not explicitly state so, nor does it mention any side effects, permission requirements, rate limits, or data freshness. There is no discussion of what happens if the department doesn't exist or the format of the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the action, and includes the key metrics. No fluff or repetition. It is concise and well-structured for a simple get operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one parameter, no output schema), the description adequately covers the core purpose and lists expected metrics. It could have mentioned the return format or error handling, but for a straightforward analytics fetch, it is reasonably complete. The lack of output schema makes it the description's job to hint at what the response contains, which it does via the metric list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not compensate for the lack of parameter documentation. The only parameter, department_id, is listed in the schema as an integer, but the description adds no context about how to obtain it, what it represents, or any constraints. The description mentions the metrics but not the input parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it retrieves department metrics and even enumerates the specific metrics (draw risk, variance, coverage). It distinguishes from sibling tools like compare_departments or rank_departments, though it doesn't explicitly contrast with get_teacher_analytics. The purpose is specific and 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/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: this is for fetching metrics for a single department, while siblings like compare/rank are for comparisons across departments. However, no explicit when-to-use/when-not-to-use guidance or alternative routing is provided. The description only states what it does, leaving the agent to infer when it's appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_monitoring_statusA

Get crawl, GLM queue, database counts and recent errors.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden. The word 'Get' implies a read-only operation with no side effects, and the description lists the categories of data returned. However, it does not disclose potential performance costs (e.g., heavy database count queries), authentication requirements, or whether this operation is safe to call repeatedly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler. The key data categories are listed compactly, and the description is immediately scannable and understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description covers the main return areas (crawl, GLM queue, database counts, recent errors). It falls slightly short of full completeness by not specifying time windows for 'recent errors' or the structure of the returned counts, but it is sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing for the description to clarify beyond what the empty schema already shows. The description usefully indicates what the returned status contains, which is the relevant semantic content for this no-argument tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') followed by a clear enumeration of resources: crawl status, GLM queue, database counts, and recent errors. This distinguishes it from all sibling tools, which focus on teachers, reviews, and departments rather than system monitoring.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for monitoring operational health, and none of the sibling tools overlap with that purpose. It doesn't explicitly state 'use this when checking system status' or exclude alternatives, but the context and naming make the intended use obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_new_reviewsC

Get reviews first observed during a period.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo

TDQS

C2.4/5.0
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 behavioral burden. It indicates a read operation ('Get') but does not disclose any side effects, pagination, rate limits, or how 'first observed' is determined. The behavior is only minimally implied; significant gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is efficient, but it is under-specified. It is not front-loaded with the most critical details; it merely states the purpose without elaboration. While concise, it sacrifices clarity, making it only average in this dimension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and only 2 parameters at 0% coverage, the description is far from complete. It does not explain the return format, how 'first observed' is defined, or any limitations. An agent cannot fully understand what to expect when invoking this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention the parameters at all. The schema gives 'days' and 'limit' with defaults, but the description adds no meaning about what they represent (e.g., days specifies the period length, limit caps results). With zero coverage, the description fails to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get reviews' with a temporal qualifier 'first observed during a period.' This distinguishes it from sibling tools like search_reviews or get_teacher_reviews by emphasizing newness. However, it does not explicitly name alternatives, so it misses the full differentiation that a 5 would require.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus siblings. It does not mention that it is for retrieving only newly observed reviews, nor does it contrast with search_reviews or get_teacher_reviews. No context or exclusions are provided, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_progressC

Get bootstrap/GLM completion, ETA estimates, throughput, queue health and crawl-run history.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
bucket_minutesNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only lists what data is retrieved, without mentioning read-only nature, permission requirements, rate limits, or any side effects. It doesn't describe the output format or whether results are aggregated, which leaves the agent guessing about invocation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the verb 'Get' and enumerates the key data categories. It is efficient, though a structured list might improve scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has optional parameters, no output schema, and a monitoring role, the description is incomplete. It fails to explain parameter semantics, output structure, or how the retrieved metrics relate to the broader system, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description makes no mention of the 'hours' or 'bucket_minutes' parameters. Their meaning (e.g., time window, aggregation granularity) is entirely unexplained, so the agent cannot infer how to set them correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves specific progress metrics (bootstrap/GLM completion, ETA, throughput, queue health, crawl-run history). This is more specific than merely saying 'get progress' and distinguishes it from sibling monitoring tools like get_monitoring_status, though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus sibling tools such as get_monitoring_status or get_recent_changes. No context about typical use cases, prerequisites, or alternative selection is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rating_historyC

Get historical source ratings and review counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
teacher_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'get', implying a read operation, but does not state whether it is read-only, whether there are any side effects, rate limits, or what the return format looks like. No details on pagination, data granularity, or time range behavior are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the core purpose. It is not verbose and earns its place, though it is too terse to be fully effective. The structure is clean, but the brevity leaves gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters, no output schema, and no annotations, the description is incomplete. It does not explain what 'source ratings' means, how 'days' affects the result, or what the response contains. An agent would lack critical details needed to call it correctly, such as the meaning of the output and any constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description does not explain any parameters. It does not mention teacher_id or days at all, so it adds no meaning beyond the raw schema. The description fails to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('get') and resource ('historical source ratings and review counts'), which distinguishes it from sibling tools like get_teacher_reviews (likely current reviews) and get_teacher_analytics. However, it does not explicitly mention the teacher association, though the required teacher_id parameter implies it. The purpose is clear enough for an agent to infer the operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention that it is for historical trends or when to prefer it over get_teacher_reviews or get_teacher_analytics. The description gives no context about the intended use case or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_changesC

Get new/missing/changed entities and rating changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must carry the full burden of behavioral disclosure. It does not mention whether this is a read-only operation, any authentication or permission requirements, or the shape of the return value. The description offers no behavioral insight beyond the tool name itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no wasted words, but it is under-specified rather than concise. While it is efficient, the lack of detail makes it less useful than a slightly longer description with more substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (two simple optional parameters) and no output schema, the description is expected to provide a clear picture of what is returned. However, it fails to specify the domain of 'entities' or clarify how it differs from overlapping siblings like get_new_reviews and get_rating_history. This leaves significant ambiguity for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema defines 'days' and 'limit' with defaults, but the description provides no additional meaning. With 0% schema description coverage, the description should compensate by explaining how these parameters affect results, but it does not. An agent cannot infer the significance of 'days' (e.g., lookback window) or 'limit' (max results) from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb ('Get') and a resource ('new/missing/changed entities and rating changes'), but 'entities' is vague and could refer to teachers, departments, or other objects. It is not a tautology, but it lacks the specificity needed to distinguish it from sibling tools like get_new_reviews or get_rating_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description gives no context about the intended use case, such as monitoring changes over time or supplementing other tools, leaving the agent to infer when it should be invoked.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_teacher_analyticsC

Get shrinkage-adjusted, time-decayed teacher analytics.

ParametersJSON Schema
NameRequiredDescriptionDefault
teacher_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It mentions 'shrinkage-adjusted, time-decayed' but does not explain what these adjustments mean operationally, whether the operation is read-only, or what the response contains. This is insufficient for an agent to anticipate side effects or output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that gets to the point quickly. It is appropriately sized for the tool's simplicity, though it could be slightly more informative without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that presumably returns analytics, the description lacks essential context such as what metrics are included, how the adjustments affect results, and the nature of the output. With no output schema and no annotation, the description leaves too much to inference for an agent to fully understand what it will receive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema provides no meaning for 'teacher_id'. The description does not mention or clarify the parameter either, leaving the agent to infer from the name alone. The description fails to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('teacher analytics') with two descriptive modifiers ('shrinkage-adjusted, time-decayed') that add specificity and distinguish it from sibling tools like get_teacher_profile and get_teacher_reviews. It is clear in intent, though 'analytics' is somewhat broad without further detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_teacher_profile, get_teacher_reviews, or compare_teachers. The description lacks any context about typical use cases or conditions for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_teacher_profileC

Get source profile, departments, ratings and analytical metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
teacher_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It only enumerates content categories and does not mention data freshness, pagination, permissions, error behavior, or confirmation that the operation is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It is concise and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter getter with no output schema, the description gives a rough picture of return content. However, it is not fully self-sufficient because it lacks parameter semantics and does not clarify how it differs from overlapping sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter, teacher_id, with no description coverage and no added meaning in the description. At 0% schema coverage, the description needed to compensate but does not explain the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource, 'Get source profile, departments, ratings and analytical metrics.' It clearly identifies the tool's output categories, but it does not differentiate itself from overlapping siblings like get_teacher_analytics or get_teacher_reviews.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool instead of alternatives such as get_teacher_analytics, get_teacher_reviews, or search_teachers. Usage is only implied by the verb and resource list, never stated explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_teacher_reviewsC

Get source reviews for a teacher with dates and Studizba links.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
offsetNo
teacher_idYes

TDQS

C2.4/5.0
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 states 'get' implying a read-only operation, but does not disclose pagination behavior (limit/offset), potential empty results, rate limits, or the nature of 'source' reviews. It adds minimal behavioral context beyond the operation name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no filler. It front-loads the core purpose and mentions relevant output details (dates and links). It is appropriately sized for a simple retrieval tool, though it sacrifices substance for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with four parameters (including an ambiguous 'kind'), no output schema, and no annotations, the one-sentence description is grossly incomplete. It leaves unanswered questions about parameter semantics, return format, pagination, and error conditions, making it inadequate for reliable agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention any parameters. The schema names (teacher_id, kind, limit, offset) are partially self-explanatory, but 'kind' is ambiguous and none are explained. The description fails to compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get), resource (teacher reviews), and key attributes (dates and Studizba links). It distinguishes implicitly from get_teacher_profile (profile vs reviews) but does not explicitly contrast with siblings like search_reviews or get_new_reviews.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or context such as 'use for a specific teacher when you need aggregated reviews' vs search_reviews for keyword-based retrieval. The agent is left to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_departmentsB

Rank departments by quality, ease, cheating environment, variance or draw risk.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
metricYes
descendingNo
min_confidenceNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral disclosure burden. It does convey the core output behavior—producing rankings by specified criteria—which is meaningful. But it does not explain how confidence filtering works, how ordering is applied, what the returned ranking structure looks like, or whether the operation is read-only or potentially expensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes to explaining the tool's purpose and ranking dimensions, making it appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, 0% schema description coverage, and an unconstrained metric parameter, the description is not complete enough for confident invocation. It omits acceptable metric values, the effect of the optional parameters, and the shape of the result, all of which matter for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It hints at the meaning of 'metric' by listing ranking dimensions, but it does not provide valid metric values, and it gives no semantic explanation for limit, descending, or min_confidence. The agent would have to guess at the expected metric string and the meaning of min_confidence.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('rank') and resource ('departments') and lists the ranking dimensions: quality, ease, cheating environment, variance or draw risk. It is clear enough to separate this from the sibling 'rank_teachers' by resource, though it does not explicitly contrast with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when you need departments ranked according to one of the listed criteria. However, it gives no explicit guidance about when to prefer rank_departments over related tools like get_department_analytics, search_departments, or compare_departments, and it does not state any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_teachersC

Rank teachers by an analytical metric and confidence threshold.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
metricYes
descendingNo
department_idNo
min_confidenceNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. It states the operation but does not say whether it is read-only, how the confidence threshold filters results, what ordering is applied by default, or what the result contains. The text mostly restates the tool's purpose rather than disclosing behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is efficient and front-loaded, but it is under-specified rather than concise: for a five-parameter tool with no parameter descriptions, this brevity sacrifices needed information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and no property descriptions, the description leaves an agent unable to call the tool correctly: metric values are undefined, threshold semantics are unknown, and optional filters/order are not explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It maps only two of five parameters (metric and confidence threshold) and gives no valid values or syntax for metric; limit, descending, and department_id are entirely unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Rank') and resource ('teachers'), and the ranking focus distinguishes it from searching or profile siblings such as search_teachers and get_teacher_profile. However, it never references alternatives like rank_departments, so differentiation is implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose ranking over search_teachers or get_teacher_analytics, nor any exclusions such as which confidence values or departments are appropriate. The only implied context is that the tool is for ranking, which does not help an agent decide among the many sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_entityB

Request and immediately perform a live refresh for a department or teacher.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes
entity_typeYes

TDQS

B3.2/5.0
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 of behavioral disclosure. It only says 'Request and immediately perform a live refresh,' which implies an action but doesn't explain side effects, whether it's destructive, if it requires special permissions, how long it takes, or what the return value is. The behavior is vague and incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no redundant words. It front-loads the action and target, making it easy to parse. All information is relevant and efficiently presented.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation-like tool with no output schema and no annotations, the description is too sparse. An agent needs to know what happens after a refresh (response format? success/failure indicators?), whether the refresh is synchronous (it implies yes), and any prerequisites. The current description leaves critical operational details unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, leaving parameters undocumented. The description adds limited meaning by indicating entity_type can be 'department' or 'teacher,' but it doesn't specify exact accepted values, format, or how entity_id relates. It partially compensates for the schema gap but leaves ambiguity about valid inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (refresh) and the resource (department or teacher). It distinguishes this tool from siblings like search, get, compare, and rank by indicating a live update operation. The verb+resource combination is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It doesn't mention conditions like stale data or the need to force a refresh, nor does it exclude usage when data is already fresh. The description offers no context on when a refresh is necessary compared to basic get/search operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_departmentsC

Find BMSTU departments and subdivisions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the entire burden of behavioral disclosure. It doesn't mention that the tool is read-only, returns a list, or any side effects. For a search tool, 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, but it is under-specified rather than concise. It lacks essential context and does not earn its placement, almost resembling the 'Process' tautology example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should imply what the tool returns or how parameters work. It provides neither, leaving the tool functionally opaque even though it has only two parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does 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 parameter meaning. It does not explain what 'query' represents (e.g., free-text search) or what 'limit' controls (e.g., max results), leaving agents to guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (find) and a specific resource (BMSTU departments and subdivisions). It distinguishes from search_teachers by the resource type, but does not differentiate among department-related tools like get_department_analytics or compare_departments, so it's not a full 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like search_teachers or get_department_analytics. The description simply states the action without any contextual cues for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_reviewsC

Search review text with Russian full-text matching and typo tolerance, preserving source links.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
teacher_idNo
department_idNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It does add useful behavioral details: Russian full-text matching, typo tolerance, and preservation of source links. However, it omits other relevant behavior such as pagination, response shape, and any restrictions or rate limits, so the disclosure is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that gets straight to the point with no filler. It efficiently conveys the core action and distinguishing features, though it sacrifices completeness for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations, an output schema, and any parameter descriptions, this description is insufficient for an agent to call the tool correctly with full confidence. The agent can guess the required query and optional filters, but the missing parameter semantics and lack of response format information leave notable gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining the parameters. It provides almost no parameter semantics: it does not clarify what 'query' means beyond search text, nor does it explain 'limit', 'teacher_id', or 'department_id'. The agent is left to infer the meaning of the filter parameters from their names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'search' and the resource 'review text', and the specifics of Russian full-text matching, typo tolerance, and preserving source links help distinguish it from sibling tools like search_teachers. It does not explicitly contrast with get_teacher_reviews, but the core 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as get_teacher_reviews or search_teachers. The description implies a text-based search use case but does not state when to prefer this over browsing reviews via a teacher profile, nor does it mention filtering capabilities or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_teachersA

Find BMSTU teachers by fuzzy full-name search.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

A3.6/5.0
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 mentions 'fuzzy' matching, which is a behavioral trait, but it does not disclose typical search behaviors such as read-only nature, result ordering, pagination, or behavior when no matches are found. This is insufficient 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/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the core purpose, and contains no extraneous words. It is concise and efficient, conveying the essential information without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with two parameters and no output schema, the description is adequate but minimal. It conveys the core functionality but omits details like result format, pagination, or any caveats about fuzzy matching. Given the many sibling tools, a bit more context on when this is the right search could be beneficial, but it is not critically incomplete for a basic search operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain both parameters. It implicitly explains the 'query' parameter as a fuzzy full-name search, but it does not explain the 'limit' parameter (default 20) at all. This leaves a gap in understanding how to control the number of results, making the description only partially helpful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Find'), a specific resource ('BMSTU teachers'), and the method ('fuzzy full-name search'). This clearly distinguishes it from sibling tools like search_departments and get_teacher_profile, so an agent can immediately understand what this tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when you need to find teachers by name, and the 'fuzzy' qualifier indicates it handles partial or approximate matches. However, it does not explicitly state when not to use it or mention alternatives, though the purpose is clear enough that an agent can infer when this is the right choice among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv0.1.0
    • First observedcompare_departments
    • First observedcompare_teachers
    • First observedexplain_score
    • First observedget_department_analytics
    • First observedget_monitoring_status
    • First observedget_new_reviews
    • First observedget_progress
    • First observedget_rating_history
    • First observedget_recent_changes
    • First observedget_teacher_analytics
    • First observedget_teacher_profile
    • First observedget_teacher_reviews
    • First observedrank_departments
    • First observedrank_teachers
    • First observedrefresh_entity
    • First observedsearch_departments
    • First observedsearch_reviews
    • First observedsearch_teachers

TDQS

C2.7/5.0

Scored across 18 tools

Disambiguation3/5

Most tools are clearly separated by search/get/compare/rank intent, but get_progress and get_monitoring_status overlap heavily on crawl and queue status, and get_teacher_profile vs get_teacher_analytics both surface metrics. The descriptions help resolve ambiguity, but a few tool boundaries are fuzzy.

Naming Consistency4/5

All tool names follow a lowercase snake_case verb_noun pattern, which is predictable and consistent. Minor inconsistencies exist: some names omit the entity type (e.g., explain_score, get_progress, refresh_entity) and get_rating_history is less scoped than sibling tools, but the overall convention is solid.

Tool Count3/5

With 18 tools, the server sits in the 16–25 range that feels heavy for the purpose. The set is not bloated beyond justification, but several monitoring and comparison tools could potentially be consolidated.

Completeness3/5

Teacher-level workflows are well covered: search, profile, reviews, analytics, explain, compare, rank, and refresh. However, department-level coverage is thinner—there is no department profile/details tool or direct way to list teachers in a department—so some workflows may hit dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers