Skip to main content
Glama

An MCP server that exposes the Repovive competitive-programming platform to any MCP client (Claude Desktop, Claude Code, IDE extensions, …). Built with FastMCP v3 and httpx.

It provides 102 tools, 11 resources (1 templated), and 8 prompts covering problems, contests, ratings, courses, blog posts, direct messages, notifications, mock-interview info, Vive points, account/profile management, real code submission, contest standings, production problem/contest authoring in Repovive's build editor, and a built-in local judge — with built-in version control over everything it edits, all behind scoped bearer authentication when served over HTTP.

Every tool has been tested end-to-end — read/write tools against the live Repovive API, submission verified with a real Accepted verdict, and the authoring/judge tools by generating full contests and running every reference solution to Accepted.


Contents


Related MCP server: MCP Chef

How it works

  1. Connect your MCP client (Claude Desktop, Claude Code, an IDE) to the server over stdio or HTTP.

  2. Read & author — browse problems and contests, or generate and draft new ones in Repovive's build editor.

  3. Judge locally — verify a solution against its tests with the built-in judge before anything leaves your machine.

  4. Submit / publish — submit for a real verdict, or (with approval) publish a draft to a contest.

What you can do

  • Browse & read problems — list a contest's problems with full statements, constraints, I/O formats, time/memory limits, tags, and sample test cases.

  • Explore contests — list upcoming/ongoing/past contests, view details, check and manage your registrations, get invite links.

  • Submit & track — submit a solution for a real verdict, read your submission history, and pull a contest's ranking, results and announcements.

  • Ratings — page and filter the global leaderboard by country / name / tier.

  • Courses & blog — list courses and posts; manage course editors/metadata (with the right permissions).

  • Community — read/send direct messages, manage conversations and blocks, read and mark notifications.

  • Interviews & Vive — read mock-interview pricing/capacity/sessions; view Vive earn methods and create a Vive checkout link.

  • Account — who am I, profile, update country, search users, sign out.

  • Scoped access — hand out keys that can read but not submit, author but not publish, or call the platform but not run code on your host.

  • Undo your edits — every change to a draft, contest, course or profile is versioned automatically, with a diff and a one-call rollback.

  • Author for production — create problem drafts in Repovive's editor and fill in statement, tests, model solution, editorial and validator; generate and verify whole rounds; judge solutions locally — see Authoring.

System architecture

Submitting code

repovive_submit_solution submits to POST /api/code/submit and polls until the verdict is final — a real submission recorded on your account. Verify locally first with repovive_judge_solution; Repovive rate-limits submissions to roughly 10 per minute.

repovive_submit_solution(contest_id="<24-hex>", problem_slug="remainder-count",
                         source=..., language="pypy")
#  -> {"submissionId": "...", "status": "Accepted", "passed": 18, "total": 18}

Language ids for submission follow the Judge0 set (python 71, pypy 220, cpp 54, java 62, …), which differs from the problem editor's own ids — the tool maps names for you. repovive_list_my_submissions lists your submission history.

Submission and verdict flow

Notes. The curated problem sets (Classics / FAANG / Quant / Math) are premium content served only through the website, so their problem lists are not available via the API — repovive_list_problem_sets returns their metadata and website URLs; for API-readable problems use contests (repovive_list_contest_problems). A problem like/dislike vote endpoint exists but keys on browser-URL identifiers that can't be resolved reliably from the public API, so it is intentionally not exposed.


Quick start

pip install repovive-mcp               # or, from a clone: pip install -e .

export REPOVIVE_EMAIL="you@example.com"
export REPOVIVE_PASSWORD="your-password"
python -m repovive_mcp                  # stdio transport (or: repovive-mcp)

Then point your MCP client at it (see below) and try repovive_whoami or repovive_list_contests.

Serving it over HTTP instead? You also need an access token, because the port would otherwise let anyone act as your Repovive account — see Access control.

export REPOVIVE_MCP_AUTH_TOKEN="$(make auth-token)"
make run-http                          # or: docker compose up --build

Install

Requires Python ≥ 3.10.

pip install repovive-mcp

Or from a clone, for development:

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"   # fastmcp>=3, httpx, pytest, ruff

Prefer a container? Images are published multi-arch, signed, and carry an SBOM:

docker pull ghcr.io/dwin-gharibi/repovive-mcp:latest

Run it directly (stdio transport):

export REPOVIVE_EMAIL="you@example.com"
export REPOVIVE_PASSWORD="your-password"
python -m repovive_mcp          # or: repovive-mcp

Access control

Two different things are being authenticated, and it is worth keeping them apart:

What it is

Configured with

Repovive account

who the server acts as on the platform

REPOVIVE_EMAIL + REPOVIVE_PASSWORD, or REPOVIVE_TOKEN

MCP access

who may call this server

REPOVIVE_MCP_AUTH_TOKEN (or ..._TOKENS, or JWT settings)

Over stdio your MCP client spawns the process, so the process boundary is the trust boundary and there is nothing to configure. Over HTTP the server refuses to start without an access token — an open port there is an open door to your account: submitting code, sending direct messages, deleting contests.

export REPOVIVE_MCP_AUTH_TOKEN="$(python -c 'import secrets; print(secrets.token_urlsafe(32))')"

Callers then send Authorization: Bearer <token>. You can store a sha256:<hex> digest instead of the secret itself, hand out several keys with different privileges, or verify JWTs from your own issuer.

Scopes. Every tool declares what it needs, and a caller without that scope doesn't get an error — the tool is simply absent from tools/list, so a model never sees a capability it can't use.

Scope

Grants

repovive:read

Problems, contests, standings, leaderboard, posts, courses, inbox.

repovive:write

Mutating your account: DMs, blocks, notifications, profile, registrations, Vive checkout.

repovive:submit

Real submissions recorded against your account.

repovive:author

Creating and editing problem drafts.

repovive:admin

Contest and course administration; deletions.

repovive:execute

Running code on the server host (local judge, generators).

repovive:history

Reading the action log and revision history, and rolling a change back.

# a read-only key for a dashboard, and a full key for your own agent
export REPOVIVE_MCP_AUTH_TOKENS='{
  "sha256:<hex>": {"client_id": "dashboard", "scopes": ["repovive:read"]},
  "sha256:<hex>": {"client_id": "agent"}
}'

Full details — digests, expiry, JWT settings, and the REPOVIVE_MCP_ALLOW_ANONYMOUS escape hatch for a port already behind an authenticating proxy — in docs/SECURITY.md.

Configure your MCP client

Add a server entry. Example (Claude Desktop claude_desktop_config.json / Claude Code mcp config):

{
  "mcpServers": {
    "repovive": {
      "command": "python",
      "args": ["-m", "repovive_mcp"],
      "env": {
        "REPOVIVE_EMAIL": "you@example.com",
        "REPOVIVE_PASSWORD": "your-password"
      }
    }
  }
}

If you installed into a virtualenv, point command at that interpreter (e.g. /path/to/.venv/bin/python) or use the repovive-mcp console script.

For a server you're running over HTTP, point the client at the endpoint and pass the access token:

{
  "mcpServers": {
    "repovive": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_ACCESS_TOKEN" }
    }
  }
}

Tool reference

All tools are prefixed repovive_. Read tools accept response_format (markdown default, or json) where a summary view is useful. Each carries the access scope it needs (see Access control). The list below is grouped by area; the always-current, auto-generated reference — with per-tool scopes and full descriptions — is docs/TOOLS.md.

Tool map

Account & profile (7)

Tool

Description

repovive_whoami

Current account (id, role, premium, Vive, streaks).

repovive_get_my_profile

Profile document (job role, org, socials, location).

repovive_update_my_location

Update profile country (idempotent).

repovive_search_users

Find users by name (for DMs).

repovive_list_my_documents

Your uploaded documents.

repovive_build_version

Deployed build/release info (no auth).

repovive_logout

Invalidate session (auto re-auth next call).

Problems (4)

Tool

Description

repovive_list_problem_sets

Curated sets (Classics/FAANG/Quant/Math) + URLs.

repovive_list_contest_problems

All problems in a contest (summaries or full).

repovive_get_problem

One problem: statement, constraints, limits, samples.

repovive_get_problem_workspace_url

Browser URL to solve/submit a problem.

Contests & ratings (12)

Tool

Description

repovive_list_contests

List contests, filter by upcoming/ongoing/past.

repovive_get_contest

One contest by number or id.

repovive_get_contest_registrations

Your registrations & permissions.

repovive_register_for_contest

Register (normal or virtual).

repovive_get_contest_invite_link

Shareable invite link.

repovive_check_invite_eligibility

Invite eligibility.

repovive_get_contest_permissions

List collaborators (admin).

repovive_set_contest_permission

Grant a role (admin).

repovive_remove_contest_permission

Revoke a role (admin).

repovive_update_contest

Edit contest settings (admin).

repovive_delete_contest

Delete a contest (admin, destructive).

repovive_get_leaderboard

Global ratings leaderboard (paged/filtered).

Standings & results (4)

Tool

Description

repovive_get_contest_ranking

Final standings for a contest.

repovive_get_contest_results

Your per-problem results in a contest.

repovive_get_contest_announcements

Contest announcements/clarifications.

repovive_get_problem_submissions

Submissions for one contest problem.

Submissions (3)

Tool

Description

repovive_submit_solution

Submit a solution and await the verdict (real submission).

repovive_list_my_submissions

Your submission history.

repovive_get_submission

Read a submission's status/verdict by id.

Content — courses & blog (8)

Tool

Description

repovive_list_posts

Blog posts (paged).

repovive_get_post_categories

Blog categories.

repovive_list_courses

Courses with your enrollment.

repovive_get_course_editors

List course editors.

repovive_add_course_editor

Add an editor.

repovive_remove_course_editor

Remove an editor (destructive).

repovive_update_course_details

Update title/description/tags.

repovive_set_course_visibility

Public/private (admin).

Community — notifications & DMs (14)

Tool

Description

repovive_list_notifications

In-app notifications.

repovive_get_unread_notifications_count

Unread count.

repovive_mark_notifications_read

Mark notifications read.

repovive_list_conversations

DM conversations.

repovive_get_conversation_messages

Messages in a conversation.

repovive_send_direct_message

Send a message.

repovive_start_conversation

Start a conversation.

repovive_mark_conversation_read

Mark a conversation read.

repovive_delete_conversation

Delete a conversation (destructive).

repovive_delete_direct_message

Delete a message (destructive).

repovive_get_unread_dm_count

Total unread DMs.

repovive_list_blocked_users

Blocked users.

repovive_block_user

Block a user.

repovive_unblock_user

Unblock a user (destructive).

Interviews & Vive (5)

Tool

Description

repovive_get_interview_prices

Mock-interview prices.

repovive_check_interview_capacity

Interview capacity.

repovive_list_interview_sessions

Your interview sessions.

repovive_get_vive_earn_methods

Ways to earn Vive.

repovive_create_vive_checkout

Create a Vive purchase link (no charge).

Authoring & judge — local (11)

Tool

Description

repovive_list_problem_templates

Built-in problem generators.

repovive_generate_problem

Generate a complete, self-consistent problem.

repovive_new_problem_template

Empty problem skeleton + field reference.

repovive_validate_problem

Validate a problem against the schema.

repovive_judge_solution

Run a solution against tests (local judge).

repovive_available_judge_languages

Languages the host can run.

repovive_build_contest

Generate + validate + judge a whole contest.

repovive_list_house_templates

Generators that match Repovive's published style.

repovive_generate_house_problem

Generate a house-style problem.

repovive_check_house_style

Check a problem against house conventions.

repovive_build_house_round

Assemble & verify a full house-style round.

Problem editor — build sessions (25)

Tool

Description

repovive_build_list_sessions / repovive_build_create_session

List / create problem drafts.

repovive_build_update_problem_info

Slug, difficulty, limits, interactive flag.

repovive_build_update_statement

Statement, I/O format, constraints.

repovive_build_add_testcases / list_testcases / clear_testcases / delete_testcase

Manage draft test cases.

repovive_build_set_solutions / get_solutions

Model & alternative solutions (language→judgeId).

repovive_build_set_learn_pages

Editorial / learn pages.

repovive_build_set_validator / set_custom_checker

Input validator, custom checker.

repovive_build_set_generator / set_gen_data / delete_generator / update_sources

Generators, gen-data, sources.

repovive_build_prepare_judge_target / run_status / cancel_run

Generate & verify tests.

repovive_build_push_problem

Push a whole generated problem into a draft.

repovive_build_author_complete_problem

Metadata+statement+tests+solution+editorial+validator in one call.

repovive_build_delete_session

Delete a problem draft (destructive).

repovive_build_list_admin_contests / repovive_build_add_to_contest

Publish step (explicit).

History & revisions (9)

Tool

Description

repovive_list_history

Browse the local log of state-changing calls.

repovive_get_history_entry

One entry in full, with its (redacted) arguments.

repovive_history_status

Where the database lives, what it holds, retention limits.

repovive_list_revisions

An entity's saved versions, newest first.

repovive_get_revision

One revision including its full snapshot.

repovive_diff_revisions

What changed between two revisions, field by field.

repovive_restore_revision

Roll back to a revision (or into a different entity).

repovive_undo_last_change

Step one change back.

repovive_purge_history

Delete history entries (destructive).

Drafts are not visible on the platform until reviewed; publishing is the separate repovive_build_add_to_contest call. Details in docs/AUTHORING.md. Every edit above is versioned automatically — see History & rollback.

Authoring & local judge

The server can generate complete problems, build full contests, and evaluate them with a local judge — offline, with no writes to the live platform. Every generated problem's expected outputs are computed by running its reference solution, so it is correct by construction; repovive_build_contest(..., verify=True) judges every reference solution and only reports success when all are Accepted.

repovive_build_house_round(title="Repovive Starter Round 8")
  -> {round, verification: {all_passed: true, ...}}   # 7 problems, house-style, all AC

When you're ready to put a draft into Repovive's editor, the build-session tools write everything and leave publishing to you:

Build-session authoring flow

Verified example artifacts live in examples/ (12 problems, 4 contests). Full details in docs/AUTHORING.md. A ready-to-use agent skill is in skills/repovive-contest-dev/.

History & rollback

Repovive has no version control for problem drafts, so the server keeps its own. Every state-changing call is logged, and every change to a problem draft, contest, course or your profile is snapshotted automatically — you don't opt in, and you don't call anything to save a version.

repovive_list_revisions(target_kind="build_session", target_id="<session id>")
#  seq 4  auto      Updated the draft statement      <- the mistake
#  seq 3  auto      Added draft test cases
#  seq 2  auto      Updated the draft statement
#  seq 1  baseline  before the first tracked change

repovive_diff_revisions(from_revision_id=…, to_revision_id=…)
#  statement.title:       'Array Sum' -> 'OOPS wrong title'
#  statement.description: 'Sum the array.' -> 'Broken.'

repovive_undo_last_change(target_kind="build_session", target_id="<session id>")
#  -> statement restored, test cases untouched, undo recorded as a new revision
  • Nothing is destroyed. A restore re-applies an old snapshot through the normal API and is recorded as a new revision, so you can undo the undo.

  • Deleting a draft doesn't delete its history. Create a fresh build session and pass into_target_id to rebuild it there.

  • dry_run=True reports exactly which sections would be written before anything changes.

  • Honest about coverage. Repovive exposes no read endpoint for a draft's statement or generators, so those sections are reconstructed from what this server wrote; test cases and solutions are read back and always authoritative. Each revision names the sections it actually knows instead of pretending to more.

  • Irreversible things stay irreversible. A sent direct message, a recorded submission and a Vive checkout are logged, never claimed as undoable.

The log doubles as an audit trail — filter it by actor to see what a given access token did, or by tool to see who ran code on the host:

repovive_list_history(status="error", days=7)
repovive_list_history(tool="repovive_judge_solution")

Everything lives in one local SQLite file (mode 0600), holds no secrets — argument keys that look like credentials are redacted before writing — and is bounded by retention limits. Reading needs repovive:history; restoring additionally needs the write scope of whatever is being restored — so a repovive:history token alone is a genuine read-only audit key, and the restore tools are not even listed for it. Full details in docs/HISTORY.md.

Repovive house style

The generators and the skill follow Repovive's measured conventions — read from all 98 published problems and 23 contests, and exposed as the repovive://house-style resource:

  • Problems are multi-test (every problem starts with t), use a braced-array input format, a markdown-bullet constraints list, exactly one sample holding several sub-cases, and one explanation paragraph per sub-case. Memory limit 256 MB; time limits 1–2 s.

  • Rounds are 7 problems (A–G) on the 500…3500 points ladder with the difficulty curve easy, easy, medium, medium, medium, hard, hard, 120 minutes, tags drawn from a fixed 12-word vocabulary.

repovive_check_house_style validates a problem against these rules, and repovive_build_house_round assembles a whole conforming round and verifies every problem.

Resources & prompts

Resources (read via URI) — 11, one templated: repovive://me, repovive://profile, repovive://contests, repovive://contests/{contest_id}/problems (templated), repovive://problem-sets, repovive://leaderboard, repovive://posts, repovive://courses, repovive://notifications, repovive://house-style, repovive://auth-scopes.

Prompts (parameterised workflows) — 8: solve_problem, prepare_for_contest, study_plan, analyze_leaderboard, inbox_triage, build_repovive_round, problemset_contest, author_and_verify_problem.

Example agent session

A typical "solve a real problem" loop chains a handful of tools:

1. repovive_list_contests(status="ongoing")            # find a contest id
2. repovive_list_contest_problems(contest_id=…)        # pick a problem slug
3. repovive_get_problem(contest_id=…, problem_slug=…)  # statement + samples
4. …write a solution…
5. repovive_judge_solution(problem=…, source=…)        # local check → Accepted
6. repovive_submit_solution(contest_id=…, problem_slug=…, source=…, language="pypy")
   # -> {"status": "Accepted", "passed": 18, "total": 18}
7. repovive_get_contest_ranking(contest_id=…)          # see where you land

Solve & problemset flow


The two authentications

Inbound — who may call this server. Nothing to configure over stdio; over HTTP a bearer token is required and the server refuses to start without one. Tokens are held as SHA-256 digests and carry scopes that decide which tools a caller can even see. See Access control and docs/SECURITY.md.

Outbound — who this server is on Repovive.

  • With REPOVIVE_EMAIL + REPOVIVE_PASSWORD, the server logs in on first use, keeping both the JWT bearer token and the auth_token session cookie (some routes need the cookie). It re-authenticates automatically on a 401 — and a concurrent caller reuses a token another has already refreshed rather than logging in again — and caches the token (REPOVIVE_TOKEN_CACHE, mode 0600, written atomically) to avoid login rate limits.

  • With REPOVIVE_TOKEN only, it uses the bearer token (cookie-gated routes may not work).

  • A 429 from Repovive surfaces as a typed rate-limit error carrying Retry-After rather than being retried indefinitely.

  • The server sends a descriptive User-Agent and standard Origin header, exactly like any first-party API client.

Authentication flow

Deployment

Runs over stdio (local) or HTTP (REPOVIVE_MCP_TRANSPORT=http, endpoint /mcp). Docker, Docker Compose, Kubernetes (kustomize), Helm, OpenTofu/Terraform, Ansible, and Vagrant paths are all provided under deploy/ and the root Docker/Vagrant files.

docker compose up --build            # HTTP on :8000 (reads .env, incl. REPOVIVE_MCP_AUTH_TOKEN)
# or: helm install rv deploy/helm/repovive-mcp \
#       --set credentials.email=... --set credentials.password=... --set access.token=...
# or: kubectl apply -k deploy/kubernetes   (after creating the secret)

Every path carries an access token, and the Helm chart refuses to render without one.

Deployment topology

Full guide: docs/DEPLOYMENT.md. Handy targets in the Makefile (make help) and a Taskfile.yml for go-task (task --list).

Project layout

repovive-mcp/
├── repovive_mcp/          the server package
│   ├── app.py             shared FastMCP instance, RepoviveClient, auth provider, lifespan
│   ├── auth.py            access control for the server itself (tokens, JWT, scope guard)
│   ├── scopes.py          the scope vocabulary
│   ├── client.py          async httpx client (login, re-auth, rate limits, token cache)
│   ├── history.py         local SQLite action log + revision store
│   ├── tracking.py        which tools change what; the middleware that records it
│   ├── revisions.py       per-entity snapshot capture and restore
│   ├── tools_*.py         tool groups (account, contests, submit, build, …)
│   ├── resources.py       MCP resources        prompts.py   MCP prompts
│   ├── authoring.py housestyle.py templates_house.py production.py   local authoring
│   ├── localjudge.py      Judge0-style subprocess judge
│   └── server.py          registers everything; stdio or HTTP (refusing an open port)
├── scripts/gen_tools_doc.py   regenerates docs/TOOLS.md from the live server
├── scripts/release.py         one-source version management + changelog rolling
├── .github/workflows/         ci.yml (lint, tests, auth gate) and release.yml
├── docs/                  architecture, tools, authoring, deployment, api map, security
├── deploy/                docker, kubernetes, helm, opentofu, ansible
├── examples/              verified problems & contests
├── skills/                repovive-contest-dev agent skill
└── tests/                 smoke, offline authoring, and live e2e tests

Documentation

Development & tests

pip install -e ".[dev]"
# Live tests require real credentials and are skipped without them:
REPOVIVE_EMAIL=... REPOVIVE_PASSWORD=... pytest -q
make check               # lint + offline tests + docs freshness (no credentials needed)
make test-offline        # or: task test:offline
make docs                # regenerate docs/TOOLS.md from the live server

tests/test_smoke.py boots the server in-memory (fastmcp.Client(mcp)), lists tools/resources/prompts, and exercises representative read tools plus error handling. tests/test_auth.py covers token parsing and verification, the scope guard, and the fail-closed HTTP start; tests/test_client_behaviour.py drives the HTTP client through a mock transport (re-login, rate limits, token-cache permissions); tests/test_history.py runs the whole edit → snapshot → diff → undo loop. docs/TOOLS.md is generated by scripts/gen_tools_doc.py (CI enforces freshness with --check).

Security notes

  • The HTTP transport will not serve without an access token. Every caller acts as your Repovive account, so that port is the boundary that matters.

  • Credentials come only from environment variables — never hard-code them.

  • Treat the JWT/cookie as secrets; they grant access to your account. The token cache lives outside the repo (REPOVIVE_TOKEN_CACHE, default $XDG_CACHE_HOME/repovive-mcp/token.json, mode 0600).

  • Write tools (submission, DMs, registration, deletes, course/contest admin) perform real actions; their annotations (destructiveHint, etc.) let clients gate them, and scopes let you withhold them entirely.

  • The local judge runs the code you give it. repovive:execute is a separate scope for exactly that reason.

  • The history database holds your statements, tests and solution source. It is written 0600, never leaves the host, redacts credential-shaped arguments, and can be turned off with REPOVIVE_HISTORY=off.

  • Authoring writes drafts; publishing a draft to a live contest is a separate, explicit call. See docs/SECURITY.md.


Available Tools

102 tools
repovive_add_course_editorAdd course editorA
Idempotent

Grant a person edit or view access to a course by their email address. Requires edit rights on that course.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoRole, e.g. 'editor' or 'viewer'editor
emailYesEditor's email address
course_idYesCourse id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate non-read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context by stating the caller must have edit rights and that access is granted based on email. It avoids contradicting the annotations and supplements them with an auth precondition.

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?

Two short sentences with no filler. The core action and important prerequisite are front-loaded, and every clause earns its place.

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

Completeness5/5

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

For a simple 3-parameter tool with 100% schema coverage, an output schema, and annotations covering idempotency and destructive behavior, the description supplies the essential missing context: the permission prerequisite and the email-based targeting. Nothing critical is left unexplained for correct invocation.

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 100%, so the baseline applies. The description reinforces the meaning of 'email' by saying access is granted by email address and aligns with the role examples ('edit or view'), but it does not add substantial new parameter-level detail beyond the schema.

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?

Description states a specific verb ('grant'), resource ('access to a course'), and method ('by email address'). It also clarifies that both edit and view access can be granted, distinguishing this add operation from siblings like remove_course_editor and get_course_editors.

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 says when to use the tool: to grant edit or view access by email. It also provides a key prerequisite ('Requires edit rights on that course'). It does not explicitly name alternatives, but the context is clear enough for an agent to select it over related course-access tools.

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

repovive_available_judge_languagesList judge languagesA
Read-only

List the languages the local judge can actually run on this host (toolchain present) alongside every language it knows about. Check this before repovive_judge_solution.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

The annotations already cover the read-only safety profile (readOnlyHint=true). The description adds useful context beyond that: the tool inspects the local host's toolchain and returns two categories of languages (actually runnable vs. merely known), which clarifies output semantics without contradicting the annotations.

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?

Two sentences with no filler. The key qualifier ('actually run on this host (toolchain present)') is front-loaded, and the usage cue is given in the second sentence.

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

Completeness5/5

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

For a zero-argument, read-only tool with an output schema, the description covers what the tool reports and when to use it. Nothing needed to invoke it correctly is missing.

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 the schema fully covers inputs; the baseline for no parameters is 4. No parameter explanation is needed, and the description appropriately focuses on output behavior instead.

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?

States a specific verb ('List') and a precise resource ('languages the local judge can actually run on this host'), and clarifies the scope as 'alongside every language it knows about.' It clearly differentiates from repovive_judge_solution and other listing tools.

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

Usage Guidelines5/5

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

Explicitly instructs the agent when to invoke it: 'Check this before repovive_judge_solution.' This gives a direct decision rule and distinguishes it from the related judging tool.

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

repovive_block_userBlock a userA
Idempotent

Block a user so they can no longer direct-message the authenticated account, with an optional reason. Reversible with repovive_unblock_user.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional reason recorded with the block
user_idYesUser id to block

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already show this is a mutating, reversible, non-destructive operation. The description adds useful behavioral context by specifying the scope ('the authenticated account'), the recorded optional reason, and the fact that blocking is reversible with repovive_unblock_user. This goes beyond what the annotations provide without contradicting them.

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?

Two sentences carry the essential information with no filler: the effect, the optional reason, and the reversal path. The most important scoping detail ('can no longer direct-message the authenticated account') appears immediately, making the description easy to scan.

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

Completeness5/5

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

For a simple two-parameter tool with a complete input schema, an output schema, and relevant annotations, the description is fully sufficient. It explains what the action does, who it affects, and how to undo it, so an agent has everything needed 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.

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents both user_id and reason clearly. The description restates the optional-reason idea but adds no new parameter-level meaning beyond what the schema provides, so baseline 3 is appropriate.

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 action ('Block a user'), the exact target resource, and the precise effect: the blocked user can no longer direct-message the authenticated account. It also mentions the optional reason and explicitly names the reversal tool, distinguishing it from repovive_unblock_user and repovive_list_blocked_users.

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 indicates when to use this tool: when the goal is to stop a user from sending direct messages to the authenticated account. It also names the relevant alternative for undoing the action (repovive_unblock_user), though it does not explicitly list when-not-to-use conditions.

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

repovive_build_add_testcasesAdd test casesA

Append test cases to a draft in one call. Cases are ADDED to whatever is already there — clear first with repovive_build_clear_testcases if you mean to replace them. For interactive problems omit expectedOutput; the interactor decides the verdict.

ParametersJSON Schema
NameRequiredDescriptionDefault
cases_jsonYesJSON list of test cases: [{"input": str, "expectedOutput": str, "isSample": bool, "explanation": str (optional)}]. For interactive problems omit expectedOutput — the interactor decides the verdict.
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The description clearly explains the additive behavior: cases are added to existing content rather than replacing it. It also discloses the interactive-problem verdict behavior. Annotations already cover read-only/destructive hints, so the description adds meaningful behavioral context beyond them.

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?

Two sentences carry all essential information with no filler. The most critical behavioral caveat (append vs. replace) is front-loaded, and the interactive case is handled in a single follow-up clause.

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

Completeness5/5

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

Given the simple two-parameter schema, full schema coverage, and presence of an output schema, the description covers everything needed to invoke the tool correctly. It explains the operation, the replacement alternative, and the interactive edge case.

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 100%, so the input schema already fully documents both parameters. The description reinforces the interactive expectedOutput rule, but it does not significantly extend parameter understanding beyond what the schema already states.

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 and resource: "Append test cases to a draft in one call." It also explicitly distinguishes this from repovive_build_clear_testcases, which is the key sibling that could be confused with it.

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

Usage Guidelines5/5

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

The description gives clear usage guidance: use this to append, and use repovive_build_clear_testcases first if replacement is intended. It also includes an important conditional for interactive problems, telling the caller to omit expectedOutput.

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

repovive_build_add_to_contestAttach draft to a contestA

Publish a draft by attaching it to a contest as a real problem. This is the step that makes authored work visible on the platform — never call it without the user's explicit approval. Verify the draft builds cleanly first.

ParametersJSON Schema
NameRequiredDescriptionDefault
body_jsonYesJSON body for add-to-contest, e.g. {"contestId": "<24-hex>"}
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already signal readOnlyHint=false and idempotentHint=false, so the non-read-only nature is covered. The description adds meaningful behavioral context by stating that this action makes authored work visible on the platform and that explicit user approval is required — information not available from annotations alone.

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?

Three sentences with no wasted words. The primary purpose is front-loaded in the first sentence, and the critical prerequisite and consent requirement follow efficiently without redundancy.

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

Completeness5/5

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

Given the rich schema (100% parameter coverage), existing output schema, and annotations covering read-only/idempotent/destructive behavior, the description is complete for correct invocation. It adds the crucial preconditions and visibility consequence that are not encoded elsewhere.

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 coverage is 100%, so the parameters are fully documented in the schema. The description mentions 'draft' and 'contest' conceptually but does not add any detail about session_id or body_json beyond what the schema already provides; the baseline of 3 is appropriate.

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: 'Publish a draft by attaching it to a contest as a real problem,' which clearly identifies the operation and its role. However, it does not explicitly distinguish itself from adjacent sibling tools like build_push_problem or build_author_complete_problem, so the 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 Guidelines4/5

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

The description provides clear execution context: verify the draft builds cleanly first, and never call without explicit user approval. This tells the agent when it is appropriate to invoke the tool, though it does not name alternative tools or say 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.

repovive_build_author_complete_problemAuthor a complete problemA
Idempotent

Import a complete problem into a draft in one call: clears the existing test cases (unless replace_testcases=False), then writes metadata, statement, test cases, the reference solution, editorial pages and input validator. Returns a per-step report — check all_ok before treating the draft as ready. This edits a private draft; publishing it to a contest is a separate call.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id to write into
problem_jsonYesA problem object (e.g. from repovive_generate_problem)
learn_pages_jsonNoOptional editorial pages: [{"title": str, "content": str}]
validator_sourceNoOptional input-validator source
replace_testcasesNoDelete existing manual test cases first

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior1/5

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

The description discloses substantial behavior: clearing test cases, writing multiple artifacts, returning a per-step report, and editing a private draft. However, it says it 'clears the existing test cases' while annotations declare destructiveHint=false, which is a direct contradiction. Per the rubric, this makes the score 1 despite otherwise strong disclosure.

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 three sentences with no filler. It front-loads the core action, then gives the side effect, return semantics, and scope boundary. Every sentence earns its place.

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 five-parameter tool with an output schema and rich annotations, the description covers destination, artifacts written, the reporting mechanism, and the draft-vs-contest scope. It is slightly less complete because the destructiveHint conflict leaves the safety profile ambiguous.

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?

The input schema covers 100% of the five parameters, so the baseline is 3. The description reinforces the replace_testcases behavior and references problem_json coming from repovive_generate_problem, but it does not add meaning beyond what the schema already documents.

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 and resource: 'Import a complete problem into a draft in one call', then enumerates exactly what gets written. It distinguishes this from the granular build_* sibling tools and from publishing by saying 'publishing it to a contest is a separate call'.

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?

It clearly signals when to use this tool: when you want a complete, one-call import into a draft. It also sets an exclusion by noting publishing is separate. It does not explicitly name the alternative granular build_* tools for partial updates, so it stops short of full when/when-not guidance.

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

repovive_build_cancel_runCancel build runA
Idempotent

Cancel the build run currently executing for a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already cover idempotency and non-destructiveness, so the description only needs to add behavioral context. It adds that the run is 'currently executing' and associated with 'a draft,' but it does not explain what happens to partial build outputs or whether cancellation is asynchronous.

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 the core meaning, and it is immediately scannable.

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 one-parameter cancellation tool with an output schema and idempotency annotations, the description is largely complete. The only minor gap is lack of explicit error behavior when no build run is currently executing, but that is implied by 'currently executing.'

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 100%, so the baseline is 3. The description does not add additional meaning about session_id, such as how to obtain it or what kind of session it refers to, but it does not need to because the schema already documents it.

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 ('Cancel'), a clear resource ('build run'), and a scoping condition ('currently executing for a draft'). This distinguishes it from related tools like repovive_build_run_status without needing to inspect 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 Guidelines3/5

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

The description implies the tool is for stopping an in-progress build run, but it does not explicitly state when to prefer it over alternatives or mention any preconditions like needing a valid session id. Usage context is present but not elaborated.

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

repovive_build_clear_testcasesClear test casesA
DestructiveIdempotent

Delete every manually added test case from a draft. This cannot be undone — use it before uploading a replacement set.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already supply readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds valuable context beyond these: the deletion is irreversible ('This cannot be undone') and is limited to 'manually added' cases, implying generated cases are untouched. This clarifies the operational impact without contradicting annotations.

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?

Two sentences with zero redundancy. The action and scope are front-loaded, followed immediately by the critical caution ('cannot be undone') and a usage hint. Every word earns its place.

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

Completeness5/5

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

For a one-parameter destructive action with a rich annotation set and an output schema, the description covers the essential information: what is deleted, scope ('manually added'), irreversibility, and when to call it. Nothing necessary for correct invocation is missing.

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 100%: the only parameter, session_id, is documented with type, minLength, and 'Build session id'. The description adds no parameter-level detail, and the schema already provides sufficient semantic grounding, 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/5

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

Description states a precise verb ('Delete'), a specific resource ('test case'), and the scope ('every manually added test case from a draft'). It clearly distinguishes itself from sibling repovive_build_delete_testcase (which deletes a single test case) and repovive_build_add_testcases (which adds them).

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 gives actionable guidance: 'use it before uploading a replacement set' signals the intended workflow. It implies bulk removal vs. per-testcase deletion among siblings, though it does not explicitly name the alternative (repovive_build_delete_testcase) 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.

repovive_build_contestBuild & test a full contestA
Idempotent

Generate a whole contest from an ordered list of generator kinds and verify it: each problem is schema-checked, its reference solution is judged against its own tests, and a known-wrong solution is checked to fail. Returns the import-ready contest plus a per-problem verification report; require verification.all_passed before using it.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoBase seed (problem i uses seed+i)
titleYesContest title
verifyNoRun each reference solution against its tests
problem_kindsYesOrdered list of generator kinds, one per problem
num_hidden_per_problemNoHidden tests per problem

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations provide only idempotent and destructive hints, so the description carries the behavioral burden. It adds substantial detail: schema validation, reference-solution judging, known-wrong-solution negative check, per-problem verification report, and the required success condition. This is exactly the kind of workflow transparency an agent needs.

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?

Two dense sentences: the first states purpose and verification steps, the second states return shape and the required postcondition. Every sentence earns its place with no filler or duplication of schema content.

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 complex 5-parameter tool, the description covers the full workflow, return format, and success criterion, and the output schema covers return details. It is slightly incomplete about the behavior when verify=false and does not explicitly state whether the contest is persisted or only returned, though 'import-ready' implies the latter.

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 100%, and the schema already documents each parameter including title, problem_kinds ordering, seed derivation, verify behavior, and hidden test count. The description reinforces the problem_kinds and verification concepts but adds no new per-parameter meaning beyond the schema.

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 action—'Generate a whole contest... and verify it'—and details the verification workflow (schema-check, judge reference solution, confirm known-wrong solution fails). This clearly differentiates it from single-problem or validation siblings like generate_problem, validate_problem, and judge_solution.

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 gives clear context: this is the orchestration tool for producing a complete contest from an ordered list of generator kinds, and it includes an actionable guardrail ('require verification.all_passed before using it'). It does not explicitly name alternatives or state when not to use it, but the intended use case is unambiguous.

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

repovive_build_create_sessionCreate a build sessionA

Start a new problem draft on Repovive and return its session id. Drafts are private to the authoring account until explicitly attached to a contest. Set force_new=False to resume an existing draft with the same name instead of creating another.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoEditor mode: 'text' (default)text
force_newNoAlways start a fresh draft instead of resuming an existing one
session_nameYesName for the new problem draft

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description goes beyond the annotations by explaining the draft's privacy state and the difference between creating and resuming. This is valuable behavioral context for a mutation tool. It does not contradict the annotations.

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 two sentences, front-loaded with the core action, and contains no filler. Every sentence contributes to understanding the tool's behavior.

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 simple 3-parameter tool with a full schema and output schema, the description covers purpose, key behavioral nuance, and privacy. It could mention how to discover existing drafts, but the schema and annotations largely fill gaps.

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?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantic guidance for force_new beyond the schema, specifically that setting it false resumes a same-named draft. This elevates the score slightly.

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 starts with a specific verb and resource: 'Start a new problem draft on Reprovive and return its session id.' This clearly identifies the tool's purpose and distinguishes it from sibling tools like list or delete session tools.

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?

It provides practical guidance by explaining that setting force_new=False resumes an existing draft rather than creating another. It also notes privacy semantics. It does not explicitly name alternative tools, but the guidance is clear enough for most usage.

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

repovive_build_delete_generatorDelete a generatorA
DestructiveIdempotent

Remove a named generator from a draft. Any gen-data lines that invoke it will stop working, so update the gen-data script too.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id
generator_nameYesGenerator identifier to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true), the description explicitly warns that gen-data lines invoking the generator will stop working and that the gen-data script must be updated accordingly. This is valuable behavioral disclosure that prepares the agent for the tool's ripple effects. No contradiction with annotations.

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 two sentences, front-loaded with the primary action and scoped context, followed immediately by the key side effect and required follow-up. No filler or redundant wording.

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

Completeness5/5

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

For a simple two-parameter delete operation with an output schema, the description fully covers what the agent needs to know: the target, the scope, and the consequential gen-data impact. Nothing critical is missing.

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 100%, so the input schema already sufficiently documents session_id and generator_name. The description does not add extra parameter-level context, but given the complete schema coverage, a baseline score of 3 is appropriate.

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 ('Remove'), a precise resource ('a named generator'), and context ('from a draft'). This clearly distinguishes it from related build tools like repovive_build_set_generator or repovive_build_delete_session. The action is unambiguous even without comparing to sibling schemas.

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 a generator should no longer exist in a draft, and it adds a follow-up instruction to update the gen-data script. However, it does not name alternatives or state when not to use it, leaving the 'when vs. when-not' guidance largely implicit.

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

repovive_build_delete_sessionDelete a problem draftA
DestructiveIdempotent

Permanently delete a problem draft and everything in it — statement, test cases, solutions, generators. This cannot be undone; confirm with the user before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description goes beyond the annotations by specifying exactly what gets destroyed (statement, test cases, solutions, generators) and emphasizing irreversibility. This aligns with destructiveHint=true and readOnlyHint=false, and adds concrete behavioral context an agent needs before calling.

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?

Two sentences with no filler. The core destructive behavior and contents are stated first, and the user-confirmation requirement is added immediately after. Every clause earns its place.

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

Completeness5/5

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

For a single-parameter destructive tool with a complete input schema and an output schema available, the description covers all essential context: what is deleted, the scope of deletion, irreversibility, and the need for user confirmation. Nothing critical is missing.

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?

The input schema already fully documents the single parameter 'session_id' with the description 'Build session id to delete.' The tool description adds no additional meaning beyond the schema, so the baseline score of 3 applies.

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 action ('Permanently delete') on a specific resource ('a problem draft') and enumerates what it contains. This clearly differentiates it from sibling delete tools that target narrower pieces like generators or testcases.

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 gives explicit usage guidance: 'confirm with the user before calling.' It does not explicitly enumerate alternatives or when-not-to-use cases, but the destructive, irreversible nature is clearly flagged, which is the key conditional for invoking this tool.

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

repovive_build_delete_testcaseDelete one test caseA
DestructiveIdempotent

Delete one test case from a draft by its id. Get ids from repovive_build_list_testcases. This cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id
testcase_idYesTest case id (the `id` field from repovive_build_list_testcases)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the tool as destructive, but the description goes further by stating 'This cannot be undone,' which is crucial behavioral context for an agent deciding whether to invoke it. It also clarifies that the operation acts within a draft, adding scope beyond what annotations alone convey.

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?

Two compact sentences deliver the action, the resource scope, the ID source, and the irreversibility warning. Every sentence earns its place with no filler or redundancy.

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

Completeness5/5

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

For a simple two-parameter delete operation with destructive annotations and an output schema, the description covers all essential context: what to delete, where the ID comes from, and that deletion is permanent. Nothing needed for correct invocation is missing.

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 schema already covers both parameters fully, so baseline is 3. The description adds value by directly telling the agent to source testcase_id from repovive_build_list_testcases and 'by its id,' reinforcing the link between the parameter and the list operation, which slightly exceeds bare schema coverage.

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 a specific action (delete) on a specific resource (one test case from a draft) and by a specific identifier (its id). It also references repovive_build_list_testcases, which distinguishes it from related test-case operations like clear_testcases or add_testcases.

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 explicitly instructs the agent where to obtain testcase IDs, providing a clear prerequisite for use. It does not explicitly contrast with alternatives such as clearing all test cases, but the target use case—deleting a single test case from a draft—is clear enough for selection.

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

repovive_build_get_solutionsGet draft solutionsA
Read-only

Fetch the solutions attached to a draft — the main test solution plus any alternatives with their expected verdicts.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already convey readOnlyHint and openWorldHint, so the safety profile is covered. The description adds behavioral context by revealing what the returned data contains: the main test solution, alternatives, and their expected verdicts, which helps the agent anticipate the result without contradicting annotations.

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 that immediately states the action and resource, then adds the meaningful distinction about main versus alternative solutions. There is no filler or redundant restatement of the title.

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

Completeness5/5

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

For a read-only fetch tool with one documented parameter and an output schema present, the description provides sufficient context: what the solutions are, what they contain, and the expected verdicts. No critical operational detail appears missing.

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?

The only parameter, session_id, is already fully described in the schema as 'Build session id' with 100% schema description coverage. The description adds no further parameter-specific detail, but it does connect the session concept to the draft context, matching the schema baseline of 3.

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 ('Fetch') and resource ('solutions attached to a draft'), and distinguishes the content from related tooling by specifying 'the main test solution plus any alternatives with their expected verdicts.' This makes the tool's role clear without needing to inspect the schema or siblings.

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 situates the tool within the draft-building workflow by stating it reads solutions attached to a draft. It does not explicitly name alternatives or exclude other operations, so it stops short of full when-to-use-versus-not guidance.

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

repovive_build_house_roundBuild a house-style roundA
Idempotent

Build a full Repovive-format round from house-style generators, one per slot A-G, applying the 500-3500 points ladder and the easy/easy/medium/medium/medium/hard/hard difficulty curve. Every problem is schema-checked, house-style-checked and judged against its own tests; require verification.all_passed before publishing anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoBase seed; slot i uses seed+i
titleYesRound title, e.g. 'Repovive Starter Round 8'
problem_kindsYesOrdered generator kinds, one per slot A..G
num_hidden_per_problemNoHidden tests per problem

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate idempotent and non-destructive behavior. The description adds meaningful context: it enforces schema, house-style checks, judges against tests, and requires verification.all_passed before publishing. This goes beyond annotations and clarifies the safety gate for publishing.

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?

Two concise sentences that front-load the primary purpose and include essential constraints (slots, points, difficulty, verification). No unnecessary detail.

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?

The description covers the core behavior: building a full round, generator mapping, scoring, difficulty, and the verification requirement before publishing. With an output schema present, the description is sufficiently complete for an agent to invoke correctly.

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 coverage is 100%, so parameters are fully documented. The description adds context about slots A-G and difficulty curve, but does not elaborate on the parameters themselves beyond what the schema already provides, so a baseline 3 is appropriate.

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 a specific verb (build) and resource (a full Repovive-format round), and specifies house-style generators per slot A-G, making it distinct from sibling tools like generate_house_problem or build_contest.

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 does not explicitly state when to use this tool over alternatives, nor does it mention excluded cases. Its purpose is clear but selection guidance is left implicit, meriting a 3.

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

repovive_build_list_admin_contestsList attachable contestsA
Read-only

List the contests the authenticated account may attach a finished draft to, with their ids. Feed one of these ids to repovive_build_add_to_contest.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

The annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds the useful context that the list is scoped to attachment eligibility for the authenticated account, but it does not disclose additional behavioral details such as ordering, pagination, or whether the list is a snapshot.

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 two concise sentences with no filler. The first sentence front-loads purpose and scope, and the second provides an actionable next step.

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

Completeness5/5

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

For a parameterless read-only list, the description covers what the tool returns and how to use the result. Combined with the readOnly/openWorld annotations and the output schema, an agent has enough information 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 no parameter documentation burden. The description adds value by telling the agent that the result contains contest ids and how those ids should be used.

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 and resource: it lists contests the authenticated account may attach a finished draft to. It also explicitly names the downstream tool, repovive_build_add_to_contest, which distinguishes it from generic contest-listing tools like repovive_list_contests.

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 states when to use this tool: to discover contests that a finished draft can be attached to. It gives an actionable follow-up instruction to feed one of the returned ids to repovive_build_add_to_contest, though it does not explicitly list exclusions or alternative tools.

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

repovive_build_list_sessionsList build sessionsA
Read-only

List the problem-draft build sessions owned by the authenticated account, with their session ids and current state. Every other build tool needs one of these ids.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnlyHint and openWorldHint. The description adds value beyond those by defining the session scope ('owned by the authenticated account') and the returned fields ('session ids and current state'), which helps the agent anticipate what it will receive.

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?

Two concise sentences deliver the core action, scope, returned information, and the important prerequisite relationship to other build tools. No filler or redundant restatement of the title.

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

Completeness5/5

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

This is a parameterless read-only list operation with an output schema available, so the description only needs to state scope and purpose—which it does completely. The note that other build tools depend on these ids is useful additional context.

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 input schema has zero parameters, so there is no parameter burden for the description to carry. The mention of 'session ids' clarifies meaningful output concepts but no parameter detail is needed here.

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 ('List') and resource ('problem-draft build sessions owned by the authenticated account'), and specifies the returned content ('session ids and current state'). It clearly distinguishes this list operation from the many create/update/delete build-session siblings.

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 phrase 'Every other build tool needs one of these ids' gives clear contextual guidance to call this before other build tools. It does not explicitly name a specific alternative or state when not to use it, but the prerequisite framing is strong.

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

repovive_build_list_testcasesList draft test casesA
Read-only

List the test cases currently stored in a draft, with the per-case ids needed by repovive_build_delete_testcase.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

readOnlyHint and openWorldHint annotations already establish this as a safe read operation; the description adds that the list reflects the current draft contents and includes the ids used by the deletion tool. No behavior such as pagination or errors is described, but for this simple read-only list the annotation coverage is sufficient.

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 that front-loads the action and resource, then adds the only extra detail an agent needs (id linkage to deletion). No filler or repetition.

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

Completeness5/5

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

With one required parameter, an output schema present, and read-only annotations, the description supplies enough context to invoke correctly. It ties the result to a related deletion command, and no important behavioral or return-value detail is missing.

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 coverage is 100% with a clear description for session_id, so the description does not need to add parameter detail. It adds no semantics beyond the schema, which meets the baseline.

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 the exact operation ('List') and resource ('test cases currently stored in a draft'), and explicitly mentions the per-case ids needed by repovive_build_delete_testcase, which distinguishes it from sibling tools like add/clear/delete testcases.

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?

It gives clear context that this is for inspecting a draft's test cases and connects the output to repovive_build_delete_testcase by providing the needed ids. It does not explicitly state when not to use it or name alternatives, so it stops short of a full 5.

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

repovive_build_prepare_judge_targetPrepare judge targetA

Kick off Repovive's build pipeline for a draft: run the generators, validate the inputs, and run the solutions against the produced tests. Poll repovive_build_run_status for the outcome.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds meaningful behavioral detail by explaining that the tool triggers generators, validation, and test runs asynchronously, and that the caller must poll for results. No contradiction with annotations.

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 two concise sentences: the first states the core action and pipeline steps, the second gives the required follow-up. Every sentence carries useful information with no filler.

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 single-parameter async pipeline starter with a full output schema and annotations, the description covers the main workflow and the necessary polling step. It could mention prerequisites or failure behavior, but nothing essential to invoking the tool correctly is missing.

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 100%, and the only parameter, session_id, is already described as 'Build session id'. The description refers to a draft session but does not add new parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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 a specific action ('Kick off Repovive's build pipeline for a draft') and enumerates what the pipeline does: run generators, validate inputs, and run solutions against tests. This distinguishes it from related build tools like repovive_build_run_status, which is explicitly named only as a follow-up.

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 gives clear context for use ('for a draft') and explicitly instructs the agent to poll repovive_build_run_status for the outcome. It does not enumerate exclusion cases or alternative tools, but the usage context is clear enough for selection.

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

repovive_build_push_problemPush a full problem into a draftA
Idempotent

Write a problem object into an existing draft: metadata, statement and (optionally) test cases. Test cases are APPENDED to whatever the draft already holds. For a complete import that also clears old cases and uploads the reference solution, editorial and validator, use repovive_build_author_complete_problem.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id to write into
problem_jsonYesA problem object (as produced by repovive_generate_problem or matching repovive_new_problem_template) to write into the draft.
include_testcasesNoAlso upload the problem's test cases

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior1/5

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

The description says test cases are appended to whatever the draft already holds, implying repeated identical calls would keep adding test cases and thus change state. This contradicts the idempotentHint=true annotation, which states the operation is idempotent. No other behavioral context is added beyond that, and the contradiction is severe.

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 only two sentences long, front-loads the core purpose, and uses the second sentence to point to the alternative. Every sentence earns its place, with no redundant filler.

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?

The description gives the main behavior and a clear pointer to the alternative, and the output schema exists to clarify returns. However, the idempotency contradiction is unresolved, and the description does not clarify whether metadata and statement are overwritten or merged when writing into an existing draft, leaving an important usage gap.

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 100%, so the schema already documents all parameters. The description adds only minimal context by noting problem_json contains metadata, statement, and optionally test cases, which mostly overlaps with the schema description and does not significantly deepen parameter understanding.

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 'Write a problem object into an existing draft' and enumerates the components: metadata, statement, and optionally test cases. It also differentiates itself from the sibling tool repovive_build_author_complete_problem by naming what that tool does instead.

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

Usage Guidelines5/5

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

The description explicitly explains when to use this tool versus the alternative: it appends test cases, and for a complete import that clears old cases and uploads reference solution, editorial, and validator, the agent should use repovive_build_author_complete_problem. This gives clear when/when-not guidance.

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

repovive_build_run_statusGet build run statusA
Read-only

Check the status of a draft's build run started by repovive_build_prepare_judge_target: progress, per-stage results and any errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With readOnlyHint=true and openWorldHint=true, the annotations already signal a safe read operation. The description adds behavioral context by indicating the response includes progress, per-stage results, and errors, which goes beyond the annotation alone. It does not deeply discuss lifecycle or polling details, but that is not a major gap for a simple status check.

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, well-structured sentence that front-loads the main action and includes only relevant details. There is no redundancy or filler.

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

Completeness5/5

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

The tool has one required parameter, an output schema is present, and annotations cover the read-only nature. The description explains what the tool does and references the preceding operation, making it complete for an agent to invoke correctly.

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?

The schema fully documents the single `session_id` parameter with a description ('Build session id'), so schema coverage is 100%. The tool description adds no additional semantic detail about the parameter, but none is needed given the schema already covers it.

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 ('Check the status of a draft's build run') and identifies the specific resource ('started by repovive_build_prepare_judge_target'). It also lists the kind of information returned (progress, per-stage results, errors), which distinguishes it from sibling tools like repovive_build_cancel_run.

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 provides clear usage context by stating the tool is for checking a build run started by repovive_build_prepare_judge_target. It does not explicitly enumerate alternatives or when-not-to-use scenarios, but the context is specific enough for an agent to infer the intended workflow.

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

repovive_build_set_custom_checkerSet custom checkerA
Idempotent

Attach a custom checker to a draft, replacing exact output matching. Use it when a problem accepts multiple correct answers or needs tolerance-based comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id
checker_sourceYesCustom checker source code

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate this is a mutating, non-destructive, idempotent operation. The description adds meaningful behavioral context beyond annotations by explaining that the checker 'replacing exact output matching', which tells the agent what side effect to expect. No contradiction with annotations exists.

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?

Two sentences deliver the action, the behavioral change, and the usage condition with no filler. The key behavior ('replacing exact output matching') is front-loaded before the use-case guidance, making it easy for an agent to parse quickly.

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 two-parameter mutation tool with high schema coverage, annotations, and an output schema, the description is nearly complete: it states what the tool does and when to use it. It does not mention prerequisites such as an existing session or how the checker source should be formatted, but these are minor gaps given the output schema and parameter descriptions.

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 100%, so the parameters session_id and checker_source are already documented in the schema. The description names the checker but does not add extra semantic detail like language, format, or constraints beyond what the schema provides, so baseline 3 is appropriate.

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 ('Attach') and resource ('custom checker to a draft'), and it clearly distinguishes the tool's role by stating it replaces exact output matching, which sets it apart from sibling build tools like set_validator or set_solutions. The purpose is immediately understandable without needing 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 gives explicit when-to-use guidance: 'Use it when a problem accepts multiple correct answers or needs tolerance-based comparison.' It does not discuss when not to use it or name alternatives, but the usage condition is clear and actionable.

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

repovive_build_set_gen_dataSet gen-data scriptA
Idempotent

Set a draft's gen-data script — one generator invocation per line, each producing one hidden test file. Define the generators first with repovive_build_set_generator.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id
gen_data_contentYesgen-data file contents (one generator invocation per line)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds the dependency that generators must be defined before this script, but does not describe overwrite behavior or other side effects beyond what annotations imply.

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?

Two sentences with no filler. The first sentence states the action and format; the second names the prerequisite tool. Information is front-loaded and each sentence earns its place.

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

Completeness5/5

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

For a simple two-parameter tool with rich annotations and an output schema, the description is complete: it states what the tool does, the exact content format, and the required prerequisite. Nothing essential is missing.

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?

Schema coverage is 100%, but the description adds meaningful semantics: gen_data_content must contain one generator invocation per line and each line produces a hidden test file. It also clarifies that session_id refers to a draft, linking it to the build session context.

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, 'Set,' and identifies the resource as 'a draft's gen-data script.' It clearly distinguishes this from sibling tools like repovive_build_set_generator by defining the script format: one generator invocation per line, each producing one hidden test file.

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 provides explicit ordering guidance: define generators first using repovive_build_set_generator. This helps the agent understand the prerequisite and differentiates this tool from the generator-setting sibling, though it does not explicitly state when not to use the tool.

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

repovive_build_set_generatorSet test generator sourceA
Idempotent

Store a named test generator program in a draft. Generators are invoked from the gen-data script (repovive_build_set_gen_data) to produce the hidden tests.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id
generator_nameYesGenerator identifier (letters, digits, underscores, hyphens)
generator_sourceYesGenerator program source code

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, covering the write and non-destructive nature. The description adds that the generator is stored 'in a draft' and its role in the workflow, which provides some context but does not significantly expand beyond annotations.

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?

Two sentences with no fluff. The first sentence states the core action, and the second connects it to the broader workflow. Information is front-loaded and each sentence earns its place.

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

Completeness5/5

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

With simple parameters, comprehensive schema, annotations covering safety/idempotency, and an output schema present, the description fully equips the agent. It explains the tool's role in the test-generation pipeline, making it complete for correct invocation.

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?

The input schema has 100% coverage with clear descriptions for all three parameters, so the description need not add parameter details. It does imply the generator_name is a unique identifier via 'named', but this adds marginal value on top of the schema.

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 verb 'store' with a specific resource ('a named test generator program in a draft'). It is differentiated from related siblings like repovive_build_delete_generator and repovive_build_set_gen_data by explaining that generators are stored for later invocation by the gen-data script.

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?

It explains the purpose of the stored generator (invoked from repovive_build_set_gen_data), giving clear context for when this tool is relevant. It does not explicitly state when not to use it or name alternatives beyond the implicit connection to the delete generator tool, but the context is sufficient.

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

repovive_build_set_learn_pagesSet learn pagesA
Idempotent

Set a draft's editorial pages — the post-contest explanation shown with the problem. Pass a JSON list of {"title", "content"}; pass "[]" to clear them.

ParametersJSON Schema
NameRequiredDescriptionDefault
pages_jsonYesJSON list of pages: [{"title": str, "content": str}]. Use "[]" or "null" to clear.
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond annotations, the description reveals that the tool sets the draft's editorial pages, expects a JSON list of title/content objects, and that '[]' clears the pages. It doesn't mention that 'null' also clears, but the schema covers that, and annotations already convey idempotency and non-destructiveness.

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?

Two sentences with no filler. The core action is front-loaded, and the input format and clearing behavior are stated immediately and efficiently.

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

Completeness5/5

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

For a simple two-parameter setter with an output schema and matching annotations, the description provides everything an agent needs: what the tool does, what input to pass, and how to clear pages. Omitted details like the null clearing option and response shape are already in the schema/output schema.

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 100%, and the description mostly restates what the schema already says about pages_json ('JSON list of {"title", "content"}' and '[]' to clear). The description adds little beyond the schema, so the baseline 3 applies.

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 ('Set'), a clear object ('a draft's editorial pages'), and explains what those pages are ('post-contest explanation shown with the problem'). This distinguishes it from the many build_* sibling tools that update statements, generators, or testcases.

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 gives clear operational context—it targets a draft's editorial/learn pages and shows the expected input and clearing behavior. It doesn't explicitly name alternatives or exclusions, but the operation is unique enough among siblings that no alternative is needed.

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

repovive_build_set_solutionsSet draft solutionsA
Idempotent

Attach a solution to a draft with its expected verdict (AC, WA, TLE, …) and, by default, make it the draft's main test solution. Set replace=False to keep the existing alternatives and append — useful for adding deliberately wrong or slow solutions that the test data must reject.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for this solution filemodel
sourceYesSolution source code
replaceNoReplace existing solutions (False appends to them)
languageNoLanguage name; one of: c, c++, cpp, java, py, pypy, pythonpython
session_idYesBuild session id
expected_verdictNoExpected verdict, e.g. 'AC'AC
also_set_test_solutionNoAlso set it as the draft's main test solution

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior1/5

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

There is an annotation contradiction: destructiveHint is false, yet the description says replace=False keeps existing alternatives, implying that the default replace=True replaces or overwrites existing solutions. This is destructive behavior and conflicts with the annotation, which could mislead an agent into thinking the tool is safe to run without preserving existing data.

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?

Two dense sentences, no filler. The primary behavior is front-loaded, and the replace=False guidance is integrated naturally without bloating the description.

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?

The tool has rich schema coverage, an output schema, and a description that explains the core behavior and parameter intent. The main missing piece is an explicit statement that the default behavior replaces existing solutions, rather than relying on inference from 'Set replace=False to keep the existing alternatives'.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the intended meaning of expected_verdict with examples (AC, WA, TLE) and by framing replace=False as a way to append deliberately wrong or slow solutions. It does not repeat the schema verbatim.

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 a specific action: attaching a solution to a draft with an expected verdict and optionally making it the main test solution. It distinguishes itself from read-style siblings like repovive_build_get_solutions by focusing on the setting/attaching behavior.

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 provides a concrete use case: setting replace=False when adding deliberately wrong or slow solutions that test data must reject. It does not explicitly name alternatives or state when not to use the tool, so it falls short of a 5, but the guidance is clear and actionable.

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

repovive_build_set_validatorSet input validatorA
Idempotent

Attach an input validator to a draft. The validator reads each generated test and asserts it satisfies the stated constraints, catching malformed test data before the problem goes live.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesBuild session id
validator_sourceYesValidator program source

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

It explains what the attached validator does (reads generated tests, asserts constraints, blocks malformed data from going live) and that this is a pre-publication, non-destructive build step. The annotations already convey idempotency and non-destructiveness, and the description adds workflow context without contradicting them.

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?

Two short sentences with no filler: the first names the action and target, the second explains the validator's purpose and timing. Every sentence earns its place and the key action is front-loaded.

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 simple two-parameter, non-destructive, idempotent setter with a full schema and output schema, the description covers the essential use case. It could be slightly more explicit that 'draft' corresponds to the session_id parameter, but sibling tool names and the schema make that connection recoverable.

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?

Schema coverage is 100%, so the baseline is 3. The description adds functional meaning to validator_source by stating that it reads generated tests and asserts constraints, and it clarifies that session_id refers to the draft/build context. This is more than the schema labels provide.

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 ('Attach') and a distinct resource ('input validator to a draft'), making the action unambiguous. This clearly separates it from sibling set_* tools like set_generator or set_custom_checker, whose resources are different artifacts.

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 gives clear context: the validator is attached during draft preparation and is meant to catch malformed test data before publication. It does not explicitly state when not to use this tool or name alternatives, so it stops short of full routing guidance.

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

repovive_build_update_problem_infoUpdate problem infoA
Idempotent

Update a draft's metadata: slug, difficulty, time limit, memory limit and interactive flag. Only the arguments you pass are changed; the rest keep their current values.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoURL-safe slug
difficultyNo'easy' | 'medium' | 'hard'
session_idYesBuild session id
time_limitNoTime limit in seconds
memory_limitNoMemory limit in MB
is_interactiveNoWhether the problem is interactive

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already mark mutation, idempotency, and non-destructive behavior, so the description adds the crucial partial-update trait: only the arguments passed are changed, and the rest keep their current values. This is a meaningful behavioral detail beyond what the annotations provide.

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?

Two sentences front-load the operation and scope, then state the partial-update behavior. There is no filler, redundancy, or restatement of field types already in the schema.

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?

The tool is simple, has full parameter documentation, and has an output schema, so the description does not need to explain return values. It could have stated null-clearing behavior or draft/session prerequisites, but for a metadata PATCH the essential calling logic is complete.

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 100%, so the schema already documents slug, difficulty, time_limit, memory_limit, and is_interactive individually. The description groups them as metadata and clarifies partial application, but it does not add per-parameter meaning beyond the schema.

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?

Explicit verb 'Update', specific resource 'draft's metadata', enumerates the five fields, and indicates it operates on a build session. This clearly distinguishes it from siblings like repovive_build_update_statement and repovive_build_update_sources by identifying metadata as the target.

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 makes the intended use clear—updating metadata on a build draft—and the partial-update semantics indicate this is the tool for targeted field edits. It does not explicitly name alternatives or exclusion conditions, but within the build_* sibling cluster the scope is evident.

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

repovive_build_update_sourcesUpdate build sources (raw)A
Idempotent

Send a raw update-sources body to a draft, for fields the typed tools do not cover. Prefer repovive_build_update_statement, _set_generator, _set_gen_data, _set_validator or _set_custom_checker unless you need something they omit.

ParametersJSON Schema
NameRequiredDescriptionDefault
body_jsonYesRaw JSON body for update-sources. Supported keys include: {"statementDraft":{...}}, {"generatorName":"gen","generatorSource":"..."}, {"genDataContent":"..."}, {"checker":{"type":"custom","sourceCode":"..."}}, {"validatorSource":"..."}, {"deleteGeneratorName":"gen"}
session_idYesBuild session id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already establish readOnly=false, idempotent=true, destructive=false; the description adds context about it being a raw fallback. However, it does not surface that the raw body can include deleteGeneratorName, which is a destructive operation despite destructiveHint=false, so the safety picture remains 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?

Two sentences with no filler; the action and the key routing guidance are front-loaded. Every word contributes to selection and safe invocation.

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

Completeness5/5

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

With an output schema, a fully-described body_json parameter, and explicit alternatives, the agent has enough to decide when to use this tool and how to call it. The sibling context is large, but the description narrows the decision effectively.

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 100%, so the heavy lifting is done by the body_json and session_id descriptions. The tool description adds no parameter-level detail but does not need to; baseline 3 applies.

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 ('Send') and resource ('raw update-sources body to a draft') and immediately frames it as the fallback for fields typed tools do not cover. This clearly separates it from the many sibling build tools.

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

Usage Guidelines5/5

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

It explicitly says to prefer repovive_build_update_statement, _set_generator, _set_gen_data, _set_validator or _set_custom_checker unless something they omit is needed. This gives the agent a concrete routing rule with named alternatives.

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

repovive_build_update_statementUpdate problem statementA
Idempotent

Write the statement of a draft: title, description body, input/output formats, constraints, interaction protocol and tags (markdown with LaTeX). Only the arguments you pass are changed. Avoid an inline math span followed directly by a period — Repovive rejects $10^5$.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTopic tags
titleNoStatement title
session_idYesBuild session id
constraintsNoConstraints section
descriptionNoThe problem statement body (markdown/LaTeX)
input_formatNoInput format section
output_formatNoOutput format section
interaction_formatNoInteraction protocol (interactive problems)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already convey readOnlyHint=false, destructiveHint=false, idempotentHint=true, so the description doesn't need to repeat those. It adds valuable behavioral detail: the partial-update semantics ('Only the arguments you pass are changed') and the validation quirk about inline math followed by a period. This goes beyond what annotations and schema provide.

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 two sentences with no filler. It front-loads the tool's purpose and the key behavior (partial updates), then adds a specific formatting rule. Every clause earns its place.

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 an output schema exists (the return value is presumably documented there), the description does not need to explain output. It covers the core function, the partial-update behavior, and a critical formatting restriction. It doesn't mention that a session must already exist, but that is implied by the required session_id parameter and the 'draft' phrasing. The tool is sufficiently complete for correct invocation.

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 100%, with each parameter (tags, title, constraints, description, etc.) having a short description. The tool description adds only a generic 'markdown with LaTeX' note, which partially overlaps with the schema's description field. There is no elaboration on syntax or constraints beyond what the schema already documents, so it meets the baseline but does not add significant extra semantic value.

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 tool writes the statement of a draft, naming all the components (title, description, input/output formats, constraints, interaction protocol, tags) and the format (markdown/LaTeX). This distinguishes it from sibling tools that update other aspects of a problem (like sources or testcases), even though it doesn't explicitly name an alternative.

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 gives partial usage guidance: 'Only the arguments you pass are changed' implies partial updates, and the warning about LaTeX formatting is a practical constraint. However, it does not explicitly say when to use this tool versus other update tools (e.g., repovive_build_update_problem_info) or mention any exclusions or prerequisites beyond requiring a session_id.

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

repovive_build_versionGet build versionA
Read-only

Return the deployed Repovive web-app build version. This is an unauthenticated health/diagnostic call — use it to check that the platform is reachable.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already declare readOnlyHint and openWorldHint, and the description adds the key behavioral fact that the call is unauthenticated and purely a health/diagnostic check. This is appropriate context beyond what annotations provide, with no contradiction.

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?

Two sentences with no filler. The core action is front-loaded, and the second sentence adds the one meaningful usage detail an agent needs: this is for reachability checks.

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

Completeness5/5

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

For a zero-parameter diagnostic getter with an output schema, the description fully covers purpose, usage context, authentication expectations, and behavioral characteristics. Nothing necessary for correct invocation is missing.

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 and the schema coverage is effectively complete. The description does not need to explain parameters; the baseline of 4 applies since there is nothing missing for an agent to call it correctly.

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 ('Return') and names the exact resource ('deployed Repovive web-app build version'). It also characterizes the call as an unauthenticated health/diagnostic operation, clearly distinguishing it from sibling tools like repovive_build_run_status.

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?

It explicitly tells the agent when to use it: to check that the platform is reachable. It provides clear context but does not discuss when not to use it or name alternatives, though no real alternative exists among siblings for this health check.

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

repovive_check_house_styleCheck Repovive house styleA
Read-only

Check a problem against Repovive's measured house style and list every deviation: input/output braced-array notation, the t bound in the constraints bullet list, tags from the fixed 12-word vocabulary, 256 MB memory, 1-2 s time limit, a points value on the ladder, and exactly one explained sample.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_jsonYesA problem object as a JSON string

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description fully aligns with the readOnlyHint=true annotation – it is a check operation that lists deviations, implying no side effects. It adds behavioral detail beyond annotations by specifying the exact checks performed (memory, time limits, tags, sample explanation) and the output as a list of deviations. No contradiction exists, and the description enriches the agent's understanding of the read-only nature.

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, well-structured sentence. It front-loads the primary action ('Check a problem against Repovive's measured house style') and then efficiently lists the specific criteria in a compact, comma-separated enumeration. There is no redundant wording or filler, making it both concise and clear.

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?

The tool is simple with one parameter, a clear output schema (exists), and a description that fully enumerates the checks performed. The description covers all relevant behavioral aspects for an agent to call the tool correctly. It does not explicitly discuss error handling or input validation beyond the schema's minLength, but given the simplicity and output schema coverage, these are minor gaps. Overall, the description is complete enough for effective use.

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?

The schema description coverage is 100%, as the single parameter 'problem_json' is described as 'A problem object as a JSON string' with a minLength of 2. The tool description adds no additional meaning to this parameter beyond stating it is a problem; it does not explain expected structure, formatting nuances, or how the JSON string maps to the checks. Since schema already covers the parameter, the description does not contribute extra value, so baseline 3 is appropriate.

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 verb 'Check' and resource 'problem against Repovive's measured house style' and enumerates the specific deviations it checks (input/output braced-array notation, t bound, tags, memory, time limit, points value, sample). This makes the tool's purpose unambiguous and distinguishes it from sibling validators like repovive_validate_problem, which would cover general problem validation.

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 provides clear context for when to use this tool: when checking whether a problem conforms to the house style. It lists the exact aspects checked, which helps an agent decide relevance. However, it does not explicitly name alternatives or state when to use a different validator (e.g., repovive_validate_problem), so it lacks explicit exclusions or alternative guidance.

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

repovive_check_interview_capacityCheck interview capacityA
Read-only

Report whether Repovive currently has mock-interview capacity available for booking.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

The readOnlyHint and openWorldHint annotations already establish that this is a read-only, externally changing check. The description adds 'currently' and 'available for booking,' reinforcing the volatile, pre-booking nature of the answer, but it provides no further behavioral detail such as effect on capacity or confirmation semantics. No contradiction with annotations.

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 that front-loads the verb and resource, with no filler or repetition of the tool name. Every word contributes to the meaning.

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

Completeness5/5

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

For a zero-parameter read-only check with an output schema and safety annotations already present, the description needs only to state what is being checked and why. 'Report whether Repovive currently has mock-interview capacity available for booking' does that completely.

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 input schema has zero properties, so there are no parameter semantics for the description to explain. Baseline for zero-parameter tools is 4; no additional parameter guidance is needed.

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?

Description uses a specific verb ('Report') and resource ('mock-interview capacity') and clarifies the exact question being answered ('whether ... available for booking'). This distinguishes it from interview-related siblings such as repovive_get_interview_prices and repovive_list_interview_sessions, which address price and session listing rather than availability.

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 phrase 'currently has ... available for booking' gives a clear context: this check is the precondition for attempting a booking. It does not, however, name alternative tools or give when-not-to-use guidance, so it falls short of an explicit routing statement.

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

repovive_check_invite_eligibilityCheck invite eligibilityA
Read-only

Report whether the authenticated account may issue contest invitations, and any remaining invite quota.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds meaningful behavioral context by specifying that it returns both eligibility and remaining quota, scoped to the authenticated account. This goes beyond simply restating the tool name or title, though it still leaves exact output field details to the output schema.

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, information-dense sentence that immediately states the purpose and scope. No filler or redundant wording is present.

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

Completeness5/5

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

For a zero-parameter, read-only eligibility check with an output schema present, the description fully covers what an agent needs to know to invoke it correctly. It identifies the subject (authenticated account) and the two key outputs (eligibility and remaining quota).

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 document. Baseline 4 is appropriate; no parameter ambiguity exists.

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 precise verb ('Report whether') and clearly specifies the resource: the authenticated account's ability to issue contest invitations and remaining quota. This distinguishes it from sibling tools like get_contest_invite_link, which generates a link, and check_interview_capacity, which concerns interviews.

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 this is a pre-flight check before inviting users to contests, but it does not explicitly state when to use it versus alternatives or when not to use it. There is no mention of exclusion conditions or related tools.

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

repovive_create_vive_checkoutCreate Vive checkoutA

Start a paid checkout to buy Vive points for the authenticated account and return the payment URL. This begins a real purchase flow — always confirm the amount with the user before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
vive_amountYesAmount of Vive to purchase

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false and idempotentHint=false. The description adds important behavioral context: this is a real paid transaction that returns a payment URL and should only be invoked after user confirmation, which is beyond what the annotations alone convey.

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?

Two compact sentences deliver the core purpose, the critical side-effect warning, and a mandatory user-confirmation instruction. Every word earns its place, and the main behavioral caution is front-loaded.

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

Completeness5/5

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

With one simple parameter, an output schema, and annotations covering safety traits, the description is sufficient. It names the authenticated account context, the payment nature, the return value, and the required user confirmation—nothing essential is missing.

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 coverage is 100% and the sole parameter, vive_amount, is adequately described as 'Amount of Vive to purchase.' The description adds useful context about the purchase flow but does not add new meaning to the parameter itself, 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/5

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

The description uses a specific verb-resource pair ('Start a paid checkout to buy Vive points') and states the key output ('return the payment URL'). It is clearly distinct from sibling tools, none of which handle Vive checkout.

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 gives strong situational guidance by warning that this 'begins a real purchase flow' and instructing the agent to 'always confirm the amount with the user before calling.' It does not explicitly name alternatives, but the context makes the appropriate usage clear.

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

repovive_delete_contestDelete a contest (admin)A
Destructive

Permanently delete a contest and everything attached to it. This cannot be undone — confirm with the user before calling. Requires contest administration rights.

ParametersJSON Schema
NameRequiredDescriptionDefault
contest_idYesContest ObjectId (24 hex)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds important behavioral detail: deletion is permanent, cascades to 'everything attached to it,' and requires admin rights. This goes beyond the structured hints and appropriately warns an agent about the consequence.

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 two sentences, front-loads the destructive scope, and includes the critical user-confirmation warning without unnecessary detail. Every sentence adds value.

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

Completeness5/5

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

For a simple admin-delete operation with one well-documented parameter and an output schema, the description fully covers the necessary context: what it does, what is required, and what the agent must do before invoking it.

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 coverage is 100% and the only parameter, contest_id, is already documented in the input schema. The description adds no further parameter-specific semantics, but none are needed given the single, clearly-described identifier.

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 names a specific verb and resource: 'Permanently delete a contest and everything attached to it.' It unambiguously distinguishes itself from update_contest, get_contest, and other contest-related tools.

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 gives clear usage context: the caller must have contest administration rights and must confirm with the user before calling. It does not explicitly name alternatives or exclusion conditions, but for an irreversible admin delete, the prerequisites and warning are the most relevant guidance.

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

repovive_delete_conversationDelete a conversationA
DestructiveIdempotent

Delete a direct-message conversation and its history for the authenticated account. This cannot be undone — confirm with the user before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesConversation id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark the operation destructive, but the description adds important behavioral context: 'This cannot be undone' and that the conversation history is deleted. The confirmation requirement is extra safety guidance beyond what annotations provide.

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?

Two sentences with no filler. The first sentence states the action, scope, and target; the second delivers the critical irreversibility warning. Both sentences earn their place and are front-loaded.

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

Completeness5/5

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

For a single-parameter deletion tool with an output schema and destructive annotations, the description covers the essential facts: what is deleted, for whom, and the irreversible nature. No additional behavioral details are needed to call it correctly.

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?

There is only one parameter, conversation_id, and the schema describes it with 100% coverage. The description's phrase 'direct-message conversation' adds minor context but does not materially enhance the schema's 'Conversation id' description, so it stays at the baseline for high schema coverage.

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?

States a specific verb and resource: 'Delete a direct-message conversation and its history for the authenticated account.' The phrase 'direct-message conversation and its history' distinguishes it from the sibling delete_direct_message and other delete tools, so an agent can identify the correct target.

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 the tool should be called when the user wants to remove an entire DM conversation, and it adds a clear precondition: 'confirm with the user before calling.' However, it does not explicitly contrast this with alternatives like delete_direct_message or mention cases where this tool should not be used.

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

repovive_delete_direct_messageDelete a messageA
DestructiveIdempotent

Delete a single direct message the authenticated account sent. This cannot be undone — confirm with the user before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesMessage id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already state destructiveHint=true and readOnlyHint=false. The description goes beyond this by emphasizing irreversibility ('This cannot be undone') and requiring user confirmation, which is meaningful added context. It also narrows the operation to messages the authenticated account sent.

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?

Two short sentences convey the action, the restriction, the irreversibility, and the required user confirmation without any wasted words. The most important caveat is front-loaded.

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

Completeness5/5

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

For a simple one-parameter tool with a full input schema, an output schema, and annotations covering destructiveness, the description provides all needed operational context: what is deleted, who can delete it, and what to do before invoking.

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?

The schema already covers the single parameter with 100% description coverage, so the description need not add much. It does reinforce that the message must be a directly sent message, but it adds no additional details about message_id beyond the schema.

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 ('Delete') and a precise resource ('a single direct message the authenticated account sent'), clearly distinguishing it from deleting an entire conversation or sending a message. The scope 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/5

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

The description clearly indicates this is for single direct messages and only for messages sent by the authenticated account, which is essential context. It also instructs the agent to confirm with the user before calling, but it does not explicitly name sibling alternatives like repovive_delete_conversation.

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

repovive_diff_revisionsDiff two revisionsA
Read-only

Compare two saved revisions of the same entity and list what changed field by field — added, removed and modified. Use it to see what a change actually did before deciding whether to roll it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_revision_idYesThe newer revision id
response_formatNo'markdown' or 'json'markdown
from_revision_idYesThe older revision id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and the description complements this by explaining the diff output categories and the 'same entity' constraint. It does not describe error cases or edge behavior, but for a read-only diff with an output schema, the added behavioral context is sufficient.

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?

Two sentences with no wasted words. The first sentence states the core action and output; the second provides the practical use case. It is appropriately sized and front-loaded.

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

Completeness5/5

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

For a read-only diff tool with three fully documented parameters and an output schema, this definition is complete. It covers what the tool does, what output to expect, the same-entity constraint, and the recommended use case, with annotations covering the safety profile.

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 100%, with from_revision_id and to_revision_id clearly labeled as older and newer, and response_format documented with its enum. The description adds no parameter-level detail beyond the schema, but it does not need to because the schema fully covers the parameters.

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 and resource: 'Compare two saved revisions of the same entity' and specifies the output as 'added, removed and modified' field-level changes. This clearly distinguishes it from related sibling tools like get_revision or restore_revision, especially with the rollback framing.

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 gives explicit usage context: 'Use it to see what a change actually did before deciding whether to roll it back.' It does not name alternative tools or list when-not-to-use conditions, so it falls short of a 5, but the intended scenario is clear.

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

repovive_generate_house_problemGenerate a house-style problemA
Idempotent

Generate one problem in Repovive's published house style: multi-test input led by t, braced-array input/output sections, a bulleted constraints list bounding t, and a single sample packing several sub-cases with per-case explanations. Deterministic in the seed; runs the reference solution on this host to produce expected outputs.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesGenerator kind (see repovive_list_house_templates)
seedNoDeterministic seed
num_hiddenNoHidden test files to generate
cases_per_testNoSub-cases packed into each hidden test

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate idempotence and non-destructiveness; the description adds genuinely useful behavioral facts beyond that: generation is deterministic in the seed and the reference solution is executed on this host to compute expected outputs. It does not describe persistence of generated files, but no annotation is contradicted.

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?

Two dense sentences, front-loaded with the action and style requirements, followed by execution behavior. Every clause carries information and there is no filler.

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 output schema, full parameter schema descriptions, and annotations, the description covers what is needed to invoke the tool and understand its output: style, determinism, and reference-solution execution. It could note whether generated hidden files persist, but that is minor given the structured fields.

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 descriptions cover all four parameters at 100%, so the baseline is 3. The description adds a little semantic value by tying determinism to the seed, but it supplies no parameter-level syntax or constraints beyond the schema.

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 ('Generate') and a specific resource ('one problem in Repovive's published house style'), and it lists concrete format details that separate it from generic generation siblings like repovive_generate_problem. It is not a tautology and communicates exactly what the tool produces.

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 establishes a clear context: use when a problem must follow the published house style, with t-led multi-tests, braced arrays, and sample packing. It does not explicitly name alternatives or exclusion conditions, but the context is unambiguous enough for an agent to select it.

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

repovive_generate_problemGenerate a problemA
Idempotent

Generate a complete, self-consistent problem from a built-in generator: statement, constraints, samples with explanations, deterministic hidden tests, an input validator, an editorial and a reference solution. Test outputs are produced by running the reference solution on this host. Same seed gives the same problem.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesGenerator kind (see repovive_list_problem_templates)
seedNoDeterministic seed for hidden tests
num_hiddenNoNumber of hidden tests to generate

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The description goes beyond the idempotentHint annotation by clarifying that the same seed produces the same problem, and it discloses that test outputs are produced by running the reference solution on this host. This is meaningful behavioral context that annotations alone do not provide, though it does not explicitly describe persistence side effects.

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?

Two sentences carry a dense, front-loaded list of deliverables plus important behavioral notes. There is no filler, repetition of the schema, or explanatory padding; every sentence earns its place.

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 output schema exists and the sibling context is complex, the description provides the essential facts an agent needs: what is generated, determinism, and that execution happens locally. It falls just short of fully complete because it does not say whether the result is persisted or how it connects to validation/judging workflows.

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?

Schema coverage is 100%, so the baseline is 3, and the description adds value by explaining seed determinism and deterministic hidden tests. It explicitly connects the seed parameter to reproducibility, which helps the agent understand consequences of changing seed or num_hidden.

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 concrete verb and resource: generate a complete problem from a built-in generator, then enumerates exactly what is produced (statement, constraints, samples, tests, validator, editorial, solution). This is specific enough to distinguish it from sibling tools like repovive_generate_house_problem or the build_* problem-editing tools.

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 implies when this tool is useful—when a full problem is needed from a generator—but it gives no explicit guidance about when to prefer it over alternatives such as repovive_validate_problem, repovive_judge_solution, or repovive_generate_house_problem. It does not state exclusions or prerequisites beyond pointing to repovive_list_problem_templates in the schema.

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

repovive_get_contestGet a contestA
Read-only

Fetch one contest's full record by contest number (the number shown in its title) or by ObjectId. Pages through the contest list until it finds a match, so older contests resolve too.

ParametersJSON Schema
NameRequiredDescriptionDefault
contest_idNoContest ObjectId (24 hex), an alternative to contest_number
contest_numberNoContest number, e.g. 21. Provide this or contest_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds valuable behavioral context by disclosing that the tool pages through the contest list until it finds a match, which explains why older contests resolve and implies potential performance characteristics. It also clarifies that the contest number is the one shown in the title.

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?

Two sentences, front-loaded with the primary purpose and identifier options, followed by the paging behavior. Every clause earns its place and nothing is redundant.

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 simple two-parameter, read-only tool with an output schema and complete parameter descriptions, the description covers the essential invocation details. It could be slightly stronger about whether exactly one of contest_id or contest_number must be provided, but the schema and description together are adequate.

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 coverage is 100%, so the baseline is 3. The description adds a small but useful semantic detail: contest_number refers to the number shown in the title, reinforcing what the schema already describes. It does not add significant new meaning beyond that.

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 ('Fetch'), a single resource ('one contest's full record'), and the exact identifier options (contest number or ObjectId). The phrase 'full record' and 'one contest' clearly distinguish this from repovive_list_contests and repovive_get_contest_registrations.

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 the main use case: retrieve one specific contest by its number or ObjectId. It does not explicitly name alternatives or state when not to use this tool, though the identifier-focused framing gives reasonable context.

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

repovive_get_contest_announcementsGet contest announcementsA
Read-only

Fetch the announcements and clarifications posted by the jury for a contest. Check these when a statement is ambiguous or a problem was patched mid-round.

ParametersJSON Schema
NameRequiredDescriptionDefault
contest_idYesContest ObjectId (24 hex)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description need not restate the safety profile. It adds useful context that the content is jury-posted and relevant to mid-round changes. It doesn't overpromise behavior and no contradiction exists.

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?

Two tight sentences: the first states the action and resource, the second gives the practical trigger. No filler or redundancy.

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

Completeness5/5

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

This is a simple single-parameter read tool with a full input schema, output schema, and annotations. The description covers purpose and when-to-use, leaving nothing essential missing for correct invocation.

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 100%: contest_id is fully documented as a 24-character hex ObjectId and required. The description adds no extra parameter-level detail, so the baseline score of 3 applies.

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?

Description states a specific verb ('Fetch') and resource ('announcements and clarifications posted by the jury for a contest'). This clearly distinguishes it from sibling read tools like repovive_get_contest or repovive_get_contest_results.

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?

Explicitly says when to use it: 'Check these when a statement is ambiguous or a problem was patched mid-round.' It gives clear context though it doesn't name an alternative tool; no sibling appears to be a direct substitute.

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

repovive_get_contest_permissionsGet contest permissions (admin)A
Read-only

List which users hold editor/viewer/admin roles on a contest. Requires the authenticated account to administer that contest.

ParametersJSON Schema
NameRequiredDescriptionDefault
contest_idYesContest ObjectId (24 hex)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds valuable behavioral context beyond the annotations by specifying the required admin authorization and the exact role types returned (editor/viewer/admin). No contradiction with annotations.

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?

Two short sentences with no filler. The core purpose is front-loaded in the first sentence, and the authorization requirement is efficiently placed in the second.

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

Completeness5/5

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

For a simple one-parameter read-only tool with an output schema and safety annotations, the description is complete. It states the resource, the roles involved, and the necessary permission to call it, leaving no missing information needed for a correct invocation.

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 100% and the only parameter, contest_id, is already well documented as a 24-character ObjectId. The description does not add parameter-level meaning, 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/5

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

The description uses a specific verb ('List') and resource ('which users hold editor/viewer/admin roles on a contest'), making the tool's function immediately clear. It also distinguishes itself from sibling mutation tools like set/remove_contest_permission and from generic get_contest.

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 gives clear context by stating the authorization prerequisite: 'Requires the authenticated account to administer that contest.' It does not explicitly name alternatives or say when not to use it, but the role-listing scope and admin requirement are enough to guide selection among the closely related permission siblings.

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

repovive_get_contest_rankingGet contest rankingA
Read-only

Fetch a contest's standings — rank, participant, country and total score — capped at the number of rows you ask for. Use it after a contest to see final placement.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return
contest_idYesContest ObjectId (24 hex)
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds useful behavioral context with 'capped at the number of rows you ask for' and 'after a contest', but does not disclose details like default limit behavior or whether results are paginated.

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?

Two concise sentences, front-loaded with the core action and return contents, followed by a usage hint. Every sentence earns its place with no filler.

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 output schema exists and the input schema fully documents parameters, the description covers the essential purpose, fields, row cap, and timing. It is slightly incomplete in not differentiating this from repovive_get_leaderboard or repovive_get_contest_results, but it is otherwise sufficient for a low-complexity read-only tool.

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 100%, so the parameter meanings are already fully documented. The description adds only a general reference to row capping, which maps to the limit parameter, but provides no extra semantics beyond 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?

States a specific verb and resource: 'Fetch a contest's standings' with the exact fields returned (rank, participant, country, total score). This is clear, though it does not explicitly distinguish itself from sibling tools like repovive_get_leaderboard or repovive_get_contest_results.

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?

Provides clear context: 'Use it after a contest to see final placement.' This tells an agent when the tool is appropriate, but it does not explicitly state when to choose this tool over the similar-sounding siblings or mention exclusions.

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

repovive_get_contest_registrationsGet my registrationsA
Read-only

List the contests the authenticated account is registered for, including virtual participation windows. Check this before registering again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only behavior, so the description's added details about including virtual participation windows and being a pre-registration check provide meaningful context beyond the annotations. No contradiction exists.

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?

Two crisp sentences with no filler. The core behavior is front-loaded, and the usage tip is appended as a separate short sentence.

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

Completeness5/5

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

With no parameters, an output schema present, and read-only annotations already provided, the description supplies all necessary context: scope, included data, and an explicit call-time hint. Nothing essential is missing.

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 the baseline is 4. The description correctly conveys that the scope is implicitly the authenticated account, which is the only relevant semantic context.

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 and resource: 'List the contests the authenticated account is registered for.' This clearly distinguishes the tool from siblings like repovive_list_contests and repovive_register_for_contest, and adds a useful detail about virtual participation windows.

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 closing instruction, 'Check this before registering again,' is explicit guidance on when to call the tool. It does not name alternative tools or spell out when not to use it, but the intended use case is clear.

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

repovive_get_contest_resultsGet my contest resultsA
Read-only

Summarise how the authenticated account did in one contest: every problem with its points, attempt count and best verdict, plus the total solved. Combines the contest's problem list with the account's submissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoSubmissions to fetch
contest_idYesContest ObjectId (24 hex)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description only needs to add behavior beyond those hints. It usefully discloses that it 'combines the contest's problem list with the account's submissions' and enumerates the derived fields (points, attempt count, best verdict, total solved). It doesn't mention how page_size affects computed totals, but the annotation safety profile lowers the burden.

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?

Two compact sentences with no filler. The output vocabulary is front-loaded, and the combination logic is stated efficiently in the second sentence. Every clause earns its place.

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 read-only aggregation with a provided output schema and full schema coverage, the description is nearly complete. The main missing context is how page_size interacts with 'every problem' and 'total solved' — a small page_size could produce partial results, which is a correctness-relevant caveat. Otherwise, an agent has enough to call it correctly.

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 100%, so the baseline is 3; the description adds no param-specific detail beyond what the schema states. The optional page_size's impact on the computed totals is not clarified, but that is a shared gap between the schema and description rather than a failure of the description alone.

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?

States a specific verb ('Summarise'), resource ('one contest'), scope ('authenticated account'), and enumerates the output ('points, attempt count, best verdict, total solved'). It clearly distinguishes itself from sibling tools like get_contest (contest metadata), get_leaderboard/get_contest_ranking (rankings), and list_contest_problems (problem list), none of which summarize the authenticated account's own performance.

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 frames when to use it: when you need the authenticated account's results for a single contest. It doesn't explicitly name alternatives or exclusions, but its scope is evident against the ranking and contest-listing siblings. A 5 would require an explicit 'use X instead for rankings' statement, which is missing.

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

repovive_get_conversation_messagesGet DM messagesA
Read-only

Read the messages in one direct-message conversation, newest page first. Use it to review a thread before replying with repovive_send_direct_message.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
page_sizeNoMessages per page
conversation_idYesConversation id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the read-only and open-world behavior, and the description adds useful ordering context ('newest page first') and scopes the read to one DM thread. It does not contradict the annotations.

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?

Two short sentences, front-loaded with the core action and ordering, and the usage pointer earns its place. No filler or repetition of schema field definitions.

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

Completeness5/5

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

For a simple paginated read tool with an output schema and readOnly/openWorld annotations, the description covers the purpose, usage trigger, and behavioral nuance. Required parameters and pagination bounds are already in the schema.

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?

Schema coverage is 100%, but the description adds value beyond the schema by clarifying that conversation is a direct-message conversation and that page delivery is newest-first, which gives meaning to page/page_size behavior.

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 and resource: read the messages in one direct-message conversation, and specifies the page ordering ('newest page first'). It clearly separates this from listing conversations in the sibling set by scoping to a single conversation.

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?

It gives an explicit use context: review the thread before replying with repovive_send_direct_message. It does not provide when-not-to-use guidance or directly contrast with list_conversations, but the single-conversation scope makes the intended use clear.

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

repovive_get_course_editorsGet course editorsA
Read-only

List the users who can edit a course, with their roles. Requires edit rights on that course.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesCourse id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=true, and the description adds a useful access requirement: edit rights on the course. It also clarifies that roles are included in the response. It does not mention pagination or error behavior, but the read-only nature is well covered by annotations and the output schema.

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 two short sentences with no filler. It front-loads the primary action, includes the key access caveat, and says what the response contains (users and roles). Every sentence earns its place.

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 simple read-only tool with one fully documented parameter, an output schema, and safety annotations, the description covers the essential requirements. It could additionally point to add_course_editor/remove_course_editor for modifying editors, but that is not necessary for correctly invoking this tool.

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?

The schema has one parameter, course_id, with 100% description coverage. The tool description does not add any additional meaning about course_id beyond what the schema already states. Baseline 3 is appropriate since the schema carries the parameter documentation burden.

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 and resource: 'List the users who can edit a course, with their roles.' This makes the tool's function immediately clear and distinguishes it from sibling mutators like add_course_editor and remove_course_editor. There is no ambiguity about 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 Guidelines3/5

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

The description gives a clear precondition: 'Requires edit rights on that course.' However, it does not explicitly say when to use this tool versus alternatives such as add_course_editor or remove_course_editor. The usage context is implied rather than stated with exclusions or alternative routing.

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

repovive_get_history_entryGet a history entryA
Read-only

Fetch one history entry in full, including the (secret-redacted) arguments the tool was called with and any error it returned. Use it to see exactly what a change did.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesHistory entry id from repovive_list_history

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, and the description adds meaningful behavior context: arguments are secret-redacted and errors are included in the response. This tells the agent what to expect without contradicting the annotations.

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?

Two sentences with no filler or repetition. The core action is front-loaded, followed by the most valuable behavioral details and a practical usage hint.

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

Completeness5/5

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

For a simple read-only tool with an output schema and readOnlyHint=true, the description covers what the tool returns and why to use it. No critical missing information prevents correct invocation.

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?

The single parameter entry_id is fully described in the schema, including its source ('History entry id from repovive_list_history'), so the description adds little parameter-level value. A baseline score of 3 is appropriate given 100% schema coverage.

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 ('Fetch') and resource ('one history entry in full'), and details what is included: secret-redacted arguments and any returned error. This clearly distinguishes it from list-style or revision-focused siblings.

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 phrase 'Use it to see exactly what a change did' gives clear situational context for when to call this tool. It does not explicitly name alternatives or exclusions, but the usage intent is unambiguous.

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

repovive_get_interview_pricesGet interview pricesA
Read-only

Fetch the current price list for Repovive mock interviews, by interview type and duration.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the tool is known to be a safe read with evolving data. The description adds the 'current' qualifier, indicating prices may change, but otherwise does not disclose output format, pagination, or any additional behavioral details. Given annotation coverage, a mid-range score is appropriate.

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, front-loaded sentence conveys the action, resource, and relevant dimensions with no wasted words. It is concise while remaining informative.

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

Completeness5/5

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

For a parameterless, read-only price lookup with an output schema present, the description is sufficiently complete. It tells the agent what the tool offers and the key dimensions of the returned data, while annotations cover the safety profile.

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 the baseline for this dimension is 4. The description usefully notes that results are organized by interview type and duration, which adds semantic context even though no parameters are needed to invoke the 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 states a specific verb ('Fetch'), a clear resource ('current price list for Repovive mock interviews'), and the organizing dimensions ('by interview type and duration'). This distinguishes the tool from related siblings like check_interview_capacity or list_interview_sessions, whose purposes are different.

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 the tool is for retrieving price information rather than checking capacity or managing sessions, but it does not explicitly state when to prefer this tool over alternative interview-related tools. Use case is clear enough from the wording, but no exclusions or alternative routing are provided.

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

repovive_get_leaderboardGet ratings leaderboardA
Read-only

Fetch a page of Repovive's global ratings leaderboard — rank, name, current and max rating, contest count and country — with optional country, name and tier filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by name substring
pageNoPage number (1-based)
tierNoFilter by rating tier slug
limitNoEntries per page
countryNoFilter by ISO country code
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already carry the read-only/open-world safety profile, so the description only needs to add behavioral context. It adds the page-oriented behavior and available filters but does not go deeper into default sorting or pagination mechanics; that is acceptable but not exceptional.

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?

One compact sentence, front-loaded with the verb and resource, then the returned fields and filters. There is no filler or repetition of schema details.

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?

With an output schema present and readOnly/openWorld annotations already supplied, the description covers the resource, row shape, and all filter dimensions. The only implicit element is the default ordering of a leaderboard, which is reasonably inferred from the word 'leaderboard'; still, a small explicit note on ordering would make it fully complete.

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?

All six parameters are documented in the schema with types, defaults, and meanings, so the baseline is 3. The description only groups them as 'optional country, name and tier filters' without adding syntax or combination rules, so no uplift beyond baseline.

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 the specific verb 'Fetch' and names a precise resource, 'Repovive's global ratings leaderboard'—the word 'global' distinguishes this from sibling contest-specific endpoints like repovive_get_contest_ranking. It also lists the returned row fields, making the tool's scope 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/5

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

The description clearly frames the tool for retrieving the global leaderboard with optional filtering, which is sufficient context for when to invoke it. It does not explicitly name alternatives or state when not to use it, but the 'global' qualifier plus sibling names provides clear context.

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

repovive_get_my_profileGet my profileA
Read-only

Fetch the public profile of the authenticated account: username, full name, job role, organisation, open-to-work flag, location and verification badges. Complements repovive_whoami, which returns account/billing state instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNo'markdown' or 'json'json

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds useful context: the profile is public and requires an authenticated account. It also clarifies the scope of the data returned, going slightly beyond the annotations.

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?

Two efficient sentences: the first states the operation and result fields, and the second handles sibling differentiation. No filler or repetition of schema details.

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

Completeness5/5

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

The tool is simple, read-only, has no required parameters, a fully documented optional parameter, an output schema, and a description that names the returned fields. The description plus structured metadata provides everything an agent needs to call it correctly.

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?

The only parameter, response_format, is fully documented in the schema with an enum, default, and description. Since schema coverage is 100%, the description does not need to add parameter detail, and it does not meaningfully add beyond what the schema already states.

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 action ('Fetch'), the resource ('public profile of the authenticated account'), and enumerates the exact fields returned. It also distinguishes the tool from its closest sibling, repovive_whoami, by explicitly stating the difference.

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

Usage Guidelines5/5

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

It explicitly says this tool complements repovive_whoami and that whoami returns 'account/billing state instead,' giving the agent a clear rule for choosing between the two. This is direct when-to-use guidance with a named alternative.

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

repovive_get_post_categoriesGet blog categoriesA
Read-only

List the categories blog posts are filed under, with their slugs and post counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe, open-world read behavior is covered. The description adds only output content ('slugs and post counts'), not additional behavioral traits such as pagination or authentication; it neither contradicts nor goes beyond the annotations.

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: 'List the categories...' followed by the relevant output details. Every piece of information earns its place, with no redundancy or unnecessary length.

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

Completeness5/5

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

For a simple, read-only, parameterless tool with an output schema present and annotations covering safety and open-world semantics, the description is complete. An agent has everything needed to invoke it correctly and interpret the result.

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, and the schema coverage is effectively 100% (empty schema). The description does not need to explain any inputs, so the baseline of 4 for a no-parameter tool is appropriate.

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 the specific verb 'List' with a clear resource, 'categories blog posts are filed under,' and specifies the returned fields ('slugs and post counts'). It is unambiguous and naturally distinguishes from the sibling tool repovive_list_posts, which lists posts rather than categories.

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 usage when one needs blog categories, but it provides no explicit when-to-use guidance or discussion of alternatives. Since the tool's purpose is self-evident and no competing sibling handles categories, a score of 3 reflects the implied, rather than stated, usage context.

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

repovive_get_problemGet a problemA
Read-only

Fetch one contest problem in full: statement, input/output formats, constraints, time and memory limits, tags, sample tests with explanations, and the browser workspace URL. This is the tool to call before solving or submitting.

ParametersJSON Schema
NameRequiredDescriptionDefault
contest_idYesContest ObjectId (24 hex)
problem_slugYesProblem slug, e.g. 'maximum-triangle-perimeter'
response_formatNo'markdown' or 'json'markdown
include_hidden_testsNoInclude hidden (non-sample) test cases in the JSON, when the API exposes them. Default False.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds meaningful read-behavior context by promising the full problem contents plus the workspace URL in one call. It does not discuss response format or hidden-test details, but the output schema covers those, and there is no contradiction with the read-only annotation.

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 two sentences with no wasted words. The first sentence lists what is fetched, and the second front-loads the intended usage context. Every part earns its place.

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

Completeness5/5

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

For a read-only fetch tool with a rich output schema and fully documented parameters, the description provides enough context to select and invoke the tool correctly. It names the key contents and the appropriate moment to call it, so nothing essential is missing.

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 100%, so the parameters are already well documented. The description does not add parameter-level meaning beyond the schema, but it does reinforce the tool's overall purpose. Baseline 3 is appropriate because the schema carries the burden.

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 verb and resource: 'Fetch one contest problem in full,' followed by a concrete enumeration of what is included (statement, formats, constraints, limits, tags, samples, workspace URL). This distinguishes it from close siblings like repovive_list_contest_problems and repovive_get_problem_workspace_url without needing to open schemas.

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 explicitly tells when to call it: 'This is the tool to call before solving or submitting.' This is a strong usage cue, but it does not name alternatives or exclusions, so an agent must infer that listing problems or fetching only the workspace URL belongs to sibling tools.

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

repovive_get_problem_submissionsGet submissions for a problemA
Read-only

List the submissions made against one contest problem. Defaults to the authenticated account; pass user_id to look at another participant where the contest allows it.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoFilter to a user id; omit for the current user
contest_idYesContest ObjectId (24 hex)
problem_slugYesProblem slug

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

The description adds useful behavioral context beyond the readOnlyHint annotation: it defaults to the authenticated account and notes that viewing another participant's submissions depends on contest permissions. This gives the agent an actionable expectation about authorization without contradicting the annotations.

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?

Two sentences with no filler. The main action and resource scope are front-loaded, and the optional parameter behavior is stated compactly in the second sentence.

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

Completeness5/5

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

Given the read-only annotations, full parameter schema coverage, and the presence of an output schema, the description covers what an agent needs: the resource scope, the default user, and the optional user_id override with its permission constraint. Nothing critical is missing.

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 coverage is 100%, so the baseline is 3. The description does add nuance to user_id by saying it defaults to the authenticated account and that viewing others is permission-gated, but contest_id and problem_slug add nothing beyond their 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 uses a specific verb-resource pair: 'List the submissions made against one contest problem,' which clearly identifies the tool's scope. It does not explicitly name sibling tools like repovive_list_my_submissions or repovive_get_submission to draw the contrast, so it stops short of full sibling differentiation.

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 explains the default behavior (authenticated account) and when to pass user_id, including the contest-permission caveat. It gives clear context for choosing this tool over a generic submissions view, but it does not explicitly state when not to use it in favor of specific alternatives.

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

repovive_get_problem_workspace_urlGet solve/submit URLA
Read-only

Build the repovive.com URL where a problem can be read and solved in the browser. Pass contest_id for a contest problem, or problem_set (classics|faang|quant|math) for a curated-set problem. Useful when a capability is website-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
contest_idNoContest ObjectId (24 hex), if the problem is in a contest
problem_setNoCurated set key/slug (classics|faang|quant|math|cls), if applicable
problem_slugYesProblem slug

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With readOnlyHint=true already covering the safety profile, the description adds useful behavioral context: the tool constructs a URL and does not perform the solving/submitting itself. It also explains the domain-dependent identifier behavior. The only minor omission is clarifying whether contest_id and problem_set are mutually exclusive or what happens if both are supplied.

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 three short sentences with no filler: purpose, parameter selection guidance, and usage context. Each sentence earns its place and the core action is front-loaded.

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 lightweight URL-builder with a full output schema and complete schema documentation, the description covers the purpose, the two identifier modes, and the intended use case. The only material gap is the unstated mutual exclusivity or precedence behavior when both contest_id and problem_set are provided.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds value by linking contest_id to contest problems and problem_set to curated-set problems, and by enumerating the accepted set values. However, it lists 'classics|faang|quant|math' while the schema also allows 'cls', which is a small incompleteness.

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 opens with a specific verb and resource: 'Build the repovive.com URL where a problem can be read and solved in the browser.' This makes the tool's function immediately clear and distinguishes it from related problem tools like get_problem or submit_solution. The website-only note further sharpens its unique role.

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 gives concrete routing guidance: pass contest_id for contest problems and problem_set for curated-set problems. It also gives a usage context ('Useful when a capability is website-only'), but it does not name alternative tools or explicitly state when not to use this tool, so it stops short of a full 5.

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

repovive_get_revisionGet a revisionA
Read-only

Fetch one saved revision including its full snapshot — the statement, test cases, solutions and settings as they stood. Address it by revision id, or by target plus sequence number.

ParametersJSON Schema
NameRequiredDescriptionDefault
seqNoPer-target sequence number
target_idNoEntity id, when addressing by sequence
revision_idNoRevision id from repovive_list_revisions
target_kindNoEntity kind, when addressing by sequence

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description is not required to state safety. It adds value by describing exactly what the snapshot contains ('statement, test cases, solutions and settings as they stood'), which goes beyond the annotation. It does not mention any side effects or error conditions, but given the read-only annotation, the bar is lower and this is acceptable.

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 that states the core purpose first, then the addressing modes. It contains no redundant words or filler. Every clause earns its place.

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?

With an output schema available, the description does not need to explain return values. It covers the purpose and addressing modes succinctly. It could mention that the snapshot is immutable or that revision ids come from repovive_list_revisions, but those are minor gaps. Overall, it provides enough context for an agent to call 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?

Schema description coverage is 100%, so baseline is 3. The description adds semantic value by explaining the two addressing modes ('by revision id, or by target plus sequence number'), which clarifies how the four parameters relate. This is beyond the schema's individual parameter descriptions and helps the agent understand the intended usage patterns.

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 ('Fetch one saved revision') and specifies the resource ('full snapshot — statement, test cases, solutions and settings as they stood'). It also distinguishes from siblings by emphasizing 'one saved revision' and the two addressing modes (revision id or target+sequence), which is specific and not a tautology.

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 provides clear context for when to use the tool: when you need a single revision's full snapshot. It explains how to address the revision (by id or target+sequence number), which guides usage. However, it does not explicitly name alternative tools like repovive_list_revisions or repovive_diff_revisions, so it lacks explicit exclusions or comparisons, but the purpose is sufficiently clear.

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

repovive_get_submissionGet a submissionA
Read-only

Fetch one submission by id: its verdict, passed/total counts, judging status, language and timing. Use it to poll a submission that repovive_submit_solution left pending.

ParametersJSON Schema
NameRequiredDescriptionDefault
submission_idYesSubmission id to look up

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is covered. The description adds useful behavioral context beyond the schema: it frames this as a polling operation for pending submissions and enumerates the fields the caller can expect, which helps an agent understand the tool's role.

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?

Two sentences, no filler. The first sentence front-loads the core action and output fields, and the second sentence provides the concrete polling use case. Every word earns its place.

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

Completeness5/5

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

For a single-parameter read-only tool with an output schema and safety annotations, the description is complete. It tells an agent what the tool does, what it returns, and when to invoke it—nothing essential is missing.

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 100%: the single parameter submission_id is already documented as 'Submission id to look up.' The description adds no new parameter-level details beyond 'by id,' 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/5

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

The description states a specific verb ('Fetch'), a specific resource ('one submission by id'), and the key fields returned (verdict, counts, status, language, timing). It distinguishes this from list-style siblings like list_my_submissions and get_problem_submissions by focusing on single-submission lookup.

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 gives explicit context: 'Use it to poll a submission that repovive_submit_solution left pending.' This clearly indicates when to call the tool. It does not list when-not-to-use or name alternative tools, so it misses the full 5.

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

repovive_get_unread_dm_countUnread DM countA
Read-only

Return how many direct messages are unread for the authenticated account — a cheap check before listing conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's read-only nature is consistent. The description adds the 'cheap check' performance hint and the 'authenticated account' scoping, which is useful but minimal. It doesn't describe response format or edge cases, but output schema covers returns. With annotations present, the bar is lower; the description adds modest value beyond them.

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, well-structured sentence that front-loads the core function ('Return how many direct messages are unread') before the contextual rationale. Every word earns its place; no redundancy or filler.

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 tool with no parameters, existence of an output schema, and annotations covering safety, the description is adequate. It states what it does and when to use it. It lacks explicit alternatives or caveats, but those are not critical given the tool's simplicity. A 5 would require more guidance, but this is solid.

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, and schema coverage is 100% (empty schema). Per guidelines, baseline is 4 for zero-parameter tools. The description adds no parameter info, which is fine because there are none to explain.

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 ('Return') and resource ('unread direct message count for the authenticated account'), which clearly distinguishes it from siblings like get_unread_notifications_count. It also frames the tool as a cheap pre-check before listing conversations, adding context that differentiates its purpose.

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?

It provides a clear usage context: 'a cheap check before listing conversations' tells the agent when to call this tool. It does not explicitly exclude other tools or name alternatives, but the implication is strong enough for a simple read tool. Missing explicit when-not-to-use guidance, so not a 5.

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

repovive_get_unread_notifications_countUnread notifications countA
Read-only

Return how many in-app notifications are unread for the authenticated account — a cheap check before fetching the full list.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds useful context about the 'cheap' nature of the operation and the authenticated-account scope. It does not over-detail or contradict the annotations. This is appropriate for a simple count operation with an output schema.

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, well-structured sentence packs the return value, scope, and usage hint without any wasted words. Every clause adds meaning and the key purpose is front-loaded.

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

Completeness5/5

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

Given the zero-parameter input, the openWorldHint/readOnlyHint annotations, and the presence of an output schema, the description covers all the essential information an agent needs: what is counted, for whom, and when to use it. Nothing critical is missing.

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 and schema coverage is 100%, so there are no parameter semantics to clarify. The description appropriately focuses on the return concept ('how many') rather than repeating schema information.

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 ('Return'), a concrete resource ('in-app notifications'), and a precise scope ('unread for the authenticated account'). It clearly differentiates from the sibling list_notifications by being a count rather than a full list. This is immediately disambiguating for an agent.

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 phrase 'a cheap check before fetching the full list' gives clear contextual guidance on when to invoke this tool, implying it should be used as a lightweight precursor to list_notifications. It does not explicitly name the alternative or provide exclusions, so it stops short of a 5.

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

repovive_get_vive_earn_methodsGet Vive earn methodsA
Read-only

List the ways an account can earn Vive points on Repovive (streaks, solves, contest participation, …) together with the reward each one grants.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

The readOnlyHint and openWorldHint annotations already establish the safety and open-world profile, so the description does not need to repeat those. It adds a small amount of context about what the returned list contains, but no deeper behavioral details such as ordering, language, or scope.

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, front-loaded sentence states the resource, the action, and the key detail (reward per method). Every part earns its place and there is no redundant repetition of the title or annotations.

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

Completeness5/5

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

For a zero-parameter, read-only listing with an output schema present, the description is fully sufficient. It tells the agent what information will be returned and carries no unresolved ambiguity.

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 takes zero parameters, so parameter documentation is not needed. The description correctly focuses entirely on what the response represents rather than on 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 uses a specific verb ('List') and names a concrete resource: the ways an account can earn Vive points on Repovive. It also clarifies the included detail (reward per method), and this clearly separates it from payout, checkout, or profile tools among the siblings.

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 intended use is clear: call this when information about how Vive points can be earned is needed. It does not explicitly name alternatives or exclusions, but the 0-parameter read-only nature and unique topic make the usage context unambiguous.

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

repovive_history_statusHistory statusA
Read-only

Report where the history database lives, whether recording is on, how much it holds, the retention limits in force, and which entity kinds can be rolled back.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces that with 'Report'. It goes beyond the annotation by disclosing the specific status dimensions the tool exposes, such as retention limits and rollback eligibility. No hidden mutation or side effects are suggested.

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 well-structured sentence that front-loads the action ('Report') and then lists the report contents in a clear, parallel sequence. Every clause contributes useful information with no redundancy.

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

Completeness5/5

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

For a no-parameter status tool with a rich output schema, the description covers exactly what an agent needs to decide when to call it and what to expect conceptually. It explains the scope (history database status) without needing to enumerate return fields, since an output schema exists.

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 no parameter burden for the description to carry. The schema fully covers the empty parameter set, and the description appropriately adds no parameter-specific detail.

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 ('Report') and names the exact resource ('history database'), then enumerates the concrete facets covered: location, recording state, size, retention limits, and rollback eligibility. This clearly distinguishes the tool from siblings like repovive_list_history, repovive_purge_history, or repovive_undo_last_change.

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 makes the context obvious: this is a read-only status/summary command for the history system, distinct from operations on individual history entries or revisions. It does not explicitly name alternatives or exclusion conditions, but the intended use is clear enough that no overlap with siblings is apparent.

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

repovive_judge_solutionJudge a solution locallyA
Idempotent

Run a solution against test cases on this host and return a per-case verdict (Accepted / Wrong Answer / Time Limit Exceeded / Memory Limit Exceeded / Runtime Error / Compilation Error) with the failing input, expected and actual output. Supply either problem_json or test_cases_json. Use this before repovive_submit_solution — it costs nothing and does not touch the platform. Executes the code you pass, so only judge code you trust.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesSolution source code
languageNopython | cpp | c | java | javascriptpython
problem_jsonNoA problem object JSON (its testCases are used). Provide this OR test_cases_json.
time_limit_sNoPer-case wall-clock limit (seconds)
memory_limit_mbNoPer-case memory cap in MB (enforced on Linux hosts)
test_cases_jsonNoA JSON list of {"input", "expectedOutput"}. Provide this OR problem_json.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that the tool 'Executes the code you pass', warns that only trusted code should be judged, and clarifies the operation is local and costs nothing. This is valuable context the annotations do not provide.

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 three tightly packed sentences. It front-loads the core behavior and verdict list, then adds routing and safety guidance without any filler.

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

Completeness5/5

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

Given the detailed schema, the presence of an output schema, and annotations, the description covers purpose, usage constraints, the key alternative, and an important safety caveat. Nothing essential for correct invocation is missing.

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?

The input schema already has 100% description coverage, so the baseline of 3 applies. The description's 'either problem_json or test_cases_json' mirrors the schema's own 'Provide this OR test_cases_json' guidance and adds little parameter-level meaning beyond it.

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 precise verb-resource pair: 'Run a solution against test cases on this host' and enumerates the exact verdict types returned. It also differentiates itself from repovive_submit_solution by emphasizing it 'does not touch the platform' and is local.

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

Usage Guidelines5/5

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

It explicitly says when to use this tool: 'Use this before repovive_submit_solution'. It also gives a concrete input constraint, 'Supply either problem_json or test_cases_json', and a safety condition, 'only judge code you trust'.

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

repovive_list_blocked_usersList blocked usersA
Read-only

List the users the authenticated account has blocked from messaging it, with the block ids needed to undo them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only and open-world behavior, so the bar is lower. The description adds meaningful context about scope ('the authenticated account') and the purpose of the returned ids, going beyond what annotations alone convey. It does not contradict annotations.

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, front-loaded sentence that states the action, scope, and output purpose without any filler. Every phrase earns its place.

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

Completeness5/5

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

With zero parameters and an output schema already present, the description fully equips an agent to invoke the tool correctly. It also connects the result to the unblock workflow via the block ids, covering the practical downstream use.

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 the schema covers all parameter needs. The description does not need to provide parameter details; mentioning block ids as output is helpful but not a parameter-semantics requirement.

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?

Description clearly states the action 'List' and the specific resource: users the authenticated account has blocked from messaging it. It also explains the value of the returned block ids, which distinguishes this tool from generic list tools and from the block_user/unblock_user siblings.

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 makes the use case clear: retrieve blocked users and obtain block ids needed to undo blocks. It does not explicitly name alternatives or state when not to use this tool, but the context is unambiguous for an agent choosing between this and messaging/blocking tools.

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

repovive_list_contest_problemsList contest problemsA
Read-only

List every problem in one contest with its slug, order, difficulty, points, limits, tags and solve counts. Set full=True to also include statements. Hidden test cases are never returned. Get contest ids from repovive_list_contests.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoInclude full statements (description, constraints, I/O formats). Default: summaries only.
contest_idYesContest ObjectId (24 hex chars) from repovive_list_contests
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the tool read-only, and the description adds meaningful behavioral context: hidden test cases are never returned and full=True controls whether statements are included. This goes beyond the structured annotations to set expectations about output limits and privacy.

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?

Three sentences, each earning its place: the first defines the tool's output, the second explains an optional flag's effect and a critical exclusion, and the third provides the dependency for obtaining a valid contest_id. The key scoping is front-loaded.

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

Completeness5/5

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

The description is complete for a read-only listing tool: it names returned fields, explains the one optional behavior, discloses that hidden tests are excluded, and points to the correct source for contest IDs. With an output schema present and annotations covering safety, nothing needed to invoke it correctly is missing.

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 100%, so the input schema already documents contest_id, full, and response_format. The description adds a useful behavioral note about full=True including statements, but does not need to repeat parameter meanings; the schema covers the basics.

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 action ('List every problem in one contest') and enumerates the exact fields returned: slug, order, difficulty, points, limits, tags, and solve counts. This clearly distinguishes it from sibling tools like listing contests or retrieving a single problem.

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 provides clear context for when to use this tool: to enumerate problems within a contest. It also gives an important prerequisite by directing the agent to get contest ids from repovive_list_contests. It does not explicitly state when to prefer alternatives, but the usage context is unambiguous.

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

repovive_list_contestsList contestsA
Read-only

List Repovive contests with their ObjectId, contest number, title, computed status (upcoming/ongoing/past), window, problem and member counts, and premium/rated flags. The ObjectId returned here is what every other contest tool needs.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoNumber to skip (pagination)
limitNoMax contests to fetch
statusNoFilter by computed status; 'all' (default) keeps everythingall
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only safety profile is covered. The description adds that status is computed (upcoming/ongoing/past) and that the returned ObjectId is the shared key for other contest tools, but it does not disclose ordering, pagination behavior beyond schema defaults, or result-set limitations. This is adequate but not deeply behaviorally transparent.

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?

Two sentences with no filler. The first front-loads the resource and return fields; the second delivers the key integration insight about ObjectId reuse. Every sentence earns its place.

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 read-only list tool with fully documented optional parameters and an output schema, the description is mostly complete: it explains what is returned and why it matters. The only notable gap is the absence of sort-order information, which matters when paging through contests with skip/limit; this is a minor omission given the rich schema and annotations.

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 100%, so all four parameters (skip, limit, status, response_format) are already documented with types, defaults, and constraints. The description adds no parameter-level guidance beyond mentioning computed status values already present in the schema enum, so the baseline of 3 is appropriate.

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 starts with a specific verb and resource ('List Repovive contests') and enumerates the exact returned fields, making it clearly distinct from detail, registration, and admin-list siblings. The closing sentence about the ObjectId reinforces its role as the canonical contest enumeration tool.

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 sentence 'The ObjectId returned here is what every other contest tool needs' provides a clear integration cue: call this tool first to obtain IDs for other contest operations. However, it does not explicitly mention alternatives such as repovive_get_contest for single-contest details or repovive_build_list_admin_contests for admin-specific listing, so it stops short of full when-not-to-use guidance.

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

repovive_list_conversationsList DM conversationsA
Read-only

List the authenticated account's direct-message conversations with their ids, participants, last message and unread counts. The conversation id feeds every other DM tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
page_sizeNoConversations per page

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds useful behavioral context by stating it operates on the authenticated account's conversations and by noting that conversation ids are consumed by other DM tools.

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?

Two concise sentences with no filler. The first sentence states the resource and returned fields; the second explains why the tool matters downstream. Every sentence earns its place.

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

Completeness5/5

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

This is a simple read-only listing tool with two well-documented optional parameters, a rich output schema, and annotations covering its safe, open-world behavior. The description fully explains what it returns and how the result should be used, so nothing essential is missing.

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?

The input schema already documents both parameters with full description coverage (100%). The description adds no parameter-specific meaning, so the baseline score of 3 is appropriate; the schema carries the weight here.

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 identifies a specific verb ('List'), a clear resource ('direct-message conversations'), and lists the returned fields (ids, participants, last message, unread counts). It is easily distinguishable from sibling DM tools because it focuses solely on conversation listing rather than messages, sending, or unread counts.

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 sentence 'The conversation id feeds every other DM tool' gives clear context for when to use this tool: as the entry point before using other DM operations. It does not explicitly name alternatives or state when not to use it, but the downstream role is clearly conveyed.

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

repovive_list_coursesList coursesA
Read-only

List Repovive courses visible to the authenticated account: id, title, slug, description, section/unit counts, access level, enrolment count and whether this account can edit them.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the absence of a side-effect warning is acceptable. The description adds useful context beyond annotations by indicating that results are scoped to the authenticated account and that a field reports edit permissions. It does not contradict any annotation.

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, compact sentence that front-loads the action and resource, then efficiently lists the returned attributes. There is no filler or redundancy; every phrase contributes to the agent's understanding.

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 presence of an output schema and readOnly/openWorld annotations, the description covers the essential scoping detail an agent needs: the courses are those visible to the authenticated account. It does not mention pagination or explicitly contrast with list_contests, but for a simple read-only listing tool, those omissions are minor.

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?

The only parameter, response_format, is optional and has 100% schema coverage with an enum, default, and description. The tool description does not add parameter-level meaning, but none is needed because the schema fully documents it. This matches the baseline of 3 for high schema coverage.

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 opens with a concrete verb and resource ('List Repovive courses') and limits scope to those visible to the authenticated account. It enumerates the returned fields, making the tool's function unmistakable. It is clearly distinct from siblings like list_contests, though it does not explicitly name an alternative.

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 phrase 'visible to the authenticated account' implies when this tool is appropriate: when the agent needs courses accessible to the current user. However, there is no explicit when-to-use versus alternatives or any exclusions. The guidance remains implicit rather than direct.

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

repovive_list_historyList action historyA
Read-only

Browse this server's local log of state-changing calls, newest first: when, which access token, which tool, what it targeted, whether it succeeded, and the revision it produced. Filter by target, tool, actor, status or age. This is the audit trail — use repovive_list_revisions to see an entity's versions.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoOnly entries from the last N days
toolNoFilter by tool name, e.g. repovive_build_update_statement
actorNoFilter by the access token's client id
limitNoMax entries to return
statusNoFilter by outcome: ok, partial or error
target_idNoFilter to one entity id
target_kindNoFilter by kind: build_session, contest, course, profile, conversation, problem, …
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations include readOnlyHint=true, and the description confirms it's a browse/read operation on a log. It adds behavioral detail beyond annotations: 'newest first' ordering, 'local' scope, and the specific data fields returned and filters available. It doesn't contradict annotations and gives useful context about what the tool exposes.

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?

Two sentences with no filler. The first sentence front-loads the core purpose and returned fields, the second covers filters and the alternative tool. Every clause earns its place—compact yet complete.

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?

The description is sufficient for an agent to understand what the tool does, when to use it, and how it differs from the closest sibling. Since an output schema exists, return format details aren't required in the description. It doesn't explain pagination or defaults, but those are in the schema. Overall well-rounded for a read-only audit tool.

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 100%, so each of the 8 parameters is already documented in the schema. The description mentions filters (target, tool, actor, status, age) that map to parameters but doesn't add new semantics beyond that. Baseline is 3 because the schema covers everything; the description adds minimal extra meaning.

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 it lists a server's local log of state-changing calls, specifying the exact fields returned (when, access token, tool, target, success, revision). It distinguishes itself from repovive_list_revisions by explicitly naming that sibling as the alternative for viewing entity versions.

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

Usage Guidelines5/5

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

It explicitly says 'This is the audit trail — use repovive_list_revisions to see an entity's versions.' This gives direct when-to-use and when-not-to-use guidance, and also lists filter options (target, tool, actor, status, age). No ambiguity about whether to use this tool versus alternatives.

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

repovive_list_house_templatesList house-style generatorsA
Read-only

List the house-style generators, each pre-assigned to a round slot (A-G) with the matching points and difficulty. These produce Repovive's published round format: multi-test input led by t, braced-array I/O sections, one sample holding several sub-cases. Feed the kinds to repovive_build_house_round.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark this as read-only, and the description adds useful context beyond that: generators are pre-assigned to slots with points and difficulty, and follow a specific round format. While it does not explain ordering or pagination, those are minor given the zero-parameter read-only nature.

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?

Three sentences, each earning its place: the first states the purpose and result shape, the second explains the round format, and the third gives the downstream action. The most important information is front-loaded and there is no filler.

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

Completeness5/5

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

For a zero-parameter, read-only listing tool with an output schema present, the description is complete. It explains what the list contains, how it relates to Repovive's round format, and what to do with the results. No critical information is missing 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.

Parameters4/5

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

The tool has zero parameters, so the schema leaves nothing undocumented and the baseline is 4. The description does not attempt to describe parameters, which is appropriate.

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 ('List') and a precise resource ('house-style generators'), and adds concrete detail about what each generator carries (round slot A-G, points, difficulty). It differentiates this from generic template listing by tying it to Repovive's published round format and the downstream builder.

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 gives clear context by explaining these generators feed directly into repovive_build_house_round, so an agent knows when to call this tool. It does not explicitly name alternative list tools or state when not to use it, but the domain-specific purpose is clearly implied.

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

repovive_list_interview_sessionsList interview sessionsA
Read-only

List the mock-interview sessions booked by the authenticated account, with their scheduling and status. Supports offset/limit paging.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax sessions to return
offsetNoNumber to skip

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, and the description adds useful behavioral context: results are limited to the authenticated account, include scheduling/status, and support offset/limit paging. This goes beyond the structured metadata without contradicting the annotations.

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 two sentences with no filler. The tool's purpose and scope are front-loaded, and the paging note is a natural, minimal second sentence.

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

Completeness5/5

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

For a read-only list operation with two optional, self-documenting parameters and an existing output schema, the description provides the necessary scope and paging behavior. No critical information is missing 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.

Parameters3/5

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

The input schema fully documents both limit and offset with defaults, ranges, and descriptions, so the schema carries the parameter-semantics burden. The description's mention of 'offset/limit paging' confirms the behavior but adds no new parameter information, matching the baseline for 100% schema coverage.

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 opens with a clear verb and specific resource: 'List the mock-interview sessions booked by the authenticated account.' It also names the returned content ('scheduling and status'), making the tool's purpose immediately distinguishable from the many contest, document, and build-related list tools among the siblings.

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 establishes when to use the tool: to list the authenticated account's mock-interview sessions. It does not explicitly name alternative tools or exclusions, but the scoping is unambiguous and no sibling tool competes for this exact operation, so the context is sufficient.

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

repovive_list_my_documentsList my documentsA
Read-only

List the documents (CV/resume and other uploads) attached to the authenticated Repovive account, with their ids and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and scope baseline. The description adds useful context by specifying the document types (CV/resume and other uploads) and that they are attached to the authenticated account. This goes beyond the annotations without contradicting them, but it does not disclose any pagination, ordering, or response size behavior. Given the low bar set by the read-only annotation, this is a solid 4.

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, efficiently structured sentence. It front-loads the action and resource, then adds the key output detail (ids and metadata). There is no unnecessary verbosity or redundant repetition of the tool name or title.

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

Completeness5/5

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

For a simple zero-parameter read-only list operation with an output schema, the description fully covers what the tool does and what it returns. Since an output schema exists, it does not need to elaborate on the exact return format. Nothing an agent would need to know to call this tool correctly is missing.

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 the description cannot be expected to clarify parameter meaning. The schema coverage is effectively 100% (empty schema). Per the rubric, a 4 is the baseline for zero-parameter tools, and the description does not need to compensate for any missing parameter documentation.

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 ('List'), a precise resource (documents attached to the authenticated Repovive account), and specifies the returned data (ids and metadata). It is unambiguous and clearly distinguishes this tool from any sibling that might handle documents, none of which exist in the sibling list.

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 the use case: when an agent needs to view the documents uploaded by the logged-in user. There are no alternative tools for listing documents, so no exclusions are necessary. However, it does not explicitly state 'use this when you need to retrieve user uploads' or provide any contrast, so it stops short of a 5.

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

repovive_list_my_submissionsList my submissionsA
Read-only

List the authenticated account's submissions, newest first, with verdicts and timestamps. Optionally filter by problem slug or contest id, and page with page/page_size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
page_sizeNoSubmissions per page
contest_idNoFilter by contest ObjectId
problem_slugNoFilter by problem slug

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark this as read-only, and the description adds useful behavioral detail: scope limited to the authenticated account, newest-first ordering, inclusion of verdicts and timestamps, and optional filters/pagination. Nothing contradicts annotations, and the output schema covers return structure.

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?

Two sentences carry the core behavior, sort order, included fields, filters, and pagination without repetition or fluff. The most identifying information is front-loaded in the first sentence.

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

Completeness5/5

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

For a simple read-only list operation, the description is complete: it names scope, ordering, response contents, filters, and pagination. The input schema documents all four parameters, annotations cover safety, and an output schema exists, so nothing important is missing.

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 100%, so the baseline applies. The description restates the parameter concepts ('filter by problem slug or contest id, and page with page/page_size') but adds no semantic detail beyond what the schema already documents.

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 and resource: 'List the authenticated account's submissions.' It adds meaningful scope ('authenticated account's') and ordering ('newest first'), which distinguishes it from sibling tools like repovive_get_problem_submissions and repovive_get_submission.

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 it—listing one's own submissions—but gives no explicit guidance about when to prefer it over related siblings such as repovive_get_problem_submissions or repovive_get_submission. There are no stated exclusions or alternative routing conditions.

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

repovive_list_notificationsList notificationsA
Read-only

List in-app notifications for the authenticated account with their ids, titles, messages, read state and timestamps, plus the unread count. Pass the ids to repovive_mark_notifications_read to clear them.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax notifications to return
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral context beyond the readOnlyHint by specifying the returned fields and clarifying that notifications are scoped to the authenticated account. It also signals a safe read operation by framing the follow-up mark-read action as a separate step. It does not cover ordering or pagination nuances, but those are minor for a list action.

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 two sentences with no filler: the first front-loads the primary purpose and return contents, and the second gives a concise, actionable chaining instruction. Every sentence earns its place.

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?

The schema documents both parameters and an output schema exists, while annotations cover read-only safety. The description sufficiently covers the return fields and a realistic downstream use. Minor details such as sort order or error behavior are absent but not critical for this low-complexity list tool.

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?

The input schema already provides full descriptions for both parameters, including the limit range and the response_format enum. The description adds no extra parameter-level meaning, so the baseline of 3 applies given the 100% schema description coverage.

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 ('List'), a clear resource ('in-app notifications'), and a scope ('for the authenticated account'), then enumerates the returned fields: ids, titles, messages, read state, timestamps, and unread count. It is not a tautology and is clearly distinct from sibling mutation tools like repovive_mark_notifications_read.

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 a workflow by telling the agent to pass returned ids to repovive_mark_notifications_read to clear them, which makes the tool's role as a prerequisite clear. However, it does not explicitly state when to prefer this over repovive_get_unread_notifications_count or when not to use it, so the guidance remains 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.

repovive_list_postsList blog postsA
Read-only

List Repovive blog posts with title, slug, author, publication date, read time, likes/views and tags. Supports page/limit paging.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based)
limitNoPosts per page
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to restate safety. It adds behavioral value by disclosing paging support (page/limit), which is not present in annotations. It does not mention sorting or ordering, but that is a minor gap for a simple list 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/5

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

Two sentences with zero filler: the first states the resource and return fields, the second covers paging. Key information is front-loaded, and every clause earns its place.

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

Completeness5/5

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

For a read-only list operation with three well-documented parameters, output schema present, and readOnly/openWorld annotations, the description is complete. It conveys the core purpose and paging behavior; remaining details like defaults and response formats live in the schema/output schema, so nothing an agent needs to call it correctly is missing.

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 100%: page, limit, and response_format are all described in the schema. The description mentions paging but adds no nuance beyond what the schema provides, 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/5

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

Description begins with the specific verb 'List' and names the exact resource 'Repovive blog posts', then enumerates the returned fields (title, slug, author, publication date, read time, likes/views, tags). This clearly distinguishes it from sibling list tools like repovive_list_contests or repovive_list_courses, and there is no competing 'list_posts' sibling.

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 context is clear: use this tool when a listing of blog posts is needed. It does not explicitly name alternatives or exclusions, but the resource 'blog posts' implicitly separates it from other list_* siblings. The paging note gives a hint about how to use it at scale.

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

repovive_list_problem_setsList curated problem setsA
Read-only

List Repovive's curated practice sets (Classics, FAANG, Quant, Math) with their keys, submission kind (code/answer/proof) and browser URLs. Statements for these sets are website-only; for problems readable through this server use repovive_list_contests then repovive_list_contest_problems.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds meaningful behavioral context: statements are website-only, and the tool returns keys, submission kind, and browser URLs rather than problem content.

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?

Two sentences with no filler. The core purpose and output contents are front-loaded, and the alternative routing is a single clear second sentence.

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

Completeness5/5

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

For a simple read-only listing tool with one optional parameter, an output schema, and clear annotations, the description covers what the tool returns, its limitations, and how to get related data. Nothing needed for correct invocation is missing.

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?

The single optional response_format parameter is fully documented in the schema with an enum and description. The description does not need to add parameter semantics; baseline 3 applies because the schema carries the load.

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?

States a specific verb and resource: lists Repovive's curated practice sets with keys, submission kind, and browser URLs. It names the exact categories and distinguishes itself from the contest-related listing tools by noting that these sets are website-only.

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

Usage Guidelines5/5

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

Explicitly says when to use alternatives: if problems need to be readable through this server, use repovive_list_contests then repovive_list_contest_problems. This gives clear routing guidance among siblings.

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

repovive_list_problem_templatesList problem generatorsA
Read-only

List the built-in problem generators (kind, title, difficulty, tags) that repovive_generate_problem and repovive_build_contest accept. These produce classic single-test problems; see repovive_list_house_templates for Repovive's round format.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful context by noting these are built-in classic single-test generators, but beyond that and the sibling distinction it does not reveal additional behavioral traits such as rate limits or ordering semantics. This is adequate given the 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?

Two sentences with no filler: the first states the core listing behavior and consumers, the second adds the necessary distinction from the sibling tool. Essential information is front-loaded.

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

Completeness5/5

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

For a zero-parameter, read-only list tool with an output schema and readOnlyHint annotation, the description covers everything an agent needs: what is listed, which fields are returned, who consumes the values, and how this differs from the house-template alternative.

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?

There are zero parameters, so the description has no parameter semantics to clarify. Per the baseline for parameterless tools, 4 is appropriate; the description even adds value by listing the returned metadata fields, though that is more output-oriented than parameter-oriented.

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 the specific verb 'List' and the exact resource: built-in problem generators, including the output fields (kind, title, difficulty, tags). It also explicitly distinguishes itself from repovive_list_house_templates, making the tool's scope unmistakable.

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

Usage Guidelines5/5

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

The description names repovive_generate_problem and repovive_build_contest as the consumers of these templates, establishing when the listed values are relevant. It also directs the agent to repovive_list_house_templates for Repovive's round format, giving a clear alternative and selection criterion.

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

repovive_list_revisionsList revisionsA
Read-only

List the saved versions of an entity, newest first, with the sequence number to pass to repovive_restore_revision. Revisions are captured automatically whenever a problem draft, contest, course or your profile is changed through this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax revisions to return
target_idNoEntity id — a build session id, contest id, course id, or 'me' for the profile
target_kindNoEntity kind: build_session, contest, course, profile
response_formatNo'markdown' or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds meaningful behavior: revisions are auto-captured on changes, returned newest first, and the sequence number is meant to be passed to repovive_restore_revision. No destructive side effects or surprising behaviors are suggested.

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?

Two sentences, front-loaded with the core action and ordering, then providing capture semantics and the downstream restore tool. Every clause adds value and no redundant restatement of the title or schema exists.

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?

The description is mostly complete for a read-only listing tool with an output schema, but it does not explain behavior when target_id/target_kind are omitted, even though both are optional with null defaults. It also does not clarify the relationship to repovive_list_history, which is a likely source of confusion among siblings.

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?

Input schema coverage is 100%, so the schema already documents target_id, target_kind, limit, and response_format. The description adds little parameter-level meaning; it refers to sequence numbers in the output rather than to any parameter, and it uses the informal term 'problem draft' where the schema says 'build_session.'

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 'List' and the resource 'saved versions of an entity,' adds ordering ('newest first'), and links the returned sequence number to repovive_restore_revision. It does not explicitly differentiate from the sibling repovive_list_history, so it stops short of full sibling distinction.

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 gives useful context about when revisions are available ('captured automatically whenever ... changed through this server') and which entity types are supported. It does not mention when not to use this tool or name alternatives like repovive_list_history, repovive_get_revision, or repovive_diff_revisions.

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

repovive_logoutLog outA
Idempotent

Invalidate the current Repovive session server-side and drop the cached token from this MCP server. The next authenticated tool call logs in again from the configured credentials; use it to force a fresh session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide idempotentHint=true and destructiveHint=false. The description adds meaningful behavioral context beyond annotations: it drops the cached token and causes the next authenticated call to log in again from configured credentials. This clarifies the side effects and reinforces why the tool is non-destructive. No contradiction exists.

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 exactly two sentences, with the primary action front-loaded and the consequence/use case following. Every clause contributes meaningful information, with no filler or repetition of schema/annotations.

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

Completeness5/5

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

For a zero-parameter logout tool, the description covers the mechanism (server-side invalidation), the immediate effect (token drop), the future behavior (re-auth on next call), and the intended use case (force fresh session). The output schema exists, so return-value details are not necessary. Nothing needed to call this tool correctly is missing.

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 and the schema coverage is 100%, so there are no parameter semantics to explain. Per the zero-parameter baseline, the description need not add anything here, and it appropriately remains silent.

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 action: invalidate the current Repovive session server-side and drop the cached token from the MCP server. This is a clear verb (invalidate/drop) and resource (session/token), and it is easily distinguished from all sibling tools, including identity-query tools like repovive_whoami.

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 gives explicit guidance on when to use the tool: 'use it to force a fresh session.' It also explains the consequential behavior (next authenticated call re-authenticates from configured credentials), providing the agent with decision context. It does not explicitly name alternatives or exclusions, but the tool's operation is unique enough that this is not a material gap.

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

repovive_mark_conversation_readMark conversation readA
Idempotent

Mark every message in one conversation as read, clearing its unread badge.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesConversation id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral detail beyond the annotations by specifying that the operation affects every message and clears the unread badge. The annotations already indicate a non-read-only, idempotent, non-destructive mutation, and the description aligns with those signals without contradicting them.

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?

One concise, front-loaded sentence conveys the action, scope, and effect with no filler. Every word contributes to understanding the tool's behavior.

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

Completeness5/5

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

For a simple, single-parameter mutation tool with an output schema and annotations covering idempotency and destructiveness, the description is complete. The only potential gap is not naming sibling tools, but that does not hinder correct invocation.

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 100% for the single required parameter, conversation_id, which is already described as 'Conversation id'. The description does not meaningfully add parameter-level semantics, so the baseline of 3 is appropriate.

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 ('mark'), defines the scope ('every message in one conversation'), and states the observable effect ('clearing its unread badge'). It clearly differentiates this from notification-level read tools by anchoring the action to a single conversation.

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 gives a clear context for use: when the goal is to clear the unread badge for all messages in a conversation. It does not explicitly mention alternatives such as mark_notifications_read, so it lacks explicit when-not-to-use guidance, but the intended usage is unambiguous.

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

repovive_mark_notifications_readMark notifications readA
Idempotent

Mark the given in-app notifications as read. Take the ids from repovive_list_notifications; already-read ids are harmless.

ParametersJSON Schema
NameRequiredDescriptionDefault
notification_idsYesNotification ids to mark read

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The description adds useful behavioral context beyond the annotations by stating that already-read IDs are harmless, reinforcing idempotence in practical terms. It also clarifies the source of the IDs. The description does not contradict the annotations; it is consistent with idempotentHint=true, readOnlyHint=false, and destructiveHint=false.

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 compact and front-loaded: the core action appears first, followed by source and safety guidance. Every sentence contributes useful information, with no redundant or filler text.

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

Completeness5/5

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

The tool has a single parameter, an output schema, and annotations that cover idempotence and non-destructiveness. The description provides the only missing operational context: where the IDs come from and that already-read IDs are acceptable. It is complete for correct invocation.

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 schema already describes notification_ids as 'Notification ids to mark read', but the description adds meaningful provenance by instructing the agent to take them from repovive_list_notifications. This helps prevent fabricated or irrelevant IDs and reduces ambiguity despite 100% schema coverage.

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 ('Mark the given in-app notifications as read') and identifies the exact resource. It also ties the IDs to repovive_list_notifications, distinguishing this from conversation-related tools like repovive_mark_conversation_read.

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?

It explicitly tells the agent where to obtain valid IDs ('Take the ids from repovive_list_notifications') and notes that already-read IDs are safe to include. It provides clear context for when to use the tool, though it does not explicitly name alternative tools 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.

repovive_new_problem_templateNew problem templateA
Read-only

Return an empty Repovive problem object plus a field-by-field description of the schema. Start here when authoring a problem by hand rather than from a generator.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true, so the safe read-only nature is known. The description adds that the tool returns an empty object plus a field-by-field schema description, but does not disclose any additional behavioral traits such as whether the template is validated or whether it has network dependencies. With annotations covering the safety profile, this is adequate but not rich.

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?

Two short sentences deliver the core purpose, the return content, and the usage context with no filler. The most important information is front-loaded, and every word adds value.

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

Completeness5/5

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

For a parameterless tool with an output schema and read-only annotations, the description is complete: it states what is returned, why an agent would call it, and when it should be used. Nothing an agent needs to invoke it correctly is missing.

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 and 100% schema description coverage, so there is no parameter meaning to clarify. Per baseline for zero-parameter tools, a 4 is appropriate since the description correctly focuses on return value and usage rather than inventing parameter details.

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 clear verb ('Return') and identifies the exact resource ('empty Repovive problem object') plus the schema field-by-field description. It also distinguishes this template tool from generator-based authoring, which separates it from siblings like generate_problem.

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

Usage Guidelines5/5

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

The description explicitly says 'Start here when authoring a problem by hand rather than from a generator,' providing both a positive usage condition and an exclusion. This is direct, actionable guidance for when to choose this tool over the generator-based alternatives.

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

repovive_purge_historyPurge historyA
Destructive

Permanently delete history entries and revisions — everything older than N days, or everything for one entity. This destroys the ability to roll those changes back and cannot be undone; confirm with the user before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_idNoRestrict the purge to one entity id
target_kindNoRestrict the purge to one entity kind
older_than_daysNoDelete entries older than this many days

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description explicitly discloses that deletion is permanent, destroys rollback ability, cannot be undone, and requires user confirmation. This gives the agent the critical behavioral context needed before calling an irreversible 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/5

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

Two purposeful sentences: the first front-loads the action and scope, the second delivers the irreversible warning. No filler or redundant repetition of the schema.

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

Completeness5/5

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

For a destructive tool with fully documented parameters, an output schema, and a clear scope, the description covers what matters most: outcome, irreversibility, and the safety requirement. Nothing essential an agent needs to invoke it correctly appears missing.

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 coverage is 100% and each parameter already has a clear description. The tool description adds a helpful conceptual mapping ('older than N days, or everything for one entity') to the parameters, but does not substantially extend what the schema already provides.

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?

States a specific verb ('delete') and resource ('history entries and revisions'), and precisely defines the two purge modes: older than N days or scoped to one entity. This clearly differentiates it from sibling read/recovery tools like repovive_list_history and repovive_restore_revision.

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 the destructive intent and instructs to confirm with the user before calling, but it does not explicitly state when to choose this over alternatives such as restore_revision or undo_last_change. It gives invocation conditions, but not a full when/when-not routing.

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

repovive_register_for_contestRegister for a contestA
Idempotent

Register the authenticated account for a contest. Use mode='normal' for the live window, or mode='virtual' with an ISO-8601 virtual_start_time to schedule a virtual run. This is a real registration on the account.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo'normal' (default) or 'virtual'normal
contest_idYesContest ObjectId (24 hex)
virtual_start_timeNoISO-8601 start time, required only for virtual mode

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already carry mutation and idempotency, so the description only needs to add context; it does, by emphasizing that this is a real, committed registration on the authenticated account. It also clarifies that virtual mode schedules a virtual run rather than just storing a preference. No statement contradicts annotations.

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?

Three short sentences, with the core action first and mode guidance second. The final warning ('This is a real registration') is useful disambiguation rather than filler.

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 single-action registration tool, the schema plus output schema cover types and return shape, and annotations cover safety; the description supplies the state-changing context and mode conditions. It could mention preconditions such as eligibility or invite requirements, but the open-world and idempotency hints reduce the need.

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?

Schema covers all three parameters, so the baseline is 3; the description adds value by explaining that mode='normal' targets the live window and mode='virtual' is paired with virtual_start_time to schedule a virtual run. It reinforces the ISO-8601 requirement already in the schema but doesn't add independent parameter semantics for contest_id.

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?

States a specific action — 'Register the authenticated account for a contest' — with a clear resource and actor scope. The mode distinction ('normal' vs 'virtual') further separates it from read-only contest siblings, so an agent can identify it 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 Guidelines3/5

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

The description gives explicit in-tool usage for mode selection: normal for the live window, virtual only with an ISO-8601 virtual_start_time. However, it does not mention prerequisites such as eligibility or invite checks, nor does it explicitly contrast this tool with sibling tools like check_invite_eligibility or get_contest_registrations.

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

repovive_remove_contest_permissionRemove contest permission (admin)A
DestructiveIdempotent

Revoke a user's role on a contest, removing their editor/viewer/admin access. Requires contest administration rights.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesTarget user's ObjectId
contest_idYesContest ObjectId (24 hex)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as destructive and non-read-only; the description adds useful context by specifying that all of the user's editor/viewer/admin access is removed and that contest administration rights are required. This adds value beyond the structured annotation fields without contradicting them.

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?

Two short sentences with no filler. The action, scope, effect, and access prerequisite are all front-loaded in a compact, readable form.

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

Completeness5/5

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

For a two-parameter admin action with complete schema coverage, a destructive annotation, an output schema, and permission prerequisite in the description, nothing essential is missing. The agent has enough context to invoke the tool correctly.

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 100%, with both user_id and contest_id already clearly documented as ObjectIds. The description adds only the high-level notion of 'role on a contest,' which does not materially improve on the schema's parameter explanations.

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 opens with the specific verb 'Revoke' and names the resource, a user's role on a contest, then enumerates exactly what is removed: editor/viewer/admin access. This clearly differentiates it from permission-getting and permission-setting siblings.

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 states a clear precondition, 'Requires contest administration rights,' which helps the agent know when the tool is permitted. It does not explicitly name alternatives like repovive_set_contest_permission or repovive_get_contest_permissions, so it falls short of fully explicit when-to-use guidance.

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

repovive_remove_course_editorRemove course editorA
DestructiveIdempotent

Revoke a user's edit access to a course. Requires edit rights on that course; the removed editor loses access immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesCourse id
editor_idYesEditor's user id to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already signal destructive and non-read-only behavior, so the description adds value by specifying the permission prerequisite and the immediacy of access revocation. This gives useful behavioral context beyond the structured hints.

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?

Two short, direct sentences deliver the action, prerequisite, and effect with no filler. The key behavior is front-loaded and every clause contributes information.

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

Completeness5/5

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

With an output schema present, no return-format explanation is needed. The combination of annotations, schema, and a clear behavioral description covers the action, permissions, effect, and parameters sufficiently for correct invocation.

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 coverage is 100% and both parameters are described adequately in the schema. The description adds no further parameter-level detail, so the schema carries the semantic weight, which is sufficient.

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 ('Revoke') and resource ('a user's edit access to a course'), clearly distinguishing it from related tools like add_course_editor and get_course_editors. The title reinforces the action without being the sole source of meaning.

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 gives relevant context: the caller needs edit rights and the effect is immediate. However, it does not explicitly state when to use this over alternatives or when not to use it, leaving the usage conditions mostly implied.

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

repovive_restore_revisionRestore a revisionA
Idempotent

Roll an entity back to a saved revision by re-applying its snapshot through the normal Repovive API. Nothing is deleted: the restore is itself recorded as a new revision, so you can undo the undo. Pass into_target_id to restore a snapshot into a different entity — for instance to rebuild a deleted problem draft in a fresh build session. Use dry_run=True first to see exactly which steps would run.

ParametersJSON Schema
NameRequiredDescriptionDefault
seqNoPer-target sequence number
dry_runNoReport the steps without changing anything
target_idNoEntity id, when addressing by sequence
revision_idNoRevision id to restore
target_kindNoEntity kind, when addressing by sequence
into_target_idNoApply the snapshot to this entity instead of its original

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already convey non-read-only, idempotent, and non-destructive traits, and the description adds meaningful behavioral context beyond them: the restore is recorded as a new revision, so the operation can be undone. It also discloses the dry-run preview capability. This is good additional transparency without contradicting the annotations.

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?

Three tight sentences with no filler: the first establishes the core behavior, the second adds the critical non-destructive and undoable nature, and the third gives concrete parameter guidance. The most important information is front-loaded.

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 output schema, annotations, and full parameter descriptions, the tool description covers purpose, safety, cross-entity restoration, and dry-run usage. It does not explicitly walk through every addressing mode, but the schema already handles that detail. The description is complete enough 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value for into_target_id and dry_run with a concrete restoration scenario. It does not explain the revision_id vs. seq addressing modes, but the schema descriptions already cover those distinctions, so this is sufficient.

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 verb and resource: roll an entity back to a saved revision by re-applying its snapshot. It also distinguishes the tool from destructive operations by noting nothing is deleted. However, it does not explicitly name or differentiate against the closely related sibling undo_last_change, so it stops short of full sibling differentiation.

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 provides useful context for when to use into_target_id and recommends dry_run=True first. It implies the restore workflow and even mentions undoing the undo, but it never explicitly states when to prefer this tool over alternatives like undo_last_change or list_revisions. The guidance is helpful but not explicit about exclusions.

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

repovive_search_usersSearch usersA
Read-only

Search Repovive users by name (partial match) and return the matches with their user ids. Use it to resolve a person's id before starting a direct message, blocking them, or granting contest permissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesName to search for (partial match)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and non-exhaustive behavior. The description adds the partial-match behavior and user-id output, but those are also implied by the schema parameter description and output schema. It does not disclose additional hidden traits such as result limits or ordering, but the annotation coverage lowers the burden.

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 two sentences with no filler: the first states the function and behavior, the second immediately gives practical use cases. Key information is front-loaded and every sentence earns its place.

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

Completeness5/5

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

This is a simple single-parameter read-only search tool with a full output schema and supporting annotations. The description covers what it searches, how matching works, what is returned, and why an agent would use it. Nothing required to invoke it correctly is missing.

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 coverage is 100% and the parameter's description ('Name to search for (partial match)') fully clarifies the query field. The description essentially restates the schema's semantics rather than adding new meaning, so the baseline score of 3 is appropriate.

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 ('Search'), a clear resource ('Repovive users'), and a precise matching mode ('by name (partial match)'). It also states the primary output ('matches with their user ids'), which uniquely identifies this tool among the siblings; no other sibling searches users.

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 explicitly says when to use the tool: 'Use it to resolve a person's id before starting a direct message, blocking them, or granting contest permissions.' It gives clear contextual cues, though it does not explicitly mention exclusions or alternative tool names, which is acceptable given no direct substitute appears among the siblings.

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

repovive_send_direct_messageSend a direct messageA

Send a message into an existing conversation as the authenticated account. This is visible to a real person immediately and cannot be unsent from here — get the user's approval on the wording first.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesMessage text
conversation_idYesConversation id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The annotations only note readOnly=false, idempotent=false, and destructive=false. The description adds critical behavioral context beyond that: the message is visible to a real person immediately and cannot be unsent from this tool. This is exactly the kind of irreversible side-effect disclosure that helps an agent avoid harmful actions.

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?

Two sentences with no filler: the first states the action and scope, the second conveys the irreversible consequence and the required precaution. Every sentence earns its place and the most important caution is front-loaded.

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

Completeness5/5

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

For a simple two-parameter tool with an output schema and clear annotations, the description covers what the tool does, the conversation scope, the irreversible nature, and the approval requirement. Nothing needed for safe and correct invocation is missing.

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 coverage is 100% with descriptions for both parameters ('Message text' and 'Conversation id'). The description reinforces that conversation_id refers to an existing conversation, but it does not add meaningful syntax or format details beyond what the schema already provides. A baseline of 3 is appropriate.

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 and resource: 'Send a message into an existing conversation as the authenticated account.' The word 'existing' clearly distinguishes this from repovive_start_conversation, so an agent can tell them apart without inspecting schemas.

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 limits usage to existing conversations and adds a strong precondition: get the user's approval on the wording first because the message cannot be unsent. It does not explicitly name the alternative for starting a new conversation, but the context is clear enough to route the agent correctly.

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

repovive_set_contest_permissionSet contest permission (admin)A
Idempotent

Grant a user a role on a contest (e.g. editor, viewer, admin). Resolve the target's user id with repovive_search_users first. Requires contest administration rights.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesRole to grant, e.g. 'editor', 'viewer', 'admin'
user_idYesTarget user's ObjectId
contest_idYesContest ObjectId (24 hex)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already cover read-only (false), destructive (false), idempotent (true). The description adds the requirement for contest administration rights and the prerequisite step, which is useful context. It does not elaborate on side effects or failure behavior, but with annotations providing the safety profile, a 3 is appropriate.

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?

Two concise sentences, front-loaded with the core action, followed by a prerequisite and a permission note. No fluff or redundancy; every sentence earns its place.

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?

With an output schema present, lack of return-value explanation is acceptable. The description covers the essential operational context: what the tool does, a required prerequisite (search_users), and the permission requirement. This is sufficient for an agent to call it correctly, though it stops short of detailing edge cases like overwriting existing permissions.

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 coverage is 100%, and the schema already includes examples for role and descriptions for user_id and contest_id. The description's note to resolve user id via search_users adds practical guidance beyond the schema, but it does not significantly extend parameter meaning for other fields.

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 states the specific action (grant a role) on a specific resource (contest) and gives role examples. It is clear and distinct from the sibling 'remove_contest_permission' by the verb 'grant', though it does not explicitly name the alternative or contrast.

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?

Provides a clear prerequisite (resolve user id with repovive_search_users) and a permission requirement (admin rights), but does not explicitly state when to use this tool vs alternatives like remove_contest_permission or get_contest_permissions. The guidance is helpful but lacks explicit when-not-to-use or alternative selection.

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

repovive_set_course_visibilitySet course visibility (admin)A
Idempotent

Publish or unpublish a course platform-wide. Making a course public exposes it to every Repovive user, so confirm before calling. Requires site administration rights.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesCourse id
is_publicYesWhether the course should be public

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description adds meaningful behavioral context beyond the annotations: making a course public exposes it to every Repovive user, confirming before calling is advised, and site administration rights are required. This is exactly the kind of impactful side-effect disclosure an agent needs before invoking an admin visibility mutation.

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?

Three concise sentences front-load the core action and impact, then deliver the caution and permission requirement. Every sentence earns its place with no redundancy or filler.

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

Completeness5/5

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

For a simple two-parameter, idempotent admin mutation with a full input schema and an output schema present, the description covers action, platform-wide impact, confirmation guidance, and required permissions. Nothing essential is missing.

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 100%, so the schema already documents both parameters. The description reinforces the meaning of is_public by discussing public vs. unpublish, but it does not add parameter-level detail beyond what the schema provides.

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 and resource: 'Publish or unpublish a course platform-wide.' It clearly distinguishes this visibility-setting operation from the many sibling course tools by emphasizing platform-wide scope and admin rights.

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 gives clear context for when to use the tool: to publish or unpublish a course platform-wide. It also provides important usage cautions ('confirm before calling') and a prerequisite ('Requires site administration rights'), though it does not explicitly contrast it with any alternative sibling tool.

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

repovive_start_conversationStart a conversationA

Open a new direct-message conversation with a user and send the first message. Resolve recipient_id with repovive_search_users. This reaches a real person — confirm before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
recipient_idYesRecipient user id (from repovive_search_users)
initial_messageYesFirst message text

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate a non-read-only, non-idempotent operation. The description adds meaningful context by warning that the action reaches a real person and asking for confirmation, which is a significant side-effect disclosure not captured by annotations.

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?

Three short sentences with no filler: the action is front-loaded, the prerequisite is clear, and the warning is concise. Every sentence contributes useful information.

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 simple two-parameter tool with an output schema, the description covers purpose, prerequisite, and side-effect warning. It does not mention what happens if a conversation already exists or explicitly route to send_direct_message, but this is a minor omission for this tool.

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 coverage is 100%, so the schema already documents both parameters. The description repeats recipient_id provenance and the first-message role without adding new semantic detail beyond what the schema provides.

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 action: open a new direct-message conversation with a user and send the first message. The word 'new' distinguishes it from send_direct_message, which would handle existing conversations.

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?

It gives useful prerequisite guidance by saying to resolve recipient_id with repovive_search_users, and it warns that this reaches a real person. However, it does not explicitly state when to use this tool versus send_direct_message or 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.

repovive_submit_solutionSubmit a solutionA

Submit source code to a contest problem and, by default, poll until the judge returns a final verdict. This records a REAL submission on the authenticated Repovive account and counts against the ~10 submissions/minute limit — verify locally with repovive_judge_solution first. Returns the submission id, verdict and passed/total.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the verdict is final
sourceYesSolution source code
languageNoLanguage name; one of: c, c++, cpp, go, java, javascript, py, pypy, pypy3, python, python3, rust, typescriptpypy
timeout_sNoMax seconds to wait for the verdict
contest_idYesContest ObjectId (24 hex)
problem_slugYesProblem slug, e.g. 'remainder-count'

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: it discloses that this is a real submission with side effects, counts against a rate limit, polls by default, and returns the submission id, verdict, and passed/total. This aligns with readOnlyHint=false and idempotentHint=false, with no contradiction.

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?

Three sentences, each earning its place: the action and default behavior, the critical side-effect and rate-limit warning with the safer alternative, and the return value summary. Information is front-loaded and there is no filler.

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

Completeness5/5

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

The description covers the essential operational context: real submission, rate limit, local verification, polling default, and return fields. Given the output schema exists and the input schema documents parameters, nothing critical is missing for an agent to call this tool safely.

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 100%, so the input schema already documents all six parameters. The description clarifies the default polling behavior and timeout context, but it does not add meaningful new meaning about individual parameters beyond what the schema provides.

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 and resource ('Submit source code to a contest problem') and clearly differentiates from sibling repovive_judge_solution by noting this records a REAL submission on the account. It also states the polling behavior and return contents, so an agent can identify the tool's purpose without ambiguity.

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

Usage Guidelines5/5

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

Explicit guidance is given: 'verify locally with repovive_judge_solution first' names the alternative and the condition for using it. The warning about the ~10 submissions/minute limit also tells the agent when this tool is appropriate versus safer local verification, leaving no inference required.

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

repovive_unblock_userUnblock a userA
DestructiveIdempotent

Remove a block so the user can message the authenticated account again. Take the block id from repovive_list_blocked_users.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesBlock id (or user id) to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the consequence of the action (user can message again) and the source of the id, but does not disclose deeper behavioral details such as idempotency edge cases or error 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?

Two tightly packed sentences with no filler. The core action and effect are front-loaded, and the source instruction is placed last without wasting words.

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

Completeness5/5

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

For a one-parameter unblock action, the description covers what the tool does, the effect, and how to source the required id. The output schema exists and annotations cover destructive nature, so nothing critical is missing.

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?

Schema coverage is 100% and the parameter already has a description. The description adds value by specifying where the block_id comes from, which is actionable guidance for an agent. It slightly goes above the schema-only baseline.

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?

Description opens with a specific verb and resource ('Remove a block') and states the intended effect: the user can message the authenticated account again. It is clearly distinct from repovive_block_user and repovive_list_blocked_users.

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 explicitly tells the agent where to obtain the block_id ('Take the block id from repovive_list_blocked_users'), giving clear operational context. It does not explicitly contrast with block_user, but the inverse action is obvious from context.

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

repovive_undo_last_changeUndo the last changeA

Step one change back: restore the entity's previous revision, undoing the most recent edit made through this server. Equivalent to restoring seq-1. Nothing is deleted — the undo is recorded as a new revision, so it can itself be undone. Use dry_run=True to see what would change first.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoReport the steps without changing anything
target_idYesEntity id — a build session id, contest id, course id, or 'me'
target_kindYesEntity kind: build_session, contest, course, profile

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

The description discloses crucial behavioral traits beyond the annotations: the undo is recorded as a new revision, nothing is deleted, and the operation is itself reversible ('it can itself be undone'). This directly clarifies what happens to the entity's history and confirms the non-destructive nature, adding substantial value over the annotations' bare destructiveHint=false.

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?

Three sentences, each carrying essential information: the core action, the revision mechanics, and the dry-run guidance. It is front-loaded with the action, and there is no redundant wording or filler.

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 tool with three simple parameters and an output schema, the description covers the operation's behavior, reversibility, and safe invocation. It does not mention edge cases like having no prior revision, but given the output schema and the straightforward semantics, the definition is complete enough for an agent to call it correctly.

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 100%, so the schema fully documents all three parameters. The description reinforces the purpose of dry_run but does not add materially new parameter-level semantics beyond that. With complete schema coverage, the baseline 3 is appropriate.

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 opens with a specific action ('Step one change back: restore the entity's previous revision') and precisely scopes the operation to 'the most recent edit made through this server.' The 'Equivalent to restoring seq-1' line further disambiguates the semantics from generic revision tools. This is clearly distinct from siblings like repovive_restore_revision or repovive_diff_revisions.

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 scope is explicit: it undoes only the most recent edit, which tells the agent when this tool is appropriate versus restoring an arbitrary revision. The description also gives a concrete safety practice, 'Use dry_run=True to see what would change first.' It stops short of explicitly naming alternative tools or exclusion conditions, but the 'most recent' framing provides solid routing context.

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

repovive_update_contestUpdate a contest (admin)A
Idempotent

Update a contest's settings — title, lobby problem count, admin-only and weekly-challenge flags, problem display style, rated tier cap. Only the arguments you pass are changed. Requires contest administration rights.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title
admin_onlyNoRestrict the contest to admins
contest_idYesContest ObjectId (24 hex)
rated_max_tierNoRated max tier slug
problem_displayNoHow problems are labelled: 'letters' or 'numbers'
is_weekly_challengeNoMark as the weekly challenge
lobby_problems_countNoHow many problems the lobby shows

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish mutation, idempotence, and non-destructiveness. The description adds value beyond annotations by clarifying the partial-update behavior and the admin-rights requirement, which are important operational details not derivable from the annotations.

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?

Two tight sentences with no filler. The action and field list are front-loaded, and the partial-update and permission notes each earn their place.

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

Completeness5/5

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

For a moderate-complexity update tool with full schema descriptions and an output schema, the description covers the action, target fields, permission requirement, and update semantics. No critical information needed to invoke the tool correctly is missing.

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?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics on top: 'Only the arguments you pass are changed' clarifies how the nullable parameters and null defaults behave, which is not explicitly stated in the schema. This justifies moving above baseline.

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-resource pair ('Update a contest's settings') and enumerates the exact fields involved, distinguishing it clearly from read (get_contest), delete (delete_contest), and permission (set_contest_permission) siblings. An agent can select this tool with confidence.

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 provides clear usage context: it is for modifying contest settings, requires contest administration rights, and is explicitly partial-update ('Only the arguments you pass are changed'). It does not name alternatives or exclusions, but the prerequisites and semantics are sufficiently clear for correct selection.

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

repovive_update_course_detailsUpdate course detailsA
Idempotent

Update a course's title and, optionally, its description and tags. Only the fields you pass are changed. Requires edit rights on that course.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoReplacement list of tags
titleYesNew title
course_idYesCourse id
descriptionNoNew description

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it reveals that the update is partial ('Only the fields you pass are changed') and requires specific permissions ('Requires edit rights'). This is valuable because annotations only indicate idempotent and non-destructive, not the partial-update semantics. No contradictions with annotations.

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 two sentences, with the primary action front-loaded about what it updates. The second sentence clarifies the partial-update behavior, and the third states the permission requirement. Every sentence adds essential information with no redundancy.

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?

The tool is straightforward with four well-documented parameters and an output schema. The description covers the update scope, partial-update behavior, and permission requirement. It does not elaborate on error cases, but given the output schema exists and the simplicity, this is sufficient.

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 schema already documents all four parameters with descriptions (100% coverage). The description enriches this by clarifying that omitted optional parameters retain their original values, which is not evident from the schema alone. This adds meaningful semantic detail for correct invocation.

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 'Update' and the resource 'course', listing the specific fields affected (title, description, tags). It distinguishes itself from sibling tools by focusing on these fields, though it does not explicitly name alternative tools for clarity.

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 updating course title/description/tags) and states a prerequisite ('Requires edit rights'). However, it does not provide explicit exclusions or mention alternatives for related operations like visibility changes, leaving some ambiguity about when to choose this tool over others.

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

repovive_update_my_locationUpdate my countryA
Idempotent

Set the country shown on the authenticated account's profile and used for country-filtered leaderboards. Takes an ISO 3166-1 country code and overwrites any previous value.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryYesISO country code to set, e.g. 'US', 'BG', 'IR'
country_auto_detectedNoWhether this value was auto-detected (usually False when set manually)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses that the operation 'overwrites any previous value', which adds meaningful behavioral context beyond the annotations. It also clarifies that the value affects profile display and leaderboard filtering, giving the agent a better sense of the impact.

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 two sentences with no wasted words. It front-loads the primary action, then efficiently adds the input format and overwrite behavior.

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

Completeness5/5

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

Given the simple parameter set, full schema coverage, output schema presence, and non-destructive annotations, this description is complete enough for an agent to select and invoke the tool correctly. It explains what is set, why it matters, and how the input is used.

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 100%, so the schema already documents both parameters. The description adds minor specificity by saying 'ISO 3166-1 country code', but it does not discuss the country_auto_detected parameter or provide additional parameter-level meaning.

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-resource pair ('Set the country') and clearly identifies the resource: the authenticated account's profile. It also states the purpose (country-filtered leaderboards), which differentiates it from other profile-related siblings like whoami or get_my_profile.

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 gives clear context for when this tool is appropriate: when the authenticated user needs to set or change the country shown on their profile. It does not explicitly name alternatives or exclusions, but the scope is obvious enough for a simple update operation.

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

repovive_validate_problemValidate a problemA
Read-only

Check a problem object against Repovive's schema and report every issue found: missing or empty fields, a non-URL-safe slug, bad difficulty, non-positive limits, and missing or malformed test cases. Run it before pushing a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_jsonYesA problem as a JSON object string

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description goes beyond the readOnlyHint annotation by specifying what kinds of problems are reported: missing/empty fields, non-URL-safe slugs, bad difficulty, non-positive limits, and malformed test cases. It also reveals that every issue is reported, not just a pass/fail result.

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?

Two sentences, front-loaded with the operation and validation criteria, followed by a concise usage instruction. Every clause adds relevant information with no wasted words.

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

Completeness5/5

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

For a single-parameter tool with a fully documented schema and an output schema present, the description fully covers behavior and usage context. An agent knows what input to provide, what the tool checks, and when to call it.

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 coverage is 100%, so the schema already documents problem_json as a JSON object string. The description adds minimal semantic value, referring to 'a problem object' and implicitly defining what the validator checks, but does not materially expand on the parameter itself.

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 ('Check') and resource ('a problem object against Repovive's schema') and enumerates the exact categories of issues found. This clearly distinguishes it from related build/judge/push tools and leaves no ambiguity about what it does.

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

Usage Guidelines5/5

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

The explicit instruction 'Run it before pushing a draft' gives a clear, actionable trigger for when to invoke the tool. While no alternative tool is named, none exists among siblings for this exact validation purpose, so the usage guidance is sufficient.

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

repovive_whoamiWho am IA
Read-only

Return the Repovive account this server is authenticated as: id, name, email, role, verification and premium status, Vive balance, streaks, country and join date. Use it to confirm which account submissions and messages will be attributed to.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNo'markdown' (default) or 'json'markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds value by specifying the exact identity fields returned and clarifying the attribution purpose, going beyond the structured annotations. No hidden side effects or contradictions are present.

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?

Two sentences with no filler: the first states what is returned and the second states its use case. The key information is front-loaded and every sentence earns its place.

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

Completeness5/5

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

For a low-complexity read-only tool with an output schema and complete parameter schema, the description is fully adequate. It tells the agent what data to expect, why to call it, and the annotations cover safety.

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 100%, and the single parameter response_format is fully documented in the schema with its enum values and default. The description adds no parameter-specific meaning, but the schema carries the full burden effectively.

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?

States a specific verb ('Return') and resource ('the Repovive account this server is authenticated as'), and enumerates the fields returned. It is clear what the tool does, though it does not explicitly differentiate itself from the similarly named sibling repovive_get_my_profile.

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?

Provides clear context: 'Use it to confirm which account submissions and messages will be attributed to.' This tells the agent when this identity-check tool is relevant, but it does not discuss alternatives or exclusions.

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. Dates show when Glama detected each change.

  1. 102 tool updatesv0.1.0
    • First observedrepovive_add_course_editor
    • First observedrepovive_available_judge_languages
    • First observedrepovive_block_user
    • First observedrepovive_build_add_testcases
    • First observedrepovive_build_add_to_contest
    • First observedrepovive_build_author_complete_problem
    • First observedrepovive_build_cancel_run
    • First observedrepovive_build_clear_testcases
    • First observedrepovive_build_contest
    • First observedrepovive_build_create_session
    • First observedrepovive_build_delete_generator
    • First observedrepovive_build_delete_session
    • First observedrepovive_build_delete_testcase
    • First observedrepovive_build_get_solutions
    • First observedrepovive_build_house_round
    • First observedrepovive_build_list_admin_contests
    • First observedrepovive_build_list_sessions
    • First observedrepovive_build_list_testcases
    • First observedrepovive_build_prepare_judge_target
    • First observedrepovive_build_push_problem
    • First observedrepovive_build_run_status
    • First observedrepovive_build_set_custom_checker
    • First observedrepovive_build_set_gen_data
    • First observedrepovive_build_set_generator
    • First observedrepovive_build_set_learn_pages
    • First observedrepovive_build_set_solutions
    • First observedrepovive_build_set_validator
    • First observedrepovive_build_update_problem_info
    • First observedrepovive_build_update_sources
    • First observedrepovive_build_update_statement
    • First observedrepovive_build_version
    • First observedrepovive_check_house_style
    • First observedrepovive_check_interview_capacity
    • First observedrepovive_check_invite_eligibility
    • First observedrepovive_create_vive_checkout
    • First observedrepovive_delete_contest
    • First observedrepovive_delete_conversation
    • First observedrepovive_delete_direct_message
    • First observedrepovive_diff_revisions
    • First observedrepovive_generate_house_problem
    • First observedrepovive_generate_problem
    • First observedrepovive_get_contest
    • First observedrepovive_get_contest_announcements
    • First observedrepovive_get_contest_invite_link
    • First observedrepovive_get_contest_permissions
    • First observedrepovive_get_contest_ranking
    • First observedrepovive_get_contest_registrations
    • First observedrepovive_get_contest_results
    • First observedrepovive_get_conversation_messages
    • First observedrepovive_get_course_editors
    • First observedrepovive_get_history_entry
    • First observedrepovive_get_interview_prices
    • First observedrepovive_get_leaderboard
    • First observedrepovive_get_my_profile
    • First observedrepovive_get_post_categories
    • First observedrepovive_get_problem
    • First observedrepovive_get_problem_submissions
    • First observedrepovive_get_problem_workspace_url
    • First observedrepovive_get_revision
    • First observedrepovive_get_submission
    • First observedrepovive_get_unread_dm_count
    • First observedrepovive_get_unread_notifications_count
    • First observedrepovive_get_vive_earn_methods
    • First observedrepovive_history_status
    • First observedrepovive_judge_solution
    • First observedrepovive_list_blocked_users
    • First observedrepovive_list_contest_problems
    • First observedrepovive_list_contests
    • First observedrepovive_list_conversations
    • First observedrepovive_list_courses
    • First observedrepovive_list_history
    • First observedrepovive_list_house_templates
    • First observedrepovive_list_interview_sessions
    • First observedrepovive_list_my_documents
    • First observedrepovive_list_my_submissions
    • First observedrepovive_list_notifications
    • First observedrepovive_list_posts
    • First observedrepovive_list_problem_sets
    • First observedrepovive_list_problem_templates
    • First observedrepovive_list_revisions
    • First observedrepovive_logout
    • First observedrepovive_mark_conversation_read
    • First observedrepovive_mark_notifications_read
    • First observedrepovive_new_problem_template
    • First observedrepovive_purge_history
    • First observedrepovive_register_for_contest
    • First observedrepovive_remove_contest_permission
    • First observedrepovive_remove_course_editor
    • First observedrepovive_restore_revision
    • First observedrepovive_search_users
    • First observedrepovive_send_direct_message
    • First observedrepovive_set_contest_permission
    • First observedrepovive_set_course_visibility
    • First observedrepovive_start_conversation
    • First observedrepovive_submit_solution
    • First observedrepovive_unblock_user
    • First observedrepovive_undo_last_change
    • First observedrepovive_update_contest
    • First observedrepovive_update_course_details
    • First observedrepovive_update_my_location
    • First observedrepovive_validate_problem
    • First observedrepovive_whoami

TDQS

A3.7/5.0
Disambiguation4/5

Most tools are clearly separated by resource and action, and descriptions explicitly distinguish near-twins like get_my_profile vs whoami and push_problem vs author_complete_problem. However, with 102 tools there are several clusters (history vs revisions, contest ranking vs leaderboard, build status vs build actions) where an agent could still misselect without careful reading.

Naming Consistency4/5

The overwhelming majority of tools follow a consistent repovive_verb_noun snake_case pattern, which makes the set predictable. Minor deviations like whoami, new_problem_template, available_judge_languages, and build_run_status keep it from being a perfect 5.

Tool Count1/5

102 tools is far beyond the 50+ threshold for an extreme mismatch. Even if each tool is individually useful, the surface is too large for an agent to navigate efficiently and for a user to audit coherently.

Completeness3/5

The server covers many domains thoroughly: contest problems, draft building, submissions, DMs, notifications, and revision history. Notable gaps remain, however, including no contest creation, no contest unregistration, no mock-interview booking/cancellation, and no course creation or content management.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    A complete, all-in-one MCP server for Codeforces, enabling AI assistants to access user profiles, compare users, search problems, get practice recommendations, and more.
    8
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A production-ready MCP server for GitHub and competitive programming (Codeforces) that enables AI assistants to fetch user profiles, repository stats, contest history, and personalized problem recommendations.
    MIT

Latest Blog Posts

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/dwin-gharibi/repovive-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server