Skip to main content
Glama
cakrawala-tumbuh

content-validity-index-mcp

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-backend
  • Token diverifikasi seperti backend: RS256 via JWKS (OIDC discovery dari issuer), issuer dicek, audience tidak diverifikasi.

  • Klaim groups dipetakan 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/mcp

3. 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:latest

Dirilis 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

AUTHENTIK_ISSUER_URL + CLIENT_ID + CLIENT_SECRET + MCP_BASE_URL diisi

API Key statis

VS Code / CLI

MCP_API_KEY diisi (Authorization: Bearer <key>)

(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

BACKEND_API_BASE_URL

http://localhost:8000

Base URL backend (tanpa /api/v1)

BACKEND_API_TOKEN

Token Authentik untuk pemakaian stdio/lokal

MCP_TRANSPORT

stdio

stdio, http, atau sse

MCP_HOST / MCP_PORT

127.0.0.1 / 8000

bind saat http/sse

MCP_BASE_URL

URL publik (wajib untuk OAuth Authentik)

AUTHENTIK_ISSUER_URL

Issuer OIDC (sama dengan backend)

AUTHENTIK_CLIENT_ID / _SECRET

Kredensial OAuth2 Provider

AUTHENTIK_ADMIN_GROUP

cvi-admin

Group → role admin

AUTHENTIK_EXPERT_GROUP

cvi-expert

Group → role expert

MCP_API_KEY

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

whoami

Sinkronkan & tampilkan profil + role user (POST /auth/sync)

list_instruments

Daftar instrumen yang dapat diakses user

get_instrument

Detail satu instrumen

list_instrument_items

Daftar item pada instrumen

list_instrument_domains

Daftar dimensi/domain pada instrumen (termasuk background_color)

create_instrument_domain

Buat dimensi/domain baru, termasuk warna latar background_color (admin)

update_instrument_domain

Perbarui dimensi/domain, termasuk warna latar background_color (admin)

delete_instrument_domain

Hapus dimensi/domain dari instrumen (admin)

calculate_cvi

Hitung hasil CVI (I-CVI, S-CVI) sebuah instrumen (admin)

list_my_assignments

Daftar penugasan penilaian milik expert

list_assignment_ratings

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 Docker

Lisensi

MIT.

Available Tools

11 tools
calculate_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYesID numerik instrumen yang akan dihitung.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYesID instrumen pemilik domain.
nameYesNama domain/dimensi (wajib).
construct_definitionNoDefinisi konstruk kisi-kisi (kolom D, opsional).
behavioral_indicator_exampleNoContoh indikator perilaku (kolom E, opsional).
theory_referenceNoReferensi teori (kolom F, opsional).
background_colorNoWarna latar dimensi dalam format hex ``#RRGGBB`` (mis. ``#FDE68A``, opsional). Dipakai sebagai latar item dimensi ini pada tabel penilaian expert.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYesID instrumen pemilik domain.
domain_idYesID domain yang akan dihapus.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYesID numerik instrumen.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/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 (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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
assignment_idYesID numerik penugasan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYesID numerik instrumen.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYesID numerik instrumen.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoJumlah baris yang dilewati untuk pagination (default 0).
limitNoJumlah maksimum baris yang dikembalikan (default 100).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness4/5

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.

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, 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives; it 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).

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYesID instrumen pemilik domain.
domain_idYesID domain yang akan diperbarui.
nameNoNama domain baru (opsional).
construct_definitionNoDefinisi konstruk kisi-kisi (kolom D, opsional).
behavioral_indicator_exampleNoContoh indikator perilaku (kolom E, opsional).
theory_referenceNoReferensi teori (kolom F, opsional).
background_colorNoWarna latar dimensi dalam format hex ``#RRGGBB`` (mis. ``#A7F3D0``, opsional).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness4/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

A3.8/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: domain CRUD, list instruments/domains/items/assignments/ratings, calculate CVI, get instrument, and whoami. No overlapping functionality.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness3/5

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

ActivityInactive
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

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/cakrawala-tumbuh/content-validity-index-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server