For AI agents: llms.txt is a short guide that sends you to the rules your problem needs, and rules.json holds every rule of this playbook as JSON.
Required
Take notices about illegal content and answer each one
If you host content for users, offer an electronic form to report illegal content. Confirm each report, decide on it, and give the affected user a statement of reasons.
Risk if broken
A law broken
Applies when
The project it has users in the EU.
How to do it
Article 16 applies to every hosting service, whatever its size. The form asks for the reason, the exact web address, the sender's name and email, and a statement of good faith. Name and email stay optional for reports of child sexual abuse material. Send the sender a receipt, then the decision and the ways to appeal it. Article 17 covers removing, hiding or demoting content, and suspending an account, the service or payments. Each needs a statement of reasons to the user whose contact details you have. It names the decision, the facts, any automated means, the legal or contract ground, and the ways to appeal. Article 18 makes you tell the police at once about a suspected crime that threatens someone's life or safety. Record each decision as an audit event.
Examples
Using these examples: they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.
JavaScript example
const STATEMENT_FIELDS = ['measure', 'facts', 'automatedMeans', 'ground', 'explanation', 'redress'];
export const missingStatementFields = restriction =>
STATEMENT_FIELDS.filter(field => restriction.statementOfReasons?.[field] == null);
Python example
STATEMENT_FIELDS = ["measure", "facts", "automated_means", "ground", "explanation", "redress"]
def missing_statement_fields(restriction: dict) -> list[str]:
statement = restriction.get("statement_of_reasons") or {}
return [field for field in STATEMENT_FIELDS if statement.get(field) is None]
How to check
An end-to-end test files a notice with all four fields and gets a receipt by email. A unit test fails every restriction record that lacks one of the six fields of Article 17(3).
Sources
Related rules
- Write an audit event for every sensitive action in Compliance
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/compliance/online-platforms/notice-and-action">Agent Wranglers compliance playbook</a>. In code you write, add a comment next to it with the same link.