Connect an AI assistant to a project
Let the AI tool your team already uses read one project's compliance summary and registers, and draft records for your team to accept, over the Model Context Protocol (MCP).
About 10 minutes
Izini runs an MCP server. An AI tool that supports remote MCP servers can connect to one Izini project with an AI assistant key, then answer questions such as "which data subject requests are due this week?" or "which vendor agreements need review?", and draft a register entry or an incident for your team to check.
You need: a plan that includes AI assistants, someone who manages integrations (an organisation admin or owner, or the Privacy Engineer / IT Lead), and an AI tool that connects to remote MCP servers: a chat app that signs in with OAuth, such as ChatGPT or Claude.ai, or a tool that takes a key, such as Claude Code.
What the AI can and cannot do
The AI reaches one project, the one the key was made in, and only what the key's scopes allow:
| Scope | Tools | What the AI gets |
|---|---|---|
reports:read |
get_compliance_summary, list_data_subject_requests, list_incidents, get_training_status, get_car_readiness |
Counts, statuses and due dates; training figures; how far each annual audit return has got. Never who made a request, what they wrote, what an incident report says, individual staff, or the audit answers. |
registers:read |
list_processing_activities, list_vendor_agreements, list_dpias, list_risks, list_vendor_assessments, list_subprocessor_notices, list_transfer_assessments |
The RoPA, vendor agreements and due diligence, sub-processor notices, transfer assessments, the risk register and DPIA status. Never contact people, signatures, DPIA answers, or the descriptions, controls, notes and conditions staff wrote. |
registers:write |
draft_system_or_vendor, draft_processing_activity |
Drafts only. |
incidents:draft |
draft_incident |
Drafts only. A draft starts no clock and alerts no one. |
A new AI assistant key has the two read scopes. Tick a drafting scope only if you want the AI to draft.
There is no tool to delete anything, to file, submit or send anything to the NDPC or anyone else, to send email, to touch consent records, or to change keys, webhooks, team members, billing or settings.
Drafts wait for a person
Everything the AI writes lands in AI Drafts in Izini (under Administration in the menu), labelled with the key's name. It is not in the RoPA, the Data Mapping Studio, the breach register, the CAR or any report until someone in your team accepts it, and they can dismiss it instead. A draft is deleted 90 days after it is accepted or dismissed, or 90 days after it was drafted if nobody answers it; an accepted record stays in its register.
An incident draft has no clock. When someone accepts it, they enter when your organisation became aware of the breach, and the incident's 72-hour clock runs from that time. The NDPA's 72 hours for notifying the NDPC run from when you became aware of the breach (s.40(2)), not from when the draft is accepted, so review incident drafts promptly.
Why drafts need a person: prompt injection
An AI that reads text someone else wrote (a vendor contract, an email, a web page) can be steered by instructions hidden in it. No server can fully prevent that. So Izini limits what a misled AI could do: read one project's summaries, and draft records a person checks. Check each draft before you accept it.
Where the data goes
What Izini returns to the AI goes to your AI provider, under your agreement with them. Deciding whether that is acceptable, including any transfer outside Nigeria, is your decision as the controller. The tools return no requester identifiers and no incident text, and drafts with an email address, phone number or card number are refused.
Connect a chat app (ChatGPT, Claude.ai)
Add Izini to the app as a custom connector with the URL https://app.izini.ng/api/mcp and OAuth sign-in:
- Claude.ai: Izini is in Claude's connector directory (claude.ai/directory/izini). In Claude, open Customize > Connectors, choose Discover, search for Izini and select Connect. You can still add it by hand instead: + Add, then Add custom connector, with the URL above. On Team and Enterprise an Owner adds connectors under Organization settings > Connectors, and members then choose Connect.
- ChatGPT (on the web): open Plugins (chatgpt.com/plugins), select +, then Add custom MCP server. Give it a name, paste the URL as the Server URL, choose OAuth, accept the warning and select Create as a plugin. Install it, then type
@in the prompt box and pick Izini.
The app sends you to Izini:
- Sign in to Izini, with two-factor if you use it. Only organisation admins, owners and the Privacy Engineer / IT Lead can approve.
- Choose the one project the app may reach, and check what it may do. The boxes start with what the app asked for: Claude.ai asks for all four, so the drafting permissions are ticked too; an app that asks for nothing starts with the two read permissions. Untick Draft register entries and Draft incidents if the AI should only read.
- Approve. You go back to the app, which is now connected.
The connection appears under Developers > API keys as "
Izini accepts sign-in from apps that register themselves (Dynamic Client Registration) and from claude.ai and chatgpt.com by their published client documents. Registering gives an app nothing: a person still approves each connection.
When the AI drafts nothing
Drafts appear under Administration > AI Drafts, and the menu counts those waiting. If none arrives:
- The AI may have checked first. Asked to draft something your registers already hold (a payroll activity, a vendor you have), an AI app often reads the register, finds it and drafts nothing. Ask for something new, or tell it to draft anyway.
- The connection may not allow it. Look at the connection's scopes under Developers > API keys; without a drafting permission the AI can only read. Revoke and connect again with the permission ticked.
- The AI may be waiting for you. Some apps ask before they call a tool that writes; answer yes in the chat.
- The draft may have been refused. Drafts containing an email address, a phone number or a card number are refused, and the AI is told why.
Connect a tool with a key (Claude Code and others)
1. Make an AI assistant key
- Go to Developers > API keys in the project you want the AI to reach.
- Choose Create key, then An AI assistant.
- Name it after the tool and its users, such as
Claude Code (finance team). Drafts show this name. - Keep the read scopes, add a drafting scope if you want one, and create the key.
- Copy the key and the MCP server URL. The key is shown once.
2. Connect your AI tool
The server is at https://app.izini.ng/api/mcp and uses the Streamable HTTP transport. Send the key as Authorization: Bearer <key>.
Claude Code: keep the key in an environment variable, then add the server:
export IZINI_AI_KEY=iz_dsar_live_...
claude mcp add --transport http --header "Authorization: Bearer $IZINI_AI_KEY" izini https://app.izini.ng/api/mcpOther tools: add a remote MCP server (HTTP or Streamable HTTP) with the URL above and an Authorization header with the value Bearer followed by the key, as your tool's MCP documentation describes. Keep the key out of files you commit.
3. Check it works
Ask the AI "What is the compliance summary for this project?". It should call get_compliance_summary. Each call appears in the key's Requests on the API keys page, with the tool's name.
Limits and errors
- Each key may make 60 requests a minute and 10,000 a day; drafting tools, 30 drafts a minute. At most 200 drafts wait in a project at once.
- A key from another kind (an integration key) is refused with 403, and an AI assistant key does not work on the rest of the API.
- If your plan stops including AI assistants, or the subscription lapses, the key is refused within five minutes.
- To cut the AI off at once, revoke the key on the API keys page.
- To turn AI assistants off for the whole organisation, an organisation admin or owner switches them off under Account Settings > Organization. Every AI assistant key is then refused and no new one can be made; drafts already waiting can still be accepted or dismissed. Switching it on again lets the keys that are not revoked work again.
More guides
- Keep consent records in your own databaseReceive each consent choice with a signed webhook and store it next to your own users, so your systems can check consent without calling Izini.
- Send subject requests from your backendLet signed-in users ask to see, correct or delete their data from inside your app, and open the case in Izini for your DPO.
- Stop a release until its privacy review is approvedAdd one step to your CI/CD pipeline that fails unless the release passed its privacy-by-design review in Izini.
- Send Izini events to Slack, Teams, Jira or Google SheetsReady-made n8n workflows and Make scenarios that check each webhook is really from Izini, then post it to a channel, open a Jira issue or add a row to a sheet. No code.
- Izini on WordPress and WooCommerceAdd the consent banner to a WordPress site with the Izini plugin, hold back tracking scripts until visitors agree, and see consent totals and cookie scans in wp-admin.
- Izini with Google Tag ManagerLoad the Izini consent banner from Google Tag Manager with the Izini tag template, set Google Consent Mode defaults, and have Google tags follow each visitor's choice.