Skip to main content
Glama
devrim-1283

truth-social-mcp

by devrim-1283

Truth Social MCP

A local Python MCP 2.x server for explicitly authorized Truth Social access. It keeps model-facing tools separate from credential setup, defaults to read-only, and treats all social content as untrusted external data.

Current safety boundary

Truth Social's current Terms of Service prohibit automated/non-human access and data extraction unless separately authorized. The server therefore starts and negotiates MCP normally, but live network calls fail closed until TRUTH_SOCIAL_MCP_AUTHORIZED=1 is configured. Set that variable only after obtaining written authorization or an official API agreement.

This project does not bypass Cloudflare, impersonate a browser, or treat a logged-in browser session as API authorization.

Related MCP server: x-mcp

Requirements

  • Python 3.10+

  • An OS credential store supported by Python keyring (macOS Keychain on macOS)

  • An externally issued bearer token for authenticated tools

  • Written permission or an official Truth Social API agreement for live use

  • uv 0.11.26 for the reproducible locked installation below

Install

From a source checkout, install the exact dependency graph recorded in uv.lock:

cd /absolute/path/to/truth-social-mcp
uv sync --locked --extra dev --no-editable --python python3

Portable pip fallback (compatible, but not locked to the exact transitive versions in uv.lock):

cd /absolute/path/to/truth-social-mcp
python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/pip install '.[dev]'

The install creates two cwd-independent commands:

  • .venv/bin/truthsocial-mcp — MCP stdio server

  • .venv/bin/truthsocial-auth — out-of-band token management

The two console commands are part of the installed Python distribution. By contrast, run.sh is a convenience launcher that belongs to the source checkout; it resolves that checkout's .venv regardless of the MCP host's working directory. A wheel installation does not install run.sh or the config-examples directory.

Configure a token safely

Never paste a password, OTP, bearer token, cookie, or access code into an MCP conversation. Import an externally authorized token directly in Terminal:

.venv/bin/truthsocial-auth set-token --username your_handle --scope read
.venv/bin/truthsocial-auth status

Declared scopes are enforced locally as an additional safety gate. If an authorized token is permitted to perform every supported mutation, import it with --scope read --scope write --scope follow; write covers post/media/ like/retruth/delete operations, while follow covers follow/unfollow. Enabling the write environment flag alone never overrides a missing local scope.

The command prompts for the token without echoing it. The token is stored in the operating-system credential store selected by keyring (Keychain on macOS). ~/.truth_social_mcp/session.json contains only non-secret metadata and is written atomically with mode 0600 inside a 0700 directory.

To remove the token:

.venv/bin/truthsocial-auth clear

Run and register

For a normal environment installation, point the MCP host directly at the installed console command:

{
  "mcpServers": {
    "truth-social": {
      "command": "/absolute/path/to/truth-social-mcp/.venv/bin/truthsocial-mcp",
      "args": []
    }
  }
}

Codex registration for the installed console command:

codex mcp add truth-social -- /absolute/path/to/truth-social-mcp/.venv/bin/truthsocial-mcp

When Codex should follow the source checkout's .venv, the repository launcher is equivalent:

codex mcp add truth-social -- /absolute/path/to/truth-social-mcp/run.sh

config-examples/continue_config.yaml is the current Continue configuration. continue_config.legacy.json is retained only for older Continue releases that still use the deprecated JSON configuration.

The server is intentionally useful even when network access is disabled: truth_auth_status reports local configuration without reading the network.

Authorization and environment

After written authorization or an official API agreement, enable live calls in the MCP host's environment:

TRUTH_SOCIAL_MCP_AUTHORIZED=1

Optional settings:

Variable

Default

Purpose

TRUTH_SOCIAL_MCP_AUTHORIZED

0

Permit live API calls after external authorization

TRUTH_SOCIAL_MCP_ALLOW_WRITES

0

Register mutation tools at startup

TRUTH_SOCIAL_MCP_UPLOAD_ROOTS

~/.truth_social_mcp/uploads

:-separated media roots

TRUTH_SOCIAL_MCP_MAX_UPLOAD_MB

25

Maximum local media size

TRUTH_SOCIAL_MCP_TIMEOUT_MS

30000

Request timeout

TRUTH_SOCIAL_MCP_BASE_URL

https://truthsocial.com

API origin; mainly for authorized/test deployments

TRUTH_SOCIAL_MCP_ALLOW_CUSTOM_ORIGIN

0

Permit a non-Truth-Social HTTPS test/authorized origin

TRUTH_SOCIAL_MCP_USER_AGENT

truthsocial-mcp/<version> ...

Honest client identification

Tool surface

Default server tools:

  • Local: truth_auth_status, truth_logout

  • Public API: truth_instance_info, truth_lookup_user, truth_get_user_posts, truth_get_status

  • Token-required reads: truth_verify, truth_get_user, truth_followers, truth_following, truth_home_timeline, truth_trending, truth_get_thread, truth_search, truth_notifications

Truth Social's removed public timeline endpoint is not advertised. Search and trending are correctly marked token-required rather than returning fake empty results.

When both TRUTH_SOCIAL_MCP_AUTHORIZED=1 and TRUTH_SOCIAL_MCP_ALLOW_WRITES=1 are present at server startup, these additional tools are registered:

  • truth_post_status, truth_delete_status

  • truth_like, truth_unlike

  • truth_reblog, truth_unreblog

  • truth_follow, truth_unfollow

  • truth_upload_media

Every mutation requires schema-level confirm: true. Posting also uses an idempotency key. Uploads accept only relative paths beneath configured roots, reject symlinks and non-regular files, enforce size limits, and verify supported media signatures.

Error behavior

  • MCP 2.x validates tool arguments before executing handlers.

  • Tool failures return real isError: true results.

  • Upstream HTML, response bodies, tokens, cookies, usernames, query strings and local paths are not copied into error messages.

  • Stable error codes distinguish missing auth, forbidden access, missing resources/endpoints, rate limits, invalid payloads and network failures.

  • Public and authenticated HTTP traffic use physically separate clients; anonymous calls cannot inherit an account token or cookie.

Test

.venv/bin/pytest
.venv/bin/python -m pip check
uv lock --check

The default suite uses in-memory MCP sessions and httpx.MockTransport; it does not contact Truth Social and never performs a real post, like, follow, upload or delete. A subprocess test starts run.sh from outside the repository to protect against cwd/import regressions and also exercises the installed console entrypoint. CI repeats the locked install and full suite on Python 3.10, 3.11, and 3.12.

Known external limitations

Truth Social does not currently publish a stable, generally authorized API contract for this use. Endpoint availability, authentication requirements, Cloudflare policy and account permissions may change independently of this server. Passing local tests proves the MCP implementation, not external API permission or future availability.

License

MIT. See LICENSE.

Available Tools

15 tools
truth_auth_statusA
Read-onlyIdempotent

Show local token/configuration state without contacting Truth Social.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the valuable context that no network call is made, but it does not go further into return format or other behavioral traits. This is comparable to the 'get_calls' calibration example, which also scored 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the verb 'Show' and the key resource, with no wasted words. It earns a perfect conciseness score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no params) and has an output schema, so the description does not need to cover return values. The local-only behavior is explicitly stated, making the description complete for invocation purposes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the description does not need to explain parameters. Per the baseline rule for 0-param tools, a score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: showing local token/configuration state. It explicitly distinguishes itself from tools that contact Truth Social, which differentiates it from siblings like truth_verify or truth_get_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without contacting Truth Social' provides clear context that this tool is for local/offline checks. However, it does not explicitly name alternatives or state when not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_followersA
Read-onlyIdempotent

List followers for an account. An authorized token is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
account_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds the useful context that an authorized token is required, which is not captured in the annotations. This provides meaningful behavioral information beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the primary action. Every word is useful, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and annotations plus the output schema provide solid context. However, the description does not discuss how this tool relates to sibling tools like 'truth_following' or clarify whether the token must belong to the queried account. This leaves some ambiguity in a broader workflow, making it adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clarifies that 'account_id' refers to the account whose followers are listed, but it does not explain the 'limit' parameter or its effect on pagination/result count. The schema's default and constraints give some hints, but the description adds minimal value beyond the purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List followers for an account' with a specific verb and resource, clearly distinguishing it from the sibling 'truth_following' which lists following accounts instead. This is a precise, unambiguous purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives. The description mentions that an authorized token is required, but it does not explain when this tool is appropriate (e.g., for viewing followers vs. following) or exclude any scenarios. No alternative tools are referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_followingA
Read-onlyIdempotent

List accounts followed by a user. An authorized token is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
account_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the authentication requirement, which is useful, but it does not disclose other behavioral traits like token ownership, rate limits, or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action, and contains no redundant or filler information. It earns its place efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with a rich output schema and strong annotations, the description is mostly sufficient. It covers the core purpose and authentication, but lacks mention of pagination or the relationship between account_id and the authorized token. Still, the overall context is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fails to explain the meanings of the parameters. It only implies that 'a user' corresponds to account_id, but the limit parameter's purpose is entirely unaddressed. A simple clarification of account_id and limit would have been expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('accounts followed by a user'), clearly distinguishing this from sibling tools like truth_followers (which would list followers). The scope is explicit, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a prerequisite (authorized token required) but no explicit guidance on when to use this tool versus alternatives such as truth_followers. The usage context is implied by the wording, but no when-to-use or when-not-to-use conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_get_statusA
Read-onlyIdempotent

Fetch one public Truth Social post by numeric ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
status_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds the 'public' scope and numeric ID input, but does not disclose behaviors like error handling or response format. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the purpose. No unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with strong annotations and an output schema, the description is adequate. It could mention behavior on invalid IDs or note that it returns a single post, but the output schema and annotations cover most needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has one parameter (status_id) with a pattern but no description. The tool description clarifies that the parameter is a numeric ID of the post, which compensates for the lack of schema description. It adds meaning beyond the raw pattern.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Fetch'), a resource ('public Truth Social post'), and a method ('by numeric ID'). It distinguishes from sibling tools like truth_get_thread and truth_get_user_posts, which fetch a thread or a user's posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching a single public post by ID, which differentiates it from thread or user post tools. However, it does not explicitly state when to use this tool over alternatives, or mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_get_threadA
Read-onlyIdempotent

Fetch a post and its ancestors/descendants. An authorized token is required for context.

ParametersJSON Schema
NameRequiredDescriptionDefault
status_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds that an authorized token is required, which is a behavioral prerequisite not covered by annotations. However, it does not clarify what 'context' means or any additional behavior, so it provides limited extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, each with clear value: the action and the auth requirement. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple read-only tool with one parameter, output schema, and rich annotations, the description covers the core purpose and adds the auth constraint. However, the phrase 'required for context' is somewhat ambiguous, and no mention of the thread structure or edge cases is made, leaving minor gaps. Overall it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter (status_id) with 0% description coverage. The description only mentions 'a post' without naming or explaining the parameter, leaving the agent to infer that status_id identifies the target post. This does not adequately compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and resource ('a post and its ancestors/descendants'), clearly distinguishing it from sibling tools like truth_get_status which likely fetches only a single status. It precisely names the thread scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives, but the phrase 'ancestors/descendants' implies thread retrieval, providing some implicit guidance. No explicit exclusions or alternative tool names are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_get_userB
Read-onlyIdempotent

Fetch a Truth Social account by numeric ID. An authorized token is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description correctly adds the auth requirement. However, it does not disclose what happens without a token, rate limits, or response structure, leaving some behavioral aspects unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the main action and scope. Every word adds value, and there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, output schema present, annotations covering safety), the description is largely complete. Its main gap is the lack of differentiation from truth_lookup_user, but this is more of a usage guidance issue. Overall, it covers the essential context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It does say 'by numeric ID', which maps directly to account_id, and the schema provides a pattern. But it does not explain what the ID represents or how to find it, though for a single parameter this is minimally acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Fetch') and resource ('Truth Social account') with a specific scope ('by numeric ID'). It differentiates from siblings like truth_get_status and truth_get_thread, but does not explicitly distinguish it from truth_lookup_user, which may be a similar lookup tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance provided is that an authorized token is required. There is no indication of when to use this tool versus alternatives like truth_lookup_user or truth_get_user_posts, nor any context about prerequisites beyond the token.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_get_user_postsB
Read-onlyIdempotent

Fetch recent public posts for a username. Pagination IDs must be numeric.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
max_idNo
pinnedNo
since_idNo
usernameYes
exclude_reblogsNo
exclude_repliesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so safety is covered. The description adds the constraint that pagination IDs must be numeric, which is useful behavioral context, but it does not disclose other traits like response pagination behavior or whether posts from private accounts are excluded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise, with two sentences that front-load the core purpose and follow with a constraint. There is no redundant or irrelevant content, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the tool has 7 parameters and no parameter descriptions. The description does not explain how to paginate using max_id/since_id, what 'pinned' means, or the effect of exclude_reblogs/exclude_replies. This leaves significant gaps for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining parameters. It clarifies that pagination IDs must be numeric (relating to max_id and since_id) but provides no explanation for limit, pinned, exclude_reblogs, or exclude_replies. The description adds minimal meaning beyond the schema's type/default information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Fetch recent public posts for a username' uses a specific verb (fetch) and resource (public posts for a username), clearly indicating the tool's function. It distinguishes from siblings like truth_get_status or truth_home_timeline by focusing on a specific user's posts, 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.

Usage Guidelines2/5

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 siblings such as truth_get_user or truth_home_timeline. The only operational note ('Pagination IDs must be numeric') is a constraint, not a usage guideline, so the tool lacks context for appropriate selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_home_timelineA
Read-onlyIdempotent

Fetch the authorized account's home timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
max_idNo
since_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds the scoping to the authorized account, which is useful, but it does not disclose pagination behavior or response format (though an output schema exists). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with zero filler. It front-loads the action ('Fetch') and resource, achieving maximum clarity with minimal words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

As a simple read tool with rich annotations and an output schema, the description covers the essential purpose. However, it lacks parameter explanations and explicit usage guidance, so it is not fully complete for an agent without prior knowledge of timeline pagination.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 limit, max_id, or since_id. While param names are somewhat self-evident and constraints exist, the description fails to compensate for the lack of schema-level documentation, leaving pagination semantics unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Fetch the authorized account's home timeline.' It clearly distinguishes from siblings like truth_get_status (fetch a single status) or truth_get_user_posts (fetch a user's posts), making the tool's unique scope apparent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the resource clearly (home timeline of authorized account) but does not provide explicit guidance on when to use this tool versus alternatives like truth_search or truth_get_user_posts. Usage is more implied than explicitly contrasted with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_instance_infoA
Read-onlyIdempotent

Fetch public Truth Social instance capabilities and limits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds the context that the data is 'public' and focuses on capabilities/limits, which is useful but not extensive. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence with no filler, front-loading the verb and resource. Everything earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, no-parameter read-only tool with strong annotations and an output schema, the description sufficiently conveys purpose and scope. No additional details are necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4 per the rubric. The schema coverage is 100% vacuously, and the description accurately reflects that no input is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Fetch') and object ('public Truth Social instance capabilities and limits'), distinguishing it from sibling tools that handle statuses, users, or timelines. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternative guidance is provided, but the purpose implies it should be used when an agent needs instance-level capabilities or limits. There are no sibling tools with overlapping functionality, so the context is reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_logoutA
DestructiveIdempotent

Delete the locally stored Truth Social token from Keychain. Requires explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveness and non-read-only, but the description adds specific context about what is destroyed (the locally stored Keychain token) and that explicit confirmation is required. This goes beyond the structured fields, although it doesn't detail potential side effects beyond token deletion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the action, the target, and the confirmation prerequisite.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter destructive tool with rich annotations and an output schema, the description is complete. It covers the operation scope and the confirmation requirement, leaving no significant gaps for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate. It does by stating 'Requires explicit confirmation,' which directly explains the meaning and purpose of the 'confirm' parameter (must be true). This adds semantic value beyond the schema's 'const: true' constraint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the target ('locally stored Truth Social token from Keychain'), which is specific and distinguishable from all sibling tools that perform read or search operations. It fully clarifies what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for logging out by deleting the local token and explicitly notes that explicit confirmation is required. While it doesn't mention alternatives or exclusions, the context is clear because no other sibling tool handles logout, and the confirmation requirement is a key usage condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_lookup_userA
Read-onlyIdempotent

Resolve a public Truth Social username to a compact account record.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds context by specifying 'public' (indicating no auth needed) and 'compact' (hinting at response shape), which goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence with no fluff, front-loading the action and resource. Every word adds value, and it is appropriately sized for a simple lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has an output schema (so return details are covered), and rich annotations. The description is nearly complete, but lacks explicit differentiation from truth_get_user; the word 'compact' provides an implicit cue, making it slightly above average.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only one parameter (username), the description explicitly clarifies it is a public Truth Social username, compensating for the lack of schema descriptions. It does not detail format like '@' handling, but that is a minor gap for a single string parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Resolve') with a clear resource ('public Truth Social username') and output ('compact account record'). It distinguishes from siblings like truth_get_user by implying a lighter-weight result.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this vs. alternatives such as truth_get_user. The description does not mention when to prefer this tool or any exclusions, leaving the agent to infer usage from the name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_notificationsB
Read-onlyIdempotent

Fetch notifications for the authorized account.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
max_idNo
since_idNo
exclude_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the account-scoping behavior ('for the authorized account'), which is useful context. However, it does not disclose pagination behavior, rate limits, or what notification types are returned, so it adds only modest value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the action and resource. There is no extraneous information, and it is appropriately concise for the tool's straightforward purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having output schema and annotations, the description lacks essential guidance for the agent. It does not explain when to use this tool versus siblings, nor does it clarify how parameters like exclude_types behave. The minimal description is inadequate for a tool with 4 parameters and potential ambiguity with similar fetch tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter meaning. The description does not mention limit, max_id, since_id, or exclude_types, leaving the agent to guess their roles. Parameter names are somewhat self-explanatory, but the description provides no added semantic value, making this a weak area.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Fetch') and the resource ('notifications') scoped to 'the authorized account.' This distinguishes it from siblings like home_timeline or trending, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. There is no mention of scenarios, prerequisites, or exclusions. The description omits any comparison with sibling tools like home_timeline, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truth_verifyA
Read-onlyIdempotent

Verify the configured bearer token and return its account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, covering the safety profile. The description adds the token-verification context and account return, but does not disclose edge cases like invalid token handling or rate limits. This is adequate given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that is precise and free of redundancy. Every word contributes to the meaning, making it optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with a rich output schema and comprehensive annotations, the description is sufficiently complete. It states the core action and expected result, and the annotations cover safety and side-effect characteristics. No additional context is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema is empty. Per guidelines, a baseline of 4 is appropriate. The description coherently implies that the tool operates on the pre-configured bearer token, so no parameter explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Verify') and resource ('configured bearer token'), with the outcome 'return its account'. It is distinct from sibling tools like truth_auth_status or truth_get_status, focusing on token validation rather than general status or data retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. While the purpose is clear, there is no mention of exclusions or relationships to siblings such as truth_auth_status, which may overlap in functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: posts (get_status, get_thread), search, users (lookup_user, get_user, get_user_posts), relationships (followers, following), timelines (home_timeline, trending), notifications, and auth (auth_status, logout, verify). Even get_status and get_thread are clearly differentiated by thread context.

Naming Consistency3/5

All tools share the truth_ prefix, but the pattern after the prefix is inconsistent: some are verb_noun (get_status, lookup_user), some are single verbs (search, logout), and some are bare nouns (followers, trending). This mixed style makes the set less predictable.

Tool Count5/5

15 tools is within the well-scoped range for a social media API server, covering posts, users, relationships, timelines, notifications, and auth. Each tool serves a clear purpose without feeling bloated.

Completeness2/5

The tool set is heavily read-oriented and lacks any write operations such as posting, liking, replying, or following. While it covers the main read paths, the absence of social interactions makes it an incomplete client for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Model Context Protocol server that enables programmatic interaction with Twitter API, allowing users to post tweets, search for content, and retrieve user timelines through standardized MCP tools.
    19
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A read-only X/Twitter MCP server that enables data retrieval for user profiles, tweets, and social graphs using OAuth 2.0 Bearer Token authentication. It supports searching recent tweets, viewing timelines, and tracking engagement metrics like followers, likes, and retweets.
    3
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Read-only MCP server for public X/Twitter search and retrieval via twitter.2-38.com
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Twitter/X read API, enabling search, user profiles, tweets, followers, and more via natural language.
    94
    149
    MIT

Latest Blog Posts

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/devrim-1283/truth-social-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server