MindThread
io.github.ppcvote/mindthreadppcvotestreamable-httpv0.2.0Scanned
Threads scheduler for AI agents: write, schedule and publish posts, review replies, read insights.
40 tools: 18 can delete or cancel things, 2 change things and 20 only read.
- Reads private data · 3
- Reads text others write · 22
- Can send data out · 4
- 3 findings
Anlyon alternative
20 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
40 tools
Deletes or cancels 18Claude Code: deny
add_libraryAdds up to 20 items (text, optional public https images) to an account's library as queued (default; they publish automatically at schedule_times) or draft (they wait).Reads text others writeNo findings
Why it is in this group
- The name "add_library" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Adds up to 20 items (text, optional public https images) to an account's library as queued (default; they publish automatically at schedule_times) or draft (they wait). Each text is checked against the account's content_rules. Applies after drafts are approved by the user and should enter the daily publishing queue, or should be parked as drafts.
Annotations the server declares
- title: Add library items
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
apply_account_settingsWrites a batch of settings changes to up to 100 accounts, each account in its own transaction, and returns a per-row result (ok, unchanged, or failed with the reason) and a batch_i…No findings
Why it is in this group
- The name "apply_account_settings" says "apply": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Writes a batch of settings changes to up to 100 accounts, each account in its own transaction, and returns a per-row result (ok, unchanged, or failed with the reason) and a batch_id that revert_account_settings_batch can undo within 24 hours. idempotency_key is required: a retried request with the same key returns the first result instead of writing twice. Changes to run mode, auto-posting or review before publish affect posting right away and need confirm_sensitive:true, and that confirmation may wait for the owner's approval. Nothing is written without a preview: from a Claude or ChatGPT connection the preview_id from preview_account_settings is required, and a preview_id that does not match the changes is refused. Applies after the user has seen the preview and confirmed it. 繁中:套用批次變更(每帳號一個交易、24 小時內可復原),敏感欄位要 confirm_sensitive,目錄連線一定要先預覽並帶 preview_id。
Annotations the server declares
- title: Apply bulk settings changes
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
approve_library_itemMoves one draft into the publishing queue by id.Reads text others writeNo findings
Why it is in this group
- The name "approve_library_item" says "approve": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Moves one draft into the publishing queue by id. A draft whose held_reason is publish_result_unknown answers 409 publish_result_unknown because it may already be on Threads; an item being published answers 409 publishing_in_progress. Applies when the user approves a single draft.
Annotations the server declares
- title: Approve a draft into the queue
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
approve_pending_replyApproves one drafted cloud patrol reply by id and sends it to Threads now, optionally with an edited reply text that passes the same quality gates as generated text.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "approve_pending_reply" says "approve": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe name "approve_pending_reply" says "approve" and "reply": it writes something other people read.
Description, as the server wrote it Approves one drafted cloud patrol reply by id and sends it to Threads now, optionally with an edited reply text that passes the same quality gates as generated text. May wait for the owner's confirmation. Applies when the user has read a pending draft and wants it posted.
Annotations the server declares
- title: Send a drafted reply
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
build_materialBuilds or rebuilds the account's material digest from up to 8 https pages of the brand's own website, optional notes with real cases and FAQs (up to 6,000 characters), and the acco…Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Builds or rebuilds the account's material digest from up to 8 https pages of the brand's own website, optional notes with real cases and FAQs (up to 6,000 characters), and the account's top posts. Replaces the previous digest. Counts as one AI generation. dry:true returns a preview without saving. Applies once per account before the first generation, and again when the website changes.
Annotations the server declares
- title: Build brand material
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
bulk_archive_libraryArchives up to 50 library items by id in one call.1 finding
Why it is in this group
- The name "bulk_archive_library" says "archive": a word for removing or ending something.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "bulk_archive_library" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "bulk_archive_library" says "archive": a word for removing or ending something.
Description, as the server wrote it Archives up to 50 library items by id in one call. Archived items leave the queue but are kept and can be restored with update_library_item. Per-item errors include publishing_in_progress. Applies for clearing a queue without deleting anything.
Annotations the server declares
- title: Archive library items in bulk
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
bulk_delete_libraryPermanently deletes up to 50 queued, draft or archived library items by id in one call.No findings
Why it is in this group
- The name "bulk_delete_library" says "delete": a word for removing or ending something.
- The description says "Permanently deletes".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Permanently deletes up to 50 queued, draft or archived library items by id in one call. Per-item errors include publishing_in_progress. Applies when the user explicitly wants items removed for good.
Annotations the server declares
- title: Delete library items in bulk
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
bulk_queue_libraryMoves up to 50 drafts into the publishing queue by id in one call; they publish automatically at the account's schedule_times.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "move": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Moves up to 50 drafts into the publishing queue by id in one call; they publish automatically at the account's schedule_times. Per-item errors include publishing_in_progress and publish_result_unknown (the item may already be on Threads). Applies when the user approves several drafts at once.
Annotations the server declares
- title: Queue library items in bulk
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
cancel_scheduleCancels a scheduled post by id.No findings
Why it is in this group
- The name "cancel_schedule" says "cancel": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Cancels a scheduled post by id. A post that is being published right now answers 409 publishing_in_progress. Applies when the user no longer wants a scheduled post to go out.
Annotations the server declares
- title: Cancel a scheduled post
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
delete_library_itemPermanently deletes one queued, draft or archived library item by id.No findings
Why it is in this group
- The name "delete_library_item" says "delete": a word for removing or ending something.
- The description says "Permanently deletes".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Permanently deletes one queued, draft or archived library item by id. Applies when the user explicitly wants an item gone rather than archived.
Annotations the server declares
- title: Delete a library item
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
disable_this_keyPermanently disables the key or connection making this call.1 finding
Why it is in this group
- The name "disable_this_key" says "disable": a word for a change.
- The description says "Cannot be undone".
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...l the user reconnects. Applies when the credential may have leaked or the user asks to sto..."
Description, as the server wrote it Permanently disables the key or connection making this call. Cannot be undone; the owner creates a new key or reconnects in Settings. Only this connection's API requests stop, and for a connection made through the consent page (OAuth) the webhooks it created are turned off too; queued posts and cloud patrol settings created with it keep running (with an API key, its webhooks keep running as well). The result lists the confirmation requests this connection was still waiting on, now cancelled. Every later call with it answers 401 key_disabled. A connection made through the consent page of a platform such as claude.ai or ChatGPT is shared by every session of that platform for this member, so disabling it stops all of them until the user reconnects. Applies when the credential may have leaked or the user asks to stop this connection for good.
Annotations the server declares
- title: Disable this connection
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
publishPublishes a post to Threads now (publish_now:true) or at publish_at (ISO 8601 with offset).Reads text others writeCan send data outNo findings
Why it is in this group
- The name "publish" says "publish": a word for a change that another call does not undo.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe name "publish" says "publish": it sends or publishes something to other people.
Description, as the server wrote it Publishes a post to Threads now (publish_now:true) or at publish_at (ISO 8601 with offset). Takes text, one public https image (media_urls with 1 url), a carousel (2 to 10 urls) or a video_url. Text over 500 characters is split into a thread. Publishing now or within 30 minutes uses the publish-now permission; a post 30 minutes or more ahead uses the schedule permission. Either may wait for the owner's confirmation when that permission is set to ask on this connection. idempotency_key makes a retried request return the first result instead of posting twice. Applies when the user has final text and wants it on Threads.
Annotations the server declares
- title: Publish or schedule a post
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
reject_pending_replyRejects one drafted cloud patrol reply by id with an optional note.Can send data outNo findings
Why it is in this group
- The name "reject_pending_reply" says "reject": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- outboundThe name "reject_pending_reply" says "reject" and "reply": it writes something other people read.
Description, as the server wrote it Rejects one drafted cloud patrol reply by id with an optional note. It is never sent and the same post is not proposed again. Applies when the user does not want a drafted reply to go out.
Annotations the server declares
- title: Reject a drafted reply
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
revert_account_settings_batchRestores the values that one batch changed, within 24 hours of the batch.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Restores the values that one batch changed, within 24 hours of the batch. Accounts changed again after the batch are skipped and listed with the reason, so a later edit is never overwritten. A batch can be reverted once. Applies when the user wants to undo a bulk change. 繁中:24 小時內復原一批變更,之後又被改過的帳號會跳過。
Annotations the server declares
- title: Undo a bulk settings batch
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
schedule_textSchedules an existing text (up to 500 characters) at publish_at, or at the next best slot with auto_optimize_time:true (the two are mutually exclusive).Reads text others writeNo findings
Why it is in this group
- The name "schedule_text" says "schedule": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Schedules an existing text (up to 500 characters) at publish_at, or at the next best slot with auto_optimize_time:true (the two are mutually exclusive). Checked against the account's content_rules: with enforce:block a violation returns 422 and nothing is scheduled; the post is checked again right before it publishes. Applies for text-only posts with a specific time or when the user wants the system to pick the time.
Annotations the server declares
- title: Schedule a text post
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
set_cloud_patrolCreates or updates an account's cloud patrol: keywords (1 to 10; a "#tag" entry searches a topic tag), reply persona, daily_cap (1 to 50 on free and trial, up to 80 on paid plans, …Reads text others writeNo findings
Why it is in this group
- The name "set_cloud_patrol" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Creates or updates an account's cloud patrol: keywords (1 to 10; a "#tag" entry searches a topic tag), reply persona, daily_cap (1 to 50 on free and trial, up to 80 on paid plans, up to 150 with a haixun add-on), enabled, and review_before_reply. When patrol is on, the account replies to relevant fresh Threads posts through the official API every 15 minutes, one patrol point per delivered reply; with review_before_reply:true every drafted reply waits in list_pending_replies instead of going out. Turning patrol on, or changing a patrol that is already on, needs the patrol permission, which is not granted to directory connections: the owner does it in MindThread. Applies when the user wants to stop patrol or tune its keywords, persona and cap while it is off.
Annotations the server declares
- title: Set cloud patrol
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
update_account_settingsChanges an account's persona (up to 4,000 characters), schedule_times (comma-separated HH:MM in the account time zone, up to 8), review_before_publish, auto_reply_enabled, auto_thr…No findings
Why it is in this group
- The name "update_account_settings" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Changes an account's persona (up to 4,000 characters), schedule_times (comma-separated HH:MM in the account time zone, up to 8), review_before_publish, auto_reply_enabled, auto_thread, auto_link_to_comment, enabled, and content_rules (max_chars, min_chars, forbid_cta, forbid_hashtags, banned_phrases, facts as the only numbers the AI may use, forbid_causal_claims, judge_claims, one_fact_per_post, mention_limits, enforce warn or block). Only the fields sent are changed, except content_rules, which is replaced as a whole. if_match (the guardrails etag) makes a concurrent change answer 412 instead of overwriting; reason (up to 200 characters) is stored in the revision; dry_run:true previews whether the change would apply, ask the owner or be denied, without writing anything. A change that loosens a guardrail may wait for the owner's confirmation. Applies when the user asks to change voice, posting times, review mode, auto-reply or content rules.
Annotations the server declares
- title: Update account settings
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
update_library_itemChanges one library item by id: status (archived, draft, queued), text (checked against content_rules), or its place in the queue (position first or last, or an explicit order).Reads text others writeNo findings
Why it is in this group
- The name "update_library_item" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Changes one library item by id: status (archived, draft, queued), text (checked against content_rules), or its place in the queue (position first or last, or an explicit order). 409 publishing_in_progress means it is being published; 409 publish_result_unknown means it may already be on Threads; 409 status_changed means it changed since it was read. Applies when the user wants to edit, reorder, archive or restore one item.
Annotations the server declares
- title: Update a library item
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 2Claude Code: ask
connect_account_linkReturns a Threads OAuth link for the user to open in a browser to connect a new Threads account to this member.No findings
Why it is in this group
- The name "connect_account_link" says "link": a word for a change.
Description, as the server wrote it Returns a Threads OAuth link for the user to open in a browser to connect a new Threads account to this member. The account appears in list_accounts after the user completes the flow. May wait for the owner's confirmation. Applies when the user wants to add an account.
Annotations the server declares
- title: Get a link to connect a new account
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
generate_postsGenerates 1 to 5 post drafts about a topic using a content formula (auto, or an id from list_formulas), the account persona and material, optional reference context (up to 8,000 ch…Can send data outNo findings
Why it is in this group
- The name "generate_posts" says "generate": a word for a change.
What it can reach
- outboundThe name "generate_posts" says "generate" and "post": it writes something other people read.
Description, as the server wrote it Generates 1 to 5 post drafts about a topic using a content formula (auto, or an id from list_formulas), the account persona and material, optional reference context (up to 8,000 characters) and a quality level (fast, standard, premium). Nothing is published or queued. The result carries rule_violations against the account's content_rules. Applies when the user wants drafts to read, edit or choose from.
Annotations the server declares
- title: Generate post drafts
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 20Show 20 read-only tools
analytics_insightsReturns views, likes, replies and followers for one account over a period (7d, 30d; default 30d).Reads text others writeNo findings
Why it is in this group
- The description's first verb is "return": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "return" and "reply": it reads comments, which other people can write.
Description, as the server wrote it Returns views, likes, replies and followers for one account over a period (7d, 30d; default 30d). account_id is required; "all" returns the organization-wide aggregate. views_scope is lifetime, posts_scope is the period. Applies when the user asks how an account is performing.
Annotations the server declares
- title: Account insights
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cloud_patrol_logLists replies sent by cloud patrol for an account in the last 1 to 7 days, with the target post and the reply text.Reads text others writeNo findings
Why it is in this group
- The name "cloud_patrol_log" says "log": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "list" and "reply": it reads comments, which other people can write.
Description, as the server wrote it Lists replies sent by cloud patrol for an account in the last 1 to 7 days, with the target post and the reply text. Applies when the user wants to read what was actually said.
Annotations the server declares
- title: Cloud patrol reply log
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cloud_patrol_statsReturns views and likes earned by cloud patrol replies for an account over 1 to 14 days, with the top replies.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "return": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "return" and "reply": it reads comments, which other people can write.
Description, as the server wrote it Returns views and likes earned by cloud patrol replies for an account over 1 to 14 days, with the top replies. Applies when the user asks whether patrol is working or which keywords perform.
Annotations the server declares
- title: Cloud patrol results
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_account_settingsReturns one account's persona, schedule_times, review_before_publish, auto_reply_enabled, auto_thread, content_rules, and the guardrails block: etag (used as if_match on update), l…Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_account_settings" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "return" and "thread": it reads messages.
- untrusted-inputThe description's first sentence says "return" and "review": it reads comments, which other people can write.
Description, as the server wrote it Returns one account's persona, schedule_times, review_before_publish, auto_reply_enabled, auto_thread, content_rules, and the guardrails block: etag (used as if_match on update), last_change, pending loosening approvals, and which paths the rules are enforced on. Applies before any settings change, because content_rules is replaced as a whole on update.
Annotations the server declares
- title: Get account settings
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_account_settings_batchReturns one batch by batch_id: when it was sent and from where (website, API or MCP), counts, whether it can still be reverted, and each row's result with the failure reason.Reads text others writeNo findings
Why it is in this group
- The name "get_account_settings_batch" says "get": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "return" and "website": it reads web pages, which anyone can write.
Description, as the server wrote it Returns one batch by batch_id: when it was sent and from where (website, API or MCP), counts, whether it can still be reverted, and each row's result with the failure reason. Applies after apply_account_settings, or when the user asks what a bulk change did. 繁中:查一批變更的逐列結果。
Annotations the server declares
- title: Get a bulk settings batch
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_approvalReturns one confirmation request created by this connection, by id (apr_...): status (pending, approved, executed, failed, denied, expired, cancelled), the action summary, how the …No findings
Why it is in this group
- The name "get_approval" says "get": a word for reading.
Description, as the server wrote it Returns one confirmation request created by this connection, by id (apr_...): status (pending, approved, executed, failed, denied, expired, cancelled), the action summary, how the owner decided (decision_via, decided_by, step_up), and once executed, the full result. The server runs the original request itself after the owner confirms, so the request is not resent. Applies after a tool answered approval_required, polling about every 15 seconds until the status is final (pending requests expire after 24 hours).
Annotations the server declares
- title: Check a confirmation request
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_cloud_patrolReturns an account's cloud patrol configuration and status: keywords, daily cap, replies sent today, review_before_reply, last scan time.Reads text others writeNo findings
Why it is in this group
- The name "get_cloud_patrol" says "get": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "return" and "reply": it reads comments, which other people can write.
Description, as the server wrote it Returns an account's cloud patrol configuration and status: keywords, daily cap, replies sent today, review_before_reply, last scan time. Cloud patrol searches Threads every 15 minutes and replies to relevant fresh posts through the official API. Applies before changing patrol settings or when the user asks whether patrol is on.
Annotations the server declares
- title: Get cloud patrol settings
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_materialReturns the account's material digest (who the brand is, what it sells, claims, experiences, FAQ, sourced numbers, voice) that every generation path appends to the persona.No findings
Why it is in this group
- The name "get_material" says "get": a word for reading.
Description, as the server wrote it Returns the account's material digest (who the brand is, what it sells, claims, experiences, FAQ, sourced numbers, voice) that every generation path appends to the persona. has_material:false means generation currently runs on the persona alone. Applies before generating when it is unclear whether the account has material.
Annotations the server declares
- title: Get brand material
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_meReturns the current plan, this connection's identity and permissions (each permission is allow, ask or deny), remaining daily calls in this connection's pool, remaining patrol poin…No findings
Why it is in this group
- The name "get_me" says "get": a word for reading.
Description, as the server wrote it Returns the current plan, this connection's identity and permissions (each permission is allow, ask or deny), remaining daily calls in this connection's pool, remaining patrol points, and the connected accounts. Applies at the start of a session and whenever a call answered approval_required or insufficient_scope, to see which permission is involved.
Annotations the server declares
- title: My plan and key
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_my_usageReturns this connection's own usage for the last 1 to 30 days (days=1 is today since 00:00 Asia/Taipei): summary (calls, units, errors, by_endpoint) and recent calls (request_id, e…No findings
Why it is in this group
- The name "get_my_usage" says "get": a word for reading.
Description, as the server wrote it Returns this connection's own usage for the last 1 to 30 days (days=1 is today since 00:00 Asia/Taipei): summary (calls, units, errors, by_endpoint) and recent calls (request_id, endpoint, status, units, at), newest first, limit 1 to 100, cursor for the next page. Only this connection's records. Applies when the user asks what this connection did, or a request_id is needed to report a problem.
Annotations the server declares
- title: My usage and call log
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_playbookReturns the operating playbook for running an account through this server: the daily loop, how confirmation requests work, quotas, and the review checklist.Reads text others writeNo findings
Why it is in this group
- The name "get_playbook" says "get": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "return" and "review": it reads comments, which other people can write.
Description, as the server wrote it Returns the operating playbook for running an account through this server: the daily loop, how confirmation requests work, quotas, and the review checklist. The same text is in the initialize instructions. Applies when the instructions were not kept or the user asks how the service works.
Annotations the server declares
- title: Operating playbook
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_account_settingsLists every connected Threads account of this member with the settings of the MindThread bulk settings sheet (run mode, auto-posting, review before publish, posting times, audience…Reads private dataReads text others writeNo findings
Why it is in this group
- The name "list_account_settings" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "thread": it reads messages.
- untrusted-inputThe description's first sentence says "list" and "thread": it reads messages, which other people can write.
Description, as the server wrote it Lists every connected Threads account of this member with the settings of the MindThread bulk settings sheet (run mode, auto-posting, review before publish, posting times, audience time zone, random schedule, library recycling, cold start, content language, AI quality, auto-reply and reply limits) and status chips (expired authorization, repeated publish failures, skipped nightly refill). Up to 100 accounts per page, with limit and cursor for more. columns describes each setting (type, allowed values, which ones are sensitive) and rules_url links to the field rules page. Applies when the user wants to see or compare settings across many accounts. 繁中:列出所有帳號的總表設定與狀態標籤。
Annotations the server declares
- title: List account settings (bulk)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_accountsLists the Threads accounts connected to this MindThread member, with the id to pass as account_id to every other tool.Reads private dataReads text others write1 finding
Why it is in this group
- The name "list_accounts" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "thread": it reads messages.
- untrusted-inputThe description's first sentence says "list" and "thread": it reads messages, which other people can write.
Findings
- Warn
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...r, with the id to pass as account_id to every other tool. Applies whenever an account id is need..."
Description, as the server wrote it Lists the Threads accounts connected to this MindThread member, with the id to pass as account_id to every other tool. Applies whenever an account id is needed and the user named an account by username or description.
Annotations the server declares
- title: List connected accounts
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_eventsReturns the member's event feed for the last 7 days, newest first (limit 1 to 200): post.published, post.failed, reply.sent, patrol.reply, patrol.pending, token.expiring, usage.thr…Reads text others writeNo findings
Why it is in this group
- The name "list_events" says "list": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "return" and "post": it reads posts, which other people can write.
Description, as the server wrote it Returns the member's event feed for the last 7 days, newest first (limit 1 to 200): post.published, post.failed, reply.sent, patrol.reply, patrol.pending, token.expiring, usage.threshold, approval.decided. since (ISO 8601) returns only newer events; types filters by name. Applies when the user asks what happened recently or whether a post went out.
Annotations the server declares
- title: List recent events
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_formulasLists the content formulas that generate_posts accepts, with id and a short description of each.Reads text others writeNo findings
Why it is in this group
- The name "list_formulas" says "list": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "list" and "post": it reads posts, which other people can write.
Description, as the server wrote it Lists the content formulas that generate_posts accepts, with id and a short description of each. Applies when the user wants a specific structure (for example a story, a list, a myth-busting post) rather than auto.
Annotations the server declares
- title: List content formulas
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_guardrail_changesLists an account's guardrail revisions, newest first (limit 1 to 50, default 20; before for the next page).No findings
Why it is in this group
- The name "list_guardrail_changes" says "list": a word for reading.
Description, as the server wrote it Lists an account's guardrail revisions, newest first (limit 1 to 50, default 20; before for the next page). Each revision has source (api, approval, rollback, system), actor, changed_fields, loosened, tightened, before, after and restore_body (an update_account_settings body that puts the earlier values back). Applies when the user asks what changed, who changed it, or wants to restore an earlier rule set.
Annotations the server declares
- title: Guardrail change history
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_libraryLists an account's library items by status (queued, draft, published, failed; limit up to 200).No findings
Why it is in this group
- The name "list_library" says "list": a word for reading.
Description, as the server wrote it Lists an account's library items by status (queued, draft, published, failed; limit up to 200). Queued items publish automatically at the account's schedule_times; the result shows each item's position and next_publish_at. A draft with held_reason publish_result_unknown and reclaimed:true may already be on Threads. Applies when the user asks what is queued, what is waiting as a draft, or what failed.
Annotations the server declares
- title: List library items
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_pending_repliesLists cloud patrol reply drafts for an account by status (pending by default; also sent, rejected, expired).Reads text others writeNo findings
Why it is in this group
- The name "list_pending_replies" says "list": a word for reading.
What it can reach
- untrusted-inputThe name "list_pending_replies" says "list" and "reply": it reads comments, which other people can write.
- untrusted-inputThe description's first sentence says "list" and "reply": it reads comments, which other people can write.
Description, as the server wrote it Lists cloud patrol reply drafts for an account by status (pending by default; also sent, rejected, expired). Each pending draft has the target post, the drafted reply and an expiry 24 hours after it was drafted. Applies when review_before_reply is on and the user wants to decide what goes out.
Annotations the server declares
- title: List drafted replies awaiting review
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_schedulesLists scheduled posts, optionally filtered by account_id, with status, publish_at, and held_reason when a post was held (for example content_rules_violated or publish_result_unknow…Reads text others writeNo findings
Why it is in this group
- The name "list_schedules" says "list": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "list" and "post": it reads posts, which other people can write.
Description, as the server wrote it Lists scheduled posts, optionally filtered by account_id, with status, publish_at, and held_reason when a post was held (for example content_rules_violated or publish_result_unknown). Applies when the user asks what is coming up or why a post did not go out.
Annotations the server declares
- title: List scheduled posts
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
preview_account_settingsShows what a batch of settings changes would do and writes nothing: for each account and cell the current value and the new value, warnings (for example no posting time left), and …No findings
Why it is in this group
- The name "preview_account_settings" says "preview": a word for reading.
Description, as the server wrote it Shows what a batch of settings changes would do and writes nothing: for each account and cell the current value and the new value, warnings (for example no posting time left), and row errors (an account that is not this member's, an unknown column, a value outside the allowed range, a cell changed since it was read). Takes changes as a list of { account_id, set, base } or csv in the same format as the website download. The result carries apply_changes and a preview_id valid for 15 minutes, which apply_account_settings takes as they are. Applies before any bulk change, so the user sees the exact cells first. 繁中:預覽批次變更,逐格列出舊值與新值,什麼都不寫。
Annotations the server declares
- title: Preview bulk settings changes
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
264 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 3 private-data tools breaks every one.
- Reads private data3
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write22
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out4
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__mindthread__get_account_settings",
"mcp__mindthread__list_account_settings",
"mcp__mindthread__list_accounts"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
- Warnlist_accounts
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...r, with the id to pass as account_id to every other tool. Applies whenever an account id is need..."
The server marks "bulk_archive_library" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "bulk_archive_library" says "archive": a word for removing or ending something.
- Infodisable_this_key
The description mentions "credential".
What this check looks forMatched text
description: "...l the user reconnects. Applies when the credential may have leaked or the user asks to sto..."
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 0.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http mindthread https://mindthread.tw/api/mcpclaude mcp add --transport http mindthread https://mindthread.tw/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__mindthread__get_me",
"mcp__mindthread__list_accounts",
"mcp__mindthread__get_material",
"mcp__mindthread__get_account_settings",
"mcp__mindthread__list_guardrail_changes",
"mcp__mindthread__list_account_settings",
"mcp__mindthread__preview_account_settings",
"mcp__mindthread__get_account_settings_batch",
"mcp__mindthread__list_schedules",
"mcp__mindthread__list_library",
"mcp__mindthread__get_cloud_patrol",
"mcp__mindthread__cloud_patrol_log",
"mcp__mindthread__cloud_patrol_stats",
"mcp__mindthread__list_pending_replies",
"mcp__mindthread__list_events",
"mcp__mindthread__analytics_insights",
"mcp__mindthread__list_formulas",
"mcp__mindthread__get_playbook",
"mcp__mindthread__get_my_usage",
"mcp__mindthread__get_approval"
],
"ask": [
"mcp__mindthread__generate_posts",
"mcp__mindthread__connect_account_link"
],
"deny": [
"mcp__mindthread__build_material",
"mcp__mindthread__update_account_settings",
"mcp__mindthread__apply_account_settings",
"mcp__mindthread__revert_account_settings_batch",
"mcp__mindthread__publish",
"mcp__mindthread__schedule_text",
"mcp__mindthread__cancel_schedule",
"mcp__mindthread__add_library",
"mcp__mindthread__delete_library_item",
"mcp__mindthread__approve_library_item",
"mcp__mindthread__update_library_item",
"mcp__mindthread__set_cloud_patrol",
"mcp__mindthread__approve_pending_reply",
"mcp__mindthread__reject_pending_reply",
"mcp__mindthread__disable_this_key",
"mcp__mindthread__bulk_archive_library",
"mcp__mindthread__bulk_delete_library",
"mcp__mindthread__bulk_queue_library"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as mindthread. Review it before you use it.
Capability tags behind 24 rules
- mcp__mindthread__list_accounts private-data, untrusted-input
- mcp__mindthread__build_material untrusted-input
- mcp__mindthread__get_account_settings private-data, untrusted-input
- mcp__mindthread__list_account_settings private-data, untrusted-input
- mcp__mindthread__get_account_settings_batch untrusted-input
- mcp__mindthread__generate_posts outbound
- mcp__mindthread__publish untrusted-input, outbound
- mcp__mindthread__schedule_text untrusted-input
- mcp__mindthread__list_schedules untrusted-input
- mcp__mindthread__add_library untrusted-input
- mcp__mindthread__approve_library_item untrusted-input
- mcp__mindthread__update_library_item untrusted-input
- mcp__mindthread__get_cloud_patrol untrusted-input
- mcp__mindthread__set_cloud_patrol untrusted-input
- mcp__mindthread__cloud_patrol_log untrusted-input
- mcp__mindthread__cloud_patrol_stats untrusted-input
- mcp__mindthread__list_pending_replies untrusted-input
- mcp__mindthread__approve_pending_reply untrusted-input, outbound
- mcp__mindthread__reject_pending_reply outbound
- mcp__mindthread__list_events untrusted-input
- mcp__mindthread__analytics_insights untrusted-input
- mcp__mindthread__list_formulas untrusted-input
- mcp__mindthread__get_playbook untrusted-input
- mcp__mindthread__bulk_queue_library untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/io.github.ppcvote/mindthread/verify?hash=4033a4b6fc295a045d54fb7861d2fd4e7dcae15650fbf4dbcca921f045a75ad9" | jq -e '.changed == false'Pinned hash 4033a4b6fc29, from Oct 26, 2026, 12:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.github.ppcvote/mindthread/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.github.ppcvote/mindthread)Source: MCP Registry · repository. Synced Oct 26, 2026, 12:18 UTC.