MCP Server

movahedi.ca Privacy Data

ca.movahedi/privacy
Knowledge & Documentation Legal & Compliance Public & reachable MCP 2026-07-28

What this MCP does

Provides Canadian privacy definitions, enforcement case research, and Quebec Law 25 compliance requirements.

privacy_get_enforcement_case
Get enforcement case details
Get the full record of one privacy enforcement action by its ID, including the plain-language summary, outcome, penalty amount, and the official regulator source link. Use this after privacy_search_enforcement_actions when you need complete details on a specific case, or when a case ID (like 'cai-2026-05-06-openai') is already known.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^[a-z0-9-]{1,64}$', 'examples': ['cai-2026-05-06-openai'], 'description': 'The case ID from a search result.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['case'], 'properties': {'case': {'type': 'object', 'required': ['id', 'title', 'regulator', 'date', 'summary', 'source_url'], 'properties': {'id': {'type': 'string'}, 'date': {'type': 'string'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'penalty': {'type': ['number', 'null']}, 'summary': {'type': 'string'}, 'regulator': {'type': 'string'}, 'source_url': {'type': 'string'}}}}, 'additionalProperties': False}
privacy_law25_requirements
Get Law 25 compliance requirements
Get the Quebec Law 25 compliance checklist: the concrete requirements organizations must meet, covering the privacy officer, purposes, consent, individual rights, retention, cross-border transfers, breach notification, minors' data, automated decisions, and complaint paths. Use this when someone asks what Law 25 requires, how to comply with Law 25, or for a gap-assessment checklist. Optionally filter to one category like 'Consent' or 'Incident response'.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'category': {'enum': ['Governance', 'Transparency', 'Individual rights', 'Data lifecycle', 'Transfers', 'Consent', 'Incident response', 'Minors', 'Automated decisions', 'Oversight'], 'type': 'string', 'examples': ['Consent'], 'description': 'Only requirements in this category. Omit for the full checklist.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['requirements', 'categories', 'total_count'], 'properties': {'categories': {'type': 'array', 'items': {'type': 'string'}, 'description': "All available categories for the 'category' filter."}, 'total_count': {'type': 'integer', 'description': 'Number of requirements returned.'}, 'requirements': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'category', 'title', 'requirement', 'guidance'], 'properties': {'id': {'type': 'string'}, 'title': {'type': 'string'}, 'category': {'type': 'string'}, 'guidance': {'type': 'string'}, 'requirement': {'type': 'string'}}}, 'description': 'Law 25 requirements.'}}, 'additionalProperties': False}
privacy_list_glossary_terms
Browse the privacy glossary
Browse the 260+ term Canadian privacy glossary with optional text search or first-letter filtering. Use this to explore which terms exist, find the right slug for privacy_lookup_glossary_term, or gather definitions on a topic. Results are paginated: follow next_offset while has_more is true.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum terms to return in this call.'}, 'query': {'type': 'string', 'examples': ['consent'], 'maxLength': 120, 'description': 'Search term names and definitions.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 100000, 'minimum': 0, 'description': 'Number of matching terms to skip. Use next_offset to page forward.'}, 'starts_with': {'type': 'string', 'pattern': '^[a-z]$', 'examples': ['p'], 'description': 'Only terms whose slug starts with this letter.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['terms', 'total_count', 'has_more', 'next_offset', 'truncated'], 'properties': {'terms': {'type': 'array', 'items': {'type': 'object', 'required': ['term', 'slug', 'definition'], 'properties': {'slug': {'type': 'string'}, 'term': {'type': 'string'}, 'related': {'type': 'array', 'items': {'type': 'string'}}, 'updated': {'type': 'string'}, 'definition': {'type': 'string'}}}, 'description': 'Matching glossary terms.'}, 'has_more': {'type': 'boolean', 'description': 'True when more results exist beyond this page.'}, 'truncated': {'type': 'boolean', 'description': 'True when results were shortened to fit the 50 KB output cap. Use the paginated REST API for the full set.'}, 'next_offset': {'type': ['integer', 'null'], 'description': "Pass as 'offset' in the next call to continue paging. Null when has_more is false."}, 'total_count': {'type': 'integer', 'description': 'Total number of matches across all pages.'}}, 'additionalProperties': False}
privacy_lookup_glossary_term
Look up a privacy glossary term
Look up the plain-language definition of a privacy or data-protection term, from 'Law 25' and 'PIPEDA' to 'privacy officer', 'data breach', and AI governance concepts. Use this whenever someone asks what a term means, or when you need a precise definition before answering a Canadian privacy question. Terms are identified by slug (for example 'law-25'); use privacy_list_glossary_terms to discover slugs.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['term'], 'properties': {'term': {'type': 'string', 'pattern': '^[a-z0-9-]{1,64}$', 'examples': ['law-25', 'pipeda'], 'description': 'The glossary slug.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['term'], 'properties': {'term': {'type': 'object', 'required': ['term', 'slug', 'definition'], 'properties': {'slug': {'type': 'string'}, 'term': {'type': 'string'}, 'related': {'type': 'array', 'items': {'type': 'string'}}, 'updated': {'type': 'string'}, 'definition': {'type': 'string'}}}}, 'additionalProperties': False}
privacy_search_enforcement_actions
Search privacy enforcement actions
Search verified Canadian privacy enforcement actions: CAI orders and decisions under Quebec Law 25 and OPC findings under PIPEDA. Use this when someone asks about privacy fines, enforcement cases against a company, what regulators decided, or investigations (for example 'Has the CAI fined anyone for facial recognition?' or 'TikTok privacy investigation Canada'). Returns matching cases with dates, plain-language summaries, penalties, and links to the official regulator source. Start here to find a case ID, then call privacy_get_enforcement_case for full details.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'year': {'type': 'integer', 'maximum': 1970, 'minimum': 2000, 'examples': [2025], 'description': 'Filter by decision year.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum cases to return in this call.'}, 'query': {'type': 'string', 'examples': ['facial recognition', 'TikTok'], 'maxLength': 120, 'description': 'Free-text search over case titles and summaries.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 100000, 'minimum': 0, 'description': 'Number of matching cases to skip. Use next_offset from the previous response to page forward.'}, 'regulator': {'enum': ['cai', 'opc'], 'type': 'string', 'examples': ['cai'], 'description': "Limit to one regulator: 'cai' (Quebec Commission d'acces a l'information, Law 25) or 'opc' (federal Office of the Privacy Commissioner, PIPEDA)."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['results', 'total_count', 'has_more', 'next_offset', 'truncated'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'regulator', 'date', 'summary', 'source_url'], 'properties': {'id': {'type': 'string'}, 'date': {'type': 'string'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'penalty': {'type': ['number', 'null']}, 'summary': {'type': 'string'}, 'regulator': {'type': 'string'}, 'source_url': {'type': 'string'}}}, 'description': 'Matching enforcement actions.'}, 'has_more': {'type': 'boolean', 'description': 'True when more results exist beyond this page.'}, 'truncated': {'type': 'boolean', 'description': 'True when results were shortened to fit the 50 KB output cap. Use the paginated REST API for the full set.'}, 'next_offset': {'type': ['integer', 'null'], 'description': "Pass as 'offset' in the next call to continue paging. Null when has_more is false."}, 'total_count': {'type': 'integer', 'description': 'Total number of matches across all pages.'}}, 'additionalProperties': False}
Added
privacy_law25_requirements
Sept. 25, 2026, 2:40 a.m.
Added
privacy_list_glossary_terms
Sept. 25, 2026, 2:40 a.m.
Added
privacy_lookup_glossary_term
Sept. 25, 2026, 2:40 a.m.
Added
privacy_get_enforcement_case
Sept. 25, 2026, 2:40 a.m.
Added
privacy_search_enforcement_actions
Sept. 25, 2026, 2:40 a.m.