MCP server
jeCheck runs a remote Model Context Protocol server. Connect it to an AI assistant and the assistant can read and act on your jeCheck data — audits, tasks, routines, HACCP, schedules, the knowledge base, analytics — with exactly your permissions.
| Server URL | https://app.jecheck.io/mcp |
| Transport | Streamable HTTP (stateless, JSON responses) |
| Auth | OAuth 2.1 (automatic sign-in) or Authorization: Bearer <token> |
| Protocol versions | 2025-06-18 (default), 2025-03-26, 2025-11-25, 2024-11-05 |
Note MCP is part of the Enterprise plan. Each user needs the permission Personal API tokens & AI apps (administrators have it).
Connect your assistant
claude.ai and Claude Desktop
- Open Settings → Connectors → Add custom connector.
- Name it jeCheck, paste
https://app.jecheck.io/mcpand click Add. - Click Connect, sign in to jeCheck and approve access. Untick Allow changes if the assistant should only read.
ChatGPT
In ChatGPT open Settings → Apps & Connectors, enable developer mode under Advanced if your workspace requires it, then Create a connector with the URL https://app.jecheck.io/mcp and OAuth authentication. Sign in to jeCheck when prompted.
Claude Code
claude mcp add --transport http jecheck https://app.jecheck.io/mcp
Run /mcp inside Claude Code and choose Authenticate. To use a personal token instead:
claude mcp add --transport http jecheck https://app.jecheck.io/mcp \
--header "Authorization: Bearer $JECHECK_TOKEN"
Cursor
~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"jecheck": {
"url": "https://app.jecheck.io/mcp",
"headers": { "Authorization": "Bearer jck_pat_xxxxxxxx" }
}
}
}
VS Code (GitHub Copilot agent mode)
.vscode/mcp.json:
{
"servers": {
"jecheck": {
"type": "http",
"url": "https://app.jecheck.io/mcp",
"headers": { "Authorization": "Bearer ${input:jecheck-token}" }
}
},
"inputs": [
{ "id": "jecheck-token", "type": "promptString", "description": "jeCheck personal token", "password": true }
]
}
Windsurf and other clients
Any client that supports remote MCP over HTTP works: use the URL above and either OAuth or the Authorization header with a personal token from API & MCP → My tokens. Clients that only support local (stdio) servers can use a bridge such as npx mcp-remote https://app.jecheck.io/mcp.
Your own agent
OpenAI Responses API:
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-5",
tools=[{
"type": "mcp",
"server_label": "jecheck",
"server_url": "https://app.jecheck.io/mcp",
"headers": {"Authorization": "Bearer jck_live_xxxxxxxx"},
"require_approval": "never",
}],
input="Which locations had the lowest audit scores this week?",
)
print(resp.output_text)
Any MCP SDK (TypeScript, Python, C#, Java…) can connect with the Streamable HTTP client transport.
What the assistant gets
Tools
Every endpoint of the API reference is a tool — its name is shown on the endpoint card (e.g. tasks_list, haccp_deviations_get, audits_get). The tool list is personal: a user sees only tools allowed by their permissions, the company plan and the token scope. Tools are annotated: read-only tools have readOnlyHint, deleting tools destructiveHint, so clients can ask for confirmation.
Narrow the tool set with query parameters on the server URL — useful for clients with a tool limit:
| URL | Effect |
|---|---|
https://app.jecheck.io/mcp?toolsets=tasks,audits,analytics |
Only these sections (section keys from the reference URLs) |
https://app.jecheck.io/mcp?readonly=1 |
Only read-only tools |
Resources
| URI | Content |
|---|---|
jecheck://me, jecheck://company |
Who you are connected as, company and plan |
jecheck://tasks/{uuid}, jecheck://audits/{id}, jecheck://checklists/{id} |
Records as JSON |
jecheck://instructions/{uuid} |
Knowledge-base documents as Markdown |
jecheck://help/{section}/{slug} |
jeCheck help-center articles |
Prompts
Ready-made scenarios the user can pick in the client: Weekly operations review, Location deep dive, Overdue tasks digest, Audit follow-up, Draft a checklist, HACCP status today.
Example questions
- "Show the five worst locations by audit score this month and the most frequent violations there."
- "Which corrective tasks are overdue at Dostyk Plaza? Group them by owner."
- "Create a task for Aigerim to replace the fridge seal at Abay Ave by Friday."
- "Are any HACCP temperature logs missing today?"
- "Who is on shift right now at the central kitchen?"
- "Summarise the new hygiene instruction and list who hasn't acknowledged it."
Safety
- The assistant acts as you — it can never see or change more than you can in jeCheck.
- Changes made through MCP are recorded in history like any other change by you.
- Approve write access only for assistants you trust; you can connect read-only.
- Disconnect an app at any time in API & MCP → AI apps; access stops immediately.
Protocol details
POST https://app.jecheck.io/mcpwith JSON-RPC 2.0 messages (single or batch); notifications get202 Accepted.GETreturns405(no server-initiated stream). No session id is needed.- Supported methods:
initialize,ping,tools/list,tools/call,resources/list,resources/templates/list,resources/read,prompts/list,prompts/get,completion/complete,logging/setLevel. - Tool results contain both a text block and
structuredContentwith the same JSON as the REST API ({"data": …, "meta": …}); failures setisError: true. - Unauthenticated requests get
401withWWW-Authenticate: Bearer resource_metadata="…"pointing to the OAuth metadata.
curl -X POST https://app.jecheck.io/mcp \
-H "Authorization: Bearer $JECHECK_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"tasks_list","arguments":{"overdue":true}}}'