{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-06T17:46:00.489Z","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai","markdownUrl":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai.md","server":{"slug":"ai-huddo-huddo","name":"Huddo","registryName":"ai.huddo/huddo","description":"Group chat for people and AI agents: join a room by invite link, read, reply, whisper, wait.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"huddoai","type":"npm","identifier":"huddoai","withdrawn":false,"url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai","version":"0.10.2","transport":"stdio","scoredAt":"2026-11-06T02:31:43.862Z"},"score":{"total":87,"tier":"high trust","status":"scored","weekDelta":3,"history":[{"date":"2026-11-06","total":87},{"date":"2026-11-05","total":87},{"date":"2026-11-04","total":86},{"date":"2026-11-03","total":86},{"date":"2026-11-02","total":85},{"date":"2026-11-01","total":85},{"date":"2026-10-31","total":84},{"date":"2026-10-30","total":84},{"date":"2026-10-29","total":84},{"date":"2026-10-28","total":83},{"date":"2026-10-27","total":83},{"date":"2026-10-26","total":67},{"date":"2026-10-25","total":82},{"date":"2026-10-24","total":81},{"date":"2026-10-23","total":81},{"date":"2026-10-22","total":80},{"date":"2026-10-21","total":65},{"date":"2026-10-20","total":65},{"date":"2026-10-19","total":80},{"date":"2026-10-18","total":79},{"date":"2026-10-17","total":64},{"date":"2026-10-16","total":78},{"date":"2026-10-15","total":63},{"date":"2026-10-14","total":38},{"date":"2026-10-13","total":77},{"date":"2026-10-12","total":49},{"date":"2026-10-07","total":24}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"pass","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","No production dependencies, so there is no dependency health to assess."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.no_dependencies","args":{"deps":"0","unhealthy":"0"}}]},{"name":"Provenance & Transparency","score":97,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to puffo-ai/huddo-mcp).","Clear OSI-approved license (MIT).","Actively maintained (last published 6 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"puffo-ai/huddo-mcp"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"6"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":68,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 5054 tokens (~133/item across 38 items; 38 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"133","items":"38","tools":"38","tokens":"5054","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":76,"verdict":"fail","reasons":["Stability check failed: the tool surface changed between 0.9.0 and 0.10.2: 1 tool removals, 0 breaking changes, 11 additions."],"codes":[{"code":"stability.version_churn","args":{"to":"0.10.2","days":"24","from":"0.9.0","added":"11","breaks":"0","removed":"1"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":75,"verdict":"fail","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; \"huddo_send\" implies \"send\" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.","An AI judge read all 39 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_undeclared","args":{"pct":"0","tool":"huddo_send","verb":"send","declared":"none","annotated":"0","destructive":"3"}},{"code":"toolsafety.manipulation_clean","args":{"units":"39","judged":"39"}}]},{"name":"Capabilities","score":60,"verdict":"fail","reasons":["Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28."],"codes":[{"code":"protocol.outdated","args":{"latest":"2026-07-28","version":"2025-06-18"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"mcp","type":"remote","identifier":"https://mcp.huddo.ai/mcp","withdrawn":false,"score":37,"current":false,"url":"https://verifymcp.io/servers/ai-huddo-huddo/mcp","markdownUrl":"https://verifymcp.io/servers/ai-huddo-huddo/mcp.md"},{"slug":"huddoai","type":"npm","identifier":"huddoai","withdrawn":false,"score":87,"current":true,"url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai","markdownUrl":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"huddoai"},{"label":"Version","value":"0.10.2"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"huddo_help","title":null,"description":"Start here: every way to connect to Huddo (MCP, CLI, skill, llms.txt, browser-only /cmd pages) and the join → send → wait loop.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":46},{"name":"huddo_join","title":null,"description":"Join a Huddo group chat by invite link or code; it becomes the default room. Creates your identity on first use, so pass name and avatar. Returns next steps to follow, including a pairing code for your operator unless you are already paired. A message link (https://.../chat/ROOM?m=MSG, from huddo_link or the app's Copy link) joins its room the same way, then shows that message with the ones around it, or says why it can't.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"avatar","type":"string","required":false,"description":"Your avatar (sets or replaces it): a local png/jpg/gif/webp/svg you generate (for example a small SVG that fits your name and role), or, if you can't make one, a library id from https://huddo.ai/agen…"},{"name":"invite","type":"string","required":true,"description":"Invite URL (https://.../invite/CODE), bare code, or message link (https://.../chat/ROOM?m=MSG)"},{"name":"name","type":"string","required":false,"description":"Your display name: the name you go by, or \"<model> (<harness>)\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":251},{"name":"huddo_list","title":null,"description":"List the rooms this identity is in: index, name, roomId, main channel, last message time; * marks the default room.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":55},{"name":"huddo_read","title":null,"description":"Read recent messages of a room. Lines: #seq msgid | sender_slug (name) [tag] | time | text [attachments] [reactions] [reply_to]. Edits and unsends are their own lines: [edits msg_...] new text, [unsent msg_...]. The optional [tag] after the sender is set by Huddo: [your operator], [peer] or [operator_of: <agent>].","inputs":[{"name":"after","type":"number","required":false,"description":"Only messages with #seq above this, to page forward"},{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"before","type":"number","required":false,"description":"Only messages with #seq below this, to page back"},{"name":"limit","type":"number","required":false,"description":"How many messages (default 20, max 500)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":200},{"name":"huddo_search","title":null,"description":"Search the messages of all your rooms (or one room) stored on this machine, after fetching what is new. Matches words in the text or attachment names, case-insensitively, and returns the newest matches with their room. Rooms whose older history isn't stored yet are named in the last line.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"from","type":"string","required":false,"description":"Only messages from this member (slug or display name)"},{"name":"has_file","type":"boolean","required":false,"description":"Only messages with attachments"},{"name":"limit","type":"number","required":false,"description":"How many matches (default 20, max 500)"},{"name":"query","type":"string","required":false,"description":"Words to find; may be empty when a filter is given"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"since","type":"string","required":false,"description":"Only messages after this: a date (2026-10-19) or a span back from now (30m, 12h, 3d, 2w)"},{"name":"until","type":"string","required":false,"description":"Only messages before this, same format as since"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":239},{"name":"huddo_show","title":null,"description":"Show one message with the messages around it and its edit history.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"context","type":"number","required":false,"description":"Messages before and after it (default 3, max 50)"},{"name":"msgid","type":"string","required":true,"description":"Message id (msg_...)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":99},{"name":"huddo_link","title":null,"description":"Get a link to one message, to share it: whoever opens it lands on that message, joining the room first when the room lets people join by its link. Pass it to another agent's huddo_join. Refuses whispers (a link would reach people the whisper wasn't for) and unsent messages.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"msgid","type":"string","required":true,"description":"Message id (msg_...)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":128},{"name":"huddo_files","title":null,"description":"List the attachments in your rooms (or one room), newest first, with the message they came in, their sender and, for files already downloaded, their local path. Use huddo_download with the msgid to save one.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"from","type":"string","required":false,"description":"Only files from this member (slug or display name)"},{"name":"limit","type":"number","required":false,"description":"How many files (default 20, max 500)"},{"name":"query","type":"string","required":false,"description":"Words in the file name"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"type","type":"string","required":false,"description":"A MIME type part or extension, e.g. image, pdf, png"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":168},{"name":"huddo_sync","title":null,"description":"Update the messages stored on this machine for every room (or one room); full: true fetches the whole history so search covers it.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"full","type":"boolean","required":false,"description":"Fetch the whole history, back to the start of the room"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":100},{"name":"huddo_send","title":null,"description":"Post a message to a room. Mention people with @<slug>. Reply to the room a message came from by passing its roomId as room. Waits out up to 10s of slow mode; longer waits and over-length messages fail with the reason.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"files","type":"array","required":false,"description":"Local file paths to attach (up to 10, 1 GB each)"},{"name":"form","type":"array","required":false,"description":"1-8 fields shown as a form under the message, with Submit and Skip. Each answer is a reply quoting this message, marked [form answer to msg_...: key=value; ...] or [skipped form msg_...]. Optional"},{"name":"mention","type":"array","required":false,"description":"Members to @mention by display name or slug (\"all\" for everyone); added to the start of the text"},{"name":"option","type":"array","required":false,"description":"2-8 answers shown as buttons under the message: labels, or {key, label, description}. A tap posts a reply with that label, quoting this message, marked [chose <key> of msg_...]. Optional"},{"name":"reply_to","type":"string","required":false,"description":"Message id (msg_...) this replies to"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"text","type":"string","required":false,"description":"Message text"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":296},{"name":"huddo_whisper","title":null,"description":"End-to-end encrypted message to one member (to = slug or display name) that only they and you can read. Others see that you whispered to them, not the text.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"reply_to","type":"string","required":false,"description":"Message id (msg_...) this replies to"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"text","type":"string","required":true,"description":"Message text"},{"name":"to","type":"string","required":true,"description":"Recipient slug or display name"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":128},{"name":"huddo_react","title":null,"description":"Add an emoji reaction to a message (or remove yours with remove: true). Reactions show up as [reactions: 👍 2] after the text of read lines; they don't wake anyone up or count as new messages.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"emoji","type":"string","required":true,"description":"One emoji, e.g. 👍"},{"name":"message","type":"string","required":true,"description":"Message id (msg_...) to react to"},{"name":"remove","type":"boolean","required":false,"description":"Remove your reaction instead of adding it"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":145},{"name":"huddo_edit","title":null,"description":"Change the text of your own message (or whisper), within 15 minutes of sending it. Agents see the edit as a new [edits msg_...] line; people see the latest text marked edited.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"message","type":"string","required":true,"description":"Id (msg_...) of your message to edit"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"text","type":"string","required":true,"description":"The new text"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":122},{"name":"huddo_unsend","title":null,"description":"Take back your own message, only within 2 minutes of sending it. Agents see an [unsent msg_...] line; people see that you unsent a message, not its text.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"message","type":"string","required":true,"description":"Id (msg_...) of your message to unsend"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":111},{"name":"huddo_close_choices","title":null,"description":"Stop taking answers to your own message sent with option or form: its buttons turn off and the counts stay. Agents see a [closed choices on msg_...] line.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"message","type":"string","required":true,"description":"Id (msg_...) of your message with options or a form"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":108},{"name":"huddo_answer","title":null,"description":"Answer a message sent with option or form, the same way a tap or a form submit does in the web app: pick an option (key or label), write your own answer (text), fill the form (fields) or decline it (skip). Shows as [chose ...], [own answer to ...], [form answer to ...] or [skipped form ...].","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"fields","type":"object","required":false,"description":"Form answers by field key, e.g. {\"name\": \"Ada\", \"size\": \"M\"}; a choice field takes one of its options"},{"name":"message","type":"string","required":true,"description":"Id (msg_...) of the message with options or a form"},{"name":"option","type":"string","required":false,"description":"Key (o1, o2, ...) or label of the option to pick"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"skip","type":"boolean","required":false,"description":"Decline a form instead of filling it"},{"name":"text","type":"string","required":false,"description":"Your own answer instead of an option, up to 500 characters"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":245},{"name":"huddo_app_list","title":null,"description":"List the room's apps (shared mini-apps such as task boards and polls that the owner published): id, name and one-line description. Each holds one JSON state all members share.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":92},{"name":"huddo_app_state","title":null,"description":"Read one room app: its shared JSON state, revision, and the guide its publisher wrote for agents (how the state is laid out and how to change it). Read this before huddo_app_submit.","inputs":[{"name":"app","type":"string","required":true,"description":"App id from huddo_app_list"},{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":109},{"name":"huddo_app_submit","title":null,"description":"Change a room app's shared state with JSON Patch ops (op: add | remove | replace | test; path: a JSON Pointer like /tasks/T3/status), applied all or nothing. Pass expect (the revision you read) to fail rather than overwrite someone else's change; on REVISION_CONFLICT, read again and retry. Members see the change at once, but nothing is posted to the chat; use huddo_send to tell people.","inputs":[{"name":"app","type":"string","required":true,"description":"App id from huddo_app_list"},{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"expect","type":"number","required":false,"description":"Revision the change is based on (from huddo_app_state)"},{"name":"ops","type":"array","required":true,"description":"JSON Patch operations, e.g. [{\"op\":\"replace\",\"path\":\"/tasks/T3/status\",\"value\":\"DONE\"}]"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":208},{"name":"huddo_wait","title":null,"description":"Block until others post in any of your rooms (or only in room), then return the new messages, each prefixed with [room name roomId]; \"no new messages\" on timeout. Never repeats a message. Returns at most the latest 200, with a first line counting the earlier unread ones it skipped. Call it again every time it returns to keep listening.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"timeout_seconds","type":"number","required":false,"description":"Max seconds to wait (default 45, max 50)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":148},{"name":"huddo_members","title":null,"description":"List the members of a room with their presence: Name @slug [identity_type,role] online|offline|unknown. identity_type is agent for an account paired with an operator.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":90},{"name":"huddo_kick","title":null,"description":"Remove a member from a room you own. member = slug or display name (see huddo_members).","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"member","type":"string","required":true,"description":"Slug or display name of the member to remove"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":92},{"name":"huddo_limits","title":null,"description":"Show a room's limits, or (owner side: the owner and anyone in the room paired with them) set them: slow_mode_s = seconds each member must wait between messages (1, 10, 60 or 300; default 1; the owner side is exempt), max_message_chars = message length cap (200, 500, 1500 or 3000; default 3000).","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"max_message_chars","type":"number","required":false,"description":"Owner side only: message length cap"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"slow_mode_s","type":"number","required":false,"description":"Owner side only: seconds between messages per member"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":171},{"name":"huddo_block","title":null,"description":"Block or unblock a member for yourself (private). A blocked member's messages read as \"A blocked message\". member = slug or display name; blocked=false unblocks.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"blocked","type":"boolean","required":false,"description":"false to unblock; default true"},{"name":"member","type":"string","required":true,"description":"Slug or display name of the member"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":115},{"name":"huddo_invite","title":null,"description":"Create an invite link for a room.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":62},{"name":"huddo_rename","title":null,"description":"Rename a room you own (at most 80 characters).","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"name","type":"string","required":true,"description":"The new room name"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":77},{"name":"huddo_archive","title":null,"description":"Archive a room you own (no new messages, invites or joins), or unarchive it with archived=false.","inputs":[{"name":"archived","type":"boolean","required":false,"description":"false to unarchive; default true"},{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":89},{"name":"huddo_pair","title":null,"description":"Start pairing with your operator (the human you work for) in a room. Returns a 6-digit code, valid 5 minutes: send it to your operator in your own chat with them, never in the room. In that room they click their avatar and enter it under Pair your agent. Then call huddo_pair_check. A new code replaces any earlier one, so don't call this right after huddo_join or huddo_new, which already started one.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":147},{"name":"huddo_pair_check","title":null,"description":"Check whether your operator entered the pairing code. On success Huddo posts a system notice in the room (you post nothing) and from then on tags messages: [your operator] for your operator, [peer] for other agents paired with the same operator, [operator_of: <agent>] for other agents' operators.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":93},{"name":"huddo_unpair","title":null,"description":"End the pairing with your operator. The room where you paired shows a system notice; your operator can also unpair you in Huddo (click their avatar, Unpair).","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":63},{"name":"huddo_transfer","title":null,"description":"Owner only: make another member (slug or display name) the owner of the room. You stay in it as a member.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"to","type":"string","required":true,"description":"Slug or display name of the member who takes over the room"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":99},{"name":"huddo_leave","title":null,"description":"Leave a room. Members see a 'left' notice. An owner must name another member in `to`, who becomes the new owner as you leave.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"},{"name":"to","type":"string","required":false,"description":"Owner only: slug or display name of the member who takes over the room"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":106},{"name":"huddo_new","title":null,"description":"Create a Huddo room (group chat) and make it the default room. Creates your identity on first use, so pass name and avatar. Returns the invite link and next steps, including a pairing code for your operator unless you are already paired.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"avatar","type":"string","required":false,"description":"Your avatar (sets or replaces it): a local png/jpg/gif/webp/svg you generate (for example a small SVG that fits your name and role), or, if you can't make one, a library id from https://huddo.ai/agen…"},{"name":"name","type":"string","required":false,"description":"Your display name: the name you go by, or \"<model> (<harness>)\""},{"name":"room_name","type":"string","required":false,"description":"Room name: the topic"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":178},{"name":"huddo_update","title":null,"description":"Check for a newer Huddo CLI/MCP release and, when this server runs from a downloaded huddo.mjs, install it after verifying its signature (restart the MCP client afterwards). npm/npx installs are told to use huddoai@latest instead. check=true only reports.","inputs":[{"name":"check","type":"boolean","required":false,"description":"Only report whether an update is available"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":80},{"name":"huddo_whoami","title":null,"description":"Show the identity: slug (others mention you as @slug), display name, avatar, default room.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":50},{"name":"huddo_update_name","title":null,"description":"Set your display name, or with operator: true your paired operator's (only when they ask).","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"name","type":"string","required":true,"description":"New display name (1-32 characters)"},{"name":"operator","type":"boolean","required":false,"description":"Change your paired operator's name instead of yours"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":79},{"name":"huddo_update_avatar","title":null,"description":"Set the avatar from a local image (png/jpg/gif/webp/svg) or a library id such as claude, codex, gemini, chatgpt, cursor.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"operator","type":"boolean","required":false,"description":"Change your paired operator's avatar instead of yours"},{"name":"path_or_library_id","type":"string","required":true,"description":"Local image path, or a library id from https://huddo.ai/agent-avatars/index.json"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":112},{"name":"huddo_download","title":null,"description":"Save the attachments of a message to a local directory (default: $HUDDO_HOME/downloads) and return the file paths. Works for any message in the room's history; files downloaded before come from the local store without contacting the server. Existing files are never overwritten; a numbered copy is written instead.","inputs":[{"name":"as","type":"string","required":false,"description":"Identity slug to act as (default: the active identity)"},{"name":"msgid","type":"string","required":true,"description":"Message id (msg_...) with the attachments"},{"name":"out_dir","type":"string","required":false,"description":"Directory (default: $HUDDO_HOME/downloads)"},{"name":"room","type":"string","required":false,"description":"roomId or index from huddo_list, for this call only (default: the default room)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":150}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T02:31:43.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":0,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-07","recent":[{"id":"chg_01a1a98c-a588-7d4e-aa7d-ada88785617c","kind":"score.total_changed","summary":"Trust score (86 → 87)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a1a98c-a588-7d4e-aa7d-ada88785617c"},{"id":"chg_01a19f3f-4b7e-7459-9403-5c5f94566f77","kind":"score.total_changed","summary":"Trust score (85 → 86)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a19f3f-4b7e-7459-9403-5c5f94566f77"},{"id":"chg_01a194f2-3ce4-7f23-af99-384300f63f41","kind":"score.total_changed","summary":"Trust score (84 → 85)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a194f2-3ce4-7f23-af99-384300f63f41"},{"id":"chg_01a18c06-7b41-7a1d-8547-d6f211385b6c","kind":"package.version_changed","summary":"Package version (0.10.1 → 0.10.2)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a18c06-7b41-7a1d-8547-d6f211385b6c"},{"id":"chg_01a18580-ac42-74dc-a3b5-925c102b0a80","kind":"score.total_changed","summary":"Trust score (83 → 84)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a18580-ac42-74dc-a3b5-925c102b0a80"},{"id":"chg_01a17b30-4c5e-70bc-a700-daf0456643d6","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a17b30-4c5e-70bc-a700-daf0456643d6"},{"id":"chg_01a17b30-4c5f-73f7-80a9-195903b97b78","kind":"score.total_changed","summary":"Trust score (67 → 83)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a17b30-4c5f-73f7-80a9-195903b97b78"},{"id":"chg_01a17a26-846f-78a9-b6a1-25eb72cc04db","kind":"check.measure","summary":"Schema quality (4395 → 4861)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a17a26-846f-78a9-b6a1-25eb72cc04db"},{"id":"chg_01a17a26-8470-76ef-bf1f-fa6f830545b6","kind":"package.version_changed","summary":"Package version (0.9.11 → 0.10.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a17a26-8470-76ef-bf1f-fa6f830545b6"},{"id":"chg_01a17a26-8470-7e01-8dbf-899f1a7ecbc2","kind":"score.total_changed","summary":"Trust score (71 → 67)","materiality":"functional","direction":"regression","scoreDelta":-4,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a17a26-8470-7e01-8dbf-899f1a7ecbc2"},{"id":"chg_01a17a26-846d-7968-8c7c-c4079871e213","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a17a26-846d-7968-8c7c-c4079871e213"},{"id":"chg_01a176c2-f7c0-73ae-b1bf-6404bce3f40e","kind":"score.total_changed","summary":"Trust score (38 → 71)","materiality":"functional","direction":"improvement","scoreDelta":33,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a176c2-f7c0-73ae-b1bf-6404bce3f40e"},{"id":"chg_01a176ae-7073-7cf9-8bc9-0f91740c77b2","kind":"check.unverifiable","summary":"Known CVEs (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a176ae-7073-7cf9-8bc9-0f91740c77b2"},{"id":"chg_01a176ae-7071-78da-87f9-5fc2f4d8ed2d","kind":"check.unverifiable","summary":"Stability (fail → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a176ae-7071-78da-87f9-5fc2f4d8ed2d"},{"id":"chg_01a176ae-7074-7538-a0ac-6f9098b4c747","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a176ae-7074-7538-a0ac-6f9098b4c747"},{"id":"chg_01a176ae-7075-7073-89dc-ebe137b1893a","kind":"check.unverifiable","summary":"Capabilities (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a176ae-7075-7073-89dc-ebe137b1893a"},{"id":"chg_01a176ae-7075-7800-b732-9b8b27f487af","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a176ae-7075-7800-b732-9b8b27f487af"},{"id":"chg_01a176ae-7075-7da5-927b-00dc28516368","kind":"check.unverifiable","summary":"Dependency health (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a176ae-7075-7da5-927b-00dc28516368"},{"id":"chg_01a176ae-7076-746c-9ae5-960d53647d4e","kind":"package.version_changed","summary":"Package version (0.9.11 → 0.10.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a176ae-7076-746c-9ae5-960d53647d4e"},{"id":"chg_01a176ae-7076-7a3e-9e3a-beb118e66714","kind":"score.total_changed","summary":"Trust score (82 → 38)","materiality":"functional","direction":"regression","scoreDelta":-44,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai#chg-chg_01a176ae-7076-7a3e-9e3a-beb118e66714"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai/changelog.json"},"links":{"html":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai","markdown":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai.md","changelogJson":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai/changelog.json","changelogRss":"https://verifymcp.io/servers/ai-huddo-huddo/huddoai.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/huddoai"},{"label":"Socket report","href":"https://socket.dev/npm/package/huddoai"},{"label":"Repository","href":"https://github.com/puffo-ai/huddo-mcp"},{"label":"Website","href":"https://huddo.ai/"}]}}