dhis2w (winterop-com/dhis2w) is an MCP server listed on the M8ven Trust Index. It scores 66 out of 100, grade C. It declares 940 tools. No publisher has claimed this listing.
DHIS2 toolkit for Python — client, CLI, MCP server, browser automation.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
winterop-com
Source: github_repo_search
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
search_toolsSearch the federated tool surface; returns matching tools with their input schemas.
data_aggregate_getFetch a DHIS2 aggregate data value set.
data_aggregate_pushBulk push aggregate data values via POST /api/dataValueSets.
data_aggregate_setSet a single aggregate data value via POST /api/dataValues.
data_aggregate_deleteDelete a single aggregate data value via DELETE /api/dataValues.
data_aggregate_followupSet or clear the follow-up flag on a single aggregate data value (PUT /api/dataValues/followup).
analytics_queryRun a DHIS2 analytics query.
analytics_events_queryRun an event analytics query at /api/analytics/events/{mode}/{program}.
analytics_enrollments_queryRun an enrollment analytics query at /api/analytics/enrollments/query/{program}.
analytics_outlier_detectionRun `/api/analytics/outlierDetection` — flag anomalous data values.
analytics_tracked_entities_queryLine-list tracked entities via `/api/analytics/trackedEntities/query/{trackedEntityType}`.
apps_listList every installed DHIS2 app (`GET /api/apps`). Returns typed App records.
apps_getReturn one installed app by `key`; None if not installed.
apps_install_from_fileInstall / update an app from a local `.zip` at `path` (`POST /api/apps`).
apps_install_from_hubInstall an App Hub app by version id or app id; returns the resolved install target.
apps_uninstallRemove an installed app by `key` (`DELETE /api/apps/{key}`).
apps_reloadRe-read every app from disk (`PUT /api/apps`). No new versions fetched.
apps_hub_listList apps available in the configured App Hub (`GET /api/appHub`).
apps_hub_versionsList every published version of one App Hub app by app id (newest first).
apps_restoreReinstall every hub-backed entry in the given snapshot.
apps_snapshotCapture a portable inventory of every installed app.
apps_hub_url_getRead DHIS2's configured App Hub URL (`keyAppHubUrl` system setting).
apps_hub_url_setPoint DHIS2 at a different App Hub by writing the `keyAppHubUrl` system setting.
apps_updateUpdate a single installed app to its latest App Hub version.
apps_update_allWalk every installed app; install the latest App Hub version where available.
customize_logo_frontUpload an image file as the DHIS2 login-page splash / upper-right logo.
customize_logo_bannerUpload an image file as the DHIS2 top-menu banner logo (authenticated pages).
customize_styleUpload a CSS file served as `/api/files/style` on every authenticated page.
customize_showReturn DHIS2's read-only `/api/loginConfig` summary (what the login app renders).
customize_applyApply a committed preset directory in one call.
datastore_list_namespacesList every namespace in the DHIS2 data store. `user=True` targets the per-user store.
datastore_list_keysList every key in a data-store namespace.
datastore_getReturn the value at `namespace/key` — arbitrary user JSON (object, array, or scalar).
datastore_setCreate or update `namespace/key`. `value` is arbitrary JSON. Returns a status line.
datastore_deleteDelete `namespace/key` from the data store. Returns a status line.
doctor_runProbe a DHIS2 instance — metadata health + DHIS2 data-integrity by default.
doctor_metadataRun only the workspace metadata-health probes (no DHIS2 integrity, no bug drift).
doctor_integrityRun only DHIS2's `/api/dataIntegrity/summary` probes.
doctor_bugsRun only BUGS.md workaround drift probes (workspace maintenance).
files_documents_listList DHIS2 documents (`/api/documents`).
files_documents_getReturn typed metadata for one document by UID.
files_documents_create_externalCreate an EXTERNAL_URL document — no bytes uploaded, DHIS2 links out to `url`.
files_documents_deleteDelete one document by UID.
files_resources_getReturn typed metadata for one file resource (`/api/fileResources/{uid}`).
maintenance_task_type_listList every background-job type DHIS2 tracks under /api/system/tasks.
maintenance_task_listList every task UID recorded for a given job type (most-recent first).
maintenance_task_statusReturn every notification emitted by a task, oldest first.
maintenance_cache_clearPOST /api/maintenance/cache — clear every server-side cache.
maintenance_cleanup_soft_deletedHard-remove soft-deleted rows of the given kind.
maintenance_dataintegrity_checksList every built-in data-integrity check definition.
maintenance_dataintegrity_runKick off a data-integrity run; returns the task envelope.
maintenance_dataintegrity_resultRead the stored result of a completed data-integrity run (summary or details mode).
maintenance_refresh_analyticsRegenerate the analytics star schema (POST /api/resourceTables/analytics, job=ANALYTICS_TABLE).
maintenance_refresh_resource_tablesRegenerate resource tables only (POST /api/resourceTables, job=RESOURCE_TABLE).
maintenance_refresh_monitoringRegenerate monitoring tables (POST /api/resourceTables/monitoring, job=MONITORING).
maintenance_validation_runRun a validation-rule analysis synchronously + return violations.
maintenance_validation_result_listList persisted validation results, with optional filters.
maintenance_validation_validate_expressionParse-check a DHIS2 expression + render a human description.
maintenance_predictors_runRun predictor expressions + emit data values.
messaging_listList conversations the authenticated user is part of.
messaging_getFetch one conversation with its full message thread.
messaging_sendCreate a new conversation with an initial message; returns the typed conversation.
messaging_replyReply to an existing conversation with a plain-text message.
messaging_mark_readMark one or more conversations as read.
messaging_mark_unreadMark one or more conversations as unread.
messaging_deleteDelete a conversation (soft-delete for the calling user).
messaging_set_prioritySet a conversation's ticket-workflow priority: NONE / LOW / MEDIUM / HIGH.
messaging_set_statusSet a conversation's ticket-workflow status: NONE / OPEN / PENDING / INVALID / SOLVED.
messaging_assignAssign a conversation to a user (ticket workflows).
messaging_unassignRemove the assignee from a conversation.
metadata_type_listList every metadata resource type the connected DHIS2 instance exposes.
metadata_listList instances of a metadata resource (e.g. `dataElements`, `indicators`).
metadata_countCount instances of a metadata resource without fetching the rows.
metadata_getFetch one metadata object by UID from the named resource.
metadata_searchCross-resource text search via `/api/metadata` on id / code / name.
metadata_usageReverse lookup — find every object that references the given UID.
metadata_exportDownload a metadata bundle from `GET /api/metadata`.
metadata_diffStructurally compare two metadata bundles (or one bundle vs the live instance).
metadata_diff_profilesDiff a narrow metadata slice between two registered profiles.
metadata_mergeExport a metadata slice from one profile and import it into another.
metadata_merge_bundleImport a saved bundle file into a target profile.
metadata_legend_set_getFetch one LegendSet by UID with its colour bands resolved inline.
metadata_legend_set_createCreate a LegendSet with ordered colour-range legends.
metadata_legend_set_deleteDelete a LegendSet by UID.
metadata_patchApply an RFC 6902 JSON Patch to a metadata object.
metadata_renameBulk-rename metadata objects by RFC 6902 patch.
metadata_shareMerge a sharing change across many UIDs of one resource (read-merge-write).
metadata_retagBulk-rewrite ref / enum fields across a filtered cohort.
metadata_importUpload a metadata bundle via `POST /api/metadata`.
metadata_option_set_getFetch one OptionSet (with options inline) by UID or business code.
metadata_option_set_findLocate one option in a set by `option_code` or `option_name`.
metadata_option_set_attribute_getRead one attribute value off an Option; None if unset.
metadata_option_set_attribute_setSet / replace one attribute value on an Option (read-merge-write).
metadata_option_set_attribute_findReverse lookup — find the Option in a set whose attribute matches a value.
metadata_attribute_getRead one attribute value off any resource with `attributeValues`.
metadata_attribute_setSet / replace one attribute value on any resource (read-merge-write).
metadata_attribute_deleteRemove one attribute value; True if anything was removed, False on no-op.
metadata_attribute_findReverse lookup — UIDs of every resource whose attribute value matches.
metadata_program_rule_getShow one ProgramRule with actions resolved inline.
metadata_program_rule_vars_forList every `ProgramRuleVariable` in scope for a program.
216 further tools are not listed here. The complete surface is in the source.
VITE_SERVE_TARGETMCP_ROUTER_READONLYDHIS2_VERSIONDHIS2_PROFILEThe dhis2w-cli and dhis2w-mcp packages share a profile system that walks env → ./.dhis2/profiles.toml → ~/.config/dhis2/profiles.toml:GITHUB_OUTPUTDHIS2_HEADFULDHIS2_URLDHIS2_PATDHIS2_USERNAMEDHIS2_PASSWORDXDG_CONFIG_HOMETool annotations
1/940 tools have annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
940/940 tools missing one or more hints — search_tools (missing: destructiveHint, idempotentHint, openWorldHint); data_aggregate_get (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); data_aggregate_push (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +937 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Descriptions match behaviour
3 tools describe read intent but their handlers mutate — metadata_export (line 216: Path(output_path).write_text(); metadata_export (line 216: Path(output_path).write_text(); metadata_export (line 216: Path(output_path).write_text()
Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.
Tool test coverage
316/940 tools referenced in tests (34%)
Write tests that reference each tool by name so every tool has at least one test.
Tool description accuracy
3 tools have description/behavior mismatches: metadata_export: description implies read-only but handler writes/deletes/executes; metadata_export: description implies read-only but handler writes/deletes/executes; metadata_export: description implies read-only but handler writes/deletes/executes
Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/winterop-com/dhis2w)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check