
The Fidget Labs API
EU AI Act risk classification, over REST and MCP. No authentication, no API key, and nothing stored.
What this is
We build agent-ready systems for other organisations. This is ours. The classification engine behind our free EU AI Act Risk Check is exposed as a callable endpoint, so an agent can answer a regulatory scoping question without a person filling in a form.
It takes a description of how an organisation builds or uses AI and returns which risk tiers of Regulation (EU) 2024/1689 apply, the deadline and maximum penalty for each, and whether the organisation leans provider or deployer.
Results are informational and not legal advice. Every response carries a disclaimer field saying so. Pass it on.
No authentication, nothing stored
There is no API key to request and no account to create. Both endpoints are read-only and stateless: no submission is written to a database, emailed, or attached to a CRM record. That is what makes it safe to leave open, and it is why you can call it from an agent without a credential exchange.
There is no published rate limit today. Both endpoints are pure computation over the request body, so they are cheap to serve, and we would rather not invent a number we are not enforcing. Be reasonable. If you are planning sustained volume, say hello first, and we will agree a limit rather than discover one.
Classify a use
POST /api/v1/eu-ai-act/classify
curl -X POST https://fidgetlabs.io/api/v1/eu-ai-act/classify \
-H 'Content-Type: application/json' \
-d '{
"size": "100_1000",
"industry": "hr_staffing",
"role": "director",
"transparencyInteraction": "yes",
"transparencyContent": "no",
"roleSignal": "builder",
"aiFrequency": "daily",
"annexDomains": ["employment"],
"biometricUse": "no",
"prohibited": []
}'Every field is required except industryOther. The two array fields accept an empty array, which means none of the listed options apply. Call GET /api/v1/eu-ai-act/questions for the wording of each question and every permitted value.
Errors
Everything under /api/v1 answers in JSON, including 404s and 405s. Branch on code, which is stable. The message may be reworded.
{
"error": {
"code": "invalid_answers",
"message": "One or more answers are missing or not a permitted value.",
"hint": "Check fieldErrors for the specific fields.",
"fieldErrors": {
"aiFrequency": "Invalid option: expected one of ..."
}
}
}MCP server
The same two capabilities over the Model Context Protocol, at https://fidgetlabs.io/api/mcp. Streamable HTTP, no auth. Tools: classify_eu_ai_act_risk and get_eu_ai_act_questions.
{
"mcpServers": {
"fidget-labs": {
"type": "http",
"url": "https://fidgetlabs.io/api/mcp"
}
}
}Reading the site as data
Pages whose content is structured data also answer to Accept: text/markdown. Ask for markdown at a higher q-value than HTML and you get markdown, with Vary: Accept on the response. Pages written directly as components stay HTML and point at llms.txt in a Link header, because a hand-maintained markdown twin would go stale and we would rather tell you that than pretend.
curl -H 'Accept: text/markdown;q=1.0, text/html;q=0.5' https://fidgetlabs.io/- /openapi.jsonOpenAPI 3.1. Generated from the same schema the endpoint validates against.
- /llms.txtNavigation index for agents. What we do, what it costs, and every URL on the site.
- /llms-full.txtThe full corpus. Every article summary, the whole glossary, all case studies.
- /.well-known/mcp/server-card.jsonMCP server card, for runtimes that discover servers rather than take a URL.
- /sitemap.xmlEvery indexable URL, with lastmod.
- /feed.xmlRSS for Focal Point.

Ready to accelerate your digital transformation?
Let's discuss how we can help you build a composable, future-proof digital ecosystem that delights your customers.