What it is — and is not
datanivra-mcp is a local stdio adapter: an agent host starts it on your machine or runner, and it calls the ordinary DataNivra API with the session of whoever runs it (a person's session, or a CI workload session). It is an interface to a policy-constrained service, not a bypass:
- there is no hosted MCP endpoint and no unauthenticated network listener;
- the agent gets exactly the permissions of the session it runs with — it cannot approve requests, author or approve profiles, register sources, resolve secrets, run SQL or export data;
- every decision (approved, waiting for a person, denied) is taken by the server, as for any other caller.
Status: Preview. The adapter and its examples live in examples/mcp (see examples/mcp/README.md).
Tools
| Tool | Calls |
|---|---|
list_permitted_profiles | GET /v1/test-data/profiles |
get_profile_schema | the approved definition of one profile version |
validate_test_data_request | local manifest validation (no network) |
plan_test_data_request | POST /v1/test-data/plan (no side effects) |
request_test_data | POST /v1/test-data/requests |
get_request_status | GET /v1/test-data/requests/{test_data_request_id} |
get_certification_evidence | certificate and value-free lease evidence metadata |
get_lease_metadata | environment lease metadata (a target reference, never credentials) |
release_test_data_lease | POST /v1/test-data/requests/{test_data_request_id}/release |
Security
- Metadata only, bounded. Tool results carry ids, states, reason codes, counts and digests, with size limits; never rows or credentials. Tokens are never placed in the agent's context.
- Untrusted input. Tool arguments are validated against the v1 contracts like any manifest; text an agent passes is data, never instructions to the server. A prompt-injected agent can at most ask for what the session's approved profiles allow.
- Tenant binding. The session determines the tenant; another tenant's ids are indistinguishable from unknown ids.
- Audit correlation. Every call is an ordinary API call with a correlation id and audit events.
Example
{
"tool": "request_test_data",
"arguments": {
"request": {
"profile": { "name": "healthcare-integration", "version": 1 },
"scenarios": [{ "scenario_code": "HC_ROUTINE_CARE", "count": 500 }],
"purpose_ref": "QA-1234"
},
"idempotency_key": "agent-run-4242-1"
}
}Typical answers: DENIED with WORKLOAD_NOT_PERMITTED_BY_PROFILE (the profile does not name the identity), PENDING_HUMAN_APPROVAL with AUTOMATIC_APPROVAL_DISABLED, or AUTO_APPROVED inside an enabled envelope. Check examples/mcp/README.md for the exact argument schema of each tool.