io.github.aokings/thth
This MCP server exposes read-only, side-effect-free tools for planning, inspecting, and reviewing social media posts across Threads/Bluesky/Mastodon/X — it never sends, schedules, approves, or saves anything.
Validate & preview drafts:
thth_lintchecks a queue file's format;thth_previewreturns the exact body that would be posted.Inspect the queue:
thth_queuelists drafts/approved/posted/malformed items plus what's next and when;thth_boardgives a per-account overview (last post, approvals pending, inflight, malformed).Decide a topic:
thth_topic_contextfixes the inputs (fetching missing article data),thth_topic_evaluatechecks quotes/references/freshness/bias, andthth_topic_decisionreads a saved decision.Plan before posting:
before_you_postreturns historical performance for a word/kind;where_to_appearoverlays your past interactions onto search results to pick where to engage.Read conversations:
thread_readreconstructs a thread (who said what, when, to whom);who_is_thissummarizes your history with a pseudonymous author.Review after posting:
after_you_postedshows reception of your posts/replies;analytics_reportgives a windowed snapshot (by kind/hour/topic/tag, optional period comparison);study_reportlinks tactic claims to observations.Operations:
operations_handoffreports local operational state (pending approvals, inflight, unread notifications) without syncing or resending.
Supports Bluesky integration with App Password authentication, including posting, tag handling, reply collection, metrics collection, and local analytics.
Supports Mastodon accounts for posting, tag handling, reply collection, metrics collection, and local analytics.
Provides posting to Threads, including approved post publication, reply collection, metrics gathering, and read-only analytics based on local observation history.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.github.aokings/ththWhat's in the approved-post ledger?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
THTH
THTH は、自分の SNS アカウントで調べる・投稿する・予約する・振り返るためのコマンドラインツールです(Threads・Bluesky・Mastodon・X)。
CLI なので、Claude Code などの AI アシスタントがそのまま操作できます。同梱の MCP サーバーとスキルは、その操作を楽にするための補助です。THTH は何を書くかを決めません。頼まれたときだけ動きます。
English: README.en.md · サイト: https://thth.me · 文書の索引: docs/README.md
できること
Threads | Bluesky | Mastodon | X | |
投稿・予約 | ○ | ○ | ○ | ○ |
削除 | ○ | ○ | ○ | ○ |
返信とインサイト(表示・いいね・返信などの数)の取得 | ○ | ○ | ○ | 数だけ(3.16.0・THTH から出した投稿) |
キーワード検索( | ○ | ○ | ○ | - |
言及( | ○ | ○ | ○ | - |
プロフィールと場所の検索 | ○ | - | - | - |
調べる:
thth topics <アカウント> --search <語>で、その語の件数・投稿者の数・最新の投稿を見ます。thth whereは「次にどこで話すか」を、自分がすでに絡んだ相手を重ねて探します。X の行には投稿者のフォロワー数(「フォロワー 1.2 万」)と投稿数も付きます(--jsonはauthor_followers・author_posts。保存しません)。出す:
thth sendで今すぐ、thth scheduleで予約、--reply-toで返信です。ブックマークの連投は記事と別に数える(4.0.1): はてなブックマークは主体の別の窓(既定 10 分に 10 件)で数え、超えても主体を止めずにその 1 件だけ断ります。1 日 30 件・同じホストへ 1 日 3 件(自分の記事は 1 日 1 件のまま)。記事の連投で止める作りは変わりません(リリースノート 4.0.1)。
ブックマークを 1 日分まとめて承認する(4.1.0): 札を JSON Lines に並べ、
thth bookmark batchの 1 段目で全件の一覧と digest を見て 2 段目で確定。timer が上限の中で時刻を散らして付けます(口座ごと)。あわせて、上限と連投の柵の土台(媒体の特性の台帳)を入れました(リリースノート 4.1.0)。記事をはてなへ届けて、直したら反映(4.0.0): repo の記事を承認してはてなブログへ公開・予約し(画像はフォトライフへ)、SNS の告知(
announces・{article_url})とはてなブックマークを記事に結びます。記事を直せばthth article diffで差分を見て、承認して更新します。はてなの画面で手直しされていれば上書きせずthth conflictで止まります。反応はthth article reactionsで記事ごとに。SNS だけの口座の動きと承認の指紋は変わりません(リリースノート 4.0.0)。返信の連投は止めずに順番待ち(3.25.0):
thth send --reply-to(thth.me のsend_requestも)が急な連投(burst)を超えるとき、口座を止めずにその 1 件を窓が空く時刻の順番待ちに並べ、timer が出します。止めるのは返信でない投稿の連投だけです(リリースノート 3.25.0)。予約も
--productionで(3.24.0): thth.me の鍵の道のthth scheduleは、--productionが無ければ下書きを置いて lint だけにします(sendと同じ)。過去の時刻の予約はサーバも断ります(リリースノート 3.24.0)。出来事と数の要約(3.23.0):
thth events <口座|project> --after <next_cursor> --jsonで出来事(公開・返信・言及・止まり・予算)を取りこぼさず読み直し、thth summaryで数を 1 つにまとめます。observe --jsonはsections_by_nameで節を名前で引けます(リリースノート 3.23.0)。本文は全文で(3.21.0): 検索(
topics --search・where)・thread・mentionsは他人の投稿の本文を切らずに画面と--jsonに出します(保存はしません)。Threads の検索は--since・--until・--mediaで絞れます。thth.me の鍵でもthread・where・whoが使えます。VM で打つthth sendにも安全装置(間隔・1 日の上限・連投)が掛かります(リリースノート 3.21.0)。振り返る:
thth collectが投稿後 1 時間〜30 日の決まった時点で返信とインサイトを取得し、thth replies・thth measuredで読みます。再投稿といいね:
thth repost・unrepost・like・unlike(3.15.0 から)。Threads は再投稿だけ(Threads の API にいいねが無い)。Bluesky は両方。Mastodon と X のいいねは、そのアカウントを認可し直してから(リリースノート 3.15.0)。検索の語ごとの数を残す・絞る(3.18.0):
thth where … --also|--aggregate --keepで語ごとの数だけを日付つきで残し(5 未満は欠測・本文や名前は残さない)、thth where-log <project> [--budget N --medium x]で当たり率と翌日の配り直しを見ます。--ja・--question・--no-repliesで表示を絞ります(X の--jaは検索にlang:jaを足して読む本数を減らす)(リリースノート 3.18.0)。X の非公開リスト:
thth list create|add|remove|show(3.17.0 から・X だけ)。公開のリストは作らない。足す・外すは人が選んだ少数だけ(1 回 10 人まで)。アカウントを認可し直してから(リリースノート 3.17.0)。X のコミュニティ:
thth community search <account> <語…>で探し、thth send <account> --community <id>か queue の front-mattercommunity_id:で出す(3.19.0 から・X だけ)。参加は X の画面で先に(API に参加の口は無い)。返信とは同時に使えない。各コミュニティの規則は人が読んで守る(リリースノート 3.19.0)。X のトレンドと語ごとの投稿数:
thth trends <account> [--woeid N] [--max N](既定は日本)とthth counts <account> <語> [--granularity hour|day](直近 7 日)(3.19.0 から・X だけ・1 回の有償の読み取り・保存しない)。
Related MCP server: meta-ads-mcp
はじめ方
招待された人
運営(gotoq)から届いた招待リンクを開き、Threads で認可します。そのあとターミナルで次を打ちます。
pip install thth
thth loginブラウザが開くので、アカウント名とアカウントのシークレットを入れて許可します。以後は自分のアカウントにそのまま使えます。
thth posts <アカウント>
thth topics <アカウント> --search コーヒー
thth send <アカウント> --text "こんにちは"サーバーも Meta アプリも git も要りません。手順の全体は 招待されたら にあります。
自分の機械で運用する人(運営者)
アカウントの台帳を自分の機械に置き、下書きのファイルを承認してから timer で出す運用もできます。承認は 2 段(本文と digest を見せる → その digest で確定)で、記録は git に残ります。準備は 統一ガイド、日々の使い方は プロジェクトのセッション向け にあります。
AI アシスタントから使う
claude mcp add thth -- thth-mcpMCP の道具は CLI の写しで、同じ thth コマンドを呼ぶだけです。スキル(skills/thth/)は「投稿する前に何を見るか」「返信をどう扱うか」をアシスタントに教えます。キーはアシスタントに渡しません。thth login が手元に置いたキーを thth コマンドが使います。
ガード
アシスタントが誤って走っても、アカウントごとのガードで止まります。
ガード | 既定 |
投稿の最短間隔(返信には掛けない) | 6 時間 |
1 日の投稿 | 8 件 |
1 日の削除 | 5 件 |
急な連投 | 10 分に 3 件を超えたらアカウントを止める |
夜間 | 22:00〜07:00 は今すぐの投稿をしない |
アシスタントが変えられるのは、厳しくする向きだけです。緩める・止まったアカウントを戻す・キーを発行し直すのは、オーナーが https://thth.me/activity でアカウントのシークレットを使って行います。
保存しないもの
検索結果(
topics --search・where・thread・who)の本文と投稿者は、その場で見せるだけで保存しません。where … --keepのときだけ、語ごとの数(件数・問いの形・分類・also の当たり)を日付つきで project の私有の置き場に残します(5 未満は欠測・thth where-logで読む・3.18.0)。ダイレクトメッセージは読みません。
トークンとシークレットは、ログと出力から伏せます。
詳しくは プライバシーポリシー にあります。
コマンドの一覧
thth --help で各コマンドの説明が出ます。
動くもの(thth --help の全サブコマンド): lint・preview・approve・account・revoke・posts・replies・measured・threads・after・analytics-report・study-report・study・unanswered・handoff-report・observe・morning・events・summary・deliveries・media・article・conflict・hatena・bookmark・serve-reports・worker・topics・forms・queue・schedule・throw・run・systemd・board・collect・pull・auth・refresh・maintain・send・doctor・app・token・ask・mentions・profile・thread・where・where-log・who・retract・repost・unrepost・like・unlike・list・community・trends・counts・principal・fotolife・inflight・location・notifications・report・plaza・map・admin・login・logout。
版と配布
版の正本は
thth/VERSIONです。手元の版はthth --versionで確かめます。mainへの push は保存だけです。releaseを進めると運営のサーバーに出て、版の tag を push すると PyPI と MCP registry に出ます。依存は 0 です。入口は
ththとthth-mcpの 2 つです。AI エージェント向けの試用の記録: headlesson の THTH のページ(THTH と同じ運営)。3.15.0 の導入と
--helpを 2026-10-11 に確かめた記録で、投稿と予約は試していません。
ライセンス
MIT。
MCP registry
registry は「この PyPI の名前を名乗ってよいのは誰か」を、配布物の README にある次の 1 行で確かめます。消さないでください。
mcp-name: io.github.aokings/thth
Available Tools
15 toolsafter_you_postedB
出したあとに呼ぶ。この語・この型・この枝で、自分の投稿と返信がどう受け取られたかを、件数と期間つきで返す
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 型(行動・年度付き 等) | |
| min_n | No | 中央値を返す下限(既定 5) | |
| topic | No | 語(トピック) | |
| account | No | account 名(project の代わり) | |
| project | No | この project の account 全部(account の代わり) | |
| reply_to | No | この post_id への返信だけに絞る | |
| hour_band | No | 時刻帯(朝・昼・夕・深夜)で絞る | |
| author_key | No | この仮名(16 進 16 桁)への返信だけに絞る | |
| window_days | No | 直近何日(既定 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only mentions returning counts and period, but does not state whether the tool is read-only, non-destructive, or what happens with no data. Lacks explicit safety and edge-case information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that immediately conveys when to call the tool. Efficient and free of filler, though it omits some useful context that would raise completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no output schema, and no annotations, the description is minimal. It does not explain how filters interact, what the output format is beyond 'counts and period', or any defaults beyond those in the schema. Terms like 'this branch' are ambiguous and undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having its own description. The tool description adds only a vague reference to 'this word, this type, this branch' which aligns with schema fields but does not deepen understanding beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (call after posting) and the resource (your posts/replies reception) with the result (counts and period). It distinguishes from before_you_post by timing, though it does not explicitly name that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear timing cue ('after you posted') but does not explicitly mention alternatives or exclusions. The sibling list implies contrast with before_you_post, but that is left to inference rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analytics_reportA
自分の活動のスナップショットを期間・母数・欠測・根拠つきで返す。ローカル台帳を読むだけ。compare_previous=trueで前期間比較。推奨は含まない
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| min_n | No | 中央値の最小母数(既定5) | |
| account | No | ||
| project | No | ||
| window_days | No | 直近何日(既定7) | |
| compare_previous | No | 直前の同じ日数との比較(既定false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden and does well: it states 'ローカル台帳を読むだけ' (read-only, no side effects), describes output dimensions, and explains the compare_previous toggle. It omits auth/error detail, but for a read-only reporting tool the behavioral picture is fairly clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with the core behavior front-loaded, followed by the read-only guarantee, the comparison option, and the exclusion of recommendations. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description carries extra responsibility. It communicates the main output dimensions, read-only nature, and comparison behavior, but it does not describe output structure, how account/project scope the snapshot, or edge behavior of compare_previous. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description adds meaningful context for compare_previous ('compare_previous=trueで前期間比較') and relates output concepts to period/sample size. However, parameters like 'by', 'account', and 'project' remain under-explained, and the description does not fully compensate for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb '返す' and resource '自分の活動のスナップショット', and clarifies scope with '期間・母数・欠測・根拠つき'. It also distinguishes itself from recommendation-style tools via '推奨は含まない', though it does not name sibling alternatives like study_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when a read-only snapshot of one's own activity is needed, and explicitly notes it is not a recommendation tool. However, it does not state explicit conditions, exclusions, or point to alternative sibling tools, so usage guidance remains more implied than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
before_you_postB
投稿する前に呼ぶ。この語とこの型で、スレッドがどう伸びたかの実績を、件数と期間つきで返す
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 型(行動・年度付き 等) | |
| min_n | No | 中央値を返す下限(既定 20) | |
| topic | Yes | 語(トピック) | |
| account | Yes | account 名 | |
| is_reply | No | 返信として出すか | |
| hour_band | No | 出す予定の時刻帯(朝・昼・夕・深夜) | |
| window_days | No | 直近何日(既定 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the return value (count and duration) but omits whether the operation is read-only, side effects, permissions, or error behavior. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundancy. The core purpose is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters, no output schema, and no annotations. The description explains the general purpose and output shape but does not cover when to use it vs. siblings, behavioral safety, or parameter interplay. For a tool called 'before_you_post', more context on expected usage would be needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 7 parameters. The description adds minimal value by referring to 'this word' and 'this type' (topic and kind) but does not enrich the parameter semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('call before posting') and the resource (thread growth track record) and output (count and duration). It is specific and distinguishes the tool from the 'after_you_posted' sibling by the temporal context, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'call before posting', providing a clear context for when to use the tool. However, it does not mention exclusions or name alternative tools like 'after_you_posted' or 'thread_read', so it falls short of the full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operations_handoffB
ローカル運用記録の状態・承認待ち・inflight・通知未処理を根拠と鮮度の制約付きで返す。同期・承認・再送はしない
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| project | No | ||
| since_last_read | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral disclosure burden. It does disclose that the tool does not sync, approve, or resend, indicating a read-only operation. It also mentions 'freshness constraints,' suggesting data may not be real-time. However, it does not mention side effects, authentication requirements, error handling, or pagination, so it is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that packs the core function and key limitations without any fluff. It is front-loaded with the main purpose and includes the critical 'does not' clause. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three parameters with no documentation, no output schema, and no annotations. The description only covers the general purpose and a few behavioral constraints. It leaves the agent without knowledge of parameter meanings, expected response format, or any prerequisites. For a tool with this complexity, the description is incomplete and leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage for its three parameters (account, project, since_last_read), and the description does not explain any of them. It only discusses the output and behavioral constraints. Since the description is the only source of parameter meaning and it provides none, agents cannot know what values to supply or how they affect results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns local operation record statuses (approval pending, inflight, notification unprocessed) with constraints of evidence and freshness. It also explicitly says it does not sync, approve, or resend, making its read-only nature unambiguous. This gives a specific verb and resource, and the negative clause helps distinguish it from any mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It never mentions any sibling tool or scenario. The statement about not syncing/approving/resending implies a read-only use case but does not specify when an agent should call this function over others. There is no explicit when-to-use or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
study_reportA
ローカル施策JSONの未検証の採用宣言と本人の観測を結ぶ。proposedは集計せず、adoptedも因果効果や投稿承認を証明しない。読むだけ
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| min_n | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool is read-only ('読むだけ'), that it works with unverified declarations ('未検証'), and that it does not prove causal effects or post approval. This is meaningful behavioral context, though it does not address return values or data-access implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short Japanese sentences, front-loaded with the primary purpose, followed by exclusions and a clear read-only marker. Every sentence earns its place and the definition is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description leaves key gaps: parameter semantics are absent, and the meaning of '本人の観測' is vague. The purpose and non-goals are stated, but an agent cannot confidently construct a valid call without more parameter detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain either parameter. 'file' can be inferred as the local JSON input, but 'min_n' is completely opaque. With two parameters and no schema descriptions, the description fails to help an agent populate them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('ローカル施策JSON') and a specific action ('結ぶ' / link adoption declarations with observations), and adds exclusions ('proposedは集計せず'). This makes the core function reasonably clear, though it does not explicitly name or differentiate a sibling tool like analytics_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is a read-only linking/reporting tool for local policy JSON. It also states when not to use it as evidence ('adoptedも因果効果や投稿承認を証明しない') and that proposed items are not aggregated. It lacks an explicit 'use this instead of X' statement, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thread_readA
返信を書く前に呼ぶ。この投稿の枝を、誰が・いつ・何を・誰に向けて言ったかの順で返す。何も保存しない
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | この時刻以降だけ | |
| account | Yes | account 名 | |
| post_id | Yes | 枝の根の post_id。各 message の already_replied は 3 値(T7-3): object(source 付き。ledger=絡みの台帳/queue=queue の下書き/thread=枝の中の自分の返信)=返した/false=台帳・queue・枝のどこにも見当たらない(「返していない」の確定ではない)/null=台帳か queue が読めず判らない(理由は provenance.ledgers_unreadable) | |
| max_messages | No | 読む上限(既定 200・上限 1000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool 'doesn't save anything', which is a useful behavioral guarantee implying a read-only operation. However, it does not cover permissions, error behavior, rate limits, or exactly what the returned objects look like beyond the ordering, leaving partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The first sentence states when to call, the second states what it returns and that it does not save. Each element earns its place and the structure is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description's clarification of the output order ('who, when, what, to whom') and the no-save guarantee are helpful. The schema already documents the parameters and the nuanced already_replied semantics. It is almost complete for the tool's complexity, though it could mention pagination or error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters (since, account, post_id, max_messages) are already documented in the schema. The description adds no extra parameter-level meaning (e.g., format or interaction between params), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns the branches of a post in a defined order (who, when, what, to whom) and orients the reader to call it before writing a reply. It does not explicitly name sibling alternatives, but the scope is clear enough to distinguish it from tools like after_you_posted or thth_topic_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'call before writing a reply', providing a clear when-to-use condition. It does not mention when not to use it or name alternatives, so it lacks exclusions, but the context is direct and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thth_boardB
アカウントごとの最終投稿・approved 待ち・inflight・型外の骨を返す(読むだけ)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states '(読むだけ)' (read only), which is an important behavioral disclosure given that no annotations are provided. However, it does not mention other behavioral aspects like data freshness, authentication requirements, or whether results are aggregated, so it only partially covers the transparency burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence, front-loading the returned content and appending the read-only note. It is efficient with no filler, though domain-specific jargon like '型外の骨' may reduce clarity for agents unfamiliar with the domain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with no output schema or annotations, the description lists the main return categories, which is helpful. However, it leaves terms like 'inflight' and '型外の骨' undefined and provides no indication of when to invoke this tool relative to siblings, so an agent may not fully understand the output or usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is an empty object (100% coverage). The baseline for 0 parameters is 4, and the description does not need to add parameter semantics beyond what the schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a verb ('返す' = returns) and the specific data categories (per-account final post, approved-pending, inflight, off-schema bones). This makes the tool's purpose reasonably distinct from siblings like thth_queue or thth_preview, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the many sibling tools. The description only mentions the output content and read-only nature, leaving the agent to infer usage context from the name 'board'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thth_lintA
docs/sns/queue の 1 ファイルを形式検査する(読むだけ・副作用なし)。
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | queue ファイルのパス |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It clearly discloses that the operation is read-only and has no side effects ('読むだけ・副作用なし'), which is essential for a lint tool. It does not elaborate on return behavior or error handling, but the core safety profile is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, compact sentence that front-loads the action and scope. No filler or redundancy; every word contributes to understanding the tool's purpose and safety characteristics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema), so the description covers the main usage. However, it omits what the tool returns (e.g., lint issues, success/failure) and does not clarify what 'format check' entails. Without an output schema, this missing information leaves some ambiguity for an agent deciding whether the tool meets its needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the 'file' parameter as a path to a queue file (100% coverage). The description adds valuable context by specifying that the file is located under 'docs/sns/queue', which helps the agent construct the correct path. This extra context goes beyond the schema's generic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a concrete verb and resource: 'format checks one file in docs/sns/queue'. It clearly distinguishes from siblings by its focus on a single file and its read-only nature. The 'docs/sns/queue' path also anchors the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for linting a queue file but does not explicitly state when to use it over siblings like thth_queue or thth_preview. No alternatives or exclusion conditions are mentioned, leaving the agent to infer context from the tool's purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thth_previewB
実際に投げる本文そのもの(媒体の節。前後に何も足さない)を返す(読むだけ)。
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | queue ファイルのパス |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool is read-only ('読むだけ') and that it returns content without modification ('前後に何も足さない'), which are useful behavioral traits. However, it omits details like error handling or what happens if the file does not exist, which would be expected for a complete transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and outcome. It is efficient with no wasted words, achieving clarity without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the essential behavior: what it returns and its read-only nature. While it lacks explicit usage guidance, the tool is straightforward enough that the provided information is largely sufficient, especially with the sibling context available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with 'queue ファイルのパス' for the file parameter. The description adds minimal extra meaning by indicating the file is the source of the body text, but it does not elaborate on format, encoding, or constraints. Baseline 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the exact body text to be posted, specifying it is the media section and adds nothing before or after. This is specific and unambiguous, though it does not explicitly differentiate from sibling tools like thth_queue or before_you_post, which could be confused without deeper context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many siblings, such as when to preview versus queue or post. The description only states what it does, leaving the agent to infer usage context, which is insufficient given the number of related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thth_queueB
draft/approved/posted/型外 の一覧と、次に出るもの・いつかを返す(読むだけ)。
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | 省略時は全アカウント |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It explicitly states '読むだけ' (read-only), which is a key behavioral trait and helps agents know it's non-destructive. However, it doesn't disclose anything else like authentication, error handling, or return format, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the main output (list and next items) and flags it as read-only. It is efficient with no redundant words, though it could benefit from slightly more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description must explain the return value. It says a list is returned along with next scheduled items and timing, but it doesn't specify the structure or format of this data. Key terms like '型外' are undefined, and there's no mention of pagination or how the account parameter affects results, leaving gaps for an agent attempting to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter 'account' with a clear description ('省略時は全アカウント'), achieving 100% coverage. The tool description does not add any parameter-specific context beyond the schema, so it meets the baseline of 3 but doesn't exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (returns) and resource (queue list with statuses and next scheduled items). It names distinct statuses (draft/approved/posted/型外) and includes timing info, making the purpose fairly clear. However, '型外' is ambiguous and the exact meaning of 'next' is vague, so it's not fully specific enough for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the many siblings like thth_preview, after_you_posted, or where_to_appear. It doesn't state exclusions or alternatives, leaving the agent to infer based solely on the queue-related terminology.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thth_topic_contextA
原稿のトピックを決める前に最初に呼ぶ。原稿と(あれば)記事本文から、判断の入力を固定して返す。記事がまだ無ければ、取りに行くべき URL と必要な JSON の形を返す(読むだけ・副作用なし)。使う順序: context → 足りない資料を取る → evaluate。
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | queue ファイルのパス | |
| article | No | 記事証拠(ArticleEvidence) | |
| article_url | No | 本文に URL が複数ある場合の主対象 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states '読むだけ・副作用なし' (read-only, no side effects), which is valuable behavioral disclosure since no annotations are provided. It also discloses that it 'fixes' judgment inputs and returns either fixed inputs or a URL/JSON shape when the article is missing. This goes beyond the schema and gives the agent a clear behavioral contract. It doesn't mention error cases or rate limits, but for a read-only context tool, the key behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the most important fact (call first) at the very beginning. Every sentence earns its place: purpose, behavior, fallback behavior, and usage order. No fluff or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only context tool with 100% schema coverage and no output schema, the description is quite complete. It explains the tool's role in the workflow, its side-effect-free nature, and its fallback behavior when the article is missing. The only minor gap is that it doesn't describe the exact structure of the returned 'fixed' judgment inputs, but since there's no output schema and the tool is meant to be called first, the description gives enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds context about the 'article' parameter (article evidence) and 'article_url' (main target when multiple URLs), but it doesn't add much beyond the schema. The description's mention of '記事がまだ無ければ' (if article doesn't exist yet) implies the article parameter is optional, which aligns with the schema. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('呼ぶ' = call), a clear resource (topic context for a manuscript), and a precise position in the workflow ('最初に' = first). It distinguishes itself from siblings by explaining it fixes judgment inputs before topic decisions, and it explicitly contrasts with later steps like evaluate. This is a clear, specific purpose that an agent can act on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to call this tool FIRST before deciding the topic, and it gives the order: context → fetch missing materials → evaluate. It also explains what happens when an article is missing (returns URL and required JSON shape), which tells the agent when to use this tool vs. fetching materials. This is explicit usage guidance with a sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thth_topic_decisionA
保存済みの判断を読む(読むだけ)。今の原稿と食い違っていれば freshness で言う。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | decision_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the read-only nature and the freshness comparison behavior, which is useful for safety. However, it does not explain what 'freshness' means, how the result is returned, or any permissions, side effects, or failure modes. Some transparency, but significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, efficient sentences. The primary purpose and read-only nature are front-loaded, followed by the conditional freshness behavior. No filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers the basic purpose and read-only nature, but leaves 'freshness' undefined and does not describe the return value, how conflicts are surfaced, or prerequisites for use. Adequate for a simple tool but incomplete in a way that could cause agent confusion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter 'id' is already described as 'decision_id'. The description adds no additional meaning to the parameter itself. Baseline 3 applies because the schema fully documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a saved decision ('保存済みの判断を読む') and explicitly notes it is read-only ('読むだけ'). This distinguishes it from evaluation or context tools like thth_topic_evaluate or thth_topic_context, and the freshness comparison hints at its specific function. A specific verb and resource with enough differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you need to read a saved decision and check freshness against the current manuscript) but does not explicitly name alternatives, give exclusion criteria, or state when not to use it. The context is present but underdeveloped compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thth_topic_evaluateB
記事本文と候補比較を渡して、引用が本文に在るか・参照が実在するか・観測が新しいか・投稿者が偏っていないかを検査させる。THTH は候補を作らないし順位も付けない——足りないものを言うだけ。候補が suitable でなければ別の候補に繰り上げず、比較し直しを求める。
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| article | Yes | ||
| proposal | Yes | 候補比較(TopicProposal) | |
| article_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden and does substantial work: it reveals the tool is evaluator-only (no candidate creation or ranking), that it merely reports deficiencies ("足りないものを言うだけ"), and that unsuitable candidates trigger a re-comparison request rather than silent fallback. These are genuine behavioral traits beyond what the name conveys. It does not state side-effect status or return format, but the disclosure is strong for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted repetition; the core action and all four evaluation criteria are front-loaded in the first sentence, and the bold markers aid scannability. The em-dash aside ("足りないものを言うだけ") is slightly stylistic but earns its place by clarifying the tool's evaluator-only nature. Compact and well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, the four evaluation criteria, and failure behavior, and even hints at output content (the deficiencies it finds). But with no output schema and no annotations, the agent is left without response-format information, and two of the four parameters ('file', 'article_url') remain unexplained. For a tool with nested object parameters, these are material unknowns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description needed to compensate. It maps 'article' to 記事本文 and 'proposal' to 候補比較, which adds meaning beyond the bare schema. However, 'file' and 'article_url' are never mentioned in the description, leaving the agent to guess what 'file' represents and how it relates to 'article' and 'article_url' — a significant gap at this coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete action (検査させる — inspect/evaluate) applied to a clear resource (article text + candidate comparison), and enumerates four specific criteria: citation presence, reference existence, observation novelty, and poster bias. It also carves out what the tool is not ("候補を作らないし順位も付けない"), which differentiates it behaviorally from nearby topic tools. It stops short of naming a specific sibling, but the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: call this when you have an article and a candidate comparison to validate, and the final sentence prescribes the follow-up when a candidate is unsuitable (request re-comparison rather than expect promotion), which is a useful workflow directive. However, no sibling is named as an alternative, and there are no explicit when-to-use vs when-not-to-use conditions relative to plausible siblings like thth_topic_decision or thth_topic_context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
where_to_appearA
絡みに行く先を選ぶ前に呼ぶ。検索の一覧に、自分の履歴(この語・この相手で何が起きたか)を重ねて返す。選ぶのは呼ぶ側
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 1 account・1 語あたりの上限(既定 25) | |
| words | Yes | 検索の語(1〜5 個) | |
| recent | No | TOP でなく RECENT(新しい順)で検索する | |
| account | No | account 名(project の代わり) | |
| project | No | この project の account 全部(account の代わり) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds meaningful context by saying the tool returns a search list with personal history overlaid and that the caller makes the final decision, implying it is not autonomous. It does not disclose side effects, auth requirements, or output details, but the described behavior appears read-only and intentional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the trigger first, then the behavior, then the caller's role. Every clause earns its place and there is no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five parameters and no output schema, the description is somewhat thin: it gives a trigger and a general return shape but does not explain list format, ordering, limit behavior, or how account/project selection affects history. Still, the schema covers parameters and the intended workflow is understandable enough for an agent to invoke it appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the description does not need to restate parameter details. The phrase 'この語・この相手' adds a conceptual tie between parameters and the tool's purpose, but it does not clarify limit, recent, account, or project beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific behavior: it overlays the user's own history onto a search list and returns it, for use before deciding where to appear. This is clear enough as a read/query operation, but it does not explicitly contrast itself with sibling tools such as thth_topic_decision or thth_board.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '絡みに行く先を選ぶ前に呼ぶ' gives an explicit trigger condition: call this before choosing where to engage. It does not, however, mention when not to use it or which sibling tool might be a better alternative, so the guidance is contextual but not contrastive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
who_is_thisA
返信する相手を確かめる。この仮名と自分のアカウントの接触の回数・時期・反応を返す。発言の内容は持たない
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | account 名(project の代わり) | |
| profile | No | その場で公開プロフィールを引く(Threads だけ・保存しない・既定 false) | |
| project | No | この project の account 全部(account の代わり) | |
| username | No | @ 無しでも可。その場で author_key に写す(保存しない・author_key の代わり) | |
| author_key | No | 仮名(16 進 16 桁・username の代わり) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It adds one useful trait: it does not retain message content. However, it does not explicitly state that the operation is read-only or that no state is modified, nor does it mention prerequisites, rate limits, or side effects. The 'no content' note is helpful but partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loads the core purpose, and every sentence contributes: purpose, output, and a key limitation. There is no filler or repetition, making it appropriately sized and well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no required parameters and no output schema, the description gives the essential return fields (count, timing, reactions). It does not explain parameter selection logic, but the fully covered schema compensates for that. It is complete enough for an agent to understand the tool's role and invoke it, assuming it reads the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The tool description itself adds no parameter-specific meaning beyond the schema. It does not clarify the mutual exclusivity or alternatives between account/project or username/author_key, but the schema already covers these relationships. The description neither enhances nor detracts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '返信する相手を確かめる' (check who you're replying to) and specifies the output: contact count, timing, and reactions. It also explicitly notes what it does not hold ('発言の内容は持たない'), distinguishing it from content-reading tools like thread_read. This clearly differentiates it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case ('before replying') but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or sibling tools. No structured guidance directs the agent to choose this tool over others, leaving usage context only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v0.1.0- First observed
after_you_posted - First observed
analytics_report - First observed
before_you_post - First observed
operations_handoff - First observed
study_report - First observed
thread_read - First observed
thth_board - First observed
thth_lint - First observed
thth_preview - First observed
thth_queue - First observed
thth_topic_context - First observed
thth_topic_decision - First observed
thth_topic_evaluate - First observed
where_to_appear - First observed
who_is_this
TDQS
Scored across 15 tools
Most tools have a distinct focus, but several clusters overlap: thth_queue, thth_board, and operations_handoff all list pending/inflight/type states, while before_you_post, after_you_posted, and analytics_report all return activity metrics with counts and periods. The descriptions clarify intent, but an agent could easily select the wrong tool without reading carefully.
Naming is inconsistent: some tools use the thth_ prefix and some do not, with no uniform convention. The style mixes nouns (thth_queue), verb phrases (thread_read), questions (who_is_this), and past-tense phrases (after_you_posted), making patterns unpredictable.
Fifteen tools is at the upper edge of a reasonable count, and each covers a specific read-only aspect of the posting workflow. A few could potentially be consolidated, but the count is not excessive for the apparent scope.
The surface covers the core read-only lifecycle: queue, preview, pre/post metrics, thread reading, topic context/evaluate/decision, linting, board status, handoff state, study/analytics reports, and contact history. There are no write/approve/sync tools, but the descriptions consistently mark those as intentional exclusions rather than dead ends.
Maintenance
Related MCP Connectors
Read-only byImprint service guidance and canonical public site routes.
Read-only senior-care exit routes, duplicate-referral deadlines, and templates; no PII or sending.
Hosts: read and record bookings, change prices, draft listings, rename devices. No payments.
Read-only checks for proposed orders against evidence and policy; no trading or payment authority.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables read access to business data and creation of immutable action proposals that require separate human approval before idempotent execution with an audit trail.Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables read-only Meta Ads reporting and diagnostics, plus safe, preview-before-apply mutations such as campaign creation, duplication, targeting replacement, and attribution changes.-

cordslite-mcpofficial
FlicenseAqualityCmaintenanceProvides read-only Discord access, enabling listing guilds, mapping channels, reading and searching messages, following threads, and viewing attachments without posting.121-- AlicenseNot gradedqualityBmaintenanceEnables read-only access to Autobase Console projects, clusters, environments, operations, PostgreSQL versions, and extensions through configurable MCP tools. Supports paginated listing and filtering, with limited redacted operation logs and no write or arbitrary execution tools.MIT