# AI Certificates

> Practice questions for the four Claude certifications. The assistant never sees the key.

- name: study.aicertificates/practice-exams
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 88/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/study.aicertificates%2Fpractice-exams
- tools: https://api.protogrid.dev/v1/servers/study.aicertificates%2Fpractice-exams/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "practice-exams": {
      "type": "http",
      "url": "https://aicertificates.study/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-56d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 88/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 1 of 5 tools declare all four hints; missing: get_practice_question (destructiveHint, idempotentHint); my_progress (destructiveHint, idempotentHint); open_study (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 939 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 5, about 939 tokens to load them all
- tool set hash: d4f556119a90b129e6b82331faa9bf19
- badge: [![protogrid quality](https://protogrid.dev/badge/study.aicertificates/practice-exams.svg)](https://protogrid.dev/servers/study.aicertificates/practice-exams)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://aicertificates.study/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (5)

- `check_answer`: Grades the user's choice and returns an explanation for EVERY option, including the ones they did not pick. On this exam two options are frequently defensible and only one is credited, so the reasons the wrong options lose are the part worth teaching.
- `get_practice_question`: Returns one original practice question with its options and no answer key. Present it to the user and let them choose before calling check_answer. Pass every id already served in exclude_ids — this server is stateless and remembers nothing.
- `list_exams`: The Claude certifications covered here, with exam codes, item counts, fees and the full domain list with published weights. Call this first to get valid exam slugs.
- `my_progress`: Their recorded history for one exam, broken down by blueprint domain with the weakest first, plus how their misses compare with everyone else's on the same free-form questions. Call this at the start of a study session to decide what to drill, and after a run of questions to show what moved. It names the domain to pass to get_practice_question, and when their misses follow the crowd's favorite wrong answers it says to drill those with focus: "traps". Only a signed-in account has history; anonymous callers are told so rather than shown zeros.
- `open_study`: Open or resume the study page for an exam, optionally focused on a domain or a sub-objective. Use this when someone asks to study rather than to be quizzed in chat: the page gives them a visible question they answer themselves, and once it is open a richer set of tools appears for reading and steering that screen. Returns the URL; a browser agent should navigate there.
