content-validity-index-mcp
Integrates with Authentik as an identity provider for OAuth authentication, enabling secure access to the MCP server and forwarding user tokens to the backend.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@content-validity-index-mcpCalculate CVI for instrument 'Employee Engagement'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
content-validity-index-mcp
MCP Server berbasis FastMCP untuk content-validity-index-backend. Memungkinkan AI client (Claude Desktop, Claude Code, Claude Web) menelusuri instrumen, item, dimensi, penugasan expert, dan menghitung Content Validity Index (CVI) lewat antarmuka MCP standar.
Bisa dipakai lewat tiga kanal — stdio, Claude Code, dan Claude Web (claude.ai) — dengan otentikasi memakai Authentik sebagai identity provider (POLA B: issuer yang sama dengan backend, token user diteruskan ke backend).
Arsitektur auth (POLA B)
Backend & web app content-validity-index sudah memakai Authentik. MCP ini konsisten dengan keduanya:
Claude.ai ──OAuth Authentik──▶ MCP (AuthentikProvider, issuer = backend)
Claude Code/VS ──API key / token──▶ MCP (BearerApiKeyVerifier)
MCP ──teruskan Bearer <token-user>──▶ content-validity-index-backendToken diverifikasi seperti backend: RS256 via JWKS (OIDC discovery dari issuer), issuer dicek, audience tidak diverifikasi.
Klaim
groupsdipetakan ke role dengan logika yang sama:cvi-admin→ admin, selain itu → expert.Otorisasi (admin/expert) ditegakkan backend — MCP hanya meneruskan token.
Related MCP server: Unofficial Clinical Trials MCP Server
Cara pakai per kanal
1. stdio — Claude Desktop / Claude Code lokal
Client men-spawn proses langsung. Untuk stdio, token user diambil dari
BACKEND_API_TOKEN (token Authentik milik Anda).
{
"mcpServers": {
"content-validity-index": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/cakrawala-tumbuh/content-validity-index-mcp@v0.1.0",
"content-validity-index-mcp"
],
"env": {
"BACKEND_API_BASE_URL": "https://cvi-api.example.com",
"BACKEND_API_TOKEN": "<token-authentik-anda>"
}
}
}
}Atau via Docker (stdio): command: "docker",
args: ["run","--rm","-i","-e","MCP_TRANSPORT=stdio","-e","BACKEND_API_BASE_URL=...","-e","BACKEND_API_TOKEN=...","ghcr.io/cakrawala-tumbuh/content-validity-index-mcp:latest"].
2. Claude Code
# stdio
claude mcp add content-validity-index -- \
uvx --from "git+https://github.com/cakrawala-tumbuh/content-validity-index-mcp@v0.1.0" \
content-validity-index-mcp
# remote (server HTTP yang sudah berjalan)
claude mcp add --transport http content-validity-index https://mcp.example.com/mcp3. Claude Web (claude.ai) — remote, WAJIB OAuth Authentik
Jalankan server sebagai service HTTP di URL publik HTTPS, lalu daftarkan sebagai Custom Connector di claude.ai. Memerlukan konfigurasi Authentik.
docker run -d -p 8000:8000 \
-e MCP_BASE_URL=https://mcp.example.com \
-e AUTHENTIK_ISSUER_URL=https://auth.example.com/application/o/cvi/ \
-e AUTHENTIK_CLIENT_ID=... -e AUTHENTIK_CLIENT_SECRET=... \
-e AUTHENTIK_ADMIN_GROUP=cvi-admin -e AUTHENTIK_EXPERT_GROUP=cvi-expert \
-e BACKEND_API_BASE_URL=https://cvi-api.example.com \
ghcr.io/cakrawala-tumbuh/content-validity-index-mcp:latestDirilis via GitHub (GitHub Release + image GHCR). Tidak tersedia di PyPI. Install dari sumber:
pip install "git+https://github.com/cakrawala-tumbuh/content-validity-index-mcp@v0.1.0".
Otentikasi (Authentik)
Server memilih auth otomatis dari environment:
Mekanisme | Untuk | Aktif jika |
OAuth Authentik | Claude Web / browser |
|
API Key statis | VS Code / CLI |
|
(tanpa auth) | stdio / jaringan lokal | tidak ada yang diisi |
Buat OAuth2/OIDC Provider + Application di Authentik (Redirect URI
https://<MCP_BASE_URL>/auth/callback, scope openid profile email groups),
pakai issuer/slug yang sama dengan backend, lalu isi AUTHENTIK_*. Kontrol
akses dilakukan via Policy Binding di Authentik dan role dari groups.
Konfigurasi (environment)
Variabel | Default | Keterangan |
|
| Base URL backend (tanpa |
| — | Token Authentik untuk pemakaian stdio/lokal |
|
|
|
|
| bind saat http/sse |
| — | URL publik (wajib untuk OAuth Authentik) |
| — | Issuer OIDC (sama dengan backend) |
| — | Kredensial OAuth2 Provider |
|
| Group → role admin |
|
| Group → role expert |
| — | API key untuk klien non-OAuth |
Deployment cloud memakai uvicorn:
uvicorn content_validity_index_mcp.asgi:app --host 0.0.0.0 --port 8000.
Tools
Tool | Deskripsi |
| Sinkronkan & tampilkan profil + role user (POST |
| Daftar instrumen yang dapat diakses user |
| Detail satu instrumen |
| Daftar item pada instrumen |
| Daftar dimensi/domain pada instrumen (termasuk |
| Buat dimensi/domain baru, termasuk warna latar |
| Perbarui dimensi/domain, termasuk warna latar |
| Hapus dimensi/domain dari instrumen (admin) |
| Hitung hasil CVI (I-CVI, S-CVI) sebuah instrumen (admin) |
| Daftar penugasan penilaian milik expert |
| Daftar rating pada sebuah penugasan |
Pengembangan
pip install -e .
python -m content_validity_index_mcp # jalankan lokal (stdio)
make test # gate test (lint + unit) di DockerLisensi
MIT.
Available Tools
11 toolscalculate_cviA
Hitung hasil Content Validity Index (CVI) sebuah instrumen.
Mengembalikan I-CVI per item, S-CVI/Ave, S-CVI/UA, dan interpretasinya berdasarkan penilaian para expert. Memerlukan akses admin di backend.
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes | ID numerik instrumen yang akan dihitung. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It reveals that admin access is needed and specifies the tool's output (indices and interpretations). It does not mention side effects, but the operation appears read-only, and the requirement is well-stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences: purpose, output summary, and requirement. Every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema is present, the description appropriately covers purpose, return values, and authorization requirements. For a tool with one parameter and no annotations, this is complete and informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal value beyond the input schema for the single parameter (instrument_id). Schema coverage is 100%, so baseline is 3. The description repeats the schema's description ('ID numerik instrumen yang akan dihitung') without further elaboration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates the Content Validity Index (CVI) of an instrument, including specific return values (I-CVI per item, S-CVI/Ave, S-CVI/UA) and interpretations. This differentiates it from sibling tools like get_instrument or list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes that admin access is required ('Memerlukan akses admin di backend'), providing a clear usage condition. It does not explicitly mention when not to use the tool or name alternatives, but the context of calculating CVI versus CRUD operations is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_instrument_domainB
Buat dimensi/domain baru pada sebuah instrumen (khusus admin).
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes | ID instrumen pemilik domain. | |
| name | Yes | Nama domain/dimensi (wajib). | |
| construct_definition | No | Definisi konstruk kisi-kisi (kolom D, opsional). | |
| behavioral_indicator_example | No | Contoh indikator perilaku (kolom E, opsional). | |
| theory_reference | No | Referensi teori (kolom F, opsional). | |
| background_color | No | Warna latar dimensi dalam format hex ``#RRGGBB`` (mis. ``#FDE68A``, opsional). Dipakai sebagai latar item dimensi ini pada tabel penilaian expert. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the creation action and admin restriction. It does not disclose side effects, required permissions beyond admin, whether changes are reversible, or what happens on success/failure. No annotations exist to compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that contains the essential information: action and restriction. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and 6 parameters, the description omits context like return value behavior, example usage, or explanation of domain/dimension concept. It is insufficient for a complex creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add much. However, it adds no extra meaning; it does not explain any parameters or their roles beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Buat dimensi/domain baru') and the resource ('pada sebuah instrumen'), and specifies admin-only access. It unambiguously indicates creation, distinguishing from sibling tools like update or delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., update_instrument_domain or list_instrument_domains). There is no mention of prerequisites, conditions, or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_instrument_domainA
Hapus dimensi/domain dari instrumen (khusus admin).
Item yang terkait domain ini akan kehilangan referensi domain-nya
(domain_id menjadi null), bukan ikut terhapus.
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes | ID instrumen pemilik domain. | |
| domain_id | Yes | ID domain yang akan dihapus. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical behavioral trait: deleting the domain sets domain_id to null in related items rather than deleting them. No annotations exist, so the description fully covers this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loading the purpose and following with essential behavioral context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a fully described schema and an output schema present, the description sufficiently covers side effects and usage constraints for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters. The tool's description adds no further parameter-level details, so a baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Hapus dimensi/domain dari instrumen') and the target resource. It also mentions admin-only, which adds specificity and distinguishes it from sibling tools like create and update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates it is for admin use only, but does not explicitly guide when to use this tool vs. alternatives such as update_instrument_domain or list_instrument_domains. Usage is implied but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instrumentB
Ambil detail satu instrumen berdasarkan ID.
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes | ID numerik instrumen. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden. It simply states the tool gets details, but does not disclose any behavioral traits such as auth requirements, error handling (e.g., if ID not found), or that it is a read-only operation. The description adds minimal value beyond the tool name and input schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is appropriately front-loaded. However, it could include slight elaboration without being verbose, so a small deduction is made.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 (not shown), return values need not be explained, but the description does not address when to use this vs list_instruments, nor any prerequisites or typical usage scenarios. The tool is simple, but the description lacks contextual completeness to fully guide the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the parameter fully (100% description coverage). The description only mentions 'berdasarkan ID' without adding new semantics or constraints. According to the scoring guidelines, high schema coverage yields a baseline of 3, and the description does not compensate with additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Ambil detail' (get details) and the resource 'satu instrumen' (an instrument), with the method 'berdasarkan ID' (by ID). This distinguishes it from sibling tools like list_instruments (which lists without ID) and CRUD domain tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For instance, it doesn't specify that this should be used when an instrument ID is known, and that list_instruments is for browsing without an ID. The description lacks explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assignment_ratingsB
Daftar penilaian (rating) pada sebuah penugasan.
| Name | Required | Description | Default |
|---|---|---|---|
| assignment_id | Yes | ID numerik penugasan. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description should fully disclose behavior. It only states it lists ratings; does not mention read-only nature, potential errors, authentication needs, or effects. Minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise and front-loaded. No unnecessary words; every part contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists), the description is sufficient for understanding the basic function. Could be slightly enhanced with expected output format, but output schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter 'assignment_id' described as 'ID numerik penugasan.' The description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists ratings on an assignment. It identifies the specific verb (list) and resource (assignment ratings), and is distinct from sibling tools which do not involve ratings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Description only states functionality without context on prerequisites, limitations, or exclusion scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_instrument_domainsB
Daftar dimensi/domain (beserta definisi konstruk) pada instrumen.
Setiap domain menyertakan background_color (hex #RRGGBB atau
null), yaitu warna latar dimensi yang dipakai untuk membedakan item
antar-dimensi pada tabel penilaian expert.
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes | ID numerik instrumen. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals that each domain includes a background_color (hex or null) used for differentiation in expert tables, but does not explicitly state the operation is non-destructive or mention authentication, rate limits, or return structure beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose. The second sentence adds a specific detail about the background_color field. No redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, list operation, output schema exists), the description adequately covers the purpose and a notable output field. It does not discuss error handling or edge cases, but for a list tool this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single required parameter (instrument_id). The description echoes the parameter's purpose ('pada instrumen') but adds no additional semantic value beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists dimensions/domains with construct definitions for an instrument, using the verb 'list' and the resource 'instrument domains'. It does not explicitly differentiate from sibling tools, but the action is distinct enough from create/delete/update/get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_instrument (for a single domain) or list_instrument_items. It does not specify prerequisites like instrument existence or permission requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_instrument_itemsB
Daftar item (butir) pada sebuah instrumen.
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes | ID numerik instrumen. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It only states it lists items, but does not mention readonly nature, authentication needs, pagination, or any 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it lacks structured formatting (e.g., bullet points) that could improve readability for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists), the description adequately conveys the core purpose. However, it omits behavioral details like result format, ordering, or pagination, which could be useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter, so baseline is 3. The description adds no extra meaning beyond what the schema already provides ('ID numerik instrumen').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists items of an instrument using a specific verb ('daftar' = list) and resource. It distinguishes itself from siblings like 'list_instruments' which lists instruments, not their items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no context for usage, and no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_instrumentsA
Daftar instrumen penelitian yang dapat diakses user.
Hasil difilter backend sesuai role: admin melihat semua instrumen, expert melihat instrumen yang ditugaskan kepadanya.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Jumlah baris yang dilewati untuk pagination (default 0). | |
| limit | No | Jumlah maksimum baris yang dikembalikan (default 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses role-based filtering but does not mention pagination behavior or result ordering. Output schema exists but is not referenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that efficiently convey the tool's purpose and key behavior. No fluff, though it could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description is fairly complete for a list tool. It covers purpose and role filtering; missing notes on pagination are partially covered by schema parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no parameter-level information beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: listing research instruments accessible by the user. It distinguishes from siblings by specifying role-based filtering behavior, which is unique among sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (to list instruments based on user role). It does not explicitly state when not to use or name alternatives, but the role filtering effectively guides usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_assignmentsA
Daftar penugasan penilaian (assignment) milik user expert saat ini.
Returns:
List penugasan expert, atau dict error bila gagal.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only mentions return type (list or error) but does not disclose read-only nature, auth requirements, or side effects, leaving behavioral details incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise two-sentence description with no wasted words, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and presence of output schema, the description adequately explains the tool's purpose and return type, though it omits details like pagination or ordering which are likely irrelevant for a simple list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (schema coverage 100%), so description adds value by clarifying scope ('milik user expert saat ini'), achieving baseline for 0-param tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists assessment assignments for the current expert user, matching the name and distinguishing it from siblings like 'list_assignment_ratings'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives; it simply describes the action without context for exclusion or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_instrument_domainA
Perbarui dimensi/domain pada instrumen (khusus admin).
Hanya field yang diisi (non-null) yang dikirim ke backend; field yang dibiarkan kosong tidak diubah. Untuk mengosongkan sebuah field, gunakan antarmuka web (tool ini tidak mengirim nilai null eksplisit).
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes | ID instrumen pemilik domain. | |
| domain_id | Yes | ID domain yang akan diperbarui. | |
| name | No | Nama domain baru (opsional). | |
| construct_definition | No | Definisi konstruk kisi-kisi (kolom D, opsional). | |
| behavioral_indicator_example | No | Contoh indikator perilaku (kolom E, opsional). | |
| theory_reference | No | Referensi teori (kolom F, opsional). | |
| background_color | No | Warna latar dimensi dalam format hex ``#RRGGBB`` (mis. ``#A7F3D0``, opsional). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains the critical behavior that only non-null fields are sent and that null fields are left unchanged. It also notes admin-only access. It does not cover error handling or side effects, but the key behavioral trait is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and behavior. Every sentence serves a clear purpose with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, admin restriction, and update semantics. Given that the input schema is well-documented and an output schema exists, the description is sufficiently complete for an update operation, though it could mention prerequisites or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 value by explaining that optional parameters (despite anyOf null) are only updated if non-null, clarifying the intended behavior beyond the schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('update'), resource ('dimension/domain on instrument'), and includes 'admin only' to clarify scope. It clearly distinguishes from sibling tools like create_instrument_domain (create) and delete_instrument_domain (delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance: only non-null fields are updated, and to clear a field, use the web interface. While it doesn't name an alternative tool explicitly, the instruction is practical and informs the agent when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiA
Ambil profil user saat ini dan sinkronkan dari Authentik.
Memanggil POST /api/v1/auth/sync di backend: memverifikasi token
Authentik, menyinkronkan data user (email, nama, role dari groups)
ke database, lalu mengembalikan profil tersinkron. Berguna untuk
mengetahui identitas dan role (admin/expert) sebelum memakai
tool lain.
Returns:
Dict profil user (id, email, full_name, role, dst.),
atau dict error bila gagal.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses the behavioral traits: it calls POST /api/v1/auth/sync, verifies token, syncs data, and returns a profile or error. It goes beyond the input schema (which has no annotations) by detailing the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four sentences, front-loading the purpose and providing necessary details without extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, backend call, data synced, return value, and error case. With no parameters and an output schema present, it is complete for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so the description is not required to add parameter details. It does not attempt to describe parameters, which is appropriate given 100% schema coverage and zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the current user profile and syncs from Authentik, specifying the backend call, verification, and data synced. It distinguishes from sibling tools which handle instruments and assignments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states it is useful for knowing identity and role before using other tools, providing clear context. It does not specify when not to use or list alternatives, but given siblings are unrelated, this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: domain CRUD, list instruments/domains/items/assignments/ratings, calculate CVI, get instrument, and whoami. No overlapping functionality.
Tool names consistently follow a verb_noun pattern in snake_case (e.g., create_instrument_domain, list_instruments). The only exception is 'whoami', which is a widely accepted idiom.
With 11 tools covering instruments, domains, items, assignments, ratings, user info, and CVI calculation, the count is well-scoped for the domain without being overwhelming or insufficient.
The set lacks CRUD for instruments and items (only get and list are provided). This creates notable gaps, as users cannot create or update these core entities via the MCP server.
Maintenance
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
Evidence-readiness MCP server: validate, audit, and score briefs, memos, and evidence packs.
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
A paid remote MCP for AI SDK eval dashboard, built to return verdicts, receipts, usage logs, and aud
MCP server for AI access to Swagger by SmartBear.
Related MCP Servers
- AlicenseAqualityAmaintenanceProvides validated clinical scoring tools for AI agents via MCP, with evidence-based calculators and smart tool discovery.64Apache 2.0
- FlicenseBqualityDmaintenanceProvides access to the ClinicalTrials.gov API, enabling search, analysis, and retrieval of clinical trial data through MCP tools.178
- AlicenseNot gradedqualityDmaintenanceEnables querying and browsing SNOMED CT medical terminology concepts, including search, details, and hierarchy navigation via MCP tools.3MIT
- AlicenseCqualityCmaintenanceMCP server for retrieving clinical standard content from the CDISC Library, supporting controlled terminology, ADaM, SDTM, CDASH, SEND metadata, and search.317MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cakrawala-tumbuh/content-validity-index-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server