0.0 / 30
Public leaderboard
Public assessment
VeriTeknik/pluggedin-mcp-proxy (@pluggedin/pluggedin-mcp-proxy)
What changed in the harness
Selection accuracy 100→100, token cost up 4%, unconfirmed writes 0%→0%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
23.0 / 30
03Economics
16.2 / 20
04Discoverability
12.4 / 20
Highest-impact fix
Estimated gain +30 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
16 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
pluggedin_setup |
no_return_description |
Get started with Plugged.in MCP by selecting a topic (getting_started, api_key, configuration, or troubleshooting) and returns step-by-step setup instructions plus API key configuration guidance for that topic. No API key is required to call this tool. |
pluggedin_discover_tools |
no_return_description |
Triggers discovery of tools, resources, and templates for the configured MCP servers in the Pluggedin App. Set server_uuid to discover only that server, or force_refresh to bypass the cache. Returns the discovery status and the discovered tools/resources/templates for each server. |
pluggedin_create_document |
no_return_description |
Creates and saves an AI-generated document with attribution metadata to the user's library in Plugged.in (requires API key). On success, returns the created document identifier, which can be used with pluggedin_get_document or pluggedin_update_document. |
pluggedin_list_documents |
no_return_description |
Lists documents from the user's library (requires API key), applying optional filters such as source, category, tags, model, and date range, and returning a paginated set of document metadata controlled by limit and offset. |
pluggedin_get_document |
no_return_description |
Retrieves a document by its UUID and returns its metadata along with the full text content when includeContent is true; includeVersions adds prior versions. Use after pluggedin_search_documents to fetch the complete content of a found document. |
pluggedin_update_document |
no_return_description |
Updates an existing AI-generated document by replacing, appending, or prepending content, recording the change with optional attribution metadata and version tracking (requires API key). Returns the updated document and details of the new version. |
pluggedin_mark_notification_done |
name_restates_behavior no_return_description |
Marks a notification as done (read) using the notificationId returned by pluggedin_list_notifications, so it no longer shows up in unread results. Returns a confirmation that the notification was marked done. |
pluggedin_delete_notification |
no_return_description |
Permanently deletes a notification using the notificationId returned by pluggedin_list_notifications. Returns a confirmation once the notification has been removed. |
pluggedin_clipboard_set |
no_return_description |
Stores a value in the clipboard under a semantic name (upserted) or numeric idx (fails if the index already exists), with configurable MIME type, encoding, visibility, and TTL (max 1 year, default 24 hours), max 2 MB per entry. Returns the stored entry and its metadata. |
pluggedin_clipboard_get |
no_return_description |
Reads a single clipboard entry by name or idx, or with neither returns all entries as a paginated list using limit and offset, optionally filtered by contentType. Returns the entry values and metadata. |
pluggedin_clipboard_delete |
no_return_description |
Deletes clipboard entries by name or idx, or clears all entries with clearAll. Returns the number of entries that were deleted. |
pluggedin_clipboard_list |
no_return_description |
Lists all clipboard entries with metadata, optionally filtered by contentType and paginated with limit and offset; image values are truncated to the first 1000 characters for preview. Returns the entries and their metadata. |
pluggedin_clipboard_push |
no_return_description |
Appends a value to the indexed clipboard at the next auto-incrementing index, for building ordered pipelines or stack-like operations. Returns the index at which the value was stored. |
pluggedin_memory_session_end |
name_restates_behavior no_return_description |
Finalizes an active memory session and triggers its Z-report generation (an AI-compressed summary of the session). Pass the memory_session_id returned by pluggedin_memory_session_start. Returns the generated session summary/report. |
pluggedin_memory_observe |
no_return_description |
Records an observation during an active memory session (identified by session_uuid); the Analytics Agent classifies it into memory ring types (procedures, practice, longterm, shocks) and uses outcome for success-gated promotion. Returns a confirmation and the classification result. |
pluggedin_memory_details |
no_return_description |
Retrieves the full content and metadata for up to 20 selected memories by their UUIDs (progressive disclosure Layer 3). Use after pluggedin_memory_search to expand lightweight results. Returns the complete details for each requested memory. |
Selection evidence
Confusable tool pairs.
11 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
pluggedin_clipboard_get |
pluggedin_clipboard_list |
high | get without name/idx lists all entries with pagination, functionally duplicating list; a task like 'show me all my clipboard entries' can be plausibly routed to either tool. |
pluggedin_memory_search |
pluggedin_memory_details |
medium | Both surface memory content; details requires memory_uuids that must come from search, so a task like 'give me the full details of my memories about X' may wrongly trigger details without UUIDs or search without full content. |
pluggedin_search_documents |
pluggedin_memory_search |
medium | Both are 'search' tools with near-identical naming on a domain-agnostic task like 'search for X', where nothing in the phrasing reveals whether the target is documents or memories. |
pluggedin_list_documents |
pluggedin_search_documents |
medium | list_documents accepts a searchQuery filter while search_documents returns matching metadata, so 'find/show documents about X' plausibly selects the wrong member. |
pluggedin_create_document |
pluggedin_update_document |
medium | Both write AI-generated documents requiring an API key; a task like 'save this content to my document' is ambiguous between creating a new document and appending to an existing one. |
pluggedin_mark_notification_done |
pluggedin_delete_notification |
medium | Both take a single notificationId and mutate that notification; a task like 'dismiss/clear this notification' could route to either marking done or deleting. |
pluggedin_clipboard_get |
pluggedin_clipboard_pop |
medium | get is read-only while pop removes the entry; a task like 'fetch the newest clipboard entry' may wrongly choose pop (destructive) because get requires a name/index the agent lacks. |
pluggedin_list_documents |
pluggedin_get_document |
low | list enumerates many documents while get requires a specific ID; a task like 'get/retrieve my documents' could pick get when list is intended. |
pluggedin_search_documents |
pluggedin_get_document |
low | search returns metadata and points to get for full content, so a task like 'retrieve the full document content' could pick search without an ID or get without searching first. |
pluggedin_memory_session_start |
pluggedin_memory_observe |
low | Both belong to an active memory session; 'start capturing observations for this chat' could trigger observe without first starting a session, or start without recording anything. |
pluggedin_clipboard_delete |
pluggedin_clipboard_pop |
low | Both remove clipboard entries; 'remove the newest entry' could route to delete (which needs an index/name the agent may not know) instead of pop, which removes the highest index. |
Compare the field