MindThread
REMOTE · MINDTHREAD.TW · 2 COMPONENTS
Threads scheduler for AI agents: write, schedule and publish posts, review replies, read insights.
Available components
Last scanned (6 hours ago)
Scores higher than 57% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (build_material). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability71
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6394 tokens (~148/item across 43 items; 43 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management33
- Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 44 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
- New tool “save_brand_doc”, which the server declares destructive security
- Server version: 1.21.0 → 1.22.0 functional
- New tool “get_top_posts” functional
- New tool “get_brand_doc” functional
- 3 Nov 26 +1
- Tool “list_events” rewrote its description, which is the text the model reads security
- Tool “list_pending_replies” rewrote its description, which is the text the model reads security
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 0
- Tool “update_account_settings” rewrote its description, which is the text the model reads security
- Server version: 1.20.0 → 1.21.0 functional
- “update_account_settings” added an optional parameter “random_schedule” cosmetic
- “set_cloud_patrol” added an optional parameter “reply_max” cosmetic
- “update_account_settings” added an optional parameter “random_exclude” cosmetic
- “update_account_settings” added an optional parameter “random_per_day” cosmetic
- “update_account_settings” added an optional parameter “random_window” cosmetic
- 29 Oct 26 +1
- Server version: 1.19.0 → 1.20.0 functional
- “set_cloud_patrol” added an optional parameter “rotate_replies” cosmetic
- “set_cloud_patrol” added an optional parameter “reply_mode” cosmetic
- 27 Oct 26 +1
- Stability: unverified → 0.03 ▲ functional
- Server version: 1.16.1 → 1.19.0 functional
- 26 Oct 26 66
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://mindthread.tw/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mindthread.tw | CN=YR1,O=Let's Encrypt,C=US | 1 Nov 2026 | 30 Jan 2027 | RSA 2048 | SHA256-RSA | 57a11b8592e7abbefe271d5999bcf1163a1 |
| SANs: mindthread.tw | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mindthread.tw. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| tw. | present | 46902 | 13 | Verified |
| mindthread.tw. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mindthread.tw/api/mcp | Verified | 200 | |
| http (plaintext) | http://mindthread.tw/api/mcp | HTTPS enforced | 308 | https://mindthread.tw/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_library Add library items ~110
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| items | array | yes | Items |
| status | string | – | queued (default) | draft |
No output schema declared.
No examples provided.
analytics_insights Account insights ~117
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id from list_accounts, or "all" for the organization-wide aggregate |
| period | string | – | e.g. 7d, 30d (default 30d) |
No output schema declared.
No examples provided.
apply_account_settings Apply bulk settings changes ~384
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。
| Name | Type | Req | Description |
|---|---|---|---|
| changes | array | – | Up to 100 entries: { account_id, set: { column: value }, base?: { column: value you saw } }. Columns and allowed values: list_account_settings columns, or https://mindthread.tw/accounts/bulk/rules |
| confirm_sensitive | boolean | – | true when the batch changes run mode, auto-posting or review before publish |
| csv | string | – | Instead of changes: a CSV in the website download format (UTF-8) |
| idempotency_key | string | yes | 8-200 characters; reuse the same key when retrying the same request |
| preview_id | string | – | preview_id from preview_account_settings (required from Claude and ChatGPT connections) |
| reason | string | – | Optional note stored with the batch, up to 200 characters |
No output schema declared.
No examples provided.
approve_library_item Approve a draft into the queue ~71
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Item id |
No output schema declared.
No examples provided.
approve_pending_reply Send a drafted reply ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Pending id |
| reply | string | – | Optional edited reply |
No output schema declared.
No examples provided.
build_material Build brand material ~141
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| dry | boolean | – | Preview only |
| notes | string | – | Real experiences, cases, FAQs (≤6000 chars) |
| urls | array | – | Up to 8 https:// pages |
No output schema declared.
No examples provided.
bulk_archive_library Archive library items in bulk ~69
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | yes | Item ids (max 50) |
No output schema declared.
No examples provided.
bulk_delete_library Delete library items in bulk ~61
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | yes | Item ids (max 50) |
No output schema declared.
No examples provided.
bulk_queue_library Queue library items in bulk ~78
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | yes | Draft ids (max 50) |
No output schema declared.
No examples provided.
cancel_schedule Cancel a scheduled post ~54
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Post id |
No output schema declared.
No examples provided.
cloud_patrol_log Cloud patrol reply log ~71
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| days | integer | – | 1-7 |
No output schema declared.
No examples provided.
cloud_patrol_stats Cloud patrol results ~70
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| days | integer | – | 1-14 |
No output schema declared.
No examples provided.
connect_account_link Get a link to connect a new account ~62
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
delete_library_item Delete a library item ~45
Permanently deletes one queued, draft or archived library item by id. Applies when the user explicitly wants an item gone rather than archived.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Item id |
No output schema declared.
No examples provided.
disable_this_key Disable this connection ~179
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
generate_posts Generate post drafts ~172
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Persona source |
| context | string | – | Reference material up to 8000 chars |
| count | integer | – | 1-5 |
| formula | string | – | auto or a formula id from list_formulas |
| quality | string | – | fast | standard | premium |
| topic | string | yes | What to write about |
No output schema declared.
No examples provided.
get_account_settings Get account settings ~92
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
No output schema declared.
No examples provided.
get_account_settings_batch Get a bulk settings batch ~96
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. 繁中:查一批變更的逐列結果。
| Name | Type | Req | Description |
|---|---|---|---|
| batch_id | string | yes | batch_id from apply_account_settings |
No output schema declared.
No examples provided.
get_approval Check a confirmation request ~134
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).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Approval id (apr_...) from error.approval_id |
No output schema declared.
No examples provided.
get_brand_doc Get a brand document ~102
Returns one saved document by doc_id (latest, or an earlier version), or lists all documents when doc_id is omitted. Applies before generating or scheduling posts so the drafts follow the brand and content documents. 繁中:讀取品牌文件;不給 doc_id 就列出全部。
| Name | Type | Req | Description |
|---|---|---|---|
| doc_id | string | – | Document id; omit to list all documents |
| version | integer | – | An earlier version (the last 20 are kept) |
No output schema declared.
No examples provided.
get_cloud_patrol Get cloud patrol settings ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
No output schema declared.
No examples provided.
get_material Get brand material ~80
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
No output schema declared.
No examples provided.
get_me My plan and key ~72
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_my_usage My usage and call log ~154
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous result |
| days | integer | – | 1-30 (default 1 = today) |
| limit | integer | – | 1-100 (default 50) |
No output schema declared.
No examples provided.
get_playbook Operating playbook ~63
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_top_posts Get top posts ~201
Returns the best posts of a Threads account this member connected, ranked by engagement (likes + replies + reposts + quotes) or by views, likes, replies, reposts or quotes, with each post's text and metrics from MindThread's insights cache. Other people's accounts cannot be read: the Threads API only returns insights for the authorized user's own posts. Applies when the user wants to study what worked on their own account, for example to write a content document. 繁中:只讀會員自己連結的帳號,依互動排序取表現最好的貼文。
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id from list_accounts (only accounts this member connected) |
| days | integer | – | Only posts from the last N days, 1-365 (omit = all fetched posts) |
| limit | integer | – | 1-50, default 20 |
| metric | string | – | Ranking metric, default engagement |
No output schema declared.
No examples provided.
list_account_settings List account settings (bulk) ~187
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. 繁中:列出所有帳號的總表設定與狀態標籤。
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous page |
| limit | integer | – | 1-100, default 100 |
No output schema declared.
No examples provided.
list_accounts List connected accounts ~50
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_events List recent events ~151
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. Each call counts against the daily quota even when nothing is new, so poll sparingly (every 30 minutes on the free plan). Applies when the user asks what happened recently or whether a post went out.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | 1-200 |
| since | string | – | ISO 8601 |
| types | string | – | Comma-separated event names |
No output schema declared.
No examples provided.
list_formulas List content formulas ~54
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_guardrail_changes Guardrail change history ~139
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| before | string | – | next_before from the previous page |
| limit | integer | – | 1-50 (default 20) |
No output schema declared.
No examples provided.
list_library List library items ~125
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| limit | integer | – | max 200 |
| status | string | – | queued | draft | published | failed |
No output schema declared.
No examples provided.
list_pending_replies List drafted replies awaiting review ~111
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. Each call counts against the daily quota even when nothing is pending. Applies when review_before_reply is on and the user wants to decide what goes out.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| status | string | – | pending (default) | sent | rejected | expired |
No output schema declared.
No examples provided.
list_schedules List scheduled posts ~75
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Filter by account |
No output schema declared.
No examples provided.
preview_account_settings Preview bulk settings changes ~252
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. 繁中:預覽批次變更,逐格列出舊值與新值,什麼都不寫。
| Name | Type | Req | Description |
|---|---|---|---|
| changes | array | – | Up to 100 entries: { account_id, set: { column: value }, base?: { column: value you saw } }. Columns and allowed values: list_account_settings columns, or https://mindthread.tw/accounts/bulk/rules |
| csv | string | – | Instead of changes: a CSV in the website download format (UTF-8), up to 1 MB |
No output schema declared.
No examples provided.
publish Publish or schedule a post ~241
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| idempotency_key | string | – | Optional |
| media_urls | array | – | Public https image URLs (1 = image, 2-10 = carousel) |
| publish_at | string | – | ISO 8601 if not publish_now |
| publish_now | boolean | – | Publish immediately |
| text | string | – | Post text / caption |
| video_url | string | – | Public https MP4/MOV |
No output schema declared.
No examples provided.
reject_pending_reply Reject a drafted reply ~68
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Pending id |
| reason | string | – | Optional note |
No output schema declared.
No examples provided.
revert_account_settings_batch Undo a bulk settings batch ~110
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 小時內復原一批變更,之後又被改過的帳號會跳過。
| Name | Type | Req | Description |
|---|---|---|---|
| batch_id | string | yes | batch_id from apply_account_settings |
No output schema declared.
No examples provided.
save_brand_doc Save a brand document ~255
Saves a brand, content or content-map document (Markdown or plain text, up to 50,000 characters) under a doc_id such as brand, content or content_map, as a new version; the last 20 versions are kept. Pass base_version (the version you read, 0 when creating) so a concurrent edit is refused instead of overwritten. Nothing is published. Applies after interviewing the user about their brand, summarizing their top posts, or drafting a content map. 繁中:存品牌文件、內容文件或內容地圖,保留最近 20 版。
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Optional connected account the document belongs to |
| base_version | integer | – | Version you read; 0 when creating |
| content | string | yes | Whole document, Markdown or plain text, up to 50,000 characters |
| doc_id | string | yes | 1-40 chars of a-z, 0-9, _ or -; suggested: brand, content, content_map |
| language | string | – | BCP 47 tag, e.g. zh-TW (default), en, ja |
| title | string | – | Up to 100 characters |
No output schema declared.
No examples provided.
schedule_text Schedule a text post ~164
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| auto_optimize_time | boolean | – | Next best slot (mutually exclusive with publish_at) |
| publish_at | string | – | ISO 8601 with offset (canonical time field) |
| schedule_at | string | – | Deprecated alias of publish_at |
| text | string | yes | Text |
No output schema declared.
No examples provided.
set_cloud_patrol Set cloud patrol ~492
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| daily_cap | integer | – | reply: 1-50 free/trial, up to 80 paid, up to 150 with add-on; discover: 1 to plan daily haixun points (default) |
| enabled | boolean | – | Start / stop |
| keywords | array | – | 1-10 entries; "#tag" = topic-tag search |
| mode | string | – | "reply" (default): AI drafts and posts replies. "discover": only list matching posts for you to read; no AI, nothing posted |
| persona | string | – | Reply persona |
| reply_max | integer | – | Max characters per reply, 20-200, or null for the language default. A persona asking for a length is followed up to this limit |
| reply_mode | string | – | "ai" (default): AI writes each reply in the persona. "rotate": post your fixed replies in order, word for word, starting over after the last (AI still decides which posts to reply to). "consume": lik… |
| review_before_reply | boolean | – | Hold drafts for approval |
| rotate_replies | array | – | 1-10 fixed replies used in order when reply_mode is "rotate"; each within the account reply length limit; changing them restarts from the first |
No output schema declared.
No examples provided.
update_account_settings Update account settings ~632
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, random posting (random_schedule, random_per_day, random_window, and random_exclude: up to 3 ranges such as 17:00-18:00 that random times skip), 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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Account id |
| auto_link_to_comment | boolean | – | Links go to first comment |
| auto_reply_enabled | boolean | – | AI replies to comments on own posts |
| auto_thread | boolean | – | Auto-split >500 chars |
| content_rules | object | – | Structured rules: max_chars, min_chars, forbid_cta, forbid_hashtags, banned_phrases[], facts[] (allowed numbers as plain sentences), forbid_causal_claims, judge_claims (model reviews for unsupported… |
| dry_run | boolean | – | true = preview only (1.9.0); at most 10 a minute per key |
| enabled | boolean | – | Master switch |
| if_match | string | – | guardrails.etag from get_account_settings (optional, 1.9.0) |
| persona | string | – | Brand persona, up to 4000 chars |
| random_exclude | array | – | Up to 3 HH:MM-HH:MM ranges random times skip, no midnight crossing, no overlap; [] clears |
| random_per_day | integer | – | Random posts per day, 1-30 |
| random_schedule | boolean | – | Random times every day instead of schedule_times (1.21.0) |
| random_window | string | – | HH:MM-HH:MM, start before end; 00:00-23:59 = whole day |
| reason | string | – | Why, up to 200 chars (optional, 1.9.0) |
| review_before_publish | boolean | – | AI drafts wait for approval |
| schedule_times | string | – | Comma-separated HH:MM, up to 8 |
No output schema declared.
No examples provided.
update_library_item Update a library item ~150
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Item id |
| order | integer | – | Explicit order |
| position | string | – | first | last |
| status | string | – | archived | draft | queued |
| text | string | – | New text |
No output schema declared.
No examples provided.
How do I install the MindThread MCP server?
MindThread is a hosted endpoint at https://mindthread.tw/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mindthread.tw
claude mcp add --transport http ppcvote-mindthread 'https://mindthread.tw/api/mcp'
What is the MindThread MCP server?
MindThread is an MCP server listed in the public MCP registry as io.github.ppcvote/mindthread. Threads scheduler for AI agents: write, schedule and publish posts, review replies, read insights. This page covers its hosted endpoint (https://mindthread.tw/api/mcp).
Is the MindThread MCP server safe to use?
MindThread scores 71 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the MindThread MCP server expose?
MindThread exposes 43 tools: get_me, list_accounts, get_material, build_material, get_account_settings, and 38 more. Their descriptions and schemas cost roughly 6,096 tokens of context every time the server is loaded.
Does the MindThread MCP server require authentication?
No. We connected to MindThread without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the MindThread MCP server still maintained?
MindThread is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.