An AI agent platform built on Cloudflare Workers with multi-tool support for browser automation, document search, calendar management, image generation, memory persistence, and delegated task execution.
Clopinette-ai defines 10 tools with explicit Zod schemas and descriptions. Most tools have clear action enums and parameter types. However, several tools lack output schema documentation, descriptions are sometimes generic or vague, and error handling guidance is minimal. The browser tool is well-structured with detailed descriptions; calendar, note, and memory tools are solid. Delegate, docs, and skills tools have weaker parameter documentation. No tool annotations (readOnlyHint/destructiveHint) are present. Average description length ~150 chars (within baseline), but many parameter descriptions are terse or missing context about valid ranges and dependencies.
Interactive web browser. Navigate to URLs, see page content (snapshot), click elements, fill forms, take screenshots. Use 'snapshot' after navigation to see what's on the page. Elements are identified by 'ref' numbers from the snapshot. Results carry browserRun.sessionId and, after navigate or 'live_view', browserRun.liveViewUrl (a link a human can open to watch or take over the browser). Use 'diagnostics' for operator guidance, or 'request_human' when login, MFA, CAPTCHA, or sensitive data entry blocks automation.
Manage the user's calendar events and appointments. USE THIS when the user mentions a date, meeting, appointment, deadline, or event. Detect intent in ANY language: rdv/meeting/rendez-vous/appointment/reunión/Termin/予定 etc. Parse dates naturally — the current date is in your system prompt. Actions: create, upcoming, list, update, delete.
Ask the user a clarifying question when their request is ambiguous. USE when: - The request could mean multiple things and guessing wrong wastes effort - You need a preference or choice before proceeding - Critical information is missing DO NOT use for trivial questions — just make a reasonable choice and proceed. On the web the user answers a form and you get the answer immediately; elsewhere the question text is shown to the user as your response.
Delegate independent research tasks to async sub-agents that run in the background. Returns IMMEDIATELY — the user can keep chatting while sub-agents work. When the LAST sub-agent finishes, an automatic follow-up turn synthesizes all results and pushes the final answer to the user. Sub-agents have web search + URL read only — no browser, no memory writes. Use for: parallel research on 2-3 complementary angles, deep web research, gathering diverse info. Do NOT delegate simple lookups — use web or docs directly.
No output schemas documented for any tool. LLMs cannot predict response structure, forcing them to parse unstructured results and plan downstream calls blindly.
Delegate and skills tools lack parameter constraints (min/max, regex patterns). 'tasks' array in delegate has no size limit; 'steps' in skills has no length guidance. Unbounded inputs risk API overload.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. LLMs cannot distinguish safe reads from destructive writes, risking accidental data loss.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Search through uploaded documents — unified keyword + semantic search. Actions: - 'search': finds documents by query (auto-routes: semantic AI search if available, keyword fallback). - 'ask': get an AI-generated answer with source citations (requires AutoRAG). - 'list': show all uploaded files. - 'read_spillover': read a previously spilled tool result by its r2Key (when a large result was offloaded to storage). USE when user asks about their documents, PDFs, or uploaded files.
Generate an image from a text description. USE when: - User asks to 'create an image', 'draw', 'generate a picture' - User wants a visual representation of something Write a detailed English prompt for best results. Be specific about style, colors, composition. IMPORTANT: Do NOT include image URLs or markdown image links in your response. The image is delivered automatically by the system. Just describe what was generated.
Save durable information to persistent memory that survives across sessions. Memory is injected into future turns, so keep it compact and focused on facts that will still matter later. WHEN TO SAVE (do this proactively, don't wait to be asked): - User corrects you or says 'remember this' / 'don't do that again' - User shares a preference, habit, or personal detail (name, role, timezone, coding style) - You discover something about the environment (OS, installed tools, project structure) - You learn a convention, API quirk, or workflow specific to this user's setup - You identify a stable fact that will be useful again in future sessions PRIORITY: User preferences and corrections > environment facts > procedural knowledge. The most valuable memory prevents the user from having to repeat themselves. Do NOT save task progress, session outcomes, completed-work logs, or temporary state. If you've solved a problem that could be needed later, save it as a skill instead. TWO TARGETS: - 'user': who the user is — name, role, preferences, communication style, pet peeves, personal details - 'memory': your notes — environment facts, project conventions, tool quirks, lessons learned SKIP: trivial/obvious info, things easily re-discovered, raw data dumps, and temporary task state. Operations: 'read' to see current content, 'add' to append, 'replace' to swap text, 'remove' to delete.
Manage the user's personal notes. USE IMMEDIATELY — call this tool BEFORE responding — when the user wants to save, note down, or bookmark something. Detect intent in ANY language: note/save/remember/keep/bookmark/записать/noter/guardar/notieren/メモ etc. When saving: call notes FIRST, then confirm briefly. Do NOT give advice about the note content unless asked. Actions: save (new note), list (recent notes), delete (remove by id), edit (update by id), search (find notes by keyword).
Hybrid keyword + semantic search across past conversation sessions. Combines FTS5 exact-match with Vectorize embedding similarity via RRF fusion. Finds paraphrases and concept matches, not just keyword overlaps. USE THIS PROACTIVELY when: - The user says 'we did this before', 'remember when', 'last time' - You want to check if you've solved a similar problem before - The user references something from a previous session - You need context that might have been discussed earlier The semantic half handles synonyms and rephrased questions — one query is usually enough.
Manage reusable skills (.md files). Skills store proven solutions to complex problems. WHEN TO USE: - BEFORE starting a complex task: search for an existing skill that matches - AFTER solving a complex problem (5+ tool calls): create a skill to save the approach - If a loaded skill had wrong steps or missing pitfalls: patch it immediately Actions: list, search, view, create, edit, patch (find/replace), delete. Always include: steps, pitfalls discovered, verification method.
Error handling lacks recovery guidance. No tool returns actionable error messages (e.g., 'User not found. Try search_users() first'). Agents cannot self-correct on failures.
Docs tool 'read_spillover' parameter lacks description of what r2Key is or how to obtain it. Skills tool 'patch' action has no guidance on escaping special characters in find/replace.