threads-mcp
Provides tools for managing Threads profiles, publishing content (text, image, video, carousel), reading posts and replies, and discovering content through the Threads API.
Click on "Install 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., "@threads-mcppost a text saying Hello World"
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.
threads-mcp
A Model Context Protocol (MCP) server for the Threads API. Exposes 26 tools covering profile management, content reading, publishing, replies, and discovery.
Quick Start
1. Get a Threads Access Token
You can start using Threads API immediately for your own account via the Threads Tester — no App Review required for self-use.
Select your Threads App from the app dropdown (or create one at developers.facebook.com/apps with the Threads product)
In the Threads Tester, generate a short-lived token
To get a long-lived token (60 days), call:
curl "https://graph.threads.net/access_token?grant_type=th_exchange_token&client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&access_token=SHORT_LIVED_TOKEN"To refresh a long-lived token before it expires:
curl "https://graph.threads.net/refresh_access_token?grant_type=th_refresh_token&access_token=LONG_LIVED_TOKEN"Note: Long-lived tokens expire after 60 days. Refresh them at least once per 60 days. There is no refresh token — you must always refresh before expiry.
2. Set Environment Variables
export THREADS_ACCESS_TOKEN=your_access_token_here
# Optional: skip the GET /me call at startup by providing your user ID directly
export THREADS_USER_ID=your_threads_user_id3. Run the Server
# Install globally
npm install -g threads-mcp
# Or run directly
npx threads-mcpOr build from source:
git clone https://github.com/your-repo/threads-mcp
cd threads-mcp
pnpm install
pnpm build
THREADS_ACCESS_TOKEN=your_token node dist/index.jsRelated MCP server: meta-threads-mcp
Claude Desktop Configuration
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"threads": {
"command": "npx",
"args": ["-y", "threads-mcp"],
"env": {
"THREADS_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}Or if installed globally:
{
"mcpServers": {
"threads": {
"command": "threads-mcp",
"env": {
"THREADS_ACCESS_TOKEN": "your_access_token_here",
"THREADS_USER_ID": "your_user_id_optional"
}
}
}
}Cursor Configuration
Add to .cursor/mcp.json in your project root, or ~/.cursor/mcp.json globally:
{
"mcpServers": {
"threads": {
"command": "npx",
"args": ["-y", "threads-mcp"],
"env": {
"THREADS_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}Tools Reference
Profile Tools
Tool | Description | Required Permission |
| Get your Threads profile (username, bio, follower count) |
|
| Check remaining publishing quota (250 posts/24h) |
|
| Account-level analytics (views, likes, followers) |
|
Content Tools
Tool | Description | Required Permission |
| Paginated list of your posts |
|
| Paginated list of your replies |
|
| Get details of a specific post |
|
| Engagement metrics for a post |
|
| Posts where you've been @mentioned |
|
Publishing Tools
Tool | Description | Required Permission |
| Create/publish a text post |
|
| Create/publish a post with an image |
|
| Create a video post container |
|
| Create a multi-media carousel post |
|
| Publish a container created with |
|
| Check if a video container finished processing |
|
| Delete one of your posts |
|
| Repost another user's thread |
|
| Quote-post another thread with your commentary |
|
Replies Tools
Tool | Description | Required Permission |
| Get direct replies to a post |
|
| Get full conversation thread |
|
| Post a reply to a thread |
|
| Hide or unhide a reply on your posts |
|
Discovery Tools
Tool | Description | Required Permission |
| Search posts by keyword |
|
| Look up a user profile by username |
|
| List posts from any public user |
|
| Search for location tags |
|
| Get details about a location |
|
⚠️ App Review required for
threads_keyword_searchandthreads_profile_discovery. These permissions require Meta's App Review process before they can be used in production. For self-use development, you may be able to use them in Development mode with your own account only.
Publishing Workflow
Text Post (simplest)
Tool: create_text_post
text: "Hello, Threads!"
publish: true ← publishes immediatelyVideo Post (requires polling)
1. Tool: create_video_post
video_url: "https://..."
publish: false ← don't auto-publish; get container ID
2. Tool: get_container_status
container_id: "from step 1"
→ poll until status = FINISHED
3. Tool: publish_thread
container_id: "from step 1"Carousel Post
1. Tool: create_carousel_post
items: [{type: IMAGE, url: "..."}, {type: IMAGE, url: "..."}]
publish: true ← auto-publish carouselRate Limits
Publishing: 250 posts per 24 hours (use
get_publishing_limitto check)API rate limits: Follow standard Meta API rate limits (~200 calls/hour per user for most endpoints)
Video processing: Videos typically take 10–30 seconds; poll with
get_container_status
Security
The
THREADS_ACCESS_TOKENis never logged or included in tool responsesAll outgoing URLs with the token are built internally and never surfaced to the MCP layer
Error messages from the API that may reference the token URL are automatically redacted
Development
pnpm install
pnpm test # run all tests
pnpm test:watch # watch mode
pnpm typecheck # TypeScript check
pnpm build # build dist/Running locally
THREADS_ACCESS_TOKEN=your_token pnpm build && node dist/index.jsVerify tool count
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
| THREADS_ACCESS_TOKEN=test node dist/index.js 2>/dev/null \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d['result']['tools']), 'tools')"Available Tools
26 toolscreate_carousel_postA
Create a carousel post with multiple images or videos. Set publish:true to immediately publish after container creation.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Carousel items (2-20 items) | |
| text | No | Optional caption text for the carousel | |
| publish | No | Whether to immediately publish (default: true) | |
| reply_control | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It mentions creating a container and optional immediate publishing, but does not explain what happens if publish is false (e.g., draft creation), or any other behavioral traits like authentication, rate limits, or destructive potential.
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 extremely concise with only two sentences, no redundant information, and front-loads the core action. Every word serves a purpose.
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 4 parameters and no annotations or output schema, the description is minimal. It covers the basic purpose but omits important details like how to handle drafts, ordering of items, format constraints for media, or behavior of reply_control. It meets minimum viability but has 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 75%, so baseline 3 is appropriate. The description only adds 'Set publish:true to immediately publish', which is already in the schema description. It does not clarify the reply_control parameter (undocumented in schema) or any additional nuances for items or text.
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 the tool creates a carousel post with multiple images or videos, which clearly differentiates it from siblings like create_image_post (single image) and create_video_post (single video). The verb 'create' combined with 'carousel post' gives a specific action and resource.
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 immediate publishing with publish:true, but the default is true, so it's slightly misleading. It lacks guidance on when to use this tool versus alternatives, and no prerequisites or constraints are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_image_postC
Create a Threads post with an image. Set publish:true to immediately publish.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | Yes | Public URL of the image to post | |
| text | No | Optional caption text | |
| publish | No | Whether to immediately publish (default: true) | |
| reply_control | No | ||
| alt_text | No | Accessibility alt text for the image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose behavioral traits such as authentication needs, rate limits, error behaviors (e.g., invalid image URL), or the distinction between draft and published states beyond the publish parameter.
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?
Extremely concise, front-loading the core purpose. Every sentence is relevant, though more detail could be added without losing conciseness.
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 creation tool with 5 parameters (1 required), no output schema, and no annotations, the description is incomplete. It omits return values, error handling, and explanation of non-obvious parameters like reply_control.
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 80% (4/5 parameters described). The description adds value by highlighting the publish parameter's effect, but does not add meaning for other parameters (e.g., reply_control lacks description entirely). 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?
Clearly states it creates a Threads post with an image, distinguishing it from text/video posts. However, it does not explicitly contrast with create_carousel_post, which also involves images.
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?
Only mentions setting publish:true for immediate publishing, but provides no guidance on when to use this tool versus alternatives like create_text_post or create_carousel_post.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_text_postA
Create a text-only Threads post. Set publish:true to immediately publish, or false to get a container_id for later publishing.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text content of the post | |
| publish | No | Whether to immediately publish (default: true) | |
| reply_control | No | Who can reply | |
| reply_to_id | No | Thread ID to reply to |
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 discloses the two behavioral modes based on the publish parameter, but does not cover other behaviors like character limits, visibility, or error conditions.
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 sentences with no fluff. The first sentence states the purpose, the second explains a key parameter. 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?
For a simple creation tool with 4 parameters and no output schema, the description covers the essential purpose and a key behavioral option. It could mention success indicators or constraints, but is largely adequate.
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 documents all parameters. The description adds valuable meaning for the publish parameter beyond the schema (explaining the effect of false), improving over the baseline of 3.
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 creates a 'text-only Threads post'. This distinguishes it from siblings like create_image_post and create_video_post, which handle other media types.
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 guidance on the publish parameter, explaining when to set true (immediate publish) or false (container_id for later). It implicitly differentiates from siblings by specifying 'text-only', but does not explicitly mention when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_video_postA
Create a Threads post with a video. Videos require processing time — use get_container_status to check readiness, then publish_thread when FINISHED.
| Name | Required | Description | Default |
|---|---|---|---|
| video_url | Yes | Public URL of the video to post | |
| text | No | Optional caption text | |
| publish | No | Whether to auto-publish after upload (default: false — videos need processing time) | |
| reply_control | No | ||
| alt_text | No | Accessibility alt text for the video |
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 the asynchronous nature (videos require processing time) and the need for follow-up steps. Does not cover permissions or rate limits, but for a creation tool this is reasonable.
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 efficient sentences: first states purpose, second provides key usage guidance. No redundant or extraneous content.
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 5 parameters, no output schema, and no annotations, the description adequately covers the async workflow but lacks details on return value (container ID?), error handling, and parameter nuances like reply_control values.
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 80%, so the schema already provides basic descriptions for most parameters. The description adds workflow context but does not elaborate on parameter meaning beyond what the schema 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?
Description clearly states it creates a video post. Distinguishes from siblings like create_image_post by specifying video. Mentions processing time, which differentiates from text/carousel posts.
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?
Explicitly instructs to use get_container_status and publish_thread after creation. Does not explicitly exclude other tools, but provides clear context for the video posting workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_threadB
Delete a Threads post by ID
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The ID of the thread to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'delete' but doesn't disclose if the deletion is permanent, whether it cascades to replies, or authentication needs. For a destructive tool, this is insufficient.
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 sentence with no waste. Efficiently communicates the essential action.
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 a simple parameter, the description is adequate but lacks details on response or error conditions. Could benefit from mentioning that the thread must exist or be owned.
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% with one parameter documented as 'The ID of the thread to delete'. The description echoes 'by ID' but adds no extra meaning beyond the schema.
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 'Delete a Threads post by ID' clearly states the verb (delete) and the resource (a Threads post). It distinguishes from sibling tools that create, reply, or retrieve threads. However, it doesn't emphasize that it's a destructive action beyond the verb itself.
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 on when to use this tool vs alternatives like manage_reply (which might handle deletions of replies). No prerequisites (e.g., ownership) or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_insightsB
Get insights/analytics for the authenticated user's Threads account
| Name | Required | Description | Default |
|---|---|---|---|
| metric | Yes | Comma-separated metrics to retrieve (e.g. views,likes,replies,reposts,quotes,followers_count) | |
| period | Yes | Time period for metrics: day, week, days_28, month, lifetime | |
| breakdown | No | Breakdown dimension for supported metrics (e.g. country, city, age, gender) | |
| since | No | Unix timestamp for start of range | |
| until | No | Unix timestamp for end of range |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description fails to disclose behavioral traits such as read-only nature, authorization requirements beyond 'authenticated user', or rate limits. The description offers minimal behavioral context.
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 short sentence, concise and front-loaded, but could be better structured with additional context.
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 5 parameters and no output schema, the description is too brief. It does not explain return format, behavior for optional parameters, or what insights are included, leaving 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?
Schema description coverage is 100%, so the schema documents all parameters. The tool description adds no further semantic meaning beyond the schema, meeting the baseline.
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 ('Get') and resource ('insights/analytics for the authenticated user's Threads account'), making it distinct from sibling tools like get_thread_insights.
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 account-level analytics but does not explicitly differentiate from other insight tools (e.g., get_thread_insights) or provide when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_container_statusB
Check the processing status of a media container (useful for videos)
| Name | Required | Description | Default |
|---|---|---|---|
| container_id | Yes | The container ID to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action without mentioning that it is a read-only operation, potential response formats, or any side effects. For a simple query tool, this is insufficient.
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?
One sentence, no unnecessary words. The key information (verb, object, context) is front-loaded. It is efficiently written.
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 a single parameter and no output schema. The description does not mention what the response contains (e.g., status values like 'processing', 'completed'), which is critical for an agent to interpret results correctly. For a read tool, this is a notable gap.
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 a description for the only parameter (container_id). The tool's description adds the context that it is a 'media container', which is slightly helpful. However, it does not explain the expected format or how to obtain the container_id.
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 exactly what the tool does: check the processing status of a media container, with a helpful example (useful for videos). It distinguishes itself from sibling tools which are all creation or retrieval operations.
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 explicit instructions on when to use this tool or when not to. There are no sibling tools with similar functionality, so alternatives are not needed, but the description could clarify that it should be used after initiating a media upload or processing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversationA
Get the full conversation thread (all replies at any level) for a Threads post
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The root thread ID | |
| fields | No | Fields to return. Default: id,text,media_type,permalink,timestamp,username,hide_status,replied_to | |
| limit | No | Number of results per page | |
| after | No | Cursor for next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description only indicates a read operation (get full conversation). It does not disclose pagination behavior, data freshness, or rate limits. The behavioral details are minimal but not misleading.
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, clear sentence with no extraneous information. It is well 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 tool's simplicity (fetching a conversation with paginated parameters) and no output schema, the description is fairly complete but could benefit from clarifying the response structure (e.g., threaded replies) or default field behavior.
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% (all parameters have descriptions). The tool description adds no further meaning to parameters like 'thread_id', 'fields', 'limit', or 'after' 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 tool retrieves the full conversation thread (all replies at any level) for a Threads post, using a specific verb and resource. It distinguishes from siblings like 'get_thread' and 'get_replies' by emphasizing 'all replies at any level'.
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 explicit guidance on when to use this tool versus siblings such as 'get_thread' (root post only) or 'get_replies' (direct replies only). Implicitly, it's for full conversations, but without direct comparison, an agent may not differentiate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_locationA
Get details about a specific location tag by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| location_id | Yes | The location ID to look up | |
| fields | No | Fields to return (e.g. id,name,location) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'get details' without specifying what details are returned, any side effects, rate limits, or authentication needs. This is insufficient for a mutation-free retrieval tool with no behavioral context.
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 with no unnecessary words. It is front-loaded and to the point.
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, the description could be more complete by hinting at the return format or typical fields. For a simple get-by-ID tool, it is minimally adequate but leaves 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 100%, so baseline is 3. The description adds minimal value: 'by its ID' is already evident from the required 'location_id' parameter. It does not explain the 'fields' parameter or any defaults.
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?
Description clearly states the verb 'get' and resource 'location tag by its ID'. It distinguishes from sibling 'search_locations' which is for searching rather than retrieving a specific location by ID.
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 when you have a known location ID, but it does not explicitly state when to use this tool vs. alternatives like 'search_locations'. No usage context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mentionsA
Get threads where the authenticated user has been @mentioned
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Fields to return. Default: id,text,media_type,media_url,permalink,timestamp,username,like_count,replies_count,repost_count,quote_count | |
| limit | No | Number of results per page | |
| after | No | Cursor for next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention rate limits, pagination behavior, authentication requirements, or response format. The description adds little beyond the action itself.
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 sentence of 8 words, efficiently conveying the core functionality. It is front-loaded with the verb and resource, with no wasted words.
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 output schema and no behavioral details, the description is adequate for a basic understanding but incomplete for an agent to fully utilize the tool, especially regarding pagination, field details, and response format.
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 input schema has 100% description coverage for its three parameters. The description adds no additional parameter details beyond what is already in the schema, so it meets the baseline but does not enhance understanding.
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?
Description clearly states the tool retrieves threads where the user is mentioned, using a specific verb and resource. It is distinct from sibling tools like get_thread or search_keyword, which focus on different retrieval patterns.
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 when needing mentioned threads but provides no explicit guidance on when not to use or alternatives like search_keyword. It minimally conveys context but lacks when-not or sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileB
Get the authenticated user's Threads profile information
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields to return. Default: id,username,name,threads_profile_picture_url,threads_biography,followers_count,following_count | |
| user_id | No | User ID to fetch (defaults to authenticated user) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks behavioral details such as authentication requirements, rate limits, or any side effects. The full burden is on the description, which only states the basic function without 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 sentence, concise and front-loaded with the purpose. No unnecessary words, but could be expanded slightly for 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?
Given no output schema and no annotations, the description is minimal. It does not explain return values, default behavior, or constraints, leaving gaps for a tool with two optional parameters.
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% with both parameters described. The description adds no additional meaning beyond the schema, so 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 'Get the authenticated user's Threads profile information', specifying the verb 'Get' and the resource 'profile information'. This distinguishes it from sibling tools which focus on posts, threads, and other actions.
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 explicit guidance on when to use this tool versus alternatives, such as lookup_profile. Usage is implied but not clarified, leaving the agent to infer context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publishing_limitB
Get the current publishing quota usage and limits for the authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Fields to return. Default: quota_usage,config |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description only states that it is a Get operation. It does not disclose any behavioral traits like rate limits, whether quotas are separate for different post types, or what happens when limits are exceeded.
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 sentence that is concise and front-loaded with the key action and resource. No unnecessary words.
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 tool's low complexity (1 optional parameter, no output schema), the description is mostly adequate. However, it could mention the default return structure or clarify that no parameters are required.
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% for the single optional 'fields' parameter, and the description adds no additional semantics beyond the schema. Baseline score of 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 the verb 'Get', specifies the resource 'publishing quota usage and limits', and includes the scope 'for the authenticated user'. It is distinct from sibling tools which focus on creating posts, profiles, or other actions.
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 provided on when to use this tool versus alternatives, such as checking limits via other endpoints. There is no indication of prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repliesC
Get direct replies to a specific Threads post
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The ID of the thread to get replies for | |
| fields | No | Fields to return. Default: id,text,media_type,permalink,timestamp,username,hide_status,replied_to | |
| limit | No | Number of replies per page | |
| after | No | Cursor for next page | |
| before | No | Cursor for previous page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description only implies read-only behavior but does not disclose rate limits, authentication needs, or behavior for empty results. It falls short of compensating for the lack of annotations.
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 without unnecessary words. It is concise and front-loaded, but could benefit from slight expansion for 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 5 parameters, no output schema, and no annotations, the description insufficiently explains pagination, default field values, ordering, or the meaning of 'direct replies'. It misses key behavioral 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?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema, which already clearly defines each 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 gets direct replies to a specific post, specifying the resource and scope. It is distinct from siblings like 'get_thread' but lacks differentiation from 'list_my_replies' or 'get_conversation'.
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 on when to use this tool versus alternatives (e.g., list_my_replies, get_conversation). The description is purely functional with no context about use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_threadB
Get details of a specific Threads post by ID
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The ID of the thread to retrieve | |
| fields | No | Fields to return. Default: id,text,media_type,media_url,permalink,timestamp,username,like_count,replies_count,repost_count,quote_count |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits such as read-only nature, authorization requirements, rate limits, or expected response structure. The agent receives minimal transparency beyond the implied read operation.
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, clear sentence of 9 words. No superfluous content; every word contributes to the purpose definition.
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 low complexity and no output schema, the description is adequate but minimal. It does not list typical return fields or response structure, leaving the agent partially uninformed. Could be improved by mentioning common fields.
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?
Input schema has 100% description coverage for both parameters. The description adds no additional meaning beyond the schema; it merely echoes the identifier concept. Baseline score of 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 the action (Get details), the resource (specific Threads post), and the identifier (by ID). It distinguishes from sibling tools like get_replies, get_profile, etc., which target different entities.
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 alternatives, nor does it mention prerequisites or exclusions. Among many sibling tools, differentiation is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thread_insightsC
Get engagement insights for a specific Threads post
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The ID of the thread | |
| metric | Yes | Comma-separated metrics: views,likes,replies,reposts,quotes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as read-only nature, rate limits, or authentication requirements. For a simple get operation, this is minimally adequate but lacks 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 sentence with no unnecessary words. It is front-loaded with the verb and resource. Could be slightly more informative without losing conciseness.
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, the description should hint at the return format (e.g., metric values). It does not. For a simple tool with two parameters, it is minimally complete but lacks context about the response.
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 baseline is 3. The description adds no additional meaning beyond what is already in the schema for thread_id and metric.
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 verb 'Get' and resource 'engagement insights for a specific Threads post'. It distinguishes from sibling tools like get_thread (which retrieves content) and create/post tools. However, it could be more specific about the types of insights.
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 on when to use this tool versus alternatives like get_account_insights or get_thread. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_repliesB
List all replies made by the authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Fields to return. Default: id,text,media_type,media_url,permalink,timestamp,username,like_count,replies_count,repost_count,quote_count | |
| limit | No | Number of results per page | |
| after | No | Cursor for next page | |
| before | No | Cursor for previous page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states 'list all replies' without disclosing behavior like pagination, data freshness, rate limits, or whether soft-deleted or private replies are included. This is insufficient for a read operation.
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 with no wasted words. It efficiently communicates the core purpose.
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?
Without an output schema, the description should elaborate on what 'replies' includes (e.g., format, default fields, time range). It also lacks pagination details that are critical for a tool with limit and cursor parameters. The description is too minimal for complete understanding.
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% with descriptions for all four parameters (fields, limit, after, before). The description adds no additional meaning beyond the schema, which is acceptable at baseline 3.
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?
Description clearly states the verb 'List', the resource 'replies', and the scope 'made by the authenticated user'. It distinguishes from sibling tools like 'get_replies' which likely target replies to a specific post, and 'list_my_threads' which lists threads.
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 explicit guidance on when to use this tool versus alternatives such as 'get_replies' or 'manage_reply'. The usage is implied (when you need the user's own replies), but no exclusions or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_threadsB
List all Threads posts by the authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Fields to return. Default: id,text,media_type,media_url,permalink,timestamp,username,like_count,replies_count,repost_count,quote_count | |
| limit | No | Number of results per page (1-100) | |
| after | No | Cursor for next page pagination | |
| before | No | Cursor for previous page pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It omits behavioral details like authentication requirements, read-only nature, pagination behavior, or output format. Only the schema hints at pagination.
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?
Single sentence, no wasted words. Front-loaded with the core purpose.
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?
Even though schema covers parameters, there is no output schema and no description of the return value or pagination behavior. For a list tool with 4 parameters, this is insufficient to fully understand its behavior.
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% with parameter descriptions. The tool description adds no additional meaning beyond the schema, so baseline score of 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 the action ('List all Threads posts') and the scope ('by the authenticated user'). This distinguishes it from sibling tools like 'list_profile_posts' or 'get_thread'.
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 provided on when to use this tool versus alternatives (e.g., 'list_profile_posts' for other users). The description lacks distinction criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_profile_postsC
List public Threads posts from a specific user by their user ID
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The user ID whose posts to list | |
| fields | No | Fields to return. Default: id,text,media_type,permalink,timestamp,username,like_count,replies_count | |
| limit | No | Number of results per page | |
| after | No | Cursor for next page | |
| before | No | Cursor for previous page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry the burden. It only says 'list public posts' but does not disclose pagination behavior, rate limits, error handling, or that it returns a list. For a read tool, this is insufficient.
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?
Single sentence conveying the core action efficiently. Could include more detail without being verbose, but no wasted words.
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?
No output schema, yet description does not mention return format or fields. Missing ordering, error cases, and differentiation from similar listing tools. Given 5 parameters and no annotations, more context is 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% with descriptions for all parameters. The tool description adds no additional meaning beyond the schema, so 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 the verb 'list', the resource 'public Threads posts', and the scope 'from a specific user by their user ID'. This distinguishes it from sibling tools like list_my_threads (own posts) and list_my_replies (replies), though not explicitly.
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 on when to use this tool versus other listing tools (e.g., list_my_threads, search_keyword). Lacks prerequisites (e.g., user must exist, posts must be public) or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_profileA
Look up a Threads user profile by username. Requires threads_profile_discovery permission.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | The Threads username to look up (without @) | |
| fields | No | Profile fields to return. Default: id,username,name,threads_profile_picture_url,threads_biography,followers_count |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It only mentions a permission requirement and implies a read operation (look up), but does not disclose rate limits, error handling (e.g., if user not found), or other side effects. This is insufficient for a tool with zero annotation support.
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 consists of two concise sentences, each adding value: the first states the purpose, the second adds a usage prerequisite. No extraneous information, well 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 tool's simplicity (lookup by username, optional fields), the description covers the essential purpose and permission requirement. However, the absence of an output schema means the agent lacks information about return values, but for a straightforward lookup tool, this is a minor gap.
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 input schema already describes both parameters (username and fields) with 100% coverage. The description adds no additional meaning or context beyond what the schema provides, so the baseline score of 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 the tool's action ('Look up') and resource ('Threads user profile by username'), making its purpose unambiguous. It uses a specific verb and resource, and while there is a sibling 'get_profile', the mention of 'by username' differentiates it.
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 includes a prerequisite ('Requires threads_profile_discovery permission'), which provides context for when the tool is usable. However, it does not specify when to use this tool over alternatives, nor does it offer exclusions or guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_replyB
Hide or unhide a reply on the authenticated user's threads
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The ID of the reply to manage | |
| hide | Yes | true to hide the reply, false to unhide it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states the action without disclosing side effects, permissions, or state changes beyond what parameters imply.
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?
Single sentence with no extraneous words. Front-loaded verb and resource make it efficient and scannable.
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 two-parameter toggle tool, the description is adequate but could be more complete by explaining how to obtain the reply ID and specifying that the reply must belong to the authenticated user's thread.
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% with clear parameter descriptions. The tool description adds no additional meaning beyond the schema, so 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?
Description clearly states the verb 'Hide or unhide' and the resource 'a reply on the authenticated user's threads', making the tool's specific action and scope unambiguous.
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 on when to use this tool vs alternatives, prerequisites, or conditions for hiding/unhiding (e.g., reply ownership, current state).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_threadA
Publish a previously created media container. Use after create_*_post with publish:false, or after a video finishes processing.
| Name | Required | Description | Default |
|---|---|---|---|
| container_id | Yes | The container ID returned by a create_* tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the prerequisite but does not detail side effects (e.g., making the post visible) or error conditions.
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 concise, two sentences, front-loaded with no wasted words.
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 tool's simplicity, the description covers core usage and prerequisites. It could mention return behavior, but overall it is adequate.
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 has 100% description coverage for the single parameter, so the description adds minimal extra meaning beyond reinforcing the source of the container ID.
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 ('publish') and the resource ('previously created media container'), and distinguishes from sibling tools by referencing create_*_post 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?
It explicitly specifies when to use this tool: after create_*_post with publish:false or after video processing. This provides clear context, though it could mention 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.
quote_threadB
Create a quote post that references another thread
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The ID of the thread to quote | |
| text | No | Your commentary text to add to the quote | |
| publish | No | Whether to immediately publish (default: true) | |
| reply_control | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must cover behavioral traits. It indicates mutation ('Create') but lacks details on permissions, notifications, reversibility, or rate limits.
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?
Single sentence with zero waste; front-loaded with the core action.
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?
Tool has 4 parameters (1 required) and no output schema; description omits context about quoting behavior, reply control options, and return values, leaving gaps for an AI agent.
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 75%, but the description adds no extra meaning beyond parameter names. The 'reply_control' param has an enum but no description in schema or description, so value is not enhanced.
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 verb 'Create' and the resource 'quote post that references another thread', which distinguishes it from sibling post creation tools that do not involve quoting.
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 on when to use this tool versus alternatives, no prerequisites mentioned (e.g., need an existing thread), and no exclusions or when-not scenarios provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_threadA
Post a reply to a Threads post. Creates and immediately publishes a text reply.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The ID of the thread to reply to | |
| text | Yes | The text content of the reply | |
| reply_control | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states creation and immediate publication, which is transparent enough for a simple mutation. However, it does not disclose potential consequences (e.g., permanent visibility) or authorization requirements.
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 sentence that is front-loaded with the core purpose, followed by additional detail. No unnecessary words.
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 no output schema and no annotations, the description does not cover return values, error handling, or success indicators. For a creation tool that publishes immediately, more context about the result would aid the agent.
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 input schema covers 2 of 3 parameters with descriptions (thread_id and text), but reply_control lacks description. The tool description adds no extra information about any parameter, leaving the enum parameter unexplained.
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 'Post a reply to a Threads post' and 'Creates and immediately publishes a text reply,' specifying the verb, resource, and action. It distinguishes from sibling tools like create_text_post or manage_reply, which handle different operations.
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 use for replying to a thread, but does not explicitly state when to use this tool versus alternatives (e.g., use create_text_post for new posts, or quote_thread for quoting). No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repost_threadB
Repost (share) a Threads post from another user
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The ID of the thread to repost |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but fails to disclose key behaviors (e.g., whether reposting is reversible, visibility on timeline, if original post must be public).
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?
Single sentence with no wasted words, but extremely sparse; could include more useful information without losing conciseness.
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 one parameter, no output schema, and no annotations, the description is minimally adequate but fails to differentiate from similar tools like quote_thread or reply_to_thread.
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% for the single parameter thread_id, and the description does not add meaning beyond the schema's description 'The ID of the thread to repost'.
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 verb 'Repost (share)' and the resource 'a Threads post from another user', distinguishing it from sibling tools like quote_thread or create_text_post.
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 on when to use this tool vs alternatives like quote_thread or reply_to_thread, and no prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_keywordB
Search Threads posts by keyword. Requires threads_keyword_search permission.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | The search query / keyword | |
| search_type | No | Search type (e.g. KEYWORD, TAG) | |
| search_mode | No | Search mode (e.g. RECENT, TOP) | |
| fields | No | Fields to return. Default: id,text,media_type,permalink,timestamp,username,like_count,replies_count | |
| limit | No | Number of results | |
| after | No | Cursor for next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the permission requirement but fails to disclose rate limits, pagination behavior, sorting, or what happens with no results.
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 extremely concise with two sentences, no wasted words. It front-loads the purpose and permission in a clear, efficient manner.
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 6 parameters, no output schema, and no annotations, the description is too sparse. It lacks details on output format, pagination, and behavior for different search types, making it incomplete for an agent to fully understand the tool.
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?
All 6 parameters have descriptions in the input schema (100% coverage). The tool description adds no additional meaning about the parameters beyond the schema, so 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 the tool searches Threads posts by keyword, using a specific verb and resource. It distinguishes from sibling tools like search_locations and other non-search 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 mentions a required permission but does not provide explicit guidance on when or when not to use this tool versus alternatives. Usage context is implied by the name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_locationsA
Search for location tags that can be attached to Threads posts
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Location name to search for | |
| limit | No | Number of results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a safe read operation ('search'), which is non-destructive. However, it does not disclose details about response format, pagination, or any potential side effects. The behavioral transparency is adequate but lacks explicit safety or permission notes.
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, well-structured sentence that is concise and front-loaded. Every word is meaningful, and no extraneous information is present.
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 search tool with two parameters and no output schema, the description is largely complete. It explains the purpose and the context (attaching to Threads posts). A more comprehensive description could mention the expected return type or limit behavior, but the current version is sufficient.
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?
Input schema has 100% description coverage, with both parameters ('q' and 'limit') already documented. The description adds context about the purpose (attaching to posts) but does not enhance parameter-level understanding. Baseline score of 3 is appropriate since the schema already handles parameter semantics.
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 that the tool searches for location tags intended to be attached to Threads posts, specifying the verb 'Search', the resource 'location tags', and the usage context. It distinguishes itself from siblings like 'get_location' (specific lookup) and 'search_keyword' (keyword search).
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 clear context for when to use this tool (when needing location tags for Threads posts), but does not explicitly mention when not to use it or list alternative tools. The context is sufficient to infer appropriate usage compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct action and resource, with clear descriptions that differentiate overlapping concepts like get_thread vs get_conversation vs get_replies. No two tools are easily confused.
All tools follow a consistent verb_noun pattern in snake_case (e.g., create_text_post, get_thread_insights). No mixing of styles or ambiguous verbs.
With 26 tools, the set is on the higher end but each tool serves a specific and necessary function for the Threads API, covering posting, reading, searching, analytics, and moderation without unnecessary redundancy.
The tool surface covers core CRUD and lifecycle operations for posts, plus searching and analytics. A notable gap is the lack of an update/edit tool for posts, but most workflows are supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Twitter/X read-only MCP server — 12 tools: search, users, tweets, followers, timelines, trends.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA stdio MCP server for the official Threads API, enabling publishing, reading, moderation, insights, discovery, locations, and setup diagnostics.2MIT
- AlicenseAqualityCmaintenanceUnofficial MCP server for Meta's Threads API. Enables LLMs like Claude to publish posts, manage replies, and track insights through the Model Context Protocol.15MIT
- AlicenseAqualityBmaintenanceCustom MCP server for Threads (Meta) — post, reply, and read insights via the official free Threads API.518MIT
- AlicenseAqualityAmaintenanceAn MCP server for Meta's Threads that acts as your own account, enabling reading profiles, posts, replies, timeline, search, and performing actions like posting, replying, liking, following, and scheduling, using a real logged-in browser session.2425MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/griffinwork40/threads-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server