movahedi.ca Privacy Data

Canadian privacy enforcement, glossary, and Quebec Law 25 guidance for AI agents.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
94%
Qualität der Benennung
76%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (1)

  • LOWTool 'privacy_search_enforcement_actions' name length outside 3-30 rangein privacy_search_enforcement_actions

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~1,911Tokens (Tool-Definitionen)
~3.2 KBTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (1.49% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "privacy": {
      "url": "https://movahedi.ca/mcp"
    }
  }
}

Remote-Endpunkte

https://movahedi.ca/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (5)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢privacy_search_enforcement_actions(query, regulator, year, limit, offset)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Free-text search over case titles and summaries.",
      "examples": [
        "facial recognition",
        "TikTok"
      ]
    },
    "regulator": {
      "type": "string",
      "enum": [
        "cai",
        "opc"
      ],
      "description": "Limit to one regulator: 'cai' (Quebec Commission d'acces a l'information, Law 25) or 'opc' (federal Office of the Privacy Commissioner, PIPEDA).",
      "examples": [
        "cai"
      ]
    },
    "year": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 1970,
      "description": "Filter by decision year.",
      "examples": [
        2025
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10,
      "description": "Maximum cases to return in this call."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000,
      "default": 0,
      "description": "Number of matching cases to skip. Use next_offset from the previous response to page forward."
    }
  },
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "description": "Matching enforcement actions.",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "regulator",
          "date",
          "summary",
          "source_url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "regulator": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "penalty": {
            "type": [
              "number",
              "null"
            ]
          },
          "source_url": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      }
    },
    "total_count": {
      "type": "integer",
      "description": "Total number of matches across all pages."
    },
    "has_more": {
      "type": "boolean",
      "description": "True when more results exist beyond this page."
    },
    "next_offset": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Pass as 'offset' in the next call to continue paging. Null when has_more is false."
    },
    "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."
    }
  },
  "required": [
    "results",
    "total_count",
    "has_more",
    "next_offset",
    "truncated"
  ],
  "additionalProperties": false
}
🟢privacy_get_enforcement_case(id)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[a-z0-9-]{1,64}$",
      "description": "The case ID from a search result.",
      "examples": [
        "cai-2026-05-06-openai"
      ]
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "case": {
      "type": "object",
      "required": [
        "id",
        "title",
        "regulator",
        "date",
        "summary",
        "source_url"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "regulator": {
          "type": "string"
        },
        "date": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "penalty": {
          "type": [
            "number",
            "null"
          ]
        },
        "source_url": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "case"
  ],
  "additionalProperties": false
}
🟢privacy_lookup_glossary_term(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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "pattern": "^[a-z0-9-]{1,64}$",
      "description": "The glossary slug.",
      "examples": [
        "law-25",
        "pipeda"
      ]
    }
  },
  "required": [
    "term"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "term": {
      "type": "object",
      "required": [
        "term",
        "slug",
        "definition"
      ],
      "properties": {
        "term": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "definition": {
          "type": "string"
        },
        "related": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "updated": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "term"
  ],
  "additionalProperties": false
}
🟢privacy_list_glossary_terms(query, starts_with, limit, offset)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Search term names and definitions.",
      "examples": [
        "consent"
      ]
    },
    "starts_with": {
      "type": "string",
      "pattern": "^[a-z]$",
      "description": "Only terms whose slug starts with this letter.",
      "examples": [
        "p"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20,
      "description": "Maximum terms to return in this call."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000,
      "default": 0,
      "description": "Number of matching terms to skip. Use next_offset to page forward."
    }
  },
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "terms": {
      "type": "array",
      "description": "Matching glossary terms.",
      "items": {
        "type": "object",
        "required": [
          "term",
          "slug",
          "definition"
        ],
        "properties": {
          "term": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "definition": {
            "type": "string"
          },
          "related": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "updated": {
            "type": "string"
          }
        }
      }
    },
    "total_count": {
      "type": "integer",
      "description": "Total number of matches across all pages."
    },
    "has_more": {
      "type": "boolean",
      "description": "True when more results exist beyond this page."
    },
    "next_offset": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Pass as 'offset' in the next call to continue paging. Null when has_more is false."
    },
    "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."
    }
  },
  "required": [
    "terms",
    "total_count",
    "has_more",
    "next_offset",
    "truncated"
  ],
  "additionalProperties": false
}
🟢privacy_law25_requirements(category)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "Governance",
        "Transparency",
        "Individual rights",
        "Data lifecycle",
        "Transfers",
        "Consent",
        "Incident response",
        "Minors",
        "Automated decisions",
        "Oversight"
      ],
      "description": "Only requirements in this category. Omit for the full checklist.",
      "examples": [
        "Consent"
      ]
    }
  },
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "requirements": {
      "type": "array",
      "description": "Law 25 requirements.",
      "items": {
        "type": "object",
        "required": [
          "id",
          "category",
          "title",
          "requirement",
          "guidance"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "requirement": {
            "type": "string"
          },
          "guidance": {
            "type": "string"
          }
        }
      }
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "All available categories for the 'category' filter."
    },
    "total_count": {
      "type": "integer",
      "description": "Number of requirements returned."
    }
  },
  "required": [
    "requirements",
    "categories",
    "total_count"
  ],
  "additionalProperties": false
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet5 Tools
verifiziertVersion nicht aufgezeichnet5 Tools